????

Your IP : 3.149.235.7


Current Path : C:/inetpub/vhost/bcvt.kontum.gov.vn/www/
Upload File :
Current File : C:/inetpub/vhost/bcvt.kontum.gov.vn/www/27-es5.js

(function () {
  var absMids = {
    "esri/core/Quantity": "./node_modules/arcgis-js-api/core/Quantity.js",
    "esri/core/quantityUtils": "./node_modules/arcgis-js-api/core/quantityUtils.js",
    "esri/core/tsSupport/makeTemplateObjectHelper": "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js",
    "esri/core/tsSupport/restHelper": "./node_modules/arcgis-js-api/core/tsSupport/restHelper.js",
    "esri/views/3d/interactive/manipulatorUtils": "./node_modules/arcgis-js-api/views/3d/interactive/manipulatorUtils.js",
    "esri/views/3d/interactive/measurementTools/directLineMeasurement3D/LaserLineRenderer": "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/directLineMeasurement3D/LaserLineRenderer.js",
    "esri/views/3d/interactive/measurementTools/support/Label": "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/Label.js",
    "esri/views/3d/interactive/measurementTools/support/LabelSegment": "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/LabelSegment.js",
    "esri/views/3d/interactive/measurementTools/support/PathSegmentInterpolator": "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/PathSegmentInterpolator.js",
    "esri/views/3d/interactive/measurementTools/support/UnitNormalizer": "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/UnitNormalizer.js",
    "esri/views/3d/interactive/measurementTools/support/labelUtils": "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/labelUtils.js",
    "esri/views/3d/interactive/measurementTools/support/viewUtils": "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/viewUtils.js",
    "esri/views/3d/layers/graphics/graphicUtils": "./node_modules/arcgis-js-api/views/3d/layers/graphics/graphicUtils.js",
    "esri/views/3d/support/imageUtils": "./node_modules/arcgis-js-api/views/3d/support/imageUtils.js",
    "esri/views/3d/webgl-engine/collections/Component/Material/shader/DecodeSymbolColor.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/collections/Component/Material/shader/DecodeSymbolColor.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/DiscardOrAdjustAlpha.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/DiscardOrAdjustAlpha.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/Offset.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/attributes/PositionAttribute.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/PositionAttribute.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTextureCoordinates.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTextureCoordinates.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/AnalyticalSkyModel.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/AnalyticalSkyModel.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientLighting.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientLighting.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateMainLighting.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateMainLighting.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/HighlightData.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/HighlightData.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/Water.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Water.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/shading/WaterDistortion.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/WaterDistortion.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/util/DecodeNormal.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/DecodeNormal.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/util/DoublePrecision.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/DoublePrecision.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/util/MixExternalColor.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/MixExternalColor.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/util/RgbaFloatEncoding.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/RgbaFloatEncoding.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/util/ScreenSizePerspective.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/ScreenSizePerspective.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderLibrary/util/TextureAtlasLookup.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/TextureAtlasLookup.glsl.js",
    "esri/views/3d/webgl-engine/core/shaderModules/ShaderBuilder": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js",
    "esri/views/3d/webgl-engine/core/shaderModules/interfaces": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js",
    "esri/views/3d/webgl-engine/core/shaderTechnique/ReloadableShaderModule": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ReloadableShaderModule.js",
    "esri/views/3d/webgl-engine/core/shaderTechnique/ShaderTechnique": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechnique.js",
    "esri/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueConfiguration": "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueConfiguration.js",
    "esri/views/3d/webgl-engine/lib/AutoDisposable": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/AutoDisposable.js",
    "esri/views/3d/webgl-engine/lib/BoundingInfo": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/BoundingInfo.js",
    "esri/views/3d/webgl-engine/lib/DefaultTextureUnits": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultTextureUnits.js",
    "esri/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js",
    "esri/views/3d/webgl-engine/lib/DefaultVertexBufferLayouts": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexBufferLayouts.js",
    "esri/views/3d/webgl-engine/lib/GLMaterial": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GLMaterial.js",
    "esri/views/3d/webgl-engine/lib/GLMaterialTexture": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GLMaterialTexture.js",
    "esri/views/3d/webgl-engine/lib/Geometry": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Geometry.js",
    "esri/views/3d/webgl-engine/lib/GeometryData": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryData.js",
    "esri/views/3d/webgl-engine/lib/GeometryRecord": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryRecord.js",
    "esri/views/3d/webgl-engine/lib/GeometryUtil": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryUtil.js",
    "esri/views/3d/webgl-engine/lib/HighlightUtils": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/HighlightUtils.js",
    "esri/views/3d/webgl-engine/lib/IdGen": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IdGen.js",
    "esri/views/3d/webgl-engine/lib/Intersector": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Intersector.js",
    "esri/views/3d/webgl-engine/lib/IntervalUtilities": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IntervalUtilities.js",
    "esri/views/3d/webgl-engine/lib/Layer": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Layer.js",
    "esri/views/3d/webgl-engine/lib/Material": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Material.js",
    "esri/views/3d/webgl-engine/lib/Object3D": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Object3D.js",
    "esri/views/3d/webgl-engine/lib/Octree": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Octree.js",
    "esri/views/3d/webgl-engine/lib/ResizableFloat32Array": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/ResizableFloat32Array.js",
    "esri/views/3d/webgl-engine/lib/WebGLDriverTest": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/WebGLDriverTest.js",
    "esri/views/3d/webgl-engine/lib/doublePrecisionUtils": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/doublePrecisionUtils.js",
    "esri/views/3d/webgl-engine/lib/glUtil3D": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/glUtil3D.js",
    "esri/views/3d/webgl-engine/lib/intersectorUtils": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/intersectorUtils.js",
    "esri/views/3d/webgl-engine/lib/screenSizePerspectiveUtils": "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/screenSizePerspectiveUtils.js",
    "esri/views/3d/webgl-engine/materials/DefaultMaterial": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/DefaultMaterial.js",
    "esri/views/3d/webgl-engine/materials/RibbonLineMaterial": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/RibbonLineMaterial.js",
    "esri/views/3d/webgl-engine/materials/VisualVariableMaterialParameters": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/VisualVariableMaterialParameters.js",
    "esri/views/3d/webgl-engine/materials/WaterGLMaterial": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/WaterGLMaterial.js",
    "esri/views/3d/webgl-engine/materials/WaterTechnique": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/WaterTechnique.js",
    "esri/views/3d/webgl-engine/materials/internal/DefaultBufferWriter": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/DefaultBufferWriter.js",
    "esri/views/3d/webgl-engine/materials/internal/MaterialUtil": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/MaterialUtil.js",
    "esri/views/3d/webgl-engine/materials/internal/bufferWriterUtils": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js",
    "esri/views/3d/webgl-engine/materials/internal/waterMaterialUtils": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/waterMaterialUtils.js",
    "esri/views/3d/webgl-engine/materials/lineStippleUtils": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/lineStippleUtils.js",
    "esri/views/3d/webgl-engine/materials/renderers/Instance": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/Instance.js",
    "esri/views/3d/webgl-engine/materials/renderers/InstancedRenderer": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/InstancedRenderer.js",
    "esri/views/3d/webgl-engine/materials/renderers/MergedRenderer": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/MergedRenderer.js",
    "esri/views/3d/webgl-engine/materials/renderers/utils": "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/utils.js",
    "esri/views/3d/webgl-engine/shaders/DefaultMaterial.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js",
    "esri/views/3d/webgl-engine/shaders/DefaultMaterialTechnique": "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js",
    "esri/views/3d/webgl-engine/shaders/LaserLinePrograms": "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/LaserLinePrograms.js",
    "esri/views/3d/webgl-engine/shaders/RibbonLine.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/RibbonLine.glsl.js",
    "esri/views/3d/webgl-engine/shaders/RibbonLineTechnique": "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/RibbonLineTechnique.js",
    "esri/views/3d/webgl-engine/shaders/WaterSurface.glsl": "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/WaterSurface.glsl.js",
    "esri/views/3d/webgl-engine/shaders/sources/resolver": "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/sources/resolver.js",
    "esri/views/3d/webgl-engine/shaders/sources/shaderRepository": "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/sources/shaderRepository.js",
    "esri/views/interactive/Manipulator3D": "./node_modules/arcgis-js-api/views/interactive/Manipulator3D.js",
    "esri/views/overlay/LineOverlayItem": "./node_modules/arcgis-js-api/views/overlay/LineOverlayItem.js",
    "esri/views/overlay/TextOverlayItem": "./node_modules/arcgis-js-api/views/overlay/TextOverlayItem.js"
  };
  var globalObj = this || window;
  var jsonpArray = globalObj["webpackJsonp"] = globalObj["webpackJsonp"] || [];

  if (jsonpArray.registerAbsMids) {
    jsonpArray.registerAbsMids(absMids);
  } else {
    var absMidsWaiting = jsonpArray.absMidsWaiting = jsonpArray.absMidsWaiting || [];
    absMidsWaiting.push(absMids);
  }
})(), (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[27], {
  /***/
  "./node_modules/arcgis-js-api/core/Quantity.js":
  /*!*****************************************************!*\
    !*** ./node_modules/arcgis-js-api/core/Quantity.js ***!
    \*****************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiCoreQuantityJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ./unitFormatUtils */
    "./node_modules/arcgis-js-api/core/unitFormatUtils.js"), __webpack_require__(
    /*! ./unitUtils */
    "./node_modules/arcgis-js-api/core/unitUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, i, n, e) {
      return function () {
        function t(t, i) {
          this.measure = e.measureForUnit(i), this.value = t, this.unit = i;
        }

        return Object.defineProperty(t.prototype, "isBaseUnit", {
          get: function get() {
            return e.isBaseUnit(this.unit);
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype.toUnit = function (i) {
          return new t(e.convertUnit(this.value, this.unit, i), i);
        }, t.prototype.toBaseUnit = function () {
          return this.toUnit(e.baseUnitForUnit(this.unit));
        }, t.prototype.toDecimalString = function (t, i) {
          return void 0 === t && (t = 2), n.formatDecimal(this.value, this.unit, t, i);
        }, t;
      }();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/core/quantityUtils.js":
  /*!**********************************************************!*\
    !*** ./node_modules/arcgis-js-api/core/quantityUtils.js ***!
    \**********************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiCoreQuantityUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ./unitFormatUtils */
    "./node_modules/arcgis-js-api/core/unitFormatUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (r, t, e) {
      function a(r, t, a, n) {
        return void 0 === a && (a = 2), void 0 === n && (n = "abbr"), e.formatDecimal(r.toUnit(t).value, t, a, n);
      }

      function n(r, t, a) {
        if (void 0 === t && (t = 2), void 0 === a && (a = "abbr"), "length" !== r.measure) throw new Error("quantity is not a length");
        return e.formatMetricLength(r.value, r.unit, t, a);
      }

      function i(r, t, a) {
        if (void 0 === t && (t = 2), void 0 === a && (a = "abbr"), "length" !== r.measure) throw new Error("quantity is not a length");
        return e.formatMetricVerticalLength(r.value, r.unit, t, a);
      }

      function o(r, t, a) {
        if (void 0 === t && (t = 2), void 0 === a && (a = "abbr"), "area" !== r.measure) throw new Error("quantity is not an area");
        return e.formatMetricArea(r.value, r.unit, t, a);
      }

      function u(r, t, a) {
        if (void 0 === t && (t = 2), void 0 === a && (a = "abbr"), "length" !== r.measure) throw new Error("quantity is not a length");
        return e.formatImperialLength(r.value, r.unit, t, a);
      }

      function f(r, t, a) {
        if (void 0 === t && (t = 2), void 0 === a && (a = "abbr"), "length" !== r.measure) throw new Error("quantity is not a length");
        return e.formatImperialVerticalLength(r.value, r.unit, t, a);
      }

      function l(r, t, a) {
        if (void 0 === t && (t = 2), void 0 === a && (a = "abbr"), "area" !== r.measure) throw new Error("quantity is not an area");
        return e.formatImperialArea(r.value, r.unit, t, a);
      }

      function m(r) {
        if ("angle" !== r.measure) throw new Error("quantity is not an angle");
        return e.formatDMS(r.value, r.unit);
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.formatDecimal = a, t.formatMetricLength = n, t.formatMetricVerticalLength = i, t.formatMetricArea = o, t.formatImperialLength = u, t.formatImperialVerticalLength = f, t.formatImperialArea = l, t.formatDMS = m;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js":
  /*!*******************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js ***!
    \*******************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiCoreTsSupportMakeTemplateObjectHelperJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {
      return function (e, r) {
        return Object.defineProperty ? Object.defineProperty(e, "raw", {
          value: r
        }) : (e.raw = r, e);
      };
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/core/tsSupport/restHelper.js":
  /*!*****************************************************************!*\
    !*** ./node_modules/arcgis-js-api/core/tsSupport/restHelper.js ***!
    \*****************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiCoreTsSupportRestHelperJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {
      return function (e, n) {
        var t = {};

        for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && n.indexOf(r) < 0 && (t[r] = e[r]);

        if (null != e && "function" == typeof Object.getOwnPropertySymbols) for (var o = 0, r = Object.getOwnPropertySymbols(e); o < r.length; o++) n.indexOf(r[o]) < 0 && (t[r[o]] = e[r[o]]);
        return t;
      };
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/interactive/manipulatorUtils.js":
  /*!*****************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/interactive/manipulatorUtils.js ***!
    \*****************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dInteractiveManipulatorUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../../../core/libs/gl-matrix-2/mat4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4.js"), __webpack_require__(
    /*! ../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../layers/graphics/dehydratedFeatures */
    "./node_modules/arcgis-js-api/layers/graphics/dehydratedFeatures.js"), __webpack_require__(
    /*! ../layers/graphics/graphicUtils */
    "./node_modules/arcgis-js-api/views/3d/layers/graphics/graphicUtils.js"), __webpack_require__(
    /*! ../support/stack */
    "./node_modules/arcgis-js-api/views/3d/support/stack.js"), __webpack_require__(
    /*! ../webgl-engine/lib/Geometry */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Geometry.js"), __webpack_require__(
    /*! ../webgl-engine/lib/GeometryUtil */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryUtil.js"), __webpack_require__(
    /*! ../webgl-engine/materials/DefaultMaterial */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/DefaultMaterial.js"), __webpack_require__(
    /*! ../../interactive/Manipulator3D */
    "./node_modules/arcgis-js-api/views/interactive/Manipulator3D.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, a, r, i, n, o, c, l, s, u, m) {
      function p(e, t) {
        var a = 1 !== t,
            r = new u({
          diffuse: e,
          transparent: a,
          writeDepth: !a,
          cullFace: 2,
          opacity: t,
          castShadows: !1,
          softwareInstanced: !0
        }, "manipulator");
        return r.renderOccluded = 4, r;
      }

      function v(e, t, a) {
        return new m.Manipulator3D({
          view: e,
          renderObjects: [{
            geometry: new l(s.createSphereGeometry(1, 32, 32), "manipulator"),
            material: p(t, a)
          }]
        });
      }

      function g(e, t, a, n) {
        var o = i.vec3.subtract(c.sv3d.get(), e, a),
            l = i.vec3.cross(c.sv3d.get(), n, o),
            s = d(o, l, a, c.sm4d.get());
        r.mat4.invert(s, s);
        var u = i.vec3.transformMat4(c.sv3d.get(), t, s);
        return Math.atan2(u[1], u[0]);
      }

      function d(e, t, a, r) {
        var n = i.vec3.normalize(c.sv3d.get(), e),
            o = i.vec3.normalize(c.sv3d.get(), t),
            l = i.vec3.cross(c.sv3d.get(), n, o);
        return r[0] = n[0], r[1] = n[1], r[2] = n[2], r[3] = 0, r[4] = o[0], r[5] = o[1], r[6] = o[2], r[7] = 0, r[8] = l[0], r[9] = l[1], r[10] = l[2], r[11] = 0, r[12] = a[0], r[13] = a[1], r[14] = a[2], r[15] = 1, r;
      }

      function f(e, t) {
        var r = e.view.getViewForGraphic(t),
            i = a.isSome(r) && "computeAttachmentOrigin" in r ? r.computeAttachmentOrigin(t, e.view.spatialReference) : null;
        a.isSome(i) ? e.elevationAlignedLocation = i : h(e, t.geometry);
      }

      function h(e, t) {
        if (!a.isNone(t)) {
          var r = o.computeCentroid(t);
          a.isNone(r) || (e.location = n.hydrateGeometry(r));
        }
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.createManipulatorMaterial = p, t.createSphereManipulator = v, t.calculateInputRotationTransform = g, t.calculateTranslateRotateFromBases = d, t.placeManipulatorAtGraphic = f;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/directLineMeasurement3D/LaserLineRenderer.js":
  /*!***********************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/directLineMeasurement3D/LaserLineRenderer.js ***!
    \***********************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dInteractiveMeasurementToolsDirectLineMeasurement3DLaserLineRendererJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/tsSupport/extendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/extendsHelper.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec2f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec2f64.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec4.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec4f64.js"), __webpack_require__(
    /*! ../../../webgl-engine/lib/glUtil3D */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/glUtil3D.js"), __webpack_require__(
    /*! ../../../webgl-engine/lib/Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js"), __webpack_require__(
    /*! ../../../webgl-engine/materials/internal/MaterialUtil */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/MaterialUtil.js"), __webpack_require__(
    /*! ../../../webgl-engine/shaders/LaserLinePrograms */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/LaserLinePrograms.js"), __webpack_require__(
    /*! ../../../../webgl/renderState */
    "./node_modules/arcgis-js-api/views/webgl/renderState.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, i, r, n, o, s, c, a, f, l, p, h) {
      function u(e, t, i, r) {
        var o = m,
            c = v;
        n.vec3.transformMat4(o, t, r), n.vec3.copy(c, i), c[3] = 0, s.vec4.transformMat4(c, c, r), s.vec4.set(e, c[0], c[1], c[2], -n.vec3.dot(c, o));
      }

      var m = o.vec3f64.create(),
          v = c.vec4f64.create(),
          _ = {
        glowColor: [1, .5, 0],
        glowWidth: 8,
        innerColor: [1, 1, 1],
        innerWidth: 1,
        globalAlpha: .75
      };
      return function () {
        function e(e, t) {
          void 0 === t && (t = {}), this._projInfo = c.vec4f64.create(), this._zScale = r.vec2f64.create(), this._focusPlaneActive = !1, this._focusSphereActive = !1, this._segmentActive = !1, this._focusPosition = o.vec3f64.create(), this._focusSpherePosition = o.vec3f64.create(), this._segmentStartPosition = o.vec3f64.create(), this._segmentEndPosition = o.vec3f64.create(), this.canRender = !0, this._tempNormal = o.vec3f64.create(), this._tempDir = o.vec3f64.create(), this._tempUp = o.vec3f64.create(), this._tempVec3 = o.vec3f64.create(), this._tempVec4 = c.vec4f64.create(), this._renderCoordsHelper = e, this._params = l.copyParameters(t, _);
        }

        return Object.defineProperty(e.prototype, "renderSlots", {
          get: function get() {
            return [14];
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "needsLinearDepth", {
          get: function get() {
            return !0;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "focusPlaneActive", {
          get: function get() {
            return this._focusPlaneActive;
          },
          set: function set(e) {
            e !== this._focusPlaneActive && (this._focusPlaneActive = e, this._requestRender());
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "focusSphereActive", {
          get: function get() {
            return this._focusSphereActive;
          },
          set: function set(e) {
            e !== this._focusSphereActive && (this._focusSphereActive = e, this._requestRender());
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "segmentActive", {
          get: function get() {
            return this._segmentActive;
          },
          set: function set(e) {
            e !== this._segmentActive && (this._segmentActive = e, this._requestRender());
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "focusPosition", {
          get: function get() {
            return this._focusPosition;
          },
          set: function set(e) {
            n.vec3.copy(this._focusPosition, e), this._requestRender();
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "focusSpherePosition", {
          get: function get() {
            return this._focusSpherePosition;
          },
          set: function set(e) {
            n.vec3.copy(this._focusSpherePosition, e), this._requestRender();
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "segmentStartPosition", {
          get: function get() {
            return this._segmentStartPosition;
          },
          set: function set(e) {
            n.vec3.copy(this._segmentStartPosition, e), this._requestRender();
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "segmentEndPosition", {
          get: function get() {
            return this._segmentEndPosition;
          },
          set: function set(e) {
            n.vec3.copy(this._segmentEndPosition, e), this._requestRender();
          },
          enumerable: !0,
          configurable: !0
        }), e.prototype.setParameterValues = function (e) {
          l.updateParameters(this._params, e) && this._requestRender();
        }, e.prototype.initializeRenderContext = function (e) {
          this._initContext = e;
          var t = e.rctx;
          this._quadVAO = a.createQuadVAO(t), this._laserLineProgram = e.programRep.getProgram(p.program), this._laserLinePipelineState = h.makePipelineState({
            blending: h.simpleBlendingParams(1, 771),
            colorWrite: h.defaultColorWriteParams
          });
        }, e.prototype.uninitializeRenderContext = function () {
          this._quadVAO.dispose(), this._quadVAO = null, this._laserLineProgram = null, this._projInfo = null;
        }, e.prototype.render = function (e) {
          var t = e.rctx,
              i = e.camera,
              r = this._renderCoordsHelper,
              o = this._laserLineProgram,
              s = this._projInfo,
              c = this._zScale;

          if (t.bindProgram(o), t.setPipelineState(this._laserLinePipelineState), f.inverseProjectionInfo(i.projectionMatrix, i.fullWidth, i.fullHeight, s, c), o.setUniform4fv("projInfo", s), o.setUniform2fv("zScale", c), o.setUniform2f("nearFar", i.near, i.far), o.setUniform1f("maxPixelDistance", 2 * i.computeScreenPixelSizeAt(this._focusPosition)), this._focusPlaneActive) {
            var a = this._focusPosition,
                l = this._tempVec3,
                p = this._tempVec4;
            r.worldUpAtPosition(a, l), u(p, a, l, i.viewMatrix), o.setUniform4fv("focusPlane", p);
          } else o.setUniform4fv("focusPlane", [0, 0, 0, 1e10]);

          if (this._focusSphereActive) {
            var h = this._tempVec4,
                a = this._tempVec3;
            n.vec3.copy(h, this._focusSpherePosition), n.vec3.transformMat4(h, h, i.viewMatrix), n.vec3.copy(a, this._focusPosition), n.vec3.transformMat4(a, a, i.viewMatrix), h[3] = n.vec3.distance(h, a), o.setUniform4fv("focusSphere", h);
          } else o.setUniform4fv("focusSphere", [0, 0, 0, 1e10]);

          if (this._segmentActive) {
            var v = this._tempVec4,
                _ = this._tempVec3,
                g = this._tempUp,
                d = this._tempDir,
                P = this._tempNormal;
            n.vec3.lerp(_, this._segmentStartPosition, this._segmentEndPosition, .5), r.worldUpAtPosition(_, g), n.vec3.subtract(d, this._segmentEndPosition, this._segmentStartPosition), n.vec3.normalize(d, d), n.vec3.cross(P, g, d), n.vec3.normalize(P, P), u(v, this._segmentStartPosition, P, i.viewMatrix), o.setUniform4fv("segmentPlane", v);
          } else o.setUniform4fv("segmentPlane", [0, 0, 0, 1e10]);

          var b = m;
          n.vec3.copy(b, this._segmentStartPosition), r.setAltitude(0, b), n.vec3.transformMat4(b, b, i.viewMatrix), o.setUniform3fv("segmentStart", b);
          var y = m;
          n.vec3.copy(y, this._segmentEndPosition), r.setAltitude(0, y), n.vec3.transformMat4(y, y, i.viewMatrix), o.setUniform3fv("segmentEnd", y), o.setUniform1i("depthMap", 0), t.bindTexture(e.offscreenRenderingHelper.linearDepthTexture, 0);
          var S = e.camera.pixelRatio;
          return o.setUniform3fv("innerColor", this._params.innerColor), o.setUniform1f("innerWidth", this._params.innerWidth * S), o.setUniform3fv("glowColor", this._params.glowColor), o.setUniform1f("glowWidth", this._params.glowWidth * S), o.setUniform1f("globalAlpha", this._params.globalAlpha), t.bindVAO(this._quadVAO), t.drawArrays(5, 0, 4), !0;
        }, e.prototype._requestRender = function () {
          this._initContext && this._initContext.requestRender();
        }, e;
      }();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/Label.js":
  /*!*******************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/Label.js ***!
    \*******************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dInteractiveMeasurementToolsSupportLabelJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../overlay/LineOverlayItem */
    "./node_modules/arcgis-js-api/views/overlay/LineOverlayItem.js"), __webpack_require__(
    /*! ../../../../overlay/TextOverlayItem */
    "./node_modules/arcgis-js-api/views/overlay/TextOverlayItem.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, i, o) {
      return function () {
        function t(t) {
          this._textItem = new o({
            visible: !1
          }), this._calloutItem = new i({
            visible: !1,
            width: 2
          }), this._visible = !1, this._calloutVisible = !0, t && (this.fontSize = t);
        }

        return Object.defineProperty(t.prototype, "textItem", {
          get: function get() {
            return this._textItem;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "calloutItem", {
          get: function get() {
            return this._calloutItem;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "text", {
          get: function get() {
            return this._textItem.text;
          },
          set: function set(t) {
            this._textItem.text = t;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "fontSize", {
          get: function get() {
            return this._textItem.fontSize;
          },
          set: function set(t) {
            this._textItem.fontSize = t;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "visible", {
          get: function get() {
            return this._visible;
          },
          set: function set(t) {
            this._visible = t, this._updateVisibility();
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype.addToView = function (t) {
          t.overlay.items.addMany([this._textItem, this._calloutItem]);
        }, t.prototype.removeFromView = function (t) {
          t.overlay && !t.overlay.destroyed && t.overlay.items.removeMany([this._textItem, this._calloutItem]);
        }, t.prototype.updatePosition = function (t, e) {
          if (e) {
            var i = e[0] - t[0],
                o = e[1] - t[1];
            this._textItem.position = [e[0], e[1]], this._textItem.anchor = Math.abs(i) > Math.abs(o) ? i > 0 ? "left" : "right" : o > 0 ? "top" : "bottom", this._calloutItem.startPosition = [t[0], t[1]], this._calloutItem.endPosition = [e[0], e[1]], this._calloutVisible = !0;
          } else this._textItem.position = [t[0], t[1]], this._textItem.anchor = "center", this._calloutVisible = !1;
        }, t.prototype._updateVisibility = function () {
          this._textItem.visible = this._visible, this._calloutItem.visible = this._visible && this._calloutVisible;
        }, t;
      }();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/LabelSegment.js":
  /*!**************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/LabelSegment.js ***!
    \**************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dInteractiveMeasurementToolsSupportLabelSegmentJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ./viewUtils */
    "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/viewUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, i, t, c, r) {
      return function () {
        function e() {
          this.origin = c.vec3f64.create(), this.start = c.vec3f64.create(), this.end = c.vec3f64.create();
        }

        return e.prototype.update = function (e, i, c) {
          if (t.vec3.copy(this.start, e), t.vec3.copy(this.end, i), c) switch (c) {
            case "start":
              t.vec3.copy(this.origin, this.start);
              break;

            case "center":
              r.midpoint([e, i], this.origin);
              break;

            case "end":
              t.vec3.copy(this.origin, this.end);
              break;

            default:
              t.vec3.copy(this.origin, c);
          } else r.midpoint([e, i], this.origin);
        }, e;
      }();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/PathSegmentInterpolator.js":
  /*!*************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/PathSegmentInterpolator.js ***!
    \*************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dInteractiveMeasurementToolsSupportPathSegmentInterpolatorJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../../support/mathUtils */
    "./node_modules/arcgis-js-api/views/3d/support/mathUtils.js"), __webpack_require__(
    /*! ../../../support/projectionUtils */
    "./node_modules/arcgis-js-api/views/3d/support/projectionUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, i, o, r, n) {
      var s;
      return function (t) {
        var e = function () {
          function t(t, e) {
            this._startPosition = o.vec3f64.create(), this._endPosition = o.vec3f64.create(), i.vec3.copy(this._startPosition, t), i.vec3.copy(this._endPosition, e);
          }

          return t.prototype.eval = function (t, e) {
            i.vec3.lerp(e, this._startPosition, this._endPosition, t);
          }, t;
        }();

        t.Linear = e;

        var s = function () {
          function t(t, e, i, r) {
            this._startPosition = o.vec3f64.create(), this._endPosition = o.vec3f64.create(), n.vectorToVector(t, i, this._startPosition, n.SphericalECEFSpatialReference), n.vectorToVector(e, i, this._endPosition, n.SphericalECEFSpatialReference), this._destSR = r;
          }

          return t.prototype.eval = function (t, e) {
            r.slerp(this._startPosition, this._endPosition, t, e), n.vectorToVector(e, n.SphericalECEFSpatialReference, e, this._destSR);
          }, t;
        }();

        t.Spherical = s;
      }(s || (s = {})), s;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/UnitNormalizer.js":
  /*!****************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/UnitNormalizer.js ***!
    \****************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dInteractiveMeasurementToolsSupportUnitNormalizerJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/unitUtils */
    "./node_modules/arcgis-js-api/core/unitUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r) {
      return function () {
        function e(e) {
          void 0 === e && (e = null), this.spatialReference = e, this._updateNormalizationFactors;
        }

        return Object.defineProperty(e.prototype, "spatialReference", {
          get: function get() {
            return this._spatialReference;
          },
          set: function set(e) {
            e !== this._spatialReference && (this._spatialReference = e, this._updateNormalizationFactors());
          },
          enumerable: !0,
          configurable: !0
        }), e.prototype.normalizeDistance = function (e) {
          return e * this._metersPerDistanceUnit;
        }, e.prototype.normalizeElevation = function (e) {
          return e * this._metersPerElevationUnit;
        }, e.prototype.normalizeArea = function (e) {
          return e * this._squareMetersPerAreaUnit;
        }, e.prototype._updateNormalizationFactors = function () {
          this._metersPerDistanceUnit = r.getMetersPerUnitForSR(this._spatialReference, 1), this._metersPerElevationUnit = r.getMetersPerUnitForSR(this._spatialReference, 1), this._squareMetersPerAreaUnit = this._metersPerDistanceUnit * this._metersPerDistanceUnit;
        }, e;
      }();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/labelUtils.js":
  /*!************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/labelUtils.js ***!
    \************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dInteractiveMeasurementToolsSupportLabelUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/screenUtils */
    "./node_modules/arcgis-js-api/core/screenUtils.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec2 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec2.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ./viewUtils */
    "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/viewUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r, t, n, o, c, a) {
      function i(e) {
        switch (e) {
          case "top":
            return "bottom";

          case "right":
            return "left";

          case "bottom":
            return "top";

          case "left":
            return "right";
        }
      }

      function s(e, r, t) {
        return e.projectPoint(r, S), !(S[2] < 0 || S[2] > 1) && (e.renderToScreen(S, t), !0);
      }

      function l(e, r, t) {
        var n = s(t, r, h);
        return n && e.updatePosition(h, null), n;
      }

      function u(e, r, t, o, c, i) {
        if (!r) return !1;
        a.screenSpaceTangent(r.start, r.end, b, e), n.vec2.set(f, -b[1], b[0]);
        var s = !1;

        switch (o) {
          case "top":
            s = f[1] < 0;
            break;

          case "bottom":
            s = f[1] > 0;
            break;

          case "left":
            s = f[0] > 0;
            break;

          case "right":
            s = f[0] < 0;
        }

        if (s && n.vec2.negate(f, f), 0 === n.vec2.length(f)) switch (o) {
          case "top":
            f[1] = 1;
            break;

          case "bottom":
            f[1] = -1;
            break;

          case "left":
            f[0] = -1;
            break;

          case "right":
            f[0] = 1;
        }
        return e.projectPoint(r.origin, S), !(S[2] < 0 || S[2] > 1) && (e.renderToScreen(S, c), n.vec2.scale(f, f, t * e.pixelRatio), n.vec2.add(f, f, S), e.renderToScreen(f, i), !0);
      }

      function d(e, r, t, n, o) {
        var c = u(o, r, t, n, h, y);
        return c && e.updatePosition(h, y), c;
      }

      function p(e, r, t, o, c, i) {
        return !(!r || !t) && (a.screenSpaceTangent(r.end, r.start, b, e), a.screenSpaceTangent(t.start, t.end, m, e), n.vec2.add(f, b, m), n.vec2.negate(f, f), n.vec2.normalize(f, f), e.projectPoint(r.end, S), !(S[2] < 0 || S[2] > 1) && (e.renderToScreen(S, c), n.vec2.scale(f, f, o * e.pixelRatio), n.vec2.add(f, f, S), e.renderToScreen(f, i), !0));
      }

      function v(e, r, t, c, a, i) {
        return e.projectPoint(r, S), o.vec3.add(T, r, t), e.projectPoint(T, g), !(S[2] < 0 || S[2] > 1 || g[2] < 0 || g[2] > 1) && (n.vec2.subtract(f, g, S), n.vec2.normalize(f, f), e.renderToScreen(S, a), n.vec2.scale(f, f, c * e.pixelRatio), n.vec2.add(f, f, S), e.renderToScreen(f, i), !0);
      }

      function P(e, r, t, n, o) {
        var c = p(o, r, t, n, h, y);
        return c && e.updatePosition(h, y), c;
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      }), r.mirrorPosition = i, r.computeLabelPositionFromPoint = s, r.positionLabelOnPoint = l, r.computeLabelPositionFromSegment = u, r.positionLabelOnSegment = d, r.computeLabelPositionFromCorner = p, r.computeLabelPositionFromPlane = v, r.positionLabelOnCorner = P;
      var b = t.createRenderScreenPointArray(),
          m = t.createRenderScreenPointArray(),
          f = t.createRenderScreenPointArray(),
          S = t.createRenderScreenPointArray3(),
          g = t.createRenderScreenPointArray3(),
          T = c.vec3f64.create(),
          h = t.createScreenPointArray(),
          y = t.createScreenPointArray();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/viewUtils.js":
  /*!***********************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/interactive/measurementTools/support/viewUtils.js ***!
    \***********************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dInteractiveMeasurementToolsSupportViewUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/lang */
    "./node_modules/arcgis-js-api/core/lang.js"), __webpack_require__(
    /*! ../../../../../core/screenUtils */
    "./node_modules/arcgis-js-api/core/screenUtils.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec2 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec2.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r, t, n, c, a, i, o) {
      function s(e, r) {
        var n = t.mixin({}, e),
            c = t.clone(r);
        return t.mixin(n, c), n;
      }

      function l(e, r, t, n) {
        for (; e.length < r;) e.push(t());

        if (n) for (; e.length > r;) {
          var c = e.pop();
          n(c);
        } else e.length = r;
      }

      function v(e, r, t) {
        c.mat4.identity(t), c.mat4.translate(t, t, r), i.vec3.set(m, e, e, e), c.mat4.scale(t, t, m);
      }

      function f(e, r) {
        if (i.vec3.set(r, 0, 0, 0), e.length > 0) {
          for (var t = 0; t < e.length; ++t) i.vec3.add(r, r, e[t]);

          i.vec3.scale(r, r, 1 / e.length);
        }
      }

      function d(e, r, t, n) {
        n.projectPoint(e, S), n.projectPoint(r, A), a.vec2.subtract(t, h, x), a.vec2.normalize(t, t);
      }

      function u(e, r, t) {
        var c = t._stage.getCamera();

        t.renderCoordsHelper.toRenderCoords(e, P), c.projectPoint(P, y), n.renderArrayToScreen(t, y, r);
      }

      function p(e, r, t) {
        return u(e, j, t), u(r, T, t), a.vec2.distance(j, T);
      }

      function g(e, r, t) {
        return u(e, b, t), a.vec2.distance(b, r);
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      });
      var m = o.vec3f64.create();
      r.copyParameter = s, r.resizeArray = l, r.scaleTranslateMatrix = v, r.midpoint = f, r.screenSpaceTangent = d, r.projectPoint = u, r.pointToPointScreenDistance = p, r.pointToScreenPositionDistance = g;
      var P = o.vec3f64.create(),
          y = n.createRenderScreenPointArray3(),
          S = n.createRenderScreenPointArray3(),
          x = S,
          A = n.createRenderScreenPointArray3(),
          h = A,
          b = n.createScreenPointArray(),
          j = n.createScreenPointArray(),
          T = n.createScreenPointArray();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/layers/graphics/graphicUtils.js":
  /*!*****************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/layers/graphics/graphicUtils.js ***!
    \*****************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dLayersGraphicsGraphicUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/mathUtils */
    "./node_modules/arcgis-js-api/core/mathUtils.js"), __webpack_require__(
    /*! ../../../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/mat4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/mat4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f64.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec2f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec2f64.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec4.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec4f64.js"), __webpack_require__(
    /*! ../../../../geometry/support/aaBoundingBox */
    "./node_modules/arcgis-js-api/geometry/support/aaBoundingBox.js"), __webpack_require__(
    /*! ../../../../geometry/support/aaBoundingRect */
    "./node_modules/arcgis-js-api/geometry/support/aaBoundingRect.js"), __webpack_require__(
    /*! ../../../../geometry/support/centroid */
    "./node_modules/arcgis-js-api/geometry/support/centroid.js"), __webpack_require__(
    /*! ../../../../geometry/support/coordsUtils */
    "./node_modules/arcgis-js-api/geometry/support/coordsUtils.js"), __webpack_require__(
    /*! ../../../../layers/graphics/dehydratedFeatures */
    "./node_modules/arcgis-js-api/layers/graphics/dehydratedFeatures.js"), __webpack_require__(
    /*! ../../support/projectionUtils */
    "./node_modules/arcgis-js-api/views/3d/support/projectionUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, n, i, o, a, l, u, s, m, c, f, v, d, h) {
      function p(e, t) {
        if ("point" === e.type) return b(e, t, !1);
        if (d.isHydratedGeometry(e)) switch (e.type) {
          case "extent":
            return b(e.center, t, !1);

          case "polygon":
            return b(e.centroid, t, !1);

          case "polyline":
            return b(g(e), t, !0);

          case "mesh":
            return b(e.extent.center, t, !1);
        } else switch (e.type) {
          case "extent":
            return b(y(e), t, !0);

          case "polygon":
            return b(x(e), t, !0);

          case "polyline":
            return b(g(e), t, !0);
        }
      }

      function g(e) {
        var t = e.paths[0];
        if (!t || 0 === t.length) return null;
        var r = v.getPointOnPath(t, v.getPathLength(t) / 2);
        return d.makeDehydratedPoint(r[0], r[1], r[2], e.spatialReference);
      }

      function y(e) {
        var t = r.isFinite(e.zmin);
        return d.makeDehydratedPoint(.5 * (e.xmax + e.xmin), .5 * (e.ymax + e.ymin), t ? .5 * (e.zmax + e.zmin) : void 0, e.spatialReference);
      }

      function x(e) {
        var t = e.rings[0];
        if (!t || 0 === t.length) return null;
        var r = f.ringsCentroid(e.rings, e.hasZ);
        return d.makeDehydratedPoint(r[0], r[1], r[2], e.spatialReference);
      }

      function b(e, t, r) {
        var n = r ? e : d.clonePoint(e);
        return t && e ? h.pointToPoint(e, n, t) ? n : null : n;
      }

      function P(e, t, r) {
        if (e) {
          t || (t = c.create());
          var n = e,
              i = .5 * n.width * (r - 1),
              o = .5 * n.height * (r - 1);
          return n.width < 1e-7 * n.height ? i += o / 20 : n.height < 1e-7 * n.width && (o += i / 20), u.vec4.set(t, n.xmin - i, n.ymin - o, n.xmax + i, n.ymax + o), t;
        }

        return null;
      }

      function S(e, t) {
        for (var r = 0; r < e.geometries.length; ++r) {
          var n = e.geometries[r].data,
              i = n.vertexAttributes.auxpos1;
          i && i.data[3] !== t && (i.data[3] = t, e.geometryVertexAttrsUpdated(r));
        }
      }

      function V(e, t) {
        var r = s.vec4f64.clone(s.vec4f64.ONES);
        return n.isSome(e) && (r[0] = e[0], r[1] = e[1], r[2] = e[2]), n.isSome(t) ? r[3] = t : n.isSome(e) && e.length > 3 && (r[3] = e[3]), r;
      }

      function A(e, t, r, i, o, a) {
        void 0 === a && (a = [0, 0, 0, 0]);

        for (var l = 0; l < 3; ++l) n.isSome(e) && null != e[l] ? a[l] = e[l] : n.isSome(r) && null != r[l] ? a[l] = r[l] : a[l] = o[l];

        return n.isSome(t) ? a[3] = t : n.isSome(i) ? a[3] = i : a[3] = o[3], a;
      }

      function R(e, t, r, n) {
        void 0 === e && (e = l.vec3f64.ONES), void 0 === n && (n = 1);
        var i = new Array(3);
        if (null == t || null == r) i[0] = 1, i[1] = 1, i[2] = 1;else {
          for (var o = void 0, a = 0, u = 2; u >= 0; u--) {
            var s = e[u],
                m = void 0,
                c = null != s,
                f = 0 === u && !o && !c,
                v = r[u];
            "symbolValue" === s || f ? m = 0 !== v ? t[u] / v : 1 : c && "proportional" !== s && isFinite(s) && (m = 0 !== v ? s / v : 1), null != m && (i[u] = m, o = m, a = Math.max(a, Math.abs(m)));
          }

          for (var u = 2; u >= 0; u--) null == i[u] ? i[u] = o : 0 === i[u] && (i[u] = .001 * a);
        }

        for (var u = 2; u >= 0; u--) i[u] /= n;

        return l.vec3f64.fromArray(i);
      }

      function w(e, t) {
        var r = t.isPrimitive,
            n = t.width,
            i = t.depth,
            o = t.height,
            a = r ? 10 : 1;
        if (null == n && null == o && null == i) return [a * e[0], a * e[1], a * e[2]];

        for (var u, s = l.vec3f64.fromValues(n, i, o), m = 0; m < 3; m++) {
          var c = s[m];

          if (null != c) {
            u = c / e[m];
            break;
          }
        }

        for (var m = 0; m < 3; m++) null == s[m] && (s[m] = e[m] * u);

        return s;
      }

      function z(e) {
        return null != e.isPrimitive;
      }

      function D(e) {
        return z(e) && (e = [e.width, e.depth, e.height]), M(e) ? null : "Symbol sizes may not be negative values";
      }

      function M(e) {
        if (Array.isArray(e)) {
          for (var t = 0, r = e; t < r.length; t++) {
            if (!M(r[t])) return !1;
          }

          return !0;
        }

        return null == e || e >= 0;
      }

      function O(e, t, r, n) {
        void 0 === n && (n = o.mat4f64.create());
        var a = e || 0,
            l = t || 0,
            u = r || 0;
        return 0 !== a && i.mat4.rotateZ(n, n, -a / 180 * Math.PI), 0 !== l && i.mat4.rotateX(n, n, l / 180 * Math.PI), 0 !== u && i.mat4.rotateY(n, n, u / 180 * Math.PI), n;
      }

      function B(e, t) {
        return null != t.minDemResolution ? t.minDemResolution : m.isPoint(e) ? t.minDemResolutionForPoints : .01 * m.maximumDimension(e);
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.computeCentroid = p, t.enlargeExtent = P, t.updateVertexAttributeAuxpos1w = S, t.mixinColorAndOpacity = V, t.overrideColor = A, t.computeObjectScale = R, t.computeSizeWithResourceSize = w, t.validateSymbolLayerSize = D, t.isValidSize = M, t.computeObjectRotation = O, t.demResolutionForBoundingBox = B, t.namedAnchorToHUDMaterialAnchorPos = {
        "bottom-left": a.vec2f64.fromValues(0, 0),
        bottom: a.vec2f64.fromValues(.5, 0),
        "bottom-right": a.vec2f64.fromValues(1, 0),
        left: a.vec2f64.fromValues(0, .5),
        center: a.vec2f64.fromValues(.5, .5),
        right: a.vec2f64.fromValues(1, .5),
        "top-left": a.vec2f64.fromValues(0, 1),
        top: a.vec2f64.fromValues(.5, 1),
        "top-right": a.vec2f64.fromValues(1, 1)
      };
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/support/imageUtils.js":
  /*!*******************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/support/imageUtils.js ***!
    \*******************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dSupportImageUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../core/tsSupport/assignHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/assignHelper.js"), __webpack_require__(
    /*! ../../../request */
    "./node_modules/arcgis-js-api/request.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, n) {
      function o(e) {
        for (var t = atob(e.split(",")[1]), r = e.split(",")[0].split(":")[1].split(";")[0], n = new ArrayBuffer(t.length), o = new Uint8Array(n), i = 0; i < t.length; i++) o[i] = t.charCodeAt(i);

        return new Blob([n], {
          type: r
        });
      }

      function i(e, t) {
        return n(e, r({
          responseType: "image"
        }, t)).then(function (e) {
          return e.data;
        });
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.dataURItoBlob = o, t.requestImage = i;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/collections/Component/Material/shader/DecodeSymbolColor.glsl.js":
  /*!**************************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/collections/Component/Material/shader/DecodeSymbolColor.glsl.js ***!
    \**************************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCollectionsComponentMaterialShaderDecodeSymbolColorGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../../../core/shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (o, l, e, n) {
      function a(o) {
        o.vertex.code.add(n.glsl(s || (s = e(["\n    vec4 decodeSymbolColor(vec4 symbolColor, out int colorMixMode) {\n      float symbolAlpha = 0.0;\n\n      const float maxTint = 85.0;\n      const float maxReplace = 170.0;\n      const float scaleAlpha = 3.0;\n\n      if (symbolColor.a > maxReplace) {\n        colorMixMode = ", ";\n        symbolAlpha = scaleAlpha * (symbolColor.a - maxReplace);\n      } else if (symbolColor.a > maxTint) {\n        colorMixMode = ", ";\n        symbolAlpha = scaleAlpha * (symbolColor.a - maxTint);\n      } else if (symbolColor.a > 0.0) {\n        colorMixMode = ", ";\n        symbolAlpha = scaleAlpha * symbolColor.a;\n      } else {\n        colorMixMode = ", ";\n        symbolAlpha = 0.0;\n      }\n\n      return vec4(symbolColor.r, symbolColor.g, symbolColor.b, symbolAlpha);\n    }\n  "], ["\n    vec4 decodeSymbolColor(vec4 symbolColor, out int colorMixMode) {\n      float symbolAlpha = 0.0;\n\n      const float maxTint = 85.0;\n      const float maxReplace = 170.0;\n      const float scaleAlpha = 3.0;\n\n      if (symbolColor.a > maxReplace) {\n        colorMixMode = ", ";\n        symbolAlpha = scaleAlpha * (symbolColor.a - maxReplace);\n      } else if (symbolColor.a > maxTint) {\n        colorMixMode = ", ";\n        symbolAlpha = scaleAlpha * (symbolColor.a - maxTint);\n      } else if (symbolColor.a > 0.0) {\n        colorMixMode = ", ";\n        symbolAlpha = scaleAlpha * symbolColor.a;\n      } else {\n        colorMixMode = ", ";\n        symbolAlpha = 0.0;\n      }\n\n      return vec4(symbolColor.r, symbolColor.g, symbolColor.b, symbolAlpha);\n    }\n  "])), n.glsl["int"](1), n.glsl["int"](3), n.glsl["int"](4), n.glsl["int"](1)));
      }

      Object.defineProperty(l, "__esModule", {
        value: !0
      }), l.DecodeSymbolColor = a;
      var s;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/DiscardOrAdjustAlpha.glsl.js":
  /*!**********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/DiscardOrAdjustAlpha.glsl.js ***!
    \**********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryDiscardOrAdjustAlphaGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, d, r, a) {
      function o(e, d) {
        var o = e.fragment;

        switch (d.alphaDiscardMode) {
          case 0:
            o.code.add(a.glsl(c || (c = r(["\n        void discardOrAdjustAlpha(inout vec4 color) {}\n      "], ["\n        void discardOrAdjustAlpha(inout vec4 color) {}\n      "]))));
            break;

          case 1:
            o.code.add(a.glsl(l || (l = r(["\n        void discardOrAdjustAlpha(inout vec4 color) {\n          color.a = 1.0;\n        }\n      "], ["\n        void discardOrAdjustAlpha(inout vec4 color) {\n          color.a = 1.0;\n        }\n      "]))));
            break;

          case 2:
            o.uniforms.add("textureAlphaCutoff", "float"), o.code.add(a.glsl(t || (t = r(["\n        #define discardOrAdjustAlpha(color) { if (color.a < textureAlphaCutoff) { discard; } else { color.a = 1.0; } }\n      "], ["\n        #define discardOrAdjustAlpha(color) { if (color.a < textureAlphaCutoff) { discard; } else { color.a = 1.0; } }\n      "]))));
            break;

          case 3:
            e.fragment.uniforms.add("textureAlphaCutoff", "float"), e.fragment.code.add(a.glsl(s || (s = r(["\n        #define discardOrAdjustAlpha(color) { if (color.a < textureAlphaCutoff) { discard; } }\n      "], ["\n        #define discardOrAdjustAlpha(color) { if (color.a < textureAlphaCutoff) { discard; } }\n      "]))));
        }
      }

      Object.defineProperty(d, "__esModule", {
        value: !0
      }), d.DiscardOrAdjustAlpha = o, d.TEXTURE_ALPHA_CUTOFF_DEFAULT = .1;
      var c, l, t, s;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js":
  /*!********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js ***!
    \********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryForwardLinearDepthGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r, a, n) {
      function i(e, r) {
        0 === r.output && r.receiveShadows ? (e.varyings.add("linearDepth", "float"), e.vertex.code.add(n.glsl(o || (o = a(["\n      void forwardLinearDepth() { linearDepth = gl_Position.w; }\n    "], ["\n      void forwardLinearDepth() { linearDepth = gl_Position.w; }\n    "]))))) : 1 === r.output || 3 === r.output ? (e.varyings.add("linearDepth", "float"), e.vertex.uniforms.add("uCameraNearFar", "vec2"), e.vertex.code.add(n.glsl(t || (t = a(["\n      void forwardLinearDepth() {\n        linearDepth = (-position_view().z - uCameraNearFar[0]) / (uCameraNearFar[1] - uCameraNearFar[0]);\n      }\n    "], ["\n      void forwardLinearDepth() {\n        linearDepth = (-position_view().z - uCameraNearFar[0]) / (uCameraNearFar[1] - uCameraNearFar[0]);\n      }\n    "]))))) : e.vertex.code.add(n.glsl(d || (d = a(["\n      void forwardLinearDepth() {}\n    "], ["\n      void forwardLinearDepth() {}\n    "]))));
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      }), r.ForwardLinearDepth = i;
      var o, t, d;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js":
  /*!********************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js ***!
    \********************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryOffsetGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (o, e, c, n) {
      function r(o) {
        o.vertex.code.add(n.glsl(l || (l = c(["\n    vec4 offsetBackfacingClipPosition(vec4 posClip, vec3 posWorld, vec3 normalWorld, vec3 camPosWorld) {\n      vec3 camToVert = posWorld - camPosWorld;\n\n      bool isBackface = dot(camToVert, normalWorld) > 0.0;\n      if (isBackface) {\n        posClip.z += 0.0000003 * posClip.w;\n      }\n      return posClip;\n    }\n  "], ["\n    vec4 offsetBackfacingClipPosition(vec4 posClip, vec3 posWorld, vec3 normalWorld, vec3 camPosWorld) {\n      vec3 camToVert = posWorld - camPosWorld;\n\n      bool isBackface = dot(camToVert, normalWorld) > 0.0;\n      if (isBackface) {\n        posClip.z += 0.0000003 * posClip.w;\n      }\n      return posClip;\n    }\n  "]))));
      }

      Object.defineProperty(e, "__esModule", {
        value: !0
      }), e.Offset = r;
      var l;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js":
  /*!*******************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js ***!
    \*******************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibrarySliceGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (s, e, n, i, c, o) {
      function a(s, e) {
        e.slicePlaneEnabled ? (s.extensions.add("GL_OES_standard_derivatives"), s.fragment.uniforms.add("slicePlaneOrigin", "vec3"), s.fragment.uniforms.add("slicePlaneBasis1", "vec3"), s.fragment.uniforms.add("slicePlaneBasis2", "vec3"), s.fragment.code.add(o.glsl(l || (l = n(["\n      struct SliceFactors {\n        float front;\n        float side0;\n        float side1;\n        float side2;\n        float side3;\n      };\n\n      SliceFactors calculateSliceFactors(vec3 pos) {\n        vec3 rel = pos - slicePlaneOrigin;\n\n        vec3 slicePlaneNormal = -cross(slicePlaneBasis1, slicePlaneBasis2);\n        float slicePlaneW = -dot(slicePlaneNormal, slicePlaneOrigin);\n\n        float basis1Len2 = dot(slicePlaneBasis1, slicePlaneBasis1);\n        float basis2Len2 = dot(slicePlaneBasis2, slicePlaneBasis2);\n\n        float basis1Dot = dot(slicePlaneBasis1, rel);\n        float basis2Dot = dot(slicePlaneBasis2, rel);\n\n        return SliceFactors(\n          dot(slicePlaneNormal, pos) + slicePlaneW,\n          -basis1Dot - basis1Len2,\n          basis1Dot - basis1Len2,\n          -basis2Dot - basis2Len2,\n          basis2Dot - basis2Len2\n        );\n      }\n\n      bool sliceByFactors(SliceFactors factors) {\n        return factors.front < 0.0\n          && factors.side0 < 0.0\n          && factors.side1 < 0.0\n          && factors.side2 < 0.0\n          && factors.side3 < 0.0;\n      }\n\n      bool sliceByPlane(vec3 pos) {\n        return sliceByFactors(calculateSliceFactors(pos));\n      }\n\n      vec4 applySliceHighlight(vec4 color, vec3 pos) {\n        SliceFactors factors = calculateSliceFactors(pos);\n\n        if (sliceByFactors(factors)) {\n          return color;\n        }\n\n        const float HIGHLIGHT_WIDTH = 1.0;\n        const vec4 HIGHLIGHT_COLOR = vec4(0.0, 0.0, 0.0, 0.3);\n\n        factors.front /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.front);\n        factors.side0 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side0);\n        factors.side1 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side1);\n        factors.side2 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side2);\n        factors.side3 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side3);\n\n        float highlightFactor = (1.0 - step(0.5, factors.front))\n          * (1.0 - step(0.5, factors.side0))\n          * (1.0 - step(0.5, factors.side1))\n          * (1.0 - step(0.5, factors.side2))\n          * (1.0 - step(0.5, factors.side3));\n\n        return mix(color, vec4(HIGHLIGHT_COLOR.rgb, color.a), highlightFactor * HIGHLIGHT_COLOR.a);\n      }\n      #define rejectBySlice(_pos_) sliceByPlane(_pos_)\n      #define discardBySlice(_pos_) { if (sliceByPlane(_pos_)) discard; }\n      "], ["\n      struct SliceFactors {\n        float front;\n        float side0;\n        float side1;\n        float side2;\n        float side3;\n      };\n\n      SliceFactors calculateSliceFactors(vec3 pos) {\n        vec3 rel = pos - slicePlaneOrigin;\n\n        vec3 slicePlaneNormal = -cross(slicePlaneBasis1, slicePlaneBasis2);\n        float slicePlaneW = -dot(slicePlaneNormal, slicePlaneOrigin);\n\n        float basis1Len2 = dot(slicePlaneBasis1, slicePlaneBasis1);\n        float basis2Len2 = dot(slicePlaneBasis2, slicePlaneBasis2);\n\n        float basis1Dot = dot(slicePlaneBasis1, rel);\n        float basis2Dot = dot(slicePlaneBasis2, rel);\n\n        return SliceFactors(\n          dot(slicePlaneNormal, pos) + slicePlaneW,\n          -basis1Dot - basis1Len2,\n          basis1Dot - basis1Len2,\n          -basis2Dot - basis2Len2,\n          basis2Dot - basis2Len2\n        );\n      }\n\n      bool sliceByFactors(SliceFactors factors) {\n        return factors.front < 0.0\n          && factors.side0 < 0.0\n          && factors.side1 < 0.0\n          && factors.side2 < 0.0\n          && factors.side3 < 0.0;\n      }\n\n      bool sliceByPlane(vec3 pos) {\n        return sliceByFactors(calculateSliceFactors(pos));\n      }\n\n      vec4 applySliceHighlight(vec4 color, vec3 pos) {\n        SliceFactors factors = calculateSliceFactors(pos);\n\n        if (sliceByFactors(factors)) {\n          return color;\n        }\n\n        const float HIGHLIGHT_WIDTH = 1.0;\n        const vec4 HIGHLIGHT_COLOR = vec4(0.0, 0.0, 0.0, 0.3);\n\n        factors.front /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.front);\n        factors.side0 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side0);\n        factors.side1 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side1);\n        factors.side2 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side2);\n        factors.side3 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side3);\n\n        float highlightFactor = (1.0 - step(0.5, factors.front))\n          * (1.0 - step(0.5, factors.side0))\n          * (1.0 - step(0.5, factors.side1))\n          * (1.0 - step(0.5, factors.side2))\n          * (1.0 - step(0.5, factors.side3));\n\n        return mix(color, vec4(HIGHLIGHT_COLOR.rgb, color.a), highlightFactor * HIGHLIGHT_COLOR.a);\n      }\n      #define rejectBySlice(_pos_) sliceByPlane(_pos_)\n      #define discardBySlice(_pos_) { if (sliceByPlane(_pos_)) discard; }\n      "])))), e.sliceHighlightDisabled ? s.fragment.code.add(o.glsl(t || (t = n(["\n        #define highlightSlice(_color_, _pos_) (_color_)\n      "], ["\n        #define highlightSlice(_color_, _pos_) (_color_)\n      "])))) : s.fragment.code.add(o.glsl(r || (r = n(["\n      #define highlightSlice(_color_, _pos_) applySliceHighlight(_color_, _pos_)\n    "], ["\n      #define highlightSlice(_color_, _pos_) applySliceHighlight(_color_, _pos_)\n    "]))))) : s.fragment.code.add(o.glsl(f || (f = n(["\n      #define rejectBySlice(_pos_) false\n      #define discardBySlice(_pos_) {}\n      #define highlightSlice(_color_, _pos_) (_color_)\n    "], ["\n      #define rejectBySlice(_pos_) false\n      #define discardBySlice(_pos_) {}\n      #define highlightSlice(_color_, _pos_) (_color_)\n    "]))));
      }

      Object.defineProperty(e, "__esModule", {
        value: !0
      }), e.Slice = a, function (s) {
        function e(e, n, i) {
          s.bindUniforms(e, n, i.slicePlane, i.origin);
        }

        function n(s, e, n, c) {
          e.slicePlaneEnabled && (c ? (i.vec3.subtract(d, n.origin, c), s.setUniform3fv("slicePlaneOrigin", d)) : s.setUniform3fv("slicePlaneOrigin", n.origin), s.setUniform3fv("slicePlaneBasis1", n.basis1), s.setUniform3fv("slicePlaneBasis2", n.basis2));
        }

        s.bindUniformsWithOrigin = e, s.bindUniforms = n;
      }(a = e.Slice || (e.Slice = {}));
      var l,
          t,
          r,
          f,
          d = c.vec3f64.create();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js":
  /*!***********************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js ***!
    \***********************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryTransformGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4f32 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f32.js"), __webpack_require__(
    /*! ../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r, n, t, o, a) {
      function i(e, r) {
        r.linearDepth ? e.vertex.code.add(a.glsl(s || (s = n(["\n    vec4 transformPositionWithDepth(mat4 proj, mat4 view, vec3 pos, vec2 nearFar, out float depth) {\n      vec4 eye = view * vec4(pos, 1.0);\n      depth = (-eye.z - nearFar[0]) / (nearFar[1] - nearFar[0]) ;\n      return proj * eye;\n    }\n    "], ["\n    vec4 transformPositionWithDepth(mat4 proj, mat4 view, vec3 pos, vec2 nearFar, out float depth) {\n      vec4 eye = view * vec4(pos, 1.0);\n      depth = (-eye.z - nearFar[0]) / (nearFar[1] - nearFar[0]) ;\n      return proj * eye;\n    }\n    "])))) : e.vertex.code.add(a.glsl(p || (p = n(["\n    vec4 transformPosition(mat4 proj, mat4 view, vec3 pos) {\n      // Make sure the order of operations is the same as in transformPositionWithDepth.\n      return proj * (view * vec4(pos, 1.0));\n    }\n    "], ["\n    vec4 transformPosition(mat4 proj, mat4 view, vec3 pos) {\n      // Make sure the order of operations is the same as in transformPositionWithDepth.\n      return proj * (view * vec4(pos, 1.0));\n    }\n    "]))));
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      }), r.Transform = i, function (e) {
        function r(e, r) {
          t.mat4.translate(v, r.view, r.origin), e.setUniform3fv("localOrigin", r.origin), e.setUniformMatrix4fv("view", v);
        }

        e.bindUniforms = r;
      }(i = r.Transform || (r.Transform = {}));
      var s,
          p,
          v = o.mat4f32.create();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js":
  /*!****************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js ***!
    \****************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryAttributesNormalAttributeGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../util/DecodeNormal.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/DecodeNormal.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r, n, o, l) {
      function a(e, r) {
        0 === r.normalType && (e.attributes.add("normal", "vec3"), e.vertex.code.add(l.glsl(d || (d = n(["\n      vec3 normalModel() {\n        return normal;\n      }\n    "], ["\n      vec3 normalModel() {\n        return normal;\n      }\n    "]))))), 1 === r.normalType && (e.include(o.DecodeNormal), e.attributes.add("normalCompressed", "vec2"), e.vertex.code.add(l.glsl(t || (t = n(["\n      vec3 normalModel() {\n        return decodeNormal(normalCompressed);\n      }\n    "], ["\n      vec3 normalModel() {\n        return decodeNormal(normalCompressed);\n      }\n    "])))));
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      }), r.NormalAttribute = a;
      var d, t;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/PositionAttribute.glsl.js":
  /*!******************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/PositionAttribute.glsl.js ***!
    \******************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryAttributesPositionAttributeGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, o, i) {
      function n(e) {
        e.attributes.add("position", "vec3"), e.vertex.code.add(i.glsl(r || (r = o(["\n    vec3 positionModel() { return position; }\n  "], ["\n    vec3 positionModel() { return position; }\n  "]))));
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.PositionAttribute = n;
      var r;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js":
  /*!*********************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js ***!
    \*********************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryAttributesRibbonVertexPositionGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, i, n) {
      function o(e, t) {
        e.vertex.uniforms.add("symbolLineWidth", "float"), t.vvSize ? (e.attributes.add("sizeFeatureAttribute", "float"), e.vertex.uniforms.add("vvSizeMinSize", "vec3"), e.vertex.uniforms.add("vvSizeMaxSize", "vec3"), e.vertex.uniforms.add("vvSizeOffset", "vec3"), e.vertex.uniforms.add("vvSizeFactor", "vec3"), e.vertex.code.add(n.glsl(r || (r = i(["\n    float getSize() {\n      return symbolLineWidth * clamp(vvSizeOffset + sizeFeatureAttribute * vvSizeFactor, vvSizeMinSize, vvSizeMaxSize).x;\n    }\n    "], ["\n    float getSize() {\n      return symbolLineWidth * clamp(vvSizeOffset + sizeFeatureAttribute * vvSizeFactor, vvSizeMinSize, vvSizeMaxSize).x;\n    }\n    "]))))) : (e.attributes.add("size", "float"), e.vertex.code.add(n.glsl(a || (a = i(["\n    float getSize(){\n      return symbolLineWidth * size;\n    }\n    "], ["\n    float getSize(){\n      return symbolLineWidth * size;\n    }\n    "]))))), t.vvOpacity ? (e.attributes.add("opacityFeatureAttribute", "float"), e.vertex.defines.addInt("VV_OPACITY_N", 8), e.vertex.code.add(n.glsl(v || (v = i(["\n    uniform float vvOpacityValues[VV_OPACITY_N];\n    uniform float vvOpacityOpacities[VV_OPACITY_N];\n\n    float interpolateOpacity( float value ){\n      if (value <= vvOpacityValues[0]) {\n        return vvOpacityOpacities[0];\n      }\n\n      for (int i = 1; i < VV_OPACITY_N; ++i) {\n        if (vvOpacityValues[i] >= value) {\n          float f = (value - vvOpacityValues[i-1]) / (vvOpacityValues[i] - vvOpacityValues[i-1]);\n          return mix(vvOpacityOpacities[i-1], vvOpacityOpacities[i], f);\n        }\n      }\n\n      return vvOpacityOpacities[VV_OPACITY_N - 1];\n    }\n\n    vec4 applyOpacity( vec4 color ){\n      return vec4(color.xyz, interpolateOpacity(opacityFeatureAttribute));\n    }\n    "], ["\n    uniform float vvOpacityValues[VV_OPACITY_N];\n    uniform float vvOpacityOpacities[VV_OPACITY_N];\n\n    float interpolateOpacity( float value ){\n      if (value <= vvOpacityValues[0]) {\n        return vvOpacityOpacities[0];\n      }\n\n      for (int i = 1; i < VV_OPACITY_N; ++i) {\n        if (vvOpacityValues[i] >= value) {\n          float f = (value - vvOpacityValues[i-1]) / (vvOpacityValues[i] - vvOpacityValues[i-1]);\n          return mix(vvOpacityOpacities[i-1], vvOpacityOpacities[i], f);\n        }\n      }\n\n      return vvOpacityOpacities[VV_OPACITY_N - 1];\n    }\n\n    vec4 applyOpacity( vec4 color ){\n      return vec4(color.xyz, interpolateOpacity(opacityFeatureAttribute));\n    }\n    "]))))) : e.vertex.code.add(n.glsl(l || (l = i(["\n    vec4 applyOpacity( vec4 color ){\n      return color;\n    }\n    "], ["\n    vec4 applyOpacity( vec4 color ){\n      return color;\n    }\n    "])))), t.vvColor ? (e.attributes.add("colorFeatureAttribute", "float"), e.vertex.defines.addInt("VV_COLOR_N", 8), e.vertex.code.add(n.glsl(u || (u = i(["\n    uniform float vvColorValues[VV_COLOR_N];\n    uniform vec4 vvColorColors[VV_COLOR_N];\n\n    vec4 interpolateColor( float value ) {\n      if (value <= vvColorValues[0]) {\n        return vvColorColors[0];\n      }\n\n      for (int i = 1; i < VV_COLOR_N; ++i) {\n        if (vvColorValues[i] >= value) {\n          float f = (value - vvColorValues[i-1]) / (vvColorValues[i] - vvColorValues[i-1]);\n          return mix(vvColorColors[i-1], vvColorColors[i], f);\n        }\n      }\n\n      return vvColorColors[VV_COLOR_N - 1];\n    }\n\n    vec4 getColor(){\n      return applyOpacity(interpolateColor(colorFeatureAttribute));\n    }\n    "], ["\n    uniform float vvColorValues[VV_COLOR_N];\n    uniform vec4 vvColorColors[VV_COLOR_N];\n\n    vec4 interpolateColor( float value ) {\n      if (value <= vvColorValues[0]) {\n        return vvColorColors[0];\n      }\n\n      for (int i = 1; i < VV_COLOR_N; ++i) {\n        if (vvColorValues[i] >= value) {\n          float f = (value - vvColorValues[i-1]) / (vvColorValues[i] - vvColorValues[i-1]);\n          return mix(vvColorColors[i-1], vvColorColors[i], f);\n        }\n      }\n\n      return vvColorColors[VV_COLOR_N - 1];\n    }\n\n    vec4 getColor(){\n      return applyOpacity(interpolateColor(colorFeatureAttribute));\n    }\n    "]))))) : (e.attributes.add("color", "vec4"), e.vertex.code.add(n.glsl(c || (c = i(["\n    vec4 getColor(){\n      return applyOpacity(color);\n    }\n    "], ["\n    vec4 getColor(){\n      return applyOpacity(color);\n    }\n    "])))));
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.RibbonVertexPosition = o;
      var r, a, v, l, u, c;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js":
  /*!***************************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js ***!
    \***************************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryAttributesTextureCoordinateAttributeGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r, t, o) {
      function d(e, r) {
        1 === r.attributeTextureCoordinates && (e.attributes.add("uv0", "vec2"), e.varyings.add("vuv0", "vec2"), e.vertex.code.add(o.glsl(n || (n = t(["\n      void forwardTextureCoordinates() {\n        vuv0 = uv0;\n      }\n    "], ["\n      void forwardTextureCoordinates() {\n        vuv0 = uv0;\n      }\n    "]))))), 2 === r.attributeTextureCoordinates && (e.attributes.add("uv0", "vec2"), e.varyings.add("vuv0", "vec2"), e.attributes.add("uvRegion", "vec4"), e.varyings.add("vuvRegion", "vec4"), e.vertex.code.add(o.glsl(v || (v = t(["\n      void forwardTextureCoordinates() {\n        vuv0 = uv0;\n        vuvRegion = uvRegion;\n      }\n    "], ["\n      void forwardTextureCoordinates() {\n        vuv0 = uv0;\n        vuvRegion = uvRegion;\n      }\n    "]))))), 0 === r.attributeTextureCoordinates && e.vertex.code.add(o.glsl(u || (u = t(["\n      void forwardTextureCoordinates() {}\n    "], ["\n      void forwardTextureCoordinates() {}\n    "]))));
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      }), r.TextureCoordinateAttribute = d;
      var n, v, u;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js":
  /*!************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js ***!
    \************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryAttributesVertexColorGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (o, r, e, d) {
      function l(o, r) {
        r.attributeColor ? (o.attributes.add("color", "vec4"), o.varyings.add("vColor", "vec4"), o.vertex.code.add(d.glsl(t || (t = e(["\n      void forwardVertexColor() { vColor = color; }\n    "], ["\n      void forwardVertexColor() { vColor = color; }\n    "])))), o.vertex.code.add(d.glsl(a || (a = e(["\n      void forwardNormalizedVertexColor() { vColor = color * 0.003921568627451; }\n    "], ["\n      void forwardNormalizedVertexColor() { vColor = color * 0.003921568627451; }\n    "]))))) : o.vertex.code.add(d.glsl(n || (n = e(["\n      void forwardVertexColor() {}\n      void forwardNormalizedVertexColor() {}\n    "], ["\n      void forwardVertexColor() {}\n      void forwardNormalizedVertexColor() {}\n    "]))));
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      }), r.VertexColor = l;
      var t, a, n;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js":
  /*!*************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js ***!
    \*************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryAttributesVertexNormalGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ./NormalAttribute.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (r, o, a, l, e) {
      function m(r, o) {
        0 === o.normalType || 1 === o.normalType ? (r.include(l.NormalAttribute, o), r.varyings.add("vNormalWorld", "vec3"), r.varyings.add("vNormalView", "vec3"), r.vertex.uniforms.add("uTransformNormal_GlobalFromModel", "mat3"), r.vertex.uniforms.add("uTransformNormal_ViewFromGlobal", "mat3"), r.vertex.code.add(e.glsl(n || (n = a(["\n      void forwardNormal() {\n        vNormalWorld = uTransformNormal_GlobalFromModel * normalModel();\n        vNormalView = uTransformNormal_ViewFromGlobal * vNormalWorld;\n      }\n    "], ["\n      void forwardNormal() {\n        vNormalWorld = uTransformNormal_GlobalFromModel * normalModel();\n        vNormalView = uTransformNormal_ViewFromGlobal * vNormalWorld;\n      }\n    "]))))) : r.vertex.code.add(e.glsl(d || (d = a(["\n      void forwardNormal() {}\n    "], ["\n      void forwardNormal() {}\n    "]))));
      }

      Object.defineProperty(o, "__esModule", {
        value: !0
      }), o.VertexNormal = m, function (r) {
        function o(r, o) {
          r.setUniformMatrix4fv("viewNormal", o.viewInvTransp);
        }

        r.bindUniforms = o;
      }(m = o.VertexNormal || (o.VertexNormal = {}));
      var n, d;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTextureCoordinates.glsl.js":
  /*!*************************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTextureCoordinates.glsl.js ***!
    \*************************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryAttributesVertexTextureCoordinatesGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ./TextureCoordinateAttribute.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js"), __webpack_require__(
    /*! ../util/TextureAtlasLookup.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/TextureAtlasLookup.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, u, a, o) {
      function n(e, t) {
        e.include(u.TextureCoordinateAttribute, t), e.fragment.code.add(o.glsl(s || (s = r(["\n  struct TextureLookupParameter {\n    vec2 uv;\n    ", "\n  } vtc;\n  "], ["\n  struct TextureLookupParameter {\n    vec2 uv;\n    ", "\n  } vtc;\n  "])), t.supportsTextureAtlas ? "vec2 size;" : "")), 1 === t.attributeTextureCoordinates && e.fragment.code.add(o.glsl(p || (p = r(["\n      vec4 textureLookup(sampler2D tex, TextureLookupParameter params) {\n        return texture2D(tex, params.uv);\n      }\n    "], ["\n      vec4 textureLookup(sampler2D tex, TextureLookupParameter params) {\n        return texture2D(tex, params.uv);\n      }\n    "])))), 2 === t.attributeTextureCoordinates && (e.include(a.TextureAtlasLookup), e.fragment.code.add(o.glsl(x || (x = r(["\n    vec4 textureLookup(sampler2D tex, TextureLookupParameter params) {\n        return textureAtlasLookup(tex, params.size, params.uv, vuvRegion);\n      }\n    "], ["\n    vec4 textureLookup(sampler2D tex, TextureLookupParameter params) {\n        return textureAtlasLookup(tex, params.size, params.uv, vuvRegion);\n      }\n    "])))));
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.VertexTextureCoordinates = n;
      var s, p, x;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js":
  /*!***************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js ***!
    \***************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryAttributesVerticalOffsetGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../util/ScreenSizePerspective.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/ScreenSizePerspective.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, l, t, r, c) {
      function n(e, l) {
        var n = e.vertex.code;
        l.verticalOffsetEnabled && (e.vertex.uniforms.add("verticalOffset", "vec4"), l.screenSizePerspectiveEnabled && (e.include(r.ScreenSizePerspective), e.vertex.uniforms.add("screenSizePerspectiveAlignment", "vec4")), n.add(c.glsl(i || (i = t(["\n    vec3 calculateVerticalOffset(vec3 worldPos, vec3 localOrigin) {\n      float viewDistance = length((view * vec4(worldPos, 1.0)).xyz);\n    "], ["\n    vec3 calculateVerticalOffset(vec3 worldPos, vec3 localOrigin) {\n      float viewDistance = length((view * vec4(worldPos, 1.0)).xyz);\n    "])))), 0 === l.viewingMode ? n.add(c.glsl(a || (a = t(["\n      vec3 worldNormal = normalize(worldPos + localOrigin);\n    "], ["\n      vec3 worldNormal = normalize(worldPos + localOrigin);\n    "])))) : n.add(c.glsl(s || (s = t(["\n      vec3 worldNormal = vec3(0.0, 0.0, 1.0);\n    "], ["\n      vec3 worldNormal = vec3(0.0, 0.0, 1.0);\n    "])))), l.screenSizePerspectiveEnabled ? n.add(c.glsl(o || (o = t(["\n      float cosAngle = dot(worldNormal, normalize(worldPos - camPos));\n      float verticalOffsetScreenHeight = screenSizePerspectiveScaleFloat(verticalOffset.x, abs(cosAngle), viewDistance, screenSizePerspectiveAlignment);\n    "], ["\n      float cosAngle = dot(worldNormal, normalize(worldPos - camPos));\n      float verticalOffsetScreenHeight = screenSizePerspectiveScaleFloat(verticalOffset.x, abs(cosAngle), viewDistance, screenSizePerspectiveAlignment);\n    "])))) : n.add(c.glsl(f || (f = t(["\n      float verticalOffsetScreenHeight = verticalOffset.x;\n    "], ["\n      float verticalOffsetScreenHeight = verticalOffset.x;\n    "])))), n.add(c.glsl(v || (v = t(["\n      float worldOffset = clamp(verticalOffsetScreenHeight * verticalOffset.y * viewDistance, verticalOffset.z, verticalOffset.w);\n      return worldNormal * worldOffset;\n    }\n    "], ["\n      float worldOffset = clamp(verticalOffsetScreenHeight * verticalOffset.y * viewDistance, verticalOffset.z, verticalOffset.w);\n      return worldNormal * worldOffset;\n    }\n    "])))));
      }

      Object.defineProperty(l, "__esModule", {
        value: !0
      }), l.VerticalOffset = n;
      var i, a, s, o, f, v;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js":
  /*!********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js ***!
    \********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryOutputOutputDepthGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../util/RgbaFloatEncoding.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/RgbaFloatEncoding.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, a, n, l) {
      function o(t, e) {
        t.include(n.RgbaFloatEncoding), 3 === e.output ? (t.extensions.add("GL_OES_standard_derivatives"), t.fragment.code.add(l.glsl(r || (r = a(["\n      float _calculateFragDepth(const in float depth) {\n        // calc polygon offset\n        const float SLOPE_SCALE = 2.0;\n        const float BIAS = 2.0 * .000015259;    // 1 / (2^16 - 1)\n        float m = max(abs(dFdx(depth)), abs(dFdy(depth)));\n        float result = depth + SLOPE_SCALE * m + BIAS;\n        return clamp(result, .0, .999999);\n      }\n\n      void outputDepth(float _linearDepth) {\n        gl_FragColor = float2rgba(_calculateFragDepth(_linearDepth));\n      }\n    "], ["\n      float _calculateFragDepth(const in float depth) {\n        // calc polygon offset\n        const float SLOPE_SCALE = 2.0;\n        const float BIAS = 2.0 * .000015259;    // 1 / (2^16 - 1)\n        float m = max(abs(dFdx(depth)), abs(dFdy(depth)));\n        float result = depth + SLOPE_SCALE * m + BIAS;\n        return clamp(result, .0, .999999);\n      }\n\n      void outputDepth(float _linearDepth) {\n        gl_FragColor = float2rgba(_calculateFragDepth(_linearDepth));\n      }\n    "]))))) : 1 === e.output && t.fragment.code.add(l.glsl(p || (p = a(["\n      void outputDepth(float _linearDepth) {\n        gl_FragColor = float2rgba(_linearDepth);\n      }\n    "], ["\n      void outputDepth(float _linearDepth) {\n        gl_FragColor = float2rgba(_linearDepth);\n      }\n    "]))));
      }

      Object.defineProperty(e, "__esModule", {
        value: !0
      }), e.OutputDepth = o;
      var r, p;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js":
  /*!************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js ***!
    \************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryOutputOutputHighlightGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, i, r) {
      function o(e) {
        e.fragment.uniforms.add("depthTex", "sampler2D"), e.fragment.uniforms.add("highlightViewportPixelSz", "vec4"), e.fragment.code.add(r.glsl(g || (g = i(["\n    void outputHighlight() {\n      vec4 fragCoord = gl_FragCoord;\n\n      float sceneDepth = texture2D(depthTex, (fragCoord.xy - highlightViewportPixelSz.xy) * highlightViewportPixelSz.zw).r;\n      if (fragCoord.z > sceneDepth + 5e-6) {\n        gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);\n      }\n      else {\n        gl_FragColor = vec4(1.0, 0.0, 1.0, 1.0);\n      }\n    }\n  "], ["\n    void outputHighlight() {\n      vec4 fragCoord = gl_FragCoord;\n\n      float sceneDepth = texture2D(depthTex, (fragCoord.xy - highlightViewportPixelSz.xy) * highlightViewportPixelSz.zw).r;\n      if (fragCoord.z > sceneDepth + 5e-6) {\n        gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);\n      }\n      else {\n        gl_FragColor = vec4(1.0, 0.0, 1.0, 1.0);\n      }\n    }\n  "]))));
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.OutputHighlight = o, function (e) {
        function t(e, t, i) {
          e.bindTexture(i.highlightDepthTexture, 5), t.setUniform1i("depthTex", 5), t.setUniform4f("highlightViewportPixelSz", 0, 0, 1 / i.viewport[2], 1 / i.viewport[3]);
        }

        e.bindOutputHighlight = t;
      }(o = t.OutputHighlight || (t.OutputHighlight = {}));
      var g;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/AnalyticalSkyModel.glsl.js":
  /*!****************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/AnalyticalSkyModel.glsl.js ***!
    \****************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingAnalyticalSkyModelGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, t, a) {
      function o(e) {
        var n = e.fragment.code;
        n.add(a.glsl(r || (r = t(["\n    vec3 evaluateDiffuseIlluminationHemisphere(vec3 ambientGround, vec3 ambientSky, float NdotNG)\n    {\n      return ((1.0 - NdotNG) * ambientGround + (1.0 + NdotNG) * ambientSky) * 0.5;\n    }\n    "], ["\n    vec3 evaluateDiffuseIlluminationHemisphere(vec3 ambientGround, vec3 ambientSky, float NdotNG)\n    {\n      return ((1.0 - NdotNG) * ambientGround + (1.0 + NdotNG) * ambientSky) * 0.5;\n    }\n    "])))), n.add(a.glsl(d || (d = t(["\n    float integratedRadiance(float cosTheta2, float roughness)\n    {\n      return (cosTheta2 - 1.0) / (cosTheta2 * (1.0 - roughness * roughness) - 1.0);\n    }\n    "], ["\n    float integratedRadiance(float cosTheta2, float roughness)\n    {\n      return (cosTheta2 - 1.0) / (cosTheta2 * (1.0 - roughness * roughness) - 1.0);\n    }\n    "])))), n.add(a.glsl(i || (i = t(["\n    vec3 evaluateSpecularIlluminationHemisphere(vec3 ambientGround, vec3 ambientSky, float RdotNG, float roughness)\n    {\n      float cosTheta2 = 1.0 - RdotNG * RdotNG;\n      float intRadTheta = integratedRadiance(cosTheta2, roughness);\n\n      // Calculate the integrated directional radiance of the ground and the sky\n      float ground = RdotNG < 0.0 ? 1.0 - intRadTheta : 1.0 + intRadTheta;\n      float sky = 2.0 - ground;\n      return (ground * ambientGround + sky * ambientSky) * 0.5;\n    }\n    "], ["\n    vec3 evaluateSpecularIlluminationHemisphere(vec3 ambientGround, vec3 ambientSky, float RdotNG, float roughness)\n    {\n      float cosTheta2 = 1.0 - RdotNG * RdotNG;\n      float intRadTheta = integratedRadiance(cosTheta2, roughness);\n\n      // Calculate the integrated directional radiance of the ground and the sky\n      float ground = RdotNG < 0.0 ? 1.0 - intRadTheta : 1.0 + intRadTheta;\n      float sky = 2.0 - ground;\n      return (ground * ambientGround + sky * ambientSky) * 0.5;\n    }\n    "]))));
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      }), n.AnalyticalSkyModel = o;
      var r, d, i;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl.js":
  /*!******************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl.js ***!
    \******************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingComputeNormalTextureGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../attributes/VertexTextureCoordinates.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTextureCoordinates.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (n, e, t, a, o) {
      function r(n, e) {
        var r = n.fragment;
        r.uniforms.add("normalTexture", "sampler2D"), r.uniforms.add("normalTextureSize", "vec2"), e.vertexTangets ? (n.attributes.add("tangent", "vec4"), n.varyings.add("vTangent", "vec4"), n.vertex.code.add(o.glsl(s || (s = t(["\n      void transformVertexTangent(mat3 modelTransformForNormals) {\n        vTangent.xyz = modelTransformForNormals * tangent.xyz;\n        vTangent.w = tangent.w;\n      }\n    "], ["\n      void transformVertexTangent(mat3 modelTransformForNormals) {\n        vTangent.xyz = modelTransformForNormals * tangent.xyz;\n        vTangent.w = tangent.w;\n      }\n    "])))), 2 === e.doubleSidedMode ? r.code.add(o.glsl(g || (g = t(["\n      mat3 computeTangentSpace(vec3 normal) {\n        float tangentHeadedness = gl_FrontFacing ? vTangent.w : -vTangent.w;\n        vec3 tangent = normalize(gl_FrontFacing ? vTangent.xyz : -vTangent.xyz);\n        vec3 bitangent = cross(normal, tangent) * tangentHeadedness;\n        return mat3(tangent, bitangent, normal);\n      }\n    "], ["\n      mat3 computeTangentSpace(vec3 normal) {\n        float tangentHeadedness = gl_FrontFacing ? vTangent.w : -vTangent.w;\n        vec3 tangent = normalize(gl_FrontFacing ? vTangent.xyz : -vTangent.xyz);\n        vec3 bitangent = cross(normal, tangent) * tangentHeadedness;\n        return mat3(tangent, bitangent, normal);\n      }\n    "])))) : r.code.add(o.glsl(d || (d = t(["\n      mat3 computeTangentSpace(vec3 normal) {\n        float tangentHeadedness = vTangent.w;\n        vec3 tangent = normalize(vTangent.xyz);\n        vec3 bitangent = cross(normal, tangent) * tangentHeadedness;\n        return mat3(tangent, bitangent, normal);\n      }\n    "], ["\n      mat3 computeTangentSpace(vec3 normal) {\n        float tangentHeadedness = vTangent.w;\n        vec3 tangent = normalize(vTangent.xyz);\n        vec3 bitangent = cross(normal, tangent) * tangentHeadedness;\n        return mat3(tangent, bitangent, normal);\n      }\n    "]))))) : (n.extensions.add("GL_OES_standard_derivatives"), r.code.add(o.glsl(m || (m = t(['\n    mat3 computeTangentSpace(vec3 normal, vec3 pos, vec2 st) {\n\n      vec3 Q1 = dFdx(pos);\n      vec3 Q2 = dFdy(pos);\n\n      vec2 stx = dFdx(st);\n      vec2 sty = dFdy(st);\n\n      float det = stx.t * sty.s - sty.t * stx.s;\n\n      vec3 T = stx.t * Q2 - sty.t * Q1; // compute tangent\n      T = T - normal * dot(normal, T); // orthogonalize tangent\n      T *= inversesqrt(max(dot(T,T), 1.e-10)); // "soft" normalize - goes to 0 when T goes to 0\n      vec3 B = sign(det) * cross(normal, T); // assume normal is normalized, B has the same lenght as B\n      return mat3(T, B, normal); // T and B go to 0 when the tangent space is not well defined by the uv coordinates\n    }\n  '], ['\n    mat3 computeTangentSpace(vec3 normal, vec3 pos, vec2 st) {\n\n      vec3 Q1 = dFdx(pos);\n      vec3 Q2 = dFdy(pos);\n\n      vec2 stx = dFdx(st);\n      vec2 sty = dFdy(st);\n\n      float det = stx.t * sty.s - sty.t * stx.s;\n\n      vec3 T = stx.t * Q2 - sty.t * Q1; // compute tangent\n      T = T - normal * dot(normal, T); // orthogonalize tangent\n      T *= inversesqrt(max(dot(T,T), 1.e-10)); // "soft" normalize - goes to 0 when T goes to 0\n      vec3 B = sign(det) * cross(normal, T); // assume normal is normalized, B has the same lenght as B\n      return mat3(T, B, normal); // T and B go to 0 when the tangent space is not well defined by the uv coordinates\n    }\n  ']))))), 0 !== e.attributeTextureCoordinates && (n.include(a.VertexTextureCoordinates, e), r.code.add(o.glsl(l || (l = t(["\n    vec3 computeTextureNormal(mat3 tangentSpace, vec2 uv) {\n      vtc.uv = uv;\n      ", "\n      vec3 rawNormal = textureLookup(normalTexture, vtc).rgb * 2.0 - 1.0;\n      return tangentSpace * rawNormal;\n    }\n  "], ["\n    vec3 computeTextureNormal(mat3 tangentSpace, vec2 uv) {\n      vtc.uv = uv;\n      ", "\n      vec3 rawNormal = textureLookup(normalTexture, vtc).rgb * 2.0 - 1.0;\n      return tangentSpace * rawNormal;\n    }\n  "])), e.supportsTextureAtlas ? "vtc.size = normalTextureSize;" : "")));
      }

      Object.defineProperty(e, "__esModule", {
        value: !0
      }), e.ComputeNormalTexture = r;
      var s, g, d, m, l;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientLighting.glsl.js":
  /*!*********************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientLighting.glsl.js ***!
    \*********************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingEvaluateAmbientLightingGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (n, i, e, t) {
      function a(n, i) {
        var a = n.fragment,
            r = void 0 !== i.lightingSphericalHarmonicsOrder ? i.lightingSphericalHarmonicsOrder : 2;
        0 === r ? (a.uniforms.add("lightingAmbientSH0", "vec3"), a.code.add(t.glsl(l || (l = e(["\n      /**\n       * @param normal            shading normal in global coordinate space\n       * @param ambientOcclusion  amount of occlusion of the ambient light (1 => full occlusion)\n       */\n      vec3 calculateAmbientIrradiance(vec3 normal, float ambientOcclusion) {\n        vec3 ambientLight = 0.282095 * lightingAmbientSH0;\n        return ambientLight * (1.0 - ambientOcclusion);\n      }\n    "], ["\n      /**\n       * @param normal            shading normal in global coordinate space\n       * @param ambientOcclusion  amount of occlusion of the ambient light (1 => full occlusion)\n       */\n      vec3 calculateAmbientIrradiance(vec3 normal, float ambientOcclusion) {\n        vec3 ambientLight = 0.282095 * lightingAmbientSH0;\n        return ambientLight * (1.0 - ambientOcclusion);\n      }\n    "]))))) : 1 === r ? (a.uniforms.add("lightingAmbientSH_R", "vec4"), a.uniforms.add("lightingAmbientSH_G", "vec4"), a.uniforms.add("lightingAmbientSH_B", "vec4"), a.code.add(t.glsl(o || (o = e(["\n      vec3 calculateAmbientIrradiance(vec3 normal, float ambientOcclusion) {\n        vec4 sh0 = vec4(\n          0.282095,\n          0.488603 * normal.x,\n          0.488603 * normal.z,\n          0.488603 * normal.y\n        );\n        vec3 ambientLight = vec3(\n          dot(lightingAmbientSH_R, sh0),\n          dot(lightingAmbientSH_G, sh0),\n          dot(lightingAmbientSH_B, sh0)\n        );\n        return ambientLight * (1.0 - ambientOcclusion);\n      }\n    "], ["\n      vec3 calculateAmbientIrradiance(vec3 normal, float ambientOcclusion) {\n        vec4 sh0 = vec4(\n          0.282095,\n          0.488603 * normal.x,\n          0.488603 * normal.z,\n          0.488603 * normal.y\n        );\n        vec3 ambientLight = vec3(\n          dot(lightingAmbientSH_R, sh0),\n          dot(lightingAmbientSH_G, sh0),\n          dot(lightingAmbientSH_B, sh0)\n        );\n        return ambientLight * (1.0 - ambientOcclusion);\n      }\n    "]))))) : 2 === r && (a.uniforms.add("lightingAmbientSH0", "vec3"), a.uniforms.add("lightingAmbientSH_R1", "vec4"), a.uniforms.add("lightingAmbientSH_G1", "vec4"), a.uniforms.add("lightingAmbientSH_B1", "vec4"), a.uniforms.add("lightingAmbientSH_R2", "vec4"), a.uniforms.add("lightingAmbientSH_G2", "vec4"), a.uniforms.add("lightingAmbientSH_B2", "vec4"), a.code.add(t.glsl(c || (c = e(["\n      /**\n       * @param normal            shading normal in global coordinate space\n       * @param ambientOcclusion  amount of occlusion of the ambient light (1 => full occlusion)\n       */\n      vec3 calculateAmbientIrradiance(vec3 normal, float ambientOcclusion) {\n        vec3 ambientLight = 0.282095 * lightingAmbientSH0;\n\n        vec4 sh1 = vec4(\n          0.488603 * normal.x,\n          0.488603 * normal.z,\n          0.488603 * normal.y,\n          1.092548 * normal.x * normal.y\n        );\n        vec4 sh2 = vec4(\n          1.092548 * normal.y * normal.z,\n          0.315392 * (3.0 * normal.z * normal.z - 1.0),\n          1.092548 * normal.x * normal.z,\n          0.546274 * (normal.x * normal.x - normal.y * normal.y)\n        );\n        ambientLight += vec3(\n          dot(lightingAmbientSH_R1, sh1),\n          dot(lightingAmbientSH_G1, sh1),\n          dot(lightingAmbientSH_B1, sh1)\n        );\n        ambientLight += vec3(\n          dot(lightingAmbientSH_R2, sh2),\n          dot(lightingAmbientSH_G2, sh2),\n          dot(lightingAmbientSH_B2, sh2)\n        );\n        return ambientLight * (1.0 - ambientOcclusion);\n      }\n    "], ["\n      /**\n       * @param normal            shading normal in global coordinate space\n       * @param ambientOcclusion  amount of occlusion of the ambient light (1 => full occlusion)\n       */\n      vec3 calculateAmbientIrradiance(vec3 normal, float ambientOcclusion) {\n        vec3 ambientLight = 0.282095 * lightingAmbientSH0;\n\n        vec4 sh1 = vec4(\n          0.488603 * normal.x,\n          0.488603 * normal.z,\n          0.488603 * normal.y,\n          1.092548 * normal.x * normal.y\n        );\n        vec4 sh2 = vec4(\n          1.092548 * normal.y * normal.z,\n          0.315392 * (3.0 * normal.z * normal.z - 1.0),\n          1.092548 * normal.x * normal.z,\n          0.546274 * (normal.x * normal.x - normal.y * normal.y)\n        );\n        ambientLight += vec3(\n          dot(lightingAmbientSH_R1, sh1),\n          dot(lightingAmbientSH_G1, sh1),\n          dot(lightingAmbientSH_B1, sh1)\n        );\n        ambientLight += vec3(\n          dot(lightingAmbientSH_R2, sh2),\n          dot(lightingAmbientSH_G2, sh2),\n          dot(lightingAmbientSH_B2, sh2)\n        );\n        return ambientLight * (1.0 - ambientOcclusion);\n      }\n    "])))), i.usePBR && a.code.add(t.glsl(m || (m = e(["\n        // calculateAmbientRadiance is used calculate specular radiance of the sky\n        // - in the night calculateAmbientRadiance gives darker color compared to calculateAmbientComponent which integrates contributions of the moon\n        // - calculateAmbientRadiance gives more predictable color compared to calculateAmbientIrradiance that depends on normal\n        // - in future more physically accurate model should be established\n        vec3 calculateAmbientRadiance(float ssao)\n        {\n          // evaluate the sh ambient light\n          vec3 ambientLight ;\n          ambientLight = 1.2 * (0.282095 * lightingAmbientSH0) - 0.2; // returning the darker value in the night\n\n          return ambientLight *= (1.0 - ssao) * skyTransmittance; // skyTransmittance is slightly bluish giving more natural look\n        }\n      "], ["\n        // calculateAmbientRadiance is used calculate specular radiance of the sky\n        // - in the night calculateAmbientRadiance gives darker color compared to calculateAmbientComponent which integrates contributions of the moon\n        // - calculateAmbientRadiance gives more predictable color compared to calculateAmbientIrradiance that depends on normal\n        // - in future more physically accurate model should be established\n        vec3 calculateAmbientRadiance(float ssao)\n        {\n          // evaluate the sh ambient light\n          vec3 ambientLight ;\n          ambientLight = 1.2 * (0.282095 * lightingAmbientSH0) - 0.2; // returning the darker value in the night\n\n          return ambientLight *= (1.0 - ssao) * skyTransmittance; // skyTransmittance is slightly bluish giving more natural look\n        }\n      "])))));
      }

      Object.defineProperty(i, "__esModule", {
        value: !0
      }), i.EvaluateAmbientLighting = a;
      var l, o, c, m;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js":
  /*!**********************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js ***!
    \**********************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingEvaluateAmbientOcclusionGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, t, o) {
      function r(e, n) {
        var r = e.fragment;
        n.receiveAmbientOcclusion ? (r.uniforms.add("ssaoTex", "sampler2D"), r.uniforms.add("viewportPixelSz", "vec4"), r.code.add(o.glsl(a || (a = t(["\n      float evaluateAmbientOcclusion() {\n        return 1.0 - texture2D(ssaoTex, (gl_FragCoord.xy - viewportPixelSz.xy) * viewportPixelSz.zw).a;\n      }\n\n      float evaluateAmbientOcclusionInverse() {\n        float ssao = texture2D(ssaoTex, (gl_FragCoord.xy - viewportPixelSz.xy) * viewportPixelSz.zw).a;\n        return viewportPixelSz.z < 0.0 ? 1.0 : ssao;\n      }\n    "], ["\n      float evaluateAmbientOcclusion() {\n        return 1.0 - texture2D(ssaoTex, (gl_FragCoord.xy - viewportPixelSz.xy) * viewportPixelSz.zw).a;\n      }\n\n      float evaluateAmbientOcclusionInverse() {\n        float ssao = texture2D(ssaoTex, (gl_FragCoord.xy - viewportPixelSz.xy) * viewportPixelSz.zw).a;\n        return viewportPixelSz.z < 0.0 ? 1.0 : ssao;\n      }\n    "]))))) : r.code.add(o.glsl(l || (l = t(["\n      float evaluateAmbientOcclusion() { return 0.0; } // no occlusion\n      float evaluateAmbientOcclusionInverse() { return 1.0; }\n    "], ["\n      float evaluateAmbientOcclusion() { return 0.0; } // no occlusion\n      float evaluateAmbientOcclusionInverse() { return 1.0; }\n    "]))));
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      }), n.EvaluateAmbientOcclusion = r;
      var a, l;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateMainLighting.glsl.js":
  /*!******************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateMainLighting.glsl.js ***!
    \******************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingEvaluateMainLightingGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (n, i, t, a) {
      function e(n) {
        var i = n.fragment;
        i.uniforms.add("lightingMainDirection", "vec3"), i.uniforms.add("lightingMainIntensity", "vec3"), i.uniforms.add("lightingFixedFactor", "float"), i.code.add(a.glsl(o || (o = t(["\n    vec3 evaluateMainLighting(vec3 normal_global, float shadowing) {\n      float dotVal = clamp(-dot(normal_global, lightingMainDirection), 0.0, 1.0);\n\n      // move lighting towards (1.0, 1.0, 1.0) if requested\n      dotVal = mix(dotVal, 1.0, lightingFixedFactor);\n\n      return lightingMainIntensity * ((1.0 - shadowing) * dotVal);\n    }\n  "], ["\n    vec3 evaluateMainLighting(vec3 normal_global, float shadowing) {\n      float dotVal = clamp(-dot(normal_global, lightingMainDirection), 0.0, 1.0);\n\n      // move lighting towards (1.0, 1.0, 1.0) if requested\n      dotVal = mix(dotVal, 1.0, lightingFixedFactor);\n\n      return lightingMainIntensity * ((1.0 - shadowing) * dotVal);\n    }\n  "]))));
      }

      Object.defineProperty(i, "__esModule", {
        value: !0
      }), i.EvaluateMainLighting = e;
      var o;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js":
  /*!*******************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js ***!
    \*******************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingEvaluateSceneLightingGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ./EvaluateAmbientLighting.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientLighting.glsl.js"), __webpack_require__(
    /*! ./EvaluateAmbientOcclusion.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js"), __webpack_require__(
    /*! ./EvaluateMainLighting.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateMainLighting.glsl.js"), __webpack_require__(
    /*! ./PhysicallyBasedRendering.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js"), __webpack_require__(
    /*! ./PiUtils.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js"), __webpack_require__(
    /*! ./ReadShadowMap.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (n, e, t, i, a, o, l, r, c, d) {
      function s(n, e) {
        var s = n.fragment;
        n.include(o.EvaluateMainLighting), n.include(a.EvaluateAmbientOcclusion, e), e.usePBR && n.include(l.PhysicallyBasedRendering, e), n.include(i.EvaluateAmbientLighting, e), e.receiveShadows && n.include(c.ReadShadowMap, e), s.uniforms.add("lightingGlobalFactor", "float"), s.uniforms.add("ambientBoostFactor", "float"), e.useOldSceneLightInterface ? (n.include(r.PiUtils), s.code.add(d.glsl(m || (m = t(["\n    const float GAMMA_SRGB = 2.1;\n    const float INV_GAMMA_SRGB = 0.4761904;  // 1 / GAMMA_SRGB\n\n    vec3 evaluateSceneLightingExt(vec3 normal, vec3 albedo, float shadow, float ssao, vec3 additionalLight) {\n      // evaluate the main light\n      #if defined(TREE_RENDERING)\n        // Special case for tree rendering:\n        // We shift the Lambert lobe to the back, allowing it to reach part of the hemisphere\n        // facing away from the light. The idea is to get an effect where light is transmitted\n        // through the tree.\n        float minDot = -0.5;\n        float dotRange = 1.0 - minDot;\n        float dotNormalization = 0.66; // guessed & hand tweaked value, for an exact value we could precompute an integral over the sphere\n\n        float dotVal = dotNormalization * (clamp(-dot(normal, lightingMainDirection), 1.0 - dotRange, 1.0) - minDot) * (1.0 / dotRange);\n      #else\n        float dotVal = clamp(-dot(normal, lightingMainDirection), 0.0, 1.0);\n      #endif\n\n      // move lighting towards (1.0, 1.0, 1.0) if requested\n      dotVal = mix(dotVal, 1.0, lightingFixedFactor);\n\n      vec3 mainLight = (1.0 - shadow) * lightingMainIntensity * dotVal;\n      vec3 ambientLight = calculateAmbientIrradiance(normal, ssao);\n\n      // inverse gamma correction on the albedo color\n      vec3 albedoGammaC = pow(albedo, vec3(GAMMA_SRGB));\n\n      // physically correct BRDF normalizes by PI\n      vec3 totalLight = mainLight + ambientLight + additionalLight;\n      totalLight = min(totalLight, vec3(PI, PI, PI));\n      vec3 outColor = vec3((albedoGammaC / PI) * (totalLight));\n\n      // apply gamma correction to the computed color\n      outColor = pow(outColor, vec3(1.0/GAMMA_SRGB));\n\n      return outColor;\n    }\n  "], ["\n    const float GAMMA_SRGB = 2.1;\n    const float INV_GAMMA_SRGB = 0.4761904;  // 1 / GAMMA_SRGB\n\n    vec3 evaluateSceneLightingExt(vec3 normal, vec3 albedo, float shadow, float ssao, vec3 additionalLight) {\n      // evaluate the main light\n      #if defined(TREE_RENDERING)\n        // Special case for tree rendering:\n        // We shift the Lambert lobe to the back, allowing it to reach part of the hemisphere\n        // facing away from the light. The idea is to get an effect where light is transmitted\n        // through the tree.\n        float minDot = -0.5;\n        float dotRange = 1.0 - minDot;\n        float dotNormalization = 0.66; // guessed & hand tweaked value, for an exact value we could precompute an integral over the sphere\n\n        float dotVal = dotNormalization * (clamp(-dot(normal, lightingMainDirection), 1.0 - dotRange, 1.0) - minDot) * (1.0 / dotRange);\n      #else\n        float dotVal = clamp(-dot(normal, lightingMainDirection), 0.0, 1.0);\n      #endif\n\n      // move lighting towards (1.0, 1.0, 1.0) if requested\n      dotVal = mix(dotVal, 1.0, lightingFixedFactor);\n\n      vec3 mainLight = (1.0 - shadow) * lightingMainIntensity * dotVal;\n      vec3 ambientLight = calculateAmbientIrradiance(normal, ssao);\n\n      // inverse gamma correction on the albedo color\n      vec3 albedoGammaC = pow(albedo, vec3(GAMMA_SRGB));\n\n      // physically correct BRDF normalizes by PI\n      vec3 totalLight = mainLight + ambientLight + additionalLight;\n      totalLight = min(totalLight, vec3(PI, PI, PI));\n      vec3 outColor = vec3((albedoGammaC / PI) * (totalLight));\n\n      // apply gamma correction to the computed color\n      outColor = pow(outColor, vec3(1.0/GAMMA_SRGB));\n\n      return outColor;\n    }\n  "]))))) : (0 === e.viewingMode ? s.code.add(d.glsl(h || (h = t(["\n      float _oldHeuristicLighting(vec3 vPosWorld) {\n        vec3 shadingNormalWorld = normalize(vPosWorld);\n        float vndl = -dot(shadingNormalWorld, lightingMainDirection);\n\n        return smoothstep(0.0, 1.0, clamp(vndl * 2.5, 0.0, 1.0));\n      }\n    "], ["\n      float _oldHeuristicLighting(vec3 vPosWorld) {\n        vec3 shadingNormalWorld = normalize(vPosWorld);\n        float vndl = -dot(shadingNormalWorld, lightingMainDirection);\n\n        return smoothstep(0.0, 1.0, clamp(vndl * 2.5, 0.0, 1.0));\n      }\n    "])))) : s.code.add(d.glsl(g || (g = t(["\n      float _oldHeuristicLighting(vec3 vPosWorld) {\n        float vndl = -dot(vec3(0.0, 0.0, 1.0), lightingMainDirection);\n        return smoothstep(0.0, 1.0, clamp(vndl * 2.5, 0.0, 1.0));\n      }\n    "], ["\n      float _oldHeuristicLighting(vec3 vPosWorld) {\n        float vndl = -dot(vec3(0.0, 0.0, 1.0), lightingMainDirection);\n        return smoothstep(0.0, 1.0, clamp(vndl * 2.5, 0.0, 1.0));\n      }\n    "])))), s.code.add(d.glsl(u || (u = t(["\n      vec3 evaluateAdditionalLighting(float ambientOcclusion, vec3 vPosWorld) {\n        float additionalAmbientScale = _oldHeuristicLighting(vPosWorld);\n        return (1.0 - ambientOcclusion) * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor * lightingMainIntensity;\n      }\n    "], ["\n      vec3 evaluateAdditionalLighting(float ambientOcclusion, vec3 vPosWorld) {\n        float additionalAmbientScale = _oldHeuristicLighting(vPosWorld);\n        return (1.0 - ambientOcclusion) * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor * lightingMainIntensity;\n      }\n    "])))), e.usePBR ? (s.code.add(d.glsl(v || (v = t(["\n      // The albedo color of the ground used in the environment illumination algorithm\n      const float GROUND_REFLECTANCE = 0.2; //This is the set value of the diffuse reflectance of the ground surface\n\n      const float GAMMA_SRGB = 2.1;\n      const float INV_GAMMA_SRGB = 0.4761904;  // 1 / GAMMA_SRGB\n      "], ["\n      // The albedo color of the ground used in the environment illumination algorithm\n      const float GROUND_REFLECTANCE = 0.2; //This is the set value of the diffuse reflectance of the ground surface\n\n      const float GAMMA_SRGB = 2.1;\n      const float INV_GAMMA_SRGB = 0.4761904;  // 1 / GAMMA_SRGB\n      "])))), s.code.add(d.glsl(f || (f = t(["\n      vec3 evaluateSceneLightingPBR(vec3 normal, vec3 albedo, float shadow, float ssao, vec3 additionalLight, vec3 viewDir, vec3 normalGround, float _roughness, float _metalness, vec3 _emission, float _reflectance, float additionalAmbientIrradiance)\n      {\n        // Calculate half vector between view and light direction\n        vec3 viewDirection = -viewDir;\n        vec3 mainLightDirection = -lightingMainDirection;\n        vec3 h = normalize(viewDirection + mainLightDirection);\n\n        PBRShadingInfo inputs;\n        inputs.NdotL = clamp(dot(normal, mainLightDirection), 0.001, 1.0);\n        inputs.NdotV = clamp(abs(dot(normal, viewDirection)), 0.001, 1.0);\n        inputs.NdotH = clamp(dot(normal, h), 0.0, 1.0);\n        inputs.VdotH = clamp(dot(viewDirection, h), 0.0, 1.0);\n        inputs.NdotNG = clamp(dot(normal, normalGround), -1.0, 1.0);\n        vec3 reflectedView = normalize(reflect(viewDirection, normal));\n        inputs.RdotNG = clamp(dot(reflectedView, normalGround), -1.0, 1.0);\n\n        inputs.albedoLinear = pow(albedo, vec3(GAMMA_SRGB));\n        inputs.groundReflectance = vec3(GROUND_REFLECTANCE);\n        inputs.ssao = ssao;\n\n        inputs.roughness = clamp(_roughness * _roughness, 0.001, 0.99);\n        inputs.metalness = _metalness;\n      "], ["\n      vec3 evaluateSceneLightingPBR(vec3 normal, vec3 albedo, float shadow, float ssao, vec3 additionalLight, vec3 viewDir, vec3 normalGround, float _roughness, float _metalness, vec3 _emission, float _reflectance, float additionalAmbientIrradiance)\n      {\n        // Calculate half vector between view and light direction\n        vec3 viewDirection = -viewDir;\n        vec3 mainLightDirection = -lightingMainDirection;\n        vec3 h = normalize(viewDirection + mainLightDirection);\n\n        PBRShadingInfo inputs;\n        inputs.NdotL = clamp(dot(normal, mainLightDirection), 0.001, 1.0);\n        inputs.NdotV = clamp(abs(dot(normal, viewDirection)), 0.001, 1.0);\n        inputs.NdotH = clamp(dot(normal, h), 0.0, 1.0);\n        inputs.VdotH = clamp(dot(viewDirection, h), 0.0, 1.0);\n        inputs.NdotNG = clamp(dot(normal, normalGround), -1.0, 1.0);\n        vec3 reflectedView = normalize(reflect(viewDirection, normal));\n        inputs.RdotNG = clamp(dot(reflectedView, normalGround), -1.0, 1.0);\n\n        inputs.albedoLinear = pow(albedo, vec3(GAMMA_SRGB));\n        inputs.groundReflectance = vec3(GROUND_REFLECTANCE);\n        inputs.ssao = ssao;\n\n        inputs.roughness = clamp(_roughness * _roughness, 0.001, 0.99);\n        inputs.metalness = _metalness;\n      "])))), s.code.add(d.glsl(L || (L = t(["\n        inputs.f0 = (0.16 * _reflectance * _reflectance) * (1.0 - inputs.metalness) + inputs.albedoLinear * inputs.metalness;\n        inputs.f90 = vec3(clamp(dot(inputs.f0, vec3(50.0 * 0.33)), 0.0, 1.0)); // more accurate then using  f90 = 1.0\n        inputs.diffuseColor = inputs.albedoLinear * (vec3(1.0) - inputs.f0) * (1.0 - inputs.metalness);\n      "], ["\n        inputs.f0 = (0.16 * _reflectance * _reflectance) * (1.0 - inputs.metalness) + inputs.albedoLinear * inputs.metalness;\n        inputs.f90 = vec3(clamp(dot(inputs.f0, vec3(50.0 * 0.33)), 0.0, 1.0)); // more accurate then using  f90 = 1.0\n        inputs.diffuseColor = inputs.albedoLinear * (vec3(1.0) - inputs.f0) * (1.0 - inputs.metalness);\n      "])))), s.code.add(d.glsl(b || (b = t(["\n        vec3 ambientDir = normalize(vec3(5.0 * normalGround[1] - normalGround[0] * normalGround[2],\n                                      - 5.0 * normalGround[0] - normalGround[2] * normalGround[1],\n                                        normalGround[1] * normalGround[1] + normalGround[0] * normalGround[0]));\n\n        inputs.NdotAmbDir = abs(dot(normal, ambientDir));\n\n        // Calculate the irradiance components: sun, fill lights and the sky.\n        vec3 mainLightIrradianceComponent  = inputs.NdotL * (1.0 - shadow) * lightingMainIntensity;\n        vec3 fillLightsIrradianceComponent = inputs.NdotAmbDir * lightingMainIntensity * fillLightIntensity;\n        // calculateAmbientIrradiance for localView and additionalLight for gloabalView\n        vec3 ambientLightIrradianceComponent = calculateAmbientIrradiance(normal, ssao) + additionalLight;\n\n        // Assemble the overall irradiance of the sky that illuminates the surface\n        inputs.skyIrradianceToSurface    = ambientLightIrradianceComponent + mainLightIrradianceComponent + fillLightsIrradianceComponent ;\n        // Assemble the overall irradiance of the ground that illuminates the surface. for this we use the simple model that changes only the sky irradiance by the groundReflectance\n        inputs.groundIrradianceToSurface = inputs.groundReflectance * ambientLightIrradianceComponent + mainLightIrradianceComponent + fillLightsIrradianceComponent ;\n      "], ["\n        vec3 ambientDir = normalize(vec3(5.0 * normalGround[1] - normalGround[0] * normalGround[2],\n                                      - 5.0 * normalGround[0] - normalGround[2] * normalGround[1],\n                                        normalGround[1] * normalGround[1] + normalGround[0] * normalGround[0]));\n\n        inputs.NdotAmbDir = abs(dot(normal, ambientDir));\n\n        // Calculate the irradiance components: sun, fill lights and the sky.\n        vec3 mainLightIrradianceComponent  = inputs.NdotL * (1.0 - shadow) * lightingMainIntensity;\n        vec3 fillLightsIrradianceComponent = inputs.NdotAmbDir * lightingMainIntensity * fillLightIntensity;\n        // calculateAmbientIrradiance for localView and additionalLight for gloabalView\n        vec3 ambientLightIrradianceComponent = calculateAmbientIrradiance(normal, ssao) + additionalLight;\n\n        // Assemble the overall irradiance of the sky that illuminates the surface\n        inputs.skyIrradianceToSurface    = ambientLightIrradianceComponent + mainLightIrradianceComponent + fillLightsIrradianceComponent ;\n        // Assemble the overall irradiance of the ground that illuminates the surface. for this we use the simple model that changes only the sky irradiance by the groundReflectance\n        inputs.groundIrradianceToSurface = inputs.groundReflectance * ambientLightIrradianceComponent + mainLightIrradianceComponent + fillLightsIrradianceComponent ;\n      "])))), s.code.add(d.glsl(R || (R = t(["\n        vec3 horizonRingDir = inputs.RdotNG * normalGround - reflectedView;\n        vec3 horizonRingH = normalize(viewDirection + horizonRingDir);\n        inputs.NdotH_Horizon = dot(normal, horizonRingH);\n\n        vec3 mainLightRadianceComponent  = normalDistribution(inputs.NdotH, inputs.roughness) * lightingMainIntensity * (1.0 - shadow);\n        vec3 horizonLightRadianceComponent = normalDistribution(inputs.NdotH_Horizon, min(inputs.roughness + horizonLightDiffusion, 1.0)) * lightingMainIntensity * fillLightIntensity;\n        vec3 ambientLightRadianceComponent = calculateAmbientRadiance(ssao) + additionalLight; // calculateAmbientRadiance for localView and additionalLight for gloabalView\n\n        // Assemble the overall radiance of the sky that illuminates the surface\n        inputs.skyRadianceToSurface    =  ambientLightRadianceComponent + mainLightRadianceComponent + horizonLightRadianceComponent;\n        // Assemble the overall radiance of the ground that illuminates the surface. for this we use the simple model that changes only the sky radince by the groundReflectance\n        inputs.groundRadianceToSurface = inputs.groundReflectance * (ambientLightRadianceComponent + horizonLightRadianceComponent) + mainLightRadianceComponent;\n\n        // Calculate average ambient radiance - this is used int the gamut mapping part to deduce the black level that is soft compressed\n        inputs.averageAmbientRadiance = ambientLightIrradianceComponent[1] * (1.0 + inputs.groundReflectance[1]);\n        "], ["\n        vec3 horizonRingDir = inputs.RdotNG * normalGround - reflectedView;\n        vec3 horizonRingH = normalize(viewDirection + horizonRingDir);\n        inputs.NdotH_Horizon = dot(normal, horizonRingH);\n\n        vec3 mainLightRadianceComponent  = normalDistribution(inputs.NdotH, inputs.roughness) * lightingMainIntensity * (1.0 - shadow);\n        vec3 horizonLightRadianceComponent = normalDistribution(inputs.NdotH_Horizon, min(inputs.roughness + horizonLightDiffusion, 1.0)) * lightingMainIntensity * fillLightIntensity;\n        vec3 ambientLightRadianceComponent = calculateAmbientRadiance(ssao) + additionalLight; // calculateAmbientRadiance for localView and additionalLight for gloabalView\n\n        // Assemble the overall radiance of the sky that illuminates the surface\n        inputs.skyRadianceToSurface    =  ambientLightRadianceComponent + mainLightRadianceComponent + horizonLightRadianceComponent;\n        // Assemble the overall radiance of the ground that illuminates the surface. for this we use the simple model that changes only the sky radince by the groundReflectance\n        inputs.groundRadianceToSurface = inputs.groundReflectance * (ambientLightRadianceComponent + horizonLightRadianceComponent) + mainLightRadianceComponent;\n\n        // Calculate average ambient radiance - this is used int the gamut mapping part to deduce the black level that is soft compressed\n        inputs.averageAmbientRadiance = ambientLightIrradianceComponent[1] * (1.0 + inputs.groundReflectance[1]);\n        "])))), s.code.add(d.glsl(C || (C = t(["\n        vec3 reflectedColorComponent = evaluateEnvironmentIllumination(inputs);\n        vec3 additionalMaterialReflectanceComponent = inputs.albedoLinear * additionalAmbientIrradiance;\n        vec3 emissionComponent = pow(_emission, vec3(GAMMA_SRGB));\n        vec3 outColorLinear = reflectedColorComponent + additionalMaterialReflectanceComponent + emissionComponent;\n        vec3 outColor = pow(blackLevelSoftCompression(outColorLinear, inputs), vec3(INV_GAMMA_SRGB));\n        return outColor;\n      }\n    "], ["\n        vec3 reflectedColorComponent = evaluateEnvironmentIllumination(inputs);\n        vec3 additionalMaterialReflectanceComponent = inputs.albedoLinear * additionalAmbientIrradiance;\n        vec3 emissionComponent = pow(_emission, vec3(GAMMA_SRGB));\n        vec3 outColorLinear = reflectedColorComponent + additionalMaterialReflectanceComponent + emissionComponent;\n        vec3 outColor = pow(blackLevelSoftCompression(outColorLinear, inputs), vec3(INV_GAMMA_SRGB));\n        return outColor;\n      }\n    "]))))) : s.code.add(d.glsl(p || (p = t(["\n      vec3 evaluateSceneLighting(vec3 normalWorld, vec3 baseColor, float mainLightShadow, float ambientOcclusion, vec3 additionalLight)\n      {\n        vec3 mainLighting = evaluateMainLighting(normalWorld, mainLightShadow);\n        vec3 ambientLighting = calculateAmbientIrradiance(normalWorld, ambientOcclusion);\n        // inverse gamma correction on the base color\n        float gamma = 2.1;\n        vec3 baseColorLinear = pow(baseColor, vec3(gamma));\n\n        // physically correct BRDF normalizes by PI\n        const float PI = 3.14159;\n        vec3 totalLight = mainLighting + ambientLighting + additionalLight;\n        totalLight = min(totalLight, vec3(PI, PI, PI));\n        vec3 outColor = vec3((baseColorLinear / PI) * totalLight);\n\n        // apply gamma correction to the computed color\n        outColor = pow(outColor, vec3(1.0/gamma));\n\n        return outColor;\n      }\n      "], ["\n      vec3 evaluateSceneLighting(vec3 normalWorld, vec3 baseColor, float mainLightShadow, float ambientOcclusion, vec3 additionalLight)\n      {\n        vec3 mainLighting = evaluateMainLighting(normalWorld, mainLightShadow);\n        vec3 ambientLighting = calculateAmbientIrradiance(normalWorld, ambientOcclusion);\n        // inverse gamma correction on the base color\n        float gamma = 2.1;\n        vec3 baseColorLinear = pow(baseColor, vec3(gamma));\n\n        // physically correct BRDF normalizes by PI\n        const float PI = 3.14159;\n        vec3 totalLight = mainLighting + ambientLighting + additionalLight;\n        totalLight = min(totalLight, vec3(PI, PI, PI));\n        vec3 outColor = vec3((baseColorLinear / PI) * totalLight);\n\n        // apply gamma correction to the computed color\n        outColor = pow(outColor, vec3(1.0/gamma));\n\n        return outColor;\n      }\n      "])))));
      }

      Object.defineProperty(e, "__esModule", {
        value: !0
      }), e.EvaluateSceneLighting = s;
      var m, h, g, u, p, v, f, L, b, R, C;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js":
  /*!***************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js ***!
    \***************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingGammaGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, o, r) {
      function c(e) {
        e.fragment.code.add(r.glsl(a || (a = o(["\n    const float GAMMA = 2.2;\n    const float INV_GAMMA = 0.4545454545; // 1 / GAMMA\n\n    // gamma correction\n    vec4 delinearizeGamma(vec4 color) {\n      return vec4(pow(color.rgb, vec3(INV_GAMMA)), color.w);\n    }\n\n    vec3 linearizeGamma(vec3 color) {\n      return pow(color, vec3(GAMMA));\n    }\n    "], ["\n    const float GAMMA = 2.2;\n    const float INV_GAMMA = 0.4545454545; // 1 / GAMMA\n\n    // gamma correction\n    vec4 delinearizeGamma(vec4 color) {\n      return vec4(pow(color.rgb, vec3(INV_GAMMA)), color.w);\n    }\n\n    vec3 linearizeGamma(vec3 color) {\n      return pow(color, vec3(GAMMA));\n    }\n    "]))));
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      }), n.Gamma = c;
      var a;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/HighlightData.glsl.js":
  /*!***********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/HighlightData.glsl.js ***!
    \***********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingHighlightDataGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r, t, n) {
      function i(e) {
        e.fragment.code.add(n.glsl(o || (o = t(["\n    vec4 highlightData(vec4 fragCoord, sampler2D depthTex, vec4 viewportPixelSize) {\n      float sceneDepth = texture2D(depthTex, (fragCoord.xy - viewportPixelSize.xy) * viewportPixelSize.zw).r;\n      if (fragCoord.z > sceneDepth + 5e-7) {\n        return vec4(1.0, 1.0, 0.0, 1.0);\n      }\n      else {\n        return vec4(1.0, 0.0, 1.0, 1.0);\n      }\n    }\n  "], ["\n    vec4 highlightData(vec4 fragCoord, sampler2D depthTex, vec4 viewportPixelSize) {\n      float sceneDepth = texture2D(depthTex, (fragCoord.xy - viewportPixelSize.xy) * viewportPixelSize.zw).r;\n      if (fragCoord.z > sceneDepth + 5e-7) {\n        return vec4(1.0, 1.0, 0.0, 1.0);\n      }\n      else {\n        return vec4(1.0, 0.0, 1.0, 1.0);\n      }\n    }\n  "]))));
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      }), r.HighlightData = i;
      var o;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js":
  /*!*********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js ***!
    \*********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingLineStippleGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, l, p, t) {
      function a(e, l) {
        e.defines.addFloat("STIPPLE_ALPHA_COLOR_DISCARD", .001), e.defines.addFloat("STIPPLE_ALPHA_HIGHLIGHT_DISCARD", .5), l.stippleEnabled ? n(e, l) : i(e);
      }

      function n(e, l) {
        e.vertex.uniforms.add("stipplePatternPixelSizeInv", "float"), l.stippleUVMaxEnabled && e.varyings.add("stipplePatternUvMax", "float"), e.varyings.add("stipplePatternUv", "float"), e.fragment.uniforms.add("stipplePatternTexture", "sampler2D"), l.stippleOffColorEnabled && e.fragment.uniforms.add("stippleOffColor", "vec4"), e.fragment.code.add(t.glsl(r || (r = p(["\n  float getStippleAlpha() {\n    float stipplePatternUvClamped = stipplePatternUv * gl_FragCoord.w;\n    ", "\n\n    return texture2D(stipplePatternTexture, vec2(mod(stipplePatternUvClamped, 1.0), 0.5)).a;\n  }"], ["\n  float getStippleAlpha() {\n    float stipplePatternUvClamped = stipplePatternUv * gl_FragCoord.w;\n    ", "\n\n    return texture2D(stipplePatternTexture, vec2(mod(stipplePatternUvClamped, 1.0), 0.5)).a;\n  }"])), l.stippleUVMaxEnabled ? "stipplePatternUvClamped = clamp(stipplePatternUvClamped, 0.0, stipplePatternUvMax);" : "")), l.stippleOffColorEnabled ? e.fragment.code.add(t.glsl(d || (d = p(["\n    #define discardByStippleAlpha(stippleAlpha, threshold) {}\n    #define blendStipple(color, stippleAlpha) mix(color, stippleOffColor, stippleAlpha)\n    "], ["\n    #define discardByStippleAlpha(stippleAlpha, threshold) {}\n    #define blendStipple(color, stippleAlpha) mix(color, stippleOffColor, stippleAlpha)\n    "])))) : e.fragment.code.add(t.glsl(o || (o = p(["\n    #define discardByStippleAlpha(stippleAlpha, threshold) if (stippleAlpha < threshold) { discard; }\n    #define blendStipple(color, stippleAlpha) vec4(color.rgb, color.a * stippleAlpha)\n    "], ["\n    #define discardByStippleAlpha(stippleAlpha, threshold) if (stippleAlpha < threshold) { discard; }\n    #define blendStipple(color, stippleAlpha) vec4(color.rgb, color.a * stippleAlpha)\n    "]))));
      }

      function i(e) {
        e.fragment.code.add(t.glsl(s || (s = p(["\n  float getStippleAlpha() { return 1.0; }\n\n  #define discardByStippleAlpha(_stippleAlpha_, _threshold_) {}\n  #define blendStipple(color, _stippleAlpha_) color\n  "], ["\n  float getStippleAlpha() { return 1.0; }\n\n  #define discardByStippleAlpha(_stippleAlpha_, _threshold_) {}\n  #define blendStipple(color, _stippleAlpha_) color\n  "]))));
      }

      Object.defineProperty(l, "__esModule", {
        value: !0
      }), l.LineStipple = a;
      var r, d, o, s;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js":
  /*!*********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js ***!
    \*********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingNormalUtilsGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, t, r) {
      function c(e, n) {
        0 === n.viewingMode ? e.vertex.code.add(r.glsl(i || (i = t(["\n      vec3 getLocalUp(in vec3 pos, in vec3 origin) {\n          return normalize(pos + origin);\n      }\n    "], ["\n      vec3 getLocalUp(in vec3 pos, in vec3 origin) {\n          return normalize(pos + origin);\n      }\n    "])))) : e.vertex.code.add(r.glsl(o || (o = t(["\n      vec3 getLocalUp(in vec3 pos, in vec3 origin) {\n          return vec3(0.0, 0.0, 1.0); // WARNING: up-axis dependent code\n      }\n    "], ["\n      vec3 getLocalUp(in vec3 pos, in vec3 origin) {\n          return vec3(0.0, 0.0, 1.0); // WARNING: up-axis dependent code\n      }\n    "])))), 0 === n.viewingMode ? e.vertex.code.add(r.glsl(v || (v = t(["\n        mat3 getTBNMatrix(in vec3 n) {\n            vec3 t = normalize(cross(vec3(0.0, 0.0, 1.0), n));\n            vec3 b = normalize(cross(n, t));\n            return mat3(t, b, n);\n        }\n    "], ["\n        mat3 getTBNMatrix(in vec3 n) {\n            vec3 t = normalize(cross(vec3(0.0, 0.0, 1.0), n));\n            vec3 b = normalize(cross(n, t));\n            return mat3(t, b, n);\n        }\n    "])))) : e.vertex.code.add(r.glsl(a || (a = t(["\n        mat3 getTBNMatrix(in vec3 n) {\n            vec3 t = vec3(1.0, 0.0, 0.0);\n            vec3 b = normalize(cross(n, t));\n            return mat3(t, b, n);\n        }\n    "], ["\n        mat3 getTBNMatrix(in vec3 n) {\n            vec3 t = vec3(1.0, 0.0, 0.0);\n            vec3 b = normalize(cross(n, t));\n            return mat3(t, b, n);\n        }\n    "]))));
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      }), n.NormalUtils = c;
      var i, o, v, a;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js":
  /*!*****************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js ***!
    \*****************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingNormalsGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (a, r, e, n) {
      function m(a, r) {
        var m = a.fragment;
        m.code.add(n.glsl(o || (o = e(["\n    struct ShadingNormalParameters {\n      vec3 normalView;\n      vec3 viewDirection;\n    } shadingParams;\n    "], ["\n    struct ShadingNormalParameters {\n      vec3 normalView;\n      vec3 viewDirection;\n    } shadingParams;\n    "])))), 1 === r.doubleSidedMode ? m.code.add(n.glsl(i || (i = e(["\n      vec3 shadingNormal(ShadingNormalParameters params) {\n        return dot(params.normalView, params.viewDirection) > 0.0 ? normalize(-params.normalView) : normalize(params.normalView);\n      }\n    "], ["\n      vec3 shadingNormal(ShadingNormalParameters params) {\n        return dot(params.normalView, params.viewDirection) > 0.0 ? normalize(-params.normalView) : normalize(params.normalView);\n      }\n    "])))) : 2 === r.doubleSidedMode ? m.code.add(n.glsl(l || (l = e(["\n      vec3 shadingNormal(ShadingNormalParameters params) {\n        return gl_FrontFacing ? normalize(params.normalView) : normalize(-params.normalView);\n      }\n    "], ["\n      vec3 shadingNormal(ShadingNormalParameters params) {\n        return gl_FrontFacing ? normalize(params.normalView) : normalize(-params.normalView);\n      }\n    "])))) : m.code.add(n.glsl(s || (s = e(["\n      vec3 shadingNormal(ShadingNormalParameters params) {\n        return normalize(params.normalView);\n      }\n    "], ["\n      vec3 shadingNormal(ShadingNormalParameters params) {\n        return normalize(params.normalView);\n      }\n    "]))));
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      }), r.Normals = m;
      var o, i, l, s;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js":
  /*!**********************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js ***!
    \**********************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingPhysicallyBasedRenderingGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ./AnalyticalSkyModel.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/AnalyticalSkyModel.glsl.js"), __webpack_require__(
    /*! ./PiUtils.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, o, t, a, l) {
      function r(e, n) {
        var r = e.fragment.code;
        e.include(a.PiUtils), n.usePBRforWater ? (r.add(l.glsl(i || (i = o(["\n    struct PBRShadingWater\n    {\n        float NdotL;   // cos angle between normal and light direction\n        float NdotV;   // cos angle between normal and view direction\n        float NdotH;   // cos angle between normal and half vector\n        float VdotH;   // cos angle between view direction and half vector\n        float LdotH;   // cos angle between light direction and half vector\n        float VdotN;   // cos angle between view direction and normal vector\n    };\n\n    float dtrExponent = ", ";\n    "], ["\n    struct PBRShadingWater\n    {\n        float NdotL;   // cos angle between normal and light direction\n        float NdotV;   // cos angle between normal and view direction\n        float NdotH;   // cos angle between normal and half vector\n        float VdotH;   // cos angle between view direction and half vector\n        float LdotH;   // cos angle between light direction and half vector\n        float VdotN;   // cos angle between view direction and normal vector\n    };\n\n    float dtrExponent = ", ";\n    "])), n.useCustomDTRExponentForWater ? "2.2" : "2.0")), r.add(l.glsl(c || (c = o(["\n    vec3 fresnelReflection(float angle, vec3 f0, float f90) {\n      return f0 + (f90 - f0) * pow(1.0 - angle, 5.0);\n    }\n    "], ["\n    vec3 fresnelReflection(float angle, vec3 f0, float f90) {\n      return f0 + (f90 - f0) * pow(1.0 - angle, 5.0);\n    }\n    "])))), r.add(l.glsl(d || (d = o(["\n    float normalDistributionWater(float NdotH, float roughness)\n    {\n      float r2 = roughness * roughness;\n      float NdotH2 = NdotH * NdotH;\n      float denom = pow((NdotH2 * (r2 - 1.0) + 1.0), dtrExponent) * PI;\n      return r2 / denom;\n    }\n    "], ["\n    float normalDistributionWater(float NdotH, float roughness)\n    {\n      float r2 = roughness * roughness;\n      float NdotH2 = NdotH * NdotH;\n      float denom = pow((NdotH2 * (r2 - 1.0) + 1.0), dtrExponent) * PI;\n      return r2 / denom;\n    }\n    "])))), r.add(l.glsl(s || (s = o(["\n    float geometricOcclusionKelemen(float LoH)\n    {\n        return 0.25 / (LoH * LoH);\n    }\n    "], ["\n    float geometricOcclusionKelemen(float LoH)\n    {\n        return 0.25 / (LoH * LoH);\n    }\n    "])))), r.add(l.glsl(f || (f = o(["\n    vec3 brdfWater(in PBRShadingWater props, float roughness, vec3 F0, float F0Max)\n    {\n      vec3  F = fresnelReflection(props.VdotH, F0, F0Max);\n      float D = normalDistributionWater(props.NdotH, roughness);\n      float V = geometricOcclusionKelemen(props.LdotH);\n      return (D * V) * F;\n    }\n\n    vec3 tonemapACES(const vec3 x) {\n      return (x * (2.51 * x + 0.03)) / (x * (2.43 * x + 0.59) + 0.14);\n    }\n    "], ["\n    vec3 brdfWater(in PBRShadingWater props, float roughness, vec3 F0, float F0Max)\n    {\n      vec3  F = fresnelReflection(props.VdotH, F0, F0Max);\n      float D = normalDistributionWater(props.NdotH, roughness);\n      float V = geometricOcclusionKelemen(props.LdotH);\n      return (D * V) * F;\n    }\n\n    vec3 tonemapACES(const vec3 x) {\n      return (x * (2.51 * x + 0.03)) / (x * (2.43 * x + 0.59) + 0.14);\n    }\n    "]))))) : n.usePBR && (e.include(t.AnalyticalSkyModel), r.add(l.glsl(u || (u = o(["\n    struct PBRShadingInfo\n    {\n        float NdotL;                  // cos angle between normal and light direction\n        float NdotV;                  // cos angle between normal and view direction\n        float NdotH;                  // cos angle between normal and half vector\n        float VdotH;                  // cos angle between view direction and half vector\n        float LdotH;                  // cos angle between view light direction and half vector\n        float NdotNG;                 // cos angle between normal and normal of the ground\n        float RdotNG;                 // cos angle between view direction reflected of the normal and normal of the ground\n        float NdotAmbDir;             // cos angle between view direction and the fill light in ambient illumination\n        float NdotH_Horizon;          // cos angle between normal and half vector defined with horizon illumination\n        vec3 skyRadianceToSurface;         // integrated radiance of the sky based on the surface roughness (used for specular reflection)\n        vec3 groundRadianceToSurface;      // integrated radiance of the ground based on the surface roughness (used for specular reflection)\n        vec3 skyIrradianceToSurface;       // irradiance of the sky (used for diffuse reflection)\n        vec3 groundIrradianceToSurface;    // irradiance of the ground (used for diffuse reflection)\n\n        float averageAmbientRadiance;      // average ambient radiance used to deduce black level in gamut mapping\n        float ssao;                   // ssao coefficient\n        vec3 groundReflectance;       // reflectance of the ground\n        vec3 albedoLinear;            // linear color of the albedo\n        vec3 f0;                      // fresnel value at normal incident light\n        vec3 f90;                     // fresnel value at 90o of incident light\n\n        vec3 diffuseColor;            // diffuse color of the material used in environment illumination\n        float metalness;              // metalness of the material\n        float roughness;              // roughness of the material\n    };\n    "], ["\n    struct PBRShadingInfo\n    {\n        float NdotL;                  // cos angle between normal and light direction\n        float NdotV;                  // cos angle between normal and view direction\n        float NdotH;                  // cos angle between normal and half vector\n        float VdotH;                  // cos angle between view direction and half vector\n        float LdotH;                  // cos angle between view light direction and half vector\n        float NdotNG;                 // cos angle between normal and normal of the ground\n        float RdotNG;                 // cos angle between view direction reflected of the normal and normal of the ground\n        float NdotAmbDir;             // cos angle between view direction and the fill light in ambient illumination\n        float NdotH_Horizon;          // cos angle between normal and half vector defined with horizon illumination\n        vec3 skyRadianceToSurface;         // integrated radiance of the sky based on the surface roughness (used for specular reflection)\n        vec3 groundRadianceToSurface;      // integrated radiance of the ground based on the surface roughness (used for specular reflection)\n        vec3 skyIrradianceToSurface;       // irradiance of the sky (used for diffuse reflection)\n        vec3 groundIrradianceToSurface;    // irradiance of the ground (used for diffuse reflection)\n\n        float averageAmbientRadiance;      // average ambient radiance used to deduce black level in gamut mapping\n        float ssao;                   // ssao coefficient\n        vec3 groundReflectance;       // reflectance of the ground\n        vec3 albedoLinear;            // linear color of the albedo\n        vec3 f0;                      // fresnel value at normal incident light\n        vec3 f90;                     // fresnel value at 90o of incident light\n\n        vec3 diffuseColor;            // diffuse color of the material used in environment illumination\n        float metalness;              // metalness of the material\n        float roughness;              // roughness of the material\n    };\n    "])))), r.add(l.glsl(g || (g = o(["\n    const float fillLightIntensity = 0.25;              // intensity of the directional ambient component\n    const float horizonLightDiffusion = 0.4;            // diffusion value describing the area and smoothness of the horizon light\n    const vec3  skyTransmittance = vec3(0.9, 0.9, 1.0);  // bluish transmittance of the sky\n    const float additionalAmbientIrradianceFactor = 0.02;// Additional irradiance factor - making everything brighter and more colorful\n    "], ["\n    const float fillLightIntensity = 0.25;              // intensity of the directional ambient component\n    const float horizonLightDiffusion = 0.4;            // diffusion value describing the area and smoothness of the horizon light\n    const vec3  skyTransmittance = vec3(0.9, 0.9, 1.0);  // bluish transmittance of the sky\n    const float additionalAmbientIrradianceFactor = 0.02;// Additional irradiance factor - making everything brighter and more colorful\n    "])))), r.add(l.glsl(h || (h = o(["\n    float normalDistribution(float NdotH, float roughness)\n    {\n        float a = NdotH * roughness;\n        float b = roughness / (1.0 - NdotH * NdotH + a * a);\n        return b * b * INV_PI;\n    }\n    "], ["\n    float normalDistribution(float NdotH, float roughness)\n    {\n        float a = NdotH * roughness;\n        float b = roughness / (1.0 - NdotH * NdotH + a * a);\n        return b * b * INV_PI;\n    }\n    "])))), r.add(l.glsl(m || (m = o(["\n    const vec4 c0 = vec4(-1.0, -0.0275, -0.572,  0.022);\n    const vec4 c1 = vec4( 1.0,  0.0425,  1.040, -0.040);\n    const vec2 c2 = vec2(-1.04, 1.04);\n\n    vec2 prefilteredDFGAnalytical(float roughness, float NdotV) {\n        vec4 r = roughness * c0 + c1;\n        float a004 = min(r.x * r.x, exp2(-9.28 * NdotV)) * r.x + r.y;\n        return c2 * a004 + r.zw;\n    }\n    "], ["\n    const vec4 c0 = vec4(-1.0, -0.0275, -0.572,  0.022);\n    const vec4 c1 = vec4( 1.0,  0.0425,  1.040, -0.040);\n    const vec2 c2 = vec2(-1.04, 1.04);\n\n    vec2 prefilteredDFGAnalytical(float roughness, float NdotV) {\n        vec4 r = roughness * c0 + c1;\n        float a004 = min(r.x * r.x, exp2(-9.28 * NdotV)) * r.x + r.y;\n        return c2 * a004 + r.zw;\n    }\n    "])))), r.add(l.glsl(p || (p = o(["\n    vec3 evaluateEnvironmentIllumination(PBRShadingInfo inputs) {\n      vec3 indirectDiffuse = evaluateDiffuseIlluminationHemisphere(inputs.groundIrradianceToSurface, inputs.skyIrradianceToSurface, inputs.NdotNG);\n      vec3 indirectSpecular = evaluateSpecularIlluminationHemisphere(inputs.groundRadianceToSurface, inputs.skyRadianceToSurface, inputs.RdotNG, inputs.roughness);\n\n      // From diffuse illumination calculate reflected color\n      vec3 diffuseComponent = inputs.diffuseColor * indirectDiffuse * INV_PI;\n\n      // From specular illumination calculate reflected color\n      vec2 dfg = prefilteredDFGAnalytical(inputs.roughness, inputs.NdotV);\n      vec3 specularColor = inputs.f0 * dfg.x + inputs.f90 * dfg.y;\n      vec3 specularComponent = specularColor * indirectSpecular;\n\n      return (diffuseComponent + specularComponent);\n    }\n    "], ["\n    vec3 evaluateEnvironmentIllumination(PBRShadingInfo inputs) {\n      vec3 indirectDiffuse = evaluateDiffuseIlluminationHemisphere(inputs.groundIrradianceToSurface, inputs.skyIrradianceToSurface, inputs.NdotNG);\n      vec3 indirectSpecular = evaluateSpecularIlluminationHemisphere(inputs.groundRadianceToSurface, inputs.skyRadianceToSurface, inputs.RdotNG, inputs.roughness);\n\n      // From diffuse illumination calculate reflected color\n      vec3 diffuseComponent = inputs.diffuseColor * indirectDiffuse * INV_PI;\n\n      // From specular illumination calculate reflected color\n      vec2 dfg = prefilteredDFGAnalytical(inputs.roughness, inputs.NdotV);\n      vec3 specularColor = inputs.f0 * dfg.x + inputs.f90 * dfg.y;\n      vec3 specularComponent = specularColor * indirectSpecular;\n\n      return (diffuseComponent + specularComponent);\n    }\n    "])))), r.add(l.glsl(v || (v = o(["\n    float gamutMapChanel(float x, vec2 p){\n      return (x < p.x) ? mix(0.0, p.y, x/p.x) : mix(p.y, 1.0, (x - p.x) / (1.0 - p.x) );\n    }\n\n    // Because of the fresnel refletion the image might be too bright we apply black level soft compression gamut mapping\n    vec3 blackLevelSoftCompression(vec3 inColor, PBRShadingInfo inputs){\n      vec3 outColor;\n      // based on the average ambient radiance we approximate the black level for a specific time of a day\n      // p.x - the deduced black level\n      // p.y - the value to which we map the black level (around 1/3 of the black level)\n      vec2 p = vec2(0.02 * (inputs.averageAmbientRadiance), 0.0075 * (inputs.averageAmbientRadiance));\n      // gamut map individual color changels\n      outColor.x = gamutMapChanel(inColor.x, p) ;\n      outColor.y = gamutMapChanel(inColor.y, p) ;\n      outColor.z = gamutMapChanel(inColor.z, p) ;\n\n      return outColor;\n    }\n    "], ["\n    float gamutMapChanel(float x, vec2 p){\n      return (x < p.x) ? mix(0.0, p.y, x/p.x) : mix(p.y, 1.0, (x - p.x) / (1.0 - p.x) );\n    }\n\n    // Because of the fresnel refletion the image might be too bright we apply black level soft compression gamut mapping\n    vec3 blackLevelSoftCompression(vec3 inColor, PBRShadingInfo inputs){\n      vec3 outColor;\n      // based on the average ambient radiance we approximate the black level for a specific time of a day\n      // p.x - the deduced black level\n      // p.y - the value to which we map the black level (around 1/3 of the black level)\n      vec2 p = vec2(0.02 * (inputs.averageAmbientRadiance), 0.0075 * (inputs.averageAmbientRadiance));\n      // gamut map individual color changels\n      outColor.x = gamutMapChanel(inColor.x, p) ;\n      outColor.y = gamutMapChanel(inColor.y, p) ;\n      outColor.z = gamutMapChanel(inColor.z, p) ;\n\n      return outColor;\n    }\n    "])))));
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      }), n.PhysicallyBasedRendering = r;
      var i, c, d, s, f, u, g, h, m, p, v;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js":
  /*!********************************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js ***!
    \********************************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingPhysicallyBasedRenderingParametersGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../attributes/VertexTextureCoordinates.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTextureCoordinates.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, s, n, o, t) {
      function a(e, s) {
        var a = e.fragment,
            p = s.hasMetalnessAndRoughnessTexture || s.hasEmissionTexture || s.hasOcclusionTexture;
        s.usePBR && p && e.include(o.VertexTextureCoordinates, s), s.usePBR && (a.uniforms.add("roughnessFactor", "float"), a.uniforms.add("metalnessFactor", "float"), a.uniforms.add("emissionFactor", "vec3"), a.uniforms.add("reflectanceFactor", "float"), a.code.add(t.glsl(r || (r = n(["\n    float reflectance;\n    float roughness;\n    float metalness;\n    vec3 emission;\n    float occlusion;\n    "], ["\n    float reflectance;\n    float roughness;\n    float metalness;\n    vec3 emission;\n    float occlusion;\n    "])))), s.hasMetalnessAndRoughnessTexture && (a.uniforms.add("texMetallicRoughness", "sampler2D"), s.supportsTextureAtlas && a.uniforms.add("texMetallicRoughnessSize", "vec2"), a.code.add(t.glsl(l || (l = n(["\n    void applyMetallnessAndRoughness(TextureLookupParameter params) {\n      vec3 metallicRoughness = textureLookup(texMetallicRoughness, params).rgb;\n\n      roughness *= metallicRoughness.g;\n      metalness *= metallicRoughness.b;\n    }\n    "], ["\n    void applyMetallnessAndRoughness(TextureLookupParameter params) {\n      vec3 metallicRoughness = textureLookup(texMetallicRoughness, params).rgb;\n\n      roughness *= metallicRoughness.g;\n      metalness *= metallicRoughness.b;\n    }\n    "]))))), s.hasEmissionTexture && (a.uniforms.add("texEmission", "sampler2D"), s.supportsTextureAtlas && a.uniforms.add("texEmissionSize", "vec2"), a.code.add(t.glsl(c || (c = n(["\n    void applyEmission(TextureLookupParameter params) {\n      emission *= textureLookup(texEmission, params).rgb;\n    }\n    "], ["\n    void applyEmission(TextureLookupParameter params) {\n      emission *= textureLookup(texEmission, params).rgb;\n    }\n    "])))))), s.usePBR && s.hasOcclusionTexture ? (a.uniforms.add("texOcclusion", "sampler2D"), s.supportsTextureAtlas && a.uniforms.add("texOcclusionSize", "vec2"), a.code.add(t.glsl(i || (i = n(["\n    void applyOcclusion(TextureLookupParameter params) {\n      occlusion *= textureLookup(texOcclusion, params).r;\n    }\n\n    float getBakedOcclusion() {\n      return occlusion;\n    }\n    "], ["\n    void applyOcclusion(TextureLookupParameter params) {\n      occlusion *= textureLookup(texOcclusion, params).r;\n    }\n\n    float getBakedOcclusion() {\n      return occlusion;\n    }\n    "]))))) : a.code.add(t.glsl(u || (u = n(["\n    float getBakedOcclusion() { return 1.0; }\n    "], ["\n    float getBakedOcclusion() { return 1.0; }\n    "])))), s.usePBR && a.code.add(t.glsl(m || (m = n(["\n    void applyPBRFactors() {\n      reflectance = reflectanceFactor;\n      roughness = roughnessFactor;\n      metalness = metalnessFactor;\n      emission = emissionFactor;\n      occlusion = 1.0;\n      ", "\n      ", "\n      ", "\n      ", "\n    }\n  "], ["\n    void applyPBRFactors() {\n      reflectance = reflectanceFactor;\n      roughness = roughnessFactor;\n      metalness = metalnessFactor;\n      emission = emissionFactor;\n      occlusion = 1.0;\n      ", "\n      ", "\n      ", "\n      ", "\n    }\n  "])), p ? "vtc.uv = vuv0;" : "", s.hasMetalnessAndRoughnessTexture ? s.supportsTextureAtlas ? "vtc.size = texMetallicRoughnessSize; applyMetallnessAndRoughness(vtc);" : "applyMetallnessAndRoughness(vtc);" : "", s.hasEmissionTexture ? s.supportsTextureAtlas ? "vtc.size = texEmissionSize; applyEmission(vtc);" : "applyEmission(vtc);" : "", s.hasOcclusionTexture ? s.supportsTextureAtlas ? "vtc.size = texOcclusionSize; applyOcclusion(vtc);" : "applyOcclusion(vtc);" : ""));
      }

      Object.defineProperty(s, "__esModule", {
        value: !0
      }), s.PhysicallyBasedRenderingParameters = a, function (e) {
        function s(e, s) {
          e.setUniform1f("metalnessFactor", s.metallicFactor), e.setUniform1f("roughnessFactor", s.roughnessFactor), e.setUniform3fv("emissionFactor", s.emissiveFactor), e.setUniform1f("reflectanceFactor", s.reflectanceFactor);
        }

        e.bindUniforms = s;
      }(a = s.PhysicallyBasedRenderingParameters || (s.PhysicallyBasedRenderingParameters = {}));
      var r, l, c, i, u, m;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js":
  /*!*****************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js ***!
    \*****************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingPiUtilsGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, n, o, e) {
      function l(t) {
        t.vertex.code.add(e.glsl(a || (a = o(["\n    const float PI = 3.141592653589793;\n  "], ["\n    const float PI = 3.141592653589793;\n  "])))), t.fragment.code.add(e.glsl(s || (s = o(["\n    const float PI = 3.141592653589793;\n    const float LIGHT_NORMALIZATION = 1.0 / PI;\n    const float INV_PI = 0.3183098861837907;\n    const float HALF_PI = 1.570796326794897;\n    "], ["\n    const float PI = 3.141592653589793;\n    const float LIGHT_NORMALIZATION = 1.0 / PI;\n    const float INV_PI = 0.3183098861837907;\n    const float HALF_PI = 1.570796326794897;\n    "]))));
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      }), n.PiUtils = l;
      var a, s;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js":
  /*!***********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js ***!
    \***********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingReadShadowMapGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../util/RgbaFloatEncoding.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/RgbaFloatEncoding.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, a, t, l, i) {
      function n(e) {
        e.include(l.RgbaFloatEncoding), e.fragment.uniforms.add("depthTex", "sampler2D"), e.fragment.uniforms.add("shadowMapNum", "int"), e.fragment.uniforms.add("shadowMapDistance", "vec4"), e.fragment.uniforms.add("shadowMapMatrix", "mat4", 4), e.fragment.uniforms.add("depthHalfPixelSz", "float"), e.fragment.code.add(i.glsl(o || (o = t(["\n    float readShadowMap(const in vec3 _vpos, float _linearDepth) {\n      float halfPixelSize = depthHalfPixelSz;\n      vec4 distance = shadowMapDistance;\n      float depth = _linearDepth;\n\n      //choose correct cascade\n      int i = depth < distance[1] ? 0 : depth < distance[2] ? 1 : depth < distance[3] ? 2 : 3;\n\n      if (i >= shadowMapNum) { return 0.0; }\n\n      mat4 mat = i == 0 ? shadowMapMatrix[0] : i == 1 ? shadowMapMatrix[1] : i == 2 ? shadowMapMatrix[2] : shadowMapMatrix[3];\n\n      vec4 lv = mat * vec4(_vpos, 1.0);\n      lv.xy /= lv.w;\n\n      // vertex completely outside? -> no shadow\n      vec3 lvpos = 0.5 * lv.xyz + vec3(0.5);\n      if (lvpos.z >= 1.0) { return 0.0; }\n      if (lvpos.x < 0.0 || lvpos.x > 1.0 || lvpos.y < 0.0 || lvpos.y > 1.0) { return 0.0; }\n\n      // calc coord in cascade texture\n      vec2 uv = vec2(float(i - 2 * (i / 2)) * 0.5, float(i / 2) * 0.5) + 0.5 * lvpos.xy;\n\n      float texSize = 0.5 / halfPixelSize;\n\n      // filter, offset by half pixels\n      vec2 st = fract((vec2(halfPixelSize) + uv) * texSize);\n\n      float s00 = rgba2float(texture2D(depthTex, uv + vec2(-halfPixelSize, -halfPixelSize))) < lvpos.z ? 1.0 : 0.0;\n      float s10 = rgba2float(texture2D(depthTex, uv + vec2(halfPixelSize, -halfPixelSize))) < lvpos.z ? 1.0 : 0.0;\n      float s11 = rgba2float(texture2D(depthTex, uv + vec2(halfPixelSize, halfPixelSize))) < lvpos.z ? 1.0 : 0.0;\n      float s01 = rgba2float(texture2D(depthTex, uv + vec2(-halfPixelSize, halfPixelSize))) < lvpos.z ? 1.0 : 0.0;\n\n      return mix(mix(s00, s10, st.x), mix(s01, s11, st.x), st.y);\n    }\n  "], ["\n    float readShadowMap(const in vec3 _vpos, float _linearDepth) {\n      float halfPixelSize = depthHalfPixelSz;\n      vec4 distance = shadowMapDistance;\n      float depth = _linearDepth;\n\n      //choose correct cascade\n      int i = depth < distance[1] ? 0 : depth < distance[2] ? 1 : depth < distance[3] ? 2 : 3;\n\n      if (i >= shadowMapNum) { return 0.0; }\n\n      mat4 mat = i == 0 ? shadowMapMatrix[0] : i == 1 ? shadowMapMatrix[1] : i == 2 ? shadowMapMatrix[2] : shadowMapMatrix[3];\n\n      vec4 lv = mat * vec4(_vpos, 1.0);\n      lv.xy /= lv.w;\n\n      // vertex completely outside? -> no shadow\n      vec3 lvpos = 0.5 * lv.xyz + vec3(0.5);\n      if (lvpos.z >= 1.0) { return 0.0; }\n      if (lvpos.x < 0.0 || lvpos.x > 1.0 || lvpos.y < 0.0 || lvpos.y > 1.0) { return 0.0; }\n\n      // calc coord in cascade texture\n      vec2 uv = vec2(float(i - 2 * (i / 2)) * 0.5, float(i / 2) * 0.5) + 0.5 * lvpos.xy;\n\n      float texSize = 0.5 / halfPixelSize;\n\n      // filter, offset by half pixels\n      vec2 st = fract((vec2(halfPixelSize) + uv) * texSize);\n\n      float s00 = rgba2float(texture2D(depthTex, uv + vec2(-halfPixelSize, -halfPixelSize))) < lvpos.z ? 1.0 : 0.0;\n      float s10 = rgba2float(texture2D(depthTex, uv + vec2(halfPixelSize, -halfPixelSize))) < lvpos.z ? 1.0 : 0.0;\n      float s11 = rgba2float(texture2D(depthTex, uv + vec2(halfPixelSize, halfPixelSize))) < lvpos.z ? 1.0 : 0.0;\n      float s01 = rgba2float(texture2D(depthTex, uv + vec2(-halfPixelSize, halfPixelSize))) < lvpos.z ? 1.0 : 0.0;\n\n      return mix(mix(s00, s10, st.x), mix(s01, s11, st.x), st.y);\n    }\n  "]))));
      }

      Object.defineProperty(a, "__esModule", {
        value: !0
      }), a.ReadShadowMap = n, function (e) {
        function a(e, a) {
          a.shadowMappingEnabled && a.shadowMap.bindView(e, a.origin);
        }

        e.bindUniforms = a;
      }(n = a.ReadShadowMap || (a.ReadShadowMap = {}));
      var o;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js":
  /*!*************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js ***!
    \*************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingVisualVariablesGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, v, o, n) {
      function r(e, v) {
        (v.vvSize || v.vvColor) && e.attributes.add("instanceFeatureAttribute", "vec4"), v.vvSize ? (e.vertex.uniforms.add("vvSizeMinSize", "vec3"), e.vertex.uniforms.add("vvSizeMaxSize", "vec3"), e.vertex.uniforms.add("vvSizeOffset", "vec3"), e.vertex.uniforms.add("vvSizeFactor", "vec3"), e.vertex.uniforms.add("vvSymbolRotationMatrix", "mat3"), e.vertex.uniforms.add("vvSymbolAnchor", "vec3"), e.vertex.code.add(n.glsl(t || (t = o(["\n      vec4 vvTransformPosition(vec3 position, vec4 _featureAttribute) {\n        vec3 vvScale = clamp(vvSizeOffset + _featureAttribute.x * vvSizeFactor, vvSizeMinSize, vvSizeMaxSize);\n        return vec4(vvSymbolRotationMatrix * (vvScale * (position + vvSymbolAnchor)), 1.0);\n      }\n    "], ["\n      vec4 vvTransformPosition(vec3 position, vec4 _featureAttribute) {\n        vec3 vvScale = clamp(vvSizeOffset + _featureAttribute.x * vvSizeFactor, vvSizeMinSize, vvSizeMaxSize);\n        return vec4(vvSymbolRotationMatrix * (vvScale * (position + vvSymbolAnchor)), 1.0);\n      }\n    "])))), e.vertex.code.add(n.glsl(i || (i = o(["\n      const float eps = 1.192092896e-07;\n      vec4 vvTransformNormal(vec3 _normal, vec4 _featureAttribute) {\n        vec3 vvScale = clamp(vvSizeOffset + _featureAttribute.x * vvSizeFactor, vvSizeMinSize + eps, vvSizeMaxSize);\n        return vec4(vvSymbolRotationMatrix * _normal / vvScale, 1.0);\n      }\n\n      vec4 vvLocalNormal(vec3 _normal) {\n        return vvTransformNormal(_normal, instanceFeatureAttribute);\n      }\n\n      vec4 localPosition() {\n        return vvTransformPosition(position, instanceFeatureAttribute);\n      }\n    "], ["\n      const float eps = 1.192092896e-07;\n      vec4 vvTransformNormal(vec3 _normal, vec4 _featureAttribute) {\n        vec3 vvScale = clamp(vvSizeOffset + _featureAttribute.x * vvSizeFactor, vvSizeMinSize + eps, vvSizeMaxSize);\n        return vec4(vvSymbolRotationMatrix * _normal / vvScale, 1.0);\n      }\n\n      vec4 vvLocalNormal(vec3 _normal) {\n        return vvTransformNormal(_normal, instanceFeatureAttribute);\n      }\n\n      vec4 localPosition() {\n        return vvTransformPosition(position, instanceFeatureAttribute);\n      }\n    "]))))) : e.vertex.code.add(n.glsl(a || (a = o(["\n      vec4 localPosition() { return vec4(position, 1.0); }\n\n      vec4 vvLocalNormal(vec3 _normal) { return vec4(_normal, 1.0); }\n    "], ["\n      vec4 localPosition() { return vec4(position, 1.0); }\n\n      vec4 vvLocalNormal(vec3 _normal) { return vec4(_normal, 1.0); }\n    "])))), v.vvColor ? (e.vertex.defines.addInt("VV_COLOR_N", 8), e.vertex.code.add(n.glsl(l || (l = o(["\n      uniform float vvColorValues[VV_COLOR_N];\n      uniform vec4 vvColorColors[VV_COLOR_N];\n\n      vec4 vvGetColor(vec4 featureAttribute, float values[VV_COLOR_N], vec4 colors[VV_COLOR_N]) {\n        float value = featureAttribute.y;\n        if (value <= values[0]) {\n          return colors[0];\n        }\n\n        for (int i = 1; i < VV_COLOR_N; ++i) {\n          if (values[i] >= value) {\n            float f = (value - values[i-1]) / (values[i] - values[i-1]);\n            return mix(colors[i-1], colors[i], f);\n          }\n        }\n        return colors[VV_COLOR_N - 1];\n      }\n\n      vec4 vvColor() {\n        return vvGetColor(instanceFeatureAttribute, vvColorValues, vvColorColors);\n      }\n    "], ["\n      uniform float vvColorValues[VV_COLOR_N];\n      uniform vec4 vvColorColors[VV_COLOR_N];\n\n      vec4 vvGetColor(vec4 featureAttribute, float values[VV_COLOR_N], vec4 colors[VV_COLOR_N]) {\n        float value = featureAttribute.y;\n        if (value <= values[0]) {\n          return colors[0];\n        }\n\n        for (int i = 1; i < VV_COLOR_N; ++i) {\n          if (values[i] >= value) {\n            float f = (value - values[i-1]) / (values[i] - values[i-1]);\n            return mix(colors[i-1], colors[i], f);\n          }\n        }\n        return colors[VV_COLOR_N - 1];\n      }\n\n      vec4 vvColor() {\n        return vvGetColor(instanceFeatureAttribute, vvColorValues, vvColorColors);\n      }\n    "]))))) : e.vertex.code.add(n.glsl(c || (c = o(["\n      vec4 vvColor() { return vec4(1.0); }\n    "], ["\n      vec4 vvColor() { return vec4(1.0); }\n    "]))));
      }

      Object.defineProperty(v, "__esModule", {
        value: !0
      }), v.VisualVariables = r, function (e) {
        function v(e, v) {
          v.vvSizeEnabled && (e.setUniform3fv("vvSizeMinSize", v.vvSizeMinSize), e.setUniform3fv("vvSizeMaxSize", v.vvSizeMaxSize), e.setUniform3fv("vvSizeOffset", v.vvSizeOffset), e.setUniform3fv("vvSizeFactor", v.vvSizeFactor)), v.vvColorEnabled && (e.setUniform1fv("vvColorValues", v.vvColorValues), e.setUniform4fv("vvColorColors", v.vvColorColors));
        }

        function o(e, o) {
          v(e, o), o.vvOpacityEnabled && (e.setUniform1fv("vvOpacityValues", o.vvOpacityValues), e.setUniform1fv("vvOpacityOpacities", o.vvOpacityOpacities));
        }

        function n(e, o) {
          v(e, o), o.vvSizeEnabled && (e.setUniform3fv("vvSymbolAnchor", o.vvSymbolAnchor), e.setUniformMatrix3fv("vvSymbolRotationMatrix", o.vvSymbolRotationMatrix));
        }

        e.bindUniformsWithOpacity = o, e.bindUniformsForSymbols = n;
      }(r = v.VisualVariables || (v.VisualVariables = {}));
      var t, i, a, l, c;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Water.glsl.js":
  /*!***************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Water.glsl.js ***!
    \***************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingWaterGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ./Gamma.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js"), __webpack_require__(
    /*! ./PhysicallyBasedRendering.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, o, t, r, a) {
      function i(e, n) {
        e.include(r.PhysicallyBasedRendering, n), e.include(t.Gamma), e.fragment.code.add(a.glsl(s || (s = o(["\n    const vec3 fresnelSky =  vec3(0.02, 1.0, 5.0); // f0, f0max, exp\n    const vec2 fresnelMaterial =  vec2(0.02, 0.1); // f0, f0max for specular term\n    const float roughness = 0.06;\n\n    const vec3 skyZenitColor = vec3(0, 0.6, 0.9);\n    const vec3 skyColor = vec3(0.72, 0.92, 1.0);\n\n    PBRShadingWater shadingInfo;\n\n    /*\n    *   This function is an approximation for the sky gradient reflected\n    *   the water surface and describes a combination of two fresnel terms.\n    *   @parameter: cosTheta = is the result of max(dot(n,v), 0.0)\n    *   @parameter: horizon = the dominant color of the sky horizon\n    *   @parameter: cosTheta = the dominant color of the sky zenit\n    */\n    vec3 getSkyGradientColor(in float cosTheta, in vec3 horizon, in vec3 zenit) {\n      float exponent = pow((1.0 - cosTheta), fresnelSky[2]);\n      return mix(zenit, horizon, exponent);\n    }\n\n    /*\n    *   This function determines the water color per pixel.\n    *   @parameter: n = normal facing away from the surface\n    *   @parameter: v = view direction facing away from the surface.\n    *   @parameter: l = light direction facing away from the surface\n    *   @parameter: lightIntensity = light intensity, currently between 0...PI\n    *   @parameter: localUp = a normal for the general direction of the surface\n    *   @parameter: shadow = the amount of shadow at this pixel (0 = no shadow)\n    */\n    vec3 getSeaColor(in vec3 n, in vec3 v, in vec3 l, vec3 color, in vec3 lightIntensity, in vec3 localUp, in float shadow) {\n\n      vec3 seaWaterColor = linearizeGamma(color);\n      // using half vector to determine the specular light\n      vec3 h = normalize(l + v);\n      shadingInfo.NdotL = clamp(dot(n, l), 0.0, 1.0);\n      shadingInfo.NdotV = clamp(dot(n, v), 0.001, 1.0);\n      shadingInfo.VdotN = clamp(dot(v, n), 0.001, 1.0);\n      shadingInfo.NdotH = clamp(dot(n, h), 0.0, 1.0);\n      shadingInfo.VdotH = clamp(dot(v, h), 0.0, 1.0);\n      shadingInfo.LdotH = clamp(dot(l, h), 0.0, 1.0);\n\n      // angle between vertex normal and view direction\n      float upDotV = max(dot(localUp,v), 0.0);\n      // reflected sky color: the reflected sky color consists of two main colors, the\n      // reflected color at the horizon and the reflected color of the zenit.\n      // the reflected sky color is then an approximation based on the fresnel term.\n      vec3 skyHorizon = linearizeGamma(skyColor);\n      vec3 skyZenit = linearizeGamma(skyZenitColor);\n      vec3 skyColor = getSkyGradientColor(upDotV, skyHorizon, skyZenit );\n\n      // we use the upDotL to smoothen out the\n      // reflected color of the water\n      float upDotL = max(dot(localUp,l),0.0);\n\n      // The approximated sky color is adjusted according to the sun position.\n      // This is done as approximation for e.g. night views.\n      skyColor *= 0.1 + upDotL * 0.9;\n\n      // If a water surface is in shadow we just use a slight darkening of the\n      // water surface expressed with this shadowModifier.\n      float shadowModifier = clamp(shadow, 0.8, 1.0);\n\n      // The reflected sky color consists of the fresnel reflection multiplied with the approximated sky color.\n      // The shadow is influencing the frensel term to keep the shadow impression for really near views. As long\n      // as reflection are absent there is a need to have a slight shadow for depth perception.\n      vec3 reflSky = fresnelReflection(shadingInfo.VdotN, vec3(fresnelSky[0]), fresnelSky[1]) * skyColor * shadowModifier;\n\n      // The reflected sea color is the input water color combined with the reflected sky color.\n      // The reflected sky color is modified by the incoming light.\n      vec3 reflSea = seaWaterColor * mix(skyColor, upDotL * lightIntensity * LIGHT_NORMALIZATION, 2.0 / 3.0) * shadowModifier;\n\n      vec3 specular = vec3(0.0);\n      // This prevents the specular light to be rendered when:\n      // - sun is behind a polygon (e.g. sundown for elevated polygons where nDotL might be still ok)\n      // - viewer is under water (for this localUp is better than n)\n      if(upDotV > 0.0 && upDotL > 0.0) {\n        // calculate the cook torrance BRDF but with simplified occlusion\n        vec3 specularSun = brdfWater(shadingInfo, roughness, vec3(fresnelMaterial[0]), fresnelMaterial[1]);\n        // Normalize light intensity to be between 0...1. Shadow cancels out specular light here\n        vec3 incidentLight = lightIntensity * LIGHT_NORMALIZATION * shadow;\n\n        specular = shadingInfo.NdotL * incidentLight * specularSun;\n      }\n      // combining reflected sky, reflected sea and specular highlight.\n      return tonemapACES(reflSky + reflSea + specular);\n    }\n  "], ["\n    const vec3 fresnelSky =  vec3(0.02, 1.0, 5.0); // f0, f0max, exp\n    const vec2 fresnelMaterial =  vec2(0.02, 0.1); // f0, f0max for specular term\n    const float roughness = 0.06;\n\n    const vec3 skyZenitColor = vec3(0, 0.6, 0.9);\n    const vec3 skyColor = vec3(0.72, 0.92, 1.0);\n\n    PBRShadingWater shadingInfo;\n\n    /*\n    *   This function is an approximation for the sky gradient reflected\n    *   the water surface and describes a combination of two fresnel terms.\n    *   @parameter: cosTheta = is the result of max(dot(n,v), 0.0)\n    *   @parameter: horizon = the dominant color of the sky horizon\n    *   @parameter: cosTheta = the dominant color of the sky zenit\n    */\n    vec3 getSkyGradientColor(in float cosTheta, in vec3 horizon, in vec3 zenit) {\n      float exponent = pow((1.0 - cosTheta), fresnelSky[2]);\n      return mix(zenit, horizon, exponent);\n    }\n\n    /*\n    *   This function determines the water color per pixel.\n    *   @parameter: n = normal facing away from the surface\n    *   @parameter: v = view direction facing away from the surface.\n    *   @parameter: l = light direction facing away from the surface\n    *   @parameter: lightIntensity = light intensity, currently between 0...PI\n    *   @parameter: localUp = a normal for the general direction of the surface\n    *   @parameter: shadow = the amount of shadow at this pixel (0 = no shadow)\n    */\n    vec3 getSeaColor(in vec3 n, in vec3 v, in vec3 l, vec3 color, in vec3 lightIntensity, in vec3 localUp, in float shadow) {\n\n      vec3 seaWaterColor = linearizeGamma(color);\n      // using half vector to determine the specular light\n      vec3 h = normalize(l + v);\n      shadingInfo.NdotL = clamp(dot(n, l), 0.0, 1.0);\n      shadingInfo.NdotV = clamp(dot(n, v), 0.001, 1.0);\n      shadingInfo.VdotN = clamp(dot(v, n), 0.001, 1.0);\n      shadingInfo.NdotH = clamp(dot(n, h), 0.0, 1.0);\n      shadingInfo.VdotH = clamp(dot(v, h), 0.0, 1.0);\n      shadingInfo.LdotH = clamp(dot(l, h), 0.0, 1.0);\n\n      // angle between vertex normal and view direction\n      float upDotV = max(dot(localUp,v), 0.0);\n      // reflected sky color: the reflected sky color consists of two main colors, the\n      // reflected color at the horizon and the reflected color of the zenit.\n      // the reflected sky color is then an approximation based on the fresnel term.\n      vec3 skyHorizon = linearizeGamma(skyColor);\n      vec3 skyZenit = linearizeGamma(skyZenitColor);\n      vec3 skyColor = getSkyGradientColor(upDotV, skyHorizon, skyZenit );\n\n      // we use the upDotL to smoothen out the\n      // reflected color of the water\n      float upDotL = max(dot(localUp,l),0.0);\n\n      // The approximated sky color is adjusted according to the sun position.\n      // This is done as approximation for e.g. night views.\n      skyColor *= 0.1 + upDotL * 0.9;\n\n      // If a water surface is in shadow we just use a slight darkening of the\n      // water surface expressed with this shadowModifier.\n      float shadowModifier = clamp(shadow, 0.8, 1.0);\n\n      // The reflected sky color consists of the fresnel reflection multiplied with the approximated sky color.\n      // The shadow is influencing the frensel term to keep the shadow impression for really near views. As long\n      // as reflection are absent there is a need to have a slight shadow for depth perception.\n      vec3 reflSky = fresnelReflection(shadingInfo.VdotN, vec3(fresnelSky[0]), fresnelSky[1]) * skyColor * shadowModifier;\n\n      // The reflected sea color is the input water color combined with the reflected sky color.\n      // The reflected sky color is modified by the incoming light.\n      vec3 reflSea = seaWaterColor * mix(skyColor, upDotL * lightIntensity * LIGHT_NORMALIZATION, 2.0 / 3.0) * shadowModifier;\n\n      vec3 specular = vec3(0.0);\n      // This prevents the specular light to be rendered when:\n      // - sun is behind a polygon (e.g. sundown for elevated polygons where nDotL might be still ok)\n      // - viewer is under water (for this localUp is better than n)\n      if(upDotV > 0.0 && upDotL > 0.0) {\n        // calculate the cook torrance BRDF but with simplified occlusion\n        vec3 specularSun = brdfWater(shadingInfo, roughness, vec3(fresnelMaterial[0]), fresnelMaterial[1]);\n        // Normalize light intensity to be between 0...1. Shadow cancels out specular light here\n        vec3 incidentLight = lightIntensity * LIGHT_NORMALIZATION * shadow;\n\n        specular = shadingInfo.NdotL * incidentLight * specularSun;\n      }\n      // combining reflected sky, reflected sea and specular highlight.\n      return tonemapACES(reflSky + reflSea + specular);\n    }\n  "]))));
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      }), n.Water = i;
      var s;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/WaterDistortion.glsl.js":
  /*!*************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/WaterDistortion.glsl.js ***!
    \*************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryShadingWaterDistortionGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, n, r) {
      function a(e) {
        e.fragment.uniforms.add("texWaveNormal", "sampler2D"), e.fragment.uniforms.add("texWavePerturbation", "sampler2D"), e.fragment.uniforms.add("octaveTextureRepeat", "vec3"), e.fragment.uniforms.add("waveParams", "vec4"), e.fragment.uniforms.add("waveDirection", "vec2"), e.fragment.code.add(r.glsl(o || (o = n(["\n      // uniform vec3 octaveTextureRepeat;\n\n      // // 0: waveStrength\n      // // 1: waveTextureRepeat\n      // // 2: flowStrength\n      // // 3: flowOffset\n      // uniform vec4 waveParams;\n\n      // uniform vec2 waveDirection;\n\n      const vec2  FLOW_JUMP = vec2(6.0/25.0, 5.0/24.0);\n\n      vec2 textureDenormalized2D(sampler2D _tex, vec2 _uv) {\n        return 2.0 * texture2D(_tex, _uv).rg - 1.0;\n      }\n\n      float sampleNoiseTexture(vec2 _uv) {\n        return texture2D(texWavePerturbation, _uv).b;\n      }\n\n      vec3 textureDenormalized3D(sampler2D _tex, vec2 _uv) {\n        return 2.0 * texture2D(_tex, _uv).rgb - 1.0;\n      }\n\n      float computeProgress(vec2 uv, float time) {\n        return fract(time);\n      }\n\n      float computeWeight(vec2 uv, float time) {\n        float progress = computeProgress(uv, time);\n        return 1.0 - abs(1.0 - 2.0 * progress);\n      }\n\n      vec3 computeUVPerturbedWeigth(sampler2D texFlow, vec2 uv, float time, float phaseOffset) {\n        float flowStrength = waveParams[2];\n        float flowOffset = waveParams[3];\n\n        vec2 flowVector = textureDenormalized2D(texFlow, uv) * flowStrength;\n\n        float progress = computeProgress(uv, time + phaseOffset);\n        float weight = computeWeight(uv, time + phaseOffset);\n\n        vec2 result = uv;\n        result -= flowVector * (progress + flowOffset);\n        result += phaseOffset;\n        result += (time - progress) * FLOW_JUMP;\n\n        return vec3(result, weight);\n      }\n\n      const float TIME_NOISE_TEXTURE_REPEAT = 0.3737;\n      const float TIME_NOISE_STRENGTH = 7.77;\n\n      vec3 getWaveLayer(sampler2D _texNormal, sampler2D _dudv, vec2 _uv, vec2 _waveDir, float time) {\n        float waveStrength = waveParams[0];\n\n        // overall directional shift in uv's for directional wave movement for\n        // now we do a hard coded scale for wave speed such that a unit length\n        // direction is not too fast.\n        vec2 waveMovement = time * -_waveDir;\n\n        float timeNoise = sampleNoiseTexture(_uv * TIME_NOISE_TEXTURE_REPEAT) * TIME_NOISE_STRENGTH;\n\n        // compute two perturbed uvs and blend weights\n        // then sample the wave normals at the two positions and blend\n        vec3 uv_A = computeUVPerturbedWeigth(_dudv, _uv + waveMovement, time + timeNoise, 0.0);\n        vec3 uv_B = computeUVPerturbedWeigth(_dudv, _uv + waveMovement, time + timeNoise, 0.5);\n\n        vec3 normal_A = textureDenormalized3D(_texNormal, uv_A.xy) * uv_A.z;\n        vec3 normal_B = textureDenormalized3D(_texNormal, uv_B.xy) * uv_B.z;\n\n        // logic to flatten the wave pattern\n        // scale xy components of the normal, then adjust z (up) component\n        vec3 mixNormal = normalize(normal_A + normal_B);\n        mixNormal.xy *= waveStrength;\n        mixNormal.z = sqrt(1.0 - dot(mixNormal.xy, mixNormal.xy));\n\n        return mixNormal;\n      }\n\n      vec3 getSurfaceNormal(vec2 _uv, float _time) {\n        float waveTextureRepeat = waveParams[1];\n        return getWaveLayer(texWaveNormal, texWavePerturbation, _uv * waveTextureRepeat, waveDirection, _time);\n      }\n    "], ["\n      // uniform vec3 octaveTextureRepeat;\n\n      // // 0: waveStrength\n      // // 1: waveTextureRepeat\n      // // 2: flowStrength\n      // // 3: flowOffset\n      // uniform vec4 waveParams;\n\n      // uniform vec2 waveDirection;\n\n      const vec2  FLOW_JUMP = vec2(6.0/25.0, 5.0/24.0);\n\n      vec2 textureDenormalized2D(sampler2D _tex, vec2 _uv) {\n        return 2.0 * texture2D(_tex, _uv).rg - 1.0;\n      }\n\n      float sampleNoiseTexture(vec2 _uv) {\n        return texture2D(texWavePerturbation, _uv).b;\n      }\n\n      vec3 textureDenormalized3D(sampler2D _tex, vec2 _uv) {\n        return 2.0 * texture2D(_tex, _uv).rgb - 1.0;\n      }\n\n      float computeProgress(vec2 uv, float time) {\n        return fract(time);\n      }\n\n      float computeWeight(vec2 uv, float time) {\n        float progress = computeProgress(uv, time);\n        return 1.0 - abs(1.0 - 2.0 * progress);\n      }\n\n      vec3 computeUVPerturbedWeigth(sampler2D texFlow, vec2 uv, float time, float phaseOffset) {\n        float flowStrength = waveParams[2];\n        float flowOffset = waveParams[3];\n\n        vec2 flowVector = textureDenormalized2D(texFlow, uv) * flowStrength;\n\n        float progress = computeProgress(uv, time + phaseOffset);\n        float weight = computeWeight(uv, time + phaseOffset);\n\n        vec2 result = uv;\n        result -= flowVector * (progress + flowOffset);\n        result += phaseOffset;\n        result += (time - progress) * FLOW_JUMP;\n\n        return vec3(result, weight);\n      }\n\n      const float TIME_NOISE_TEXTURE_REPEAT = 0.3737;\n      const float TIME_NOISE_STRENGTH = 7.77;\n\n      vec3 getWaveLayer(sampler2D _texNormal, sampler2D _dudv, vec2 _uv, vec2 _waveDir, float time) {\n        float waveStrength = waveParams[0];\n\n        // overall directional shift in uv's for directional wave movement for\n        // now we do a hard coded scale for wave speed such that a unit length\n        // direction is not too fast.\n        vec2 waveMovement = time * -_waveDir;\n\n        float timeNoise = sampleNoiseTexture(_uv * TIME_NOISE_TEXTURE_REPEAT) * TIME_NOISE_STRENGTH;\n\n        // compute two perturbed uvs and blend weights\n        // then sample the wave normals at the two positions and blend\n        vec3 uv_A = computeUVPerturbedWeigth(_dudv, _uv + waveMovement, time + timeNoise, 0.0);\n        vec3 uv_B = computeUVPerturbedWeigth(_dudv, _uv + waveMovement, time + timeNoise, 0.5);\n\n        vec3 normal_A = textureDenormalized3D(_texNormal, uv_A.xy) * uv_A.z;\n        vec3 normal_B = textureDenormalized3D(_texNormal, uv_B.xy) * uv_B.z;\n\n        // logic to flatten the wave pattern\n        // scale xy components of the normal, then adjust z (up) component\n        vec3 mixNormal = normalize(normal_A + normal_B);\n        mixNormal.xy *= waveStrength;\n        mixNormal.z = sqrt(1.0 - dot(mixNormal.xy, mixNormal.xy));\n\n        return mixNormal;\n      }\n\n      vec3 getSurfaceNormal(vec2 _uv, float _time) {\n        float waveTextureRepeat = waveParams[1];\n        return getWaveLayer(texWaveNormal, texWavePerturbation, _uv * waveTextureRepeat, waveDirection, _time);\n      }\n    "]))));
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.WaterDistortion = a;
      var o;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js":
  /*!**********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js ***!
    \**********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryUtilColorConversionGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, c, n, r) {
      function v(e, c) {
        var v = [r.glsl(a || (a = n(["\n      vec4 premultiplyAlpha(vec4 v) {\n        return vec4(v.rgb * v.a, v.a);\n      }\n    "], ["\n      vec4 premultiplyAlpha(vec4 v) {\n        return vec4(v.rgb * v.a, v.a);\n      }\n    "]))), r.glsl(x || (x = n(["\n      vec3 rgb2hsv(vec3 c) {\n        vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n        vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);\n        vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);\n\n        float d = q.x - min(q.w, q.y);\n        float e = 1.0e-10;\n        return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), min(d / (q.x + e), 1.0), q.x);\n      }\n    "], ["\n      vec3 rgb2hsv(vec3 c) {\n        vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n        vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);\n        vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);\n\n        float d = q.x - min(q.w, q.y);\n        float e = 1.0e-10;\n        return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), min(d / (q.x + e), 1.0), q.x);\n      }\n    "]))), r.glsl(t || (t = n(["\n      vec3 hsv2rgb(vec3 c) {\n        vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n        vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n        return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n      }\n    "], ["\n      vec3 hsv2rgb(vec3 c) {\n        vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n        vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n        return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n      }\n    "]))), r.glsl(o || (o = n(["\n      float rgb2v(vec3 c) {\n        return max(c.x, max(c.y, c.z));\n      }\n    "], ["\n      float rgb2v(vec3 c) {\n        return max(c.x, max(c.y, c.z));\n      }\n    "])))];

        switch (c.stages) {
          case 0:
            v.forEach(function (c) {
              return e.vertex.code.add(c);
            });
            break;

          case 1:
            v.forEach(function (c) {
              return e.fragment.code.add(c);
            });
            break;

          default:
            v.forEach(function (c) {
              return e.vertex.code.add(c);
            }), v.forEach(function (c) {
              return e.fragment.code.add(c);
            });
        }
      }

      Object.defineProperty(c, "__esModule", {
        value: !0
      }), c.ColorConversion = v;
      var a, x, t, o;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/DecodeNormal.glsl.js":
  /*!*******************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/DecodeNormal.glsl.js ***!
    \*******************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryUtilDecodeNormalGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, r, a) {
      function f(e) {
        var n = a.glsl(o || (o = r(["\n    vec3 decodeNormal(vec2 f) {\n      float z = 1.0 - abs(f.x) - abs(f.y);\n      return vec3(f + sign(f) * min(z, 0.0), z);\n    }\n  "], ["\n    vec3 decodeNormal(vec2 f) {\n      float z = 1.0 - abs(f.x) - abs(f.y);\n      return vec3(f + sign(f) * min(z, 0.0), z);\n    }\n  "])));
        e.fragment.code.add(n), e.vertex.code.add(n);
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      }), n.DecodeNormal = f;
      var o;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/DoublePrecision.glsl.js":
  /*!**********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/DoublePrecision.glsl.js ***!
    \**********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryUtilDoublePrecisionGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../../../../../core/has */
    "./node_modules/arcgis-js-api/core/has.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js"), __webpack_require__(
    /*! ../../../lib/WebGLDriverTest */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/WebGLDriverTest.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, c, i, t, r) {
      function v(e, n) {
        n.doublePrecisionRequiresObfuscation ? e.vertex.code.add(t.glsl(l || (l = c(["\n      vec3 dpPlusFrc(vec3 a, vec3 b) {\n        return mix(a, a + b, vec3(notEqual(b, vec3(0))));\n      }\n\n      vec3 dpMinusFrc(vec3 a, vec3 b) {\n        return mix(vec3(0), a - b, vec3(notEqual(a, b)));\n      }\n\n      // based on https://www.thasler.com/blog/blog/glsl-part2-emu\n      vec3 dpAdd(vec3 hiA, vec3 loA, vec3 hiB, vec3 loB) {\n        vec3 t1 = dpPlusFrc(hiA, hiB);\n        vec3 e = dpMinusFrc(t1, hiA);\n        vec3 t2 = dpMinusFrc(hiB, e) + dpMinusFrc(hiA, dpMinusFrc(t1, e)) + loA + loB;\n        return t1 + t2;\n      }\n    "], ["\n      vec3 dpPlusFrc(vec3 a, vec3 b) {\n        return mix(a, a + b, vec3(notEqual(b, vec3(0))));\n      }\n\n      vec3 dpMinusFrc(vec3 a, vec3 b) {\n        return mix(vec3(0), a - b, vec3(notEqual(a, b)));\n      }\n\n      // based on https://www.thasler.com/blog/blog/glsl-part2-emu\n      vec3 dpAdd(vec3 hiA, vec3 loA, vec3 hiB, vec3 loB) {\n        vec3 t1 = dpPlusFrc(hiA, hiB);\n        vec3 e = dpMinusFrc(t1, hiA);\n        vec3 t2 = dpMinusFrc(hiB, e) + dpMinusFrc(hiA, dpMinusFrc(t1, e)) + loA + loB;\n        return t1 + t2;\n      }\n    "])))) : e.vertex.code.add(t.glsl(u || (u = c(["\n      vec3 dpAdd(vec3 hiA, vec3 loA, vec3 hiB, vec3 loB) {\n        vec3 t1 = hiA + hiB;\n        vec3 e = t1 - hiA;\n        vec3 t2 = ((hiB - e) + (hiA - (t1 - e))) + loA + loB;\n        return t1 + t2;\n      }\n    "], ["\n      vec3 dpAdd(vec3 hiA, vec3 loA, vec3 hiB, vec3 loB) {\n        vec3 t1 = hiA + hiB;\n        vec3 e = t1 - hiA;\n        vec3 t2 = ((hiB - e) + (hiA - (t1 - e))) + loA + loB;\n        return t1 + t2;\n      }\n    "]))));
      }

      function o(e) {
        return !!i("force-double-precision-obfuscation") || r.testWebGLDriver(e).doublePrecisionRequiresObfuscation;
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      }), n.DoublePrecision = v, n.doublePrecisionRequiresObfuscation = o;
      var l, u;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/MixExternalColor.glsl.js":
  /*!***********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/MixExternalColor.glsl.js ***!
    \***********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryUtilMixExternalColorGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ./ColorConversion.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, t, r, i) {
      function l(e, n) {
        e.include(r.ColorConversion, n);
        var l = i.glsl(a || (a = t(["\n    vec3 mixExternalColor(vec3 internalColor, vec3 textureColor, vec3 externalColor, int mode) {\n      // workaround for artifacts in OSX using Intel Iris Pro\n      // see: https://devtopia.esri.com/WebGIS/arcgis-js-api/issues/10475\n      vec3 internalMixed = internalColor * textureColor;\n      vec3 allMixed = internalMixed * externalColor;\n\n      if (mode == ", ") {\n        return allMixed;\n      }\n      else if (mode == ", ") {\n        return internalMixed;\n      }\n      else if (mode == ", ") {\n        return externalColor;\n      }\n      else {\n        // tint (or something invalid)\n        float vIn = rgb2v(internalMixed);\n        vec3 hsvTint = rgb2hsv(externalColor);\n        vec3 hsvOut = vec3(hsvTint.x, hsvTint.y, vIn * hsvTint.z);\n        return hsv2rgb(hsvOut);\n      }\n    }\n\n    float mixExternalOpacity(float internalOpacity, float textureOpacity, float externalOpacity, int mode) {\n      // workaround for artifacts in OSX using Intel Iris Pro\n      // see: https://devtopia.esri.com/WebGIS/arcgis-js-api/issues/10475\n      float internalMixed = internalOpacity * textureOpacity;\n      float allMixed = internalMixed * externalOpacity;\n\n      if (mode == ", ") {\n        return internalMixed;\n      }\n      else if (mode == ", ") {\n        return externalOpacity;\n      }\n      else {\n        // multiply or tint (or something invalid)\n        return allMixed;\n      }\n    }\n  "], ["\n    vec3 mixExternalColor(vec3 internalColor, vec3 textureColor, vec3 externalColor, int mode) {\n      // workaround for artifacts in OSX using Intel Iris Pro\n      // see: https://devtopia.esri.com/WebGIS/arcgis-js-api/issues/10475\n      vec3 internalMixed = internalColor * textureColor;\n      vec3 allMixed = internalMixed * externalColor;\n\n      if (mode == ", ") {\n        return allMixed;\n      }\n      else if (mode == ", ") {\n        return internalMixed;\n      }\n      else if (mode == ", ") {\n        return externalColor;\n      }\n      else {\n        // tint (or something invalid)\n        float vIn = rgb2v(internalMixed);\n        vec3 hsvTint = rgb2hsv(externalColor);\n        vec3 hsvOut = vec3(hsvTint.x, hsvTint.y, vIn * hsvTint.z);\n        return hsv2rgb(hsvOut);\n      }\n    }\n\n    float mixExternalOpacity(float internalOpacity, float textureOpacity, float externalOpacity, int mode) {\n      // workaround for artifacts in OSX using Intel Iris Pro\n      // see: https://devtopia.esri.com/WebGIS/arcgis-js-api/issues/10475\n      float internalMixed = internalOpacity * textureOpacity;\n      float allMixed = internalMixed * externalOpacity;\n\n      if (mode == ", ") {\n        return internalMixed;\n      }\n      else if (mode == ", ") {\n        return externalOpacity;\n      }\n      else {\n        // multiply or tint (or something invalid)\n        return allMixed;\n      }\n    }\n  "])), i.glsl["int"](1), i.glsl["int"](2), i.glsl["int"](3), i.glsl["int"](2), i.glsl["int"](3));

        switch (n.stages) {
          case 0:
            e.vertex.code.add(l);
            break;

          case 1:
            e.fragment.code.add(l);
            break;

          default:
            e.vertex.code.add(l), e.fragment.code.add(l);
        }
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      }), n.MixExternalColor = l;
      var a;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/RgbaFloatEncoding.glsl.js":
  /*!************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/RgbaFloatEncoding.glsl.js ***!
    \************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryUtilRgbaFloatEncodingGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (n, t, e, o) {
      function a(n) {
        var t = o.glsl(r || (r = e(["\n    // This is the maximum float value representable as 32bit fixed point,\n    // it is rgba2float(vec4(1)) inlined.\n    const float MAX_RGBA_FLOAT =\n      255.0 / 256.0 +\n      255.0 / 256.0 / 256.0 +\n      255.0 / 256.0 / 256.0 / 256.0 +\n      255.0 / 256.0 / 256.0 / 256.0 / 256.0;\n\n    // Factors to convert to fixed point, i.e. factors (256^0, 256^1, 256^2, 256^3)\n    const vec4 FIXED_POINT_FACTORS = vec4(1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0);\n\n    vec4 float2rgba(const float value) {\n      // Make sure value is in the domain we can represent\n      float valueInValidDomain = clamp(value, 0.0, MAX_RGBA_FLOAT);\n\n      // Decompose value in 32bit fixed point parts represented as\n      // uint8 rgba components. Decomposition uses the fractional part after multiplying\n      // by a power of 256 (this removes the bits that are represented in the previous\n      // component) and then converts the fractional part to 8bits.\n      vec4 fixedPointU8 = floor(fract(valueInValidDomain * FIXED_POINT_FACTORS) * 256.0);\n\n      // Convert uint8 values (from 0 to 255) to floating point representation for\n      // the shader\n      const float toU8AsFloat = 1.0 / 255.0;\n\n      return fixedPointU8 * toU8AsFloat;\n    }\n\n    // Factors to convert rgba back to float\n    const vec4 RGBA_2_FLOAT_FACTORS = vec4(\n      255.0 / (256.0),\n      255.0 / (256.0 * 256.0),\n      255.0 / (256.0 * 256.0 * 256.0),\n      255.0 / (256.0 * 256.0 * 256.0 * 256.0)\n    );\n\n    float rgba2float(vec4 rgba) {\n      // Convert components from 0->1 back to 0->255 and then\n      // add the components together with their corresponding\n      // fixed point factors, i.e. (256^1, 256^2, 256^3, 256^4)\n      return dot(rgba, RGBA_2_FLOAT_FACTORS);\n    }\n  "], ["\n    // This is the maximum float value representable as 32bit fixed point,\n    // it is rgba2float(vec4(1)) inlined.\n    const float MAX_RGBA_FLOAT =\n      255.0 / 256.0 +\n      255.0 / 256.0 / 256.0 +\n      255.0 / 256.0 / 256.0 / 256.0 +\n      255.0 / 256.0 / 256.0 / 256.0 / 256.0;\n\n    // Factors to convert to fixed point, i.e. factors (256^0, 256^1, 256^2, 256^3)\n    const vec4 FIXED_POINT_FACTORS = vec4(1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0);\n\n    vec4 float2rgba(const float value) {\n      // Make sure value is in the domain we can represent\n      float valueInValidDomain = clamp(value, 0.0, MAX_RGBA_FLOAT);\n\n      // Decompose value in 32bit fixed point parts represented as\n      // uint8 rgba components. Decomposition uses the fractional part after multiplying\n      // by a power of 256 (this removes the bits that are represented in the previous\n      // component) and then converts the fractional part to 8bits.\n      vec4 fixedPointU8 = floor(fract(valueInValidDomain * FIXED_POINT_FACTORS) * 256.0);\n\n      // Convert uint8 values (from 0 to 255) to floating point representation for\n      // the shader\n      const float toU8AsFloat = 1.0 / 255.0;\n\n      return fixedPointU8 * toU8AsFloat;\n    }\n\n    // Factors to convert rgba back to float\n    const vec4 RGBA_2_FLOAT_FACTORS = vec4(\n      255.0 / (256.0),\n      255.0 / (256.0 * 256.0),\n      255.0 / (256.0 * 256.0 * 256.0),\n      255.0 / (256.0 * 256.0 * 256.0 * 256.0)\n    );\n\n    float rgba2float(vec4 rgba) {\n      // Convert components from 0->1 back to 0->255 and then\n      // add the components together with their corresponding\n      // fixed point factors, i.e. (256^1, 256^2, 256^3, 256^4)\n      return dot(rgba, RGBA_2_FLOAT_FACTORS);\n    }\n  "])));
        n.fragment.code.add(t), n.vertex.code.add(t);
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.RgbaFloatEncoding = a;
      var r;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/ScreenSizePerspective.glsl.js":
  /*!****************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/ScreenSizePerspective.glsl.js ***!
    \****************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryUtilScreenSizePerspectiveGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, a, n, r) {
      function s(e) {
        e.vertex.code.add(r.glsl(c || (c = n(["\n    float screenSizePerspectiveMinSize(float size, vec4 factor) {\n      float nonZeroSize = 1.0 - step(size, 0.0);\n\n      return (\n        factor.z * (\n          1.0 +\n          nonZeroSize *                // Multiply by nzs ensures if size is 0, then we ignore\n                                      // proportionally scaled padding\n          2.0 * factor.w / (\n            size + (1.0 - nonZeroSize) // Adding 1 - nzs ensures we divide either by size, or by 1\n          )\n        )\n      );\n    }\n  "], ["\n    float screenSizePerspectiveMinSize(float size, vec4 factor) {\n      float nonZeroSize = 1.0 - step(size, 0.0);\n\n      return (\n        factor.z * (\n          1.0 +\n          nonZeroSize *                // Multiply by nzs ensures if size is 0, then we ignore\n                                      // proportionally scaled padding\n          2.0 * factor.w / (\n            size + (1.0 - nonZeroSize) // Adding 1 - nzs ensures we divide either by size, or by 1\n          )\n        )\n      );\n    }\n  "])))), e.vertex.code.add(r.glsl(t || (t = n(["\n    float screenSizePerspectiveViewAngleDependentFactor(float absCosAngle) {\n      return absCosAngle * absCosAngle * absCosAngle;\n    }\n  "], ["\n    float screenSizePerspectiveViewAngleDependentFactor(float absCosAngle) {\n      return absCosAngle * absCosAngle * absCosAngle;\n    }\n  "])))), e.vertex.code.add(r.glsl(i || (i = n(["\n    vec4 screenSizePerspectiveScaleFactor(float absCosAngle, float distanceToCamera, vec4 params) {\n      return vec4(min(params.x / (distanceToCamera - params.y), 1.0), screenSizePerspectiveViewAngleDependentFactor(absCosAngle), params.z, params.w);\n    }\n  "], ["\n    vec4 screenSizePerspectiveScaleFactor(float absCosAngle, float distanceToCamera, vec4 params) {\n      return vec4(min(params.x / (distanceToCamera - params.y), 1.0), screenSizePerspectiveViewAngleDependentFactor(absCosAngle), params.z, params.w);\n    }\n  "])))), e.vertex.code.add(r.glsl(o || (o = n(["\n    float applyScreenSizePerspectiveScaleFactorFloat(float size, vec4 factor) {\n      return max(mix(size * factor.x, size, factor.y), screenSizePerspectiveMinSize(size, factor));\n    }\n  "], ["\n    float applyScreenSizePerspectiveScaleFactorFloat(float size, vec4 factor) {\n      return max(mix(size * factor.x, size, factor.y), screenSizePerspectiveMinSize(size, factor));\n    }\n  "])))), e.vertex.code.add(r.glsl(l || (l = n(["\n    float screenSizePerspectiveScaleFloat(float size, float absCosAngle, float distanceToCamera, vec4 params) {\n      return applyScreenSizePerspectiveScaleFactorFloat(size, screenSizePerspectiveScaleFactor(absCosAngle, distanceToCamera, params));\n    }\n  "], ["\n    float screenSizePerspectiveScaleFloat(float size, float absCosAngle, float distanceToCamera, vec4 params) {\n      return applyScreenSizePerspectiveScaleFactorFloat(size, screenSizePerspectiveScaleFactor(absCosAngle, distanceToCamera, params));\n    }\n  "])))), e.vertex.code.add(r.glsl(p || (p = n(["\n    vec2 applyScreenSizePerspectiveScaleFactorVec2(vec2 size, vec4 factor) {\n      return mix(size * clamp(factor.x, screenSizePerspectiveMinSize(size.y, factor) / size.y, 1.0), size, factor.y);\n    }\n  "], ["\n    vec2 applyScreenSizePerspectiveScaleFactorVec2(vec2 size, vec4 factor) {\n      return mix(size * clamp(factor.x, screenSizePerspectiveMinSize(size.y, factor) / size.y, 1.0), size, factor.y);\n    }\n  "])))), e.vertex.code.add(r.glsl(z || (z = n(["\n    vec2 screenSizePerspectiveScaleVec2(vec2 size, float absCosAngle, float distanceToCamera, vec4 params) {\n      return applyScreenSizePerspectiveScaleFactorVec2(size, screenSizePerspectiveScaleFactor(absCosAngle, distanceToCamera, params));\n    }\n  "], ["\n    vec2 screenSizePerspectiveScaleVec2(vec2 size, float absCosAngle, float distanceToCamera, vec4 params) {\n      return applyScreenSizePerspectiveScaleFactorVec2(size, screenSizePerspectiveScaleFactor(absCosAngle, distanceToCamera, params));\n    }\n  "]))));
      }

      Object.defineProperty(a, "__esModule", {
        value: !0
      }), a.ScreenSizePerspective = s;
      var c, t, i, o, l, p, z;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/TextureAtlasLookup.glsl.js":
  /*!*************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/TextureAtlasLookup.glsl.js ***!
    \*************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderLibraryUtilTextureAtlasLookupGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../../shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, a, d) {
      function n(e) {
        e.extensions.add("GL_EXT_shader_texture_lod"), e.extensions.add("GL_OES_standard_derivatives"), e.fragment.code.add(d.glsl(r || (r = a(["\n    #ifndef GL_EXT_shader_texture_lod\n      float calcMipMapLevel(const vec2 ddx, const vec2 ddy) {\n        float deltaMaxSqr = max(dot(ddx, ddx), dot(ddy, ddy));\n        return max(0.0, 0.5 * log2(deltaMaxSqr));\n      }\n    #endif\n\n    vec4 textureAtlasLookup(sampler2D texture, vec2 textureSize, vec2 textureCoordinates, vec4 atlasRegion) {\n      //[umin, vmin, umax, vmax]\n      vec2 atlasScale = atlasRegion.zw - atlasRegion.xy;\n      vec2 uvAtlas = fract(textureCoordinates) * atlasScale + atlasRegion.xy;\n\n      // calculate derivative of continuous texture coordinate\n      // to avoid mipmapping artifacts caused by manual wrapping in shader\n      vec2 dUVdx = dFdx(textureCoordinates) * atlasScale;\n      vec2 dUVdy = dFdy(textureCoordinates) * atlasScale;\n\n      #ifdef GL_EXT_shader_texture_lod\n        return texture2DGradEXT(texture, uvAtlas, dUVdx, dUVdy);\n      #else\n        // use bias to compensate for difference in automatic vs desired mipmap level\n        vec2 dUVdxAuto = dFdx(uvAtlas);\n        vec2 dUVdyAuto = dFdy(uvAtlas);\n        float mipMapLevel = calcMipMapLevel(dUVdx * textureSize, dUVdy * textureSize);\n        float autoMipMapLevel = calcMipMapLevel(dUVdxAuto * textureSize, dUVdyAuto * textureSize);\n\n        return texture2D(texture, uvAtlas, mipMapLevel - autoMipMapLevel);\n      #endif\n    }\n  "], ["\n    #ifndef GL_EXT_shader_texture_lod\n      float calcMipMapLevel(const vec2 ddx, const vec2 ddy) {\n        float deltaMaxSqr = max(dot(ddx, ddx), dot(ddy, ddy));\n        return max(0.0, 0.5 * log2(deltaMaxSqr));\n      }\n    #endif\n\n    vec4 textureAtlasLookup(sampler2D texture, vec2 textureSize, vec2 textureCoordinates, vec4 atlasRegion) {\n      //[umin, vmin, umax, vmax]\n      vec2 atlasScale = atlasRegion.zw - atlasRegion.xy;\n      vec2 uvAtlas = fract(textureCoordinates) * atlasScale + atlasRegion.xy;\n\n      // calculate derivative of continuous texture coordinate\n      // to avoid mipmapping artifacts caused by manual wrapping in shader\n      vec2 dUVdx = dFdx(textureCoordinates) * atlasScale;\n      vec2 dUVdy = dFdy(textureCoordinates) * atlasScale;\n\n      #ifdef GL_EXT_shader_texture_lod\n        return texture2DGradEXT(texture, uvAtlas, dUVdx, dUVdy);\n      #else\n        // use bias to compensate for difference in automatic vs desired mipmap level\n        vec2 dUVdxAuto = dFdx(uvAtlas);\n        vec2 dUVdyAuto = dFdy(uvAtlas);\n        float mipMapLevel = calcMipMapLevel(dUVdx * textureSize, dUVdy * textureSize);\n        float autoMipMapLevel = calcMipMapLevel(dUVdxAuto * textureSize, dUVdyAuto * textureSize);\n\n        return texture2D(texture, uvAtlas, mipMapLevel - autoMipMapLevel);\n      #endif\n    }\n  "]))));
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.TextureAtlasLookup = n;
      var r;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js":
  /*!**********************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js ***!
    \**********************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderModulesShaderBuilderJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/iteratorUtils */
    "./node_modules/arcgis-js-api/core/iteratorUtils.js"), __webpack_require__(
    /*! ../../../../../core/Logger */
    "./node_modules/arcgis-js-api/core/Logger.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, t, r) {
      Object.defineProperty(n, "__esModule", {
        value: !0
      });

      var i = r.getLogger("esri.views.3d.webgl-engine.core.shaderModules.shaderBuilder"),
          o = function () {
        function e() {
          this.vertex = new a(), this.fragment = new a(), this.attributes = new c(), this.varyings = new d(), this.extensions = new f(), this.defines = new h(), this._includedModules = new Map();
        }

        return e.prototype.include = function (e, n) {
          if (this._includedModules.has(e)) return void (this._includedModules.get(e) !== n && i.error("Trying to include shader module multiple times with different sets of options."));
          this._includedModules.set(e, n), "shaderModule" in e ? e.shaderModule(this, n) : e(this, n);
        }, e.prototype.generateSource = function (e) {
          var n = this.extensions.generateSource(e),
              t = this.attributes.generateSource(e),
              r = this.varyings.generateSource(),
              i = "vertex" === e ? this.vertex : this.fragment,
              o = i.uniforms.generateSource(),
              s = i.code.generateSource(),
              u = "vertex" === e ? _ : p,
              a = this.defines.generateSource().concat(i.defines.generateSource());
          return "\n" + n.join("\n") + "\n\n" + a.join("\n") + "\n\n" + u + "\n\n" + o.join("\n") + "\n\n" + t.join("\n") + "\n\n" + r.join("\n") + "\n\n" + s.join("\n");
        }, e;
      }();

      n.ShaderBuilder = o;

      var s = function () {
        function e() {
          this._entries = new Array(), this._set = new Set();
        }

        return e.prototype.add = function (e, n, t) {
          var r = e + "_" + n + "_" + t;
          return this._set.has(r) || (this._entries.push([e, n, t]), this._set.add(r)), this;
        }, e.prototype.generateSource = function () {
          var e = function e(_e) {
            return _e ? "[" + _e + "]" : "";
          };

          return this._entries.map(function (n) {
            return "uniform " + n[1] + " " + n[0] + e(n[2]) + ";";
          });
        }, e;
      }(),
          u = function () {
        function e() {
          this._entries = new Array();
        }

        return e.prototype.add = function (e) {
          this._entries.push(e);
        }, e.prototype.generateSource = function () {
          return this._entries;
        }, e;
      }(),
          a = function () {
        function e() {
          this.uniforms = new s(), this.code = new u(), this.defines = new h();
        }

        return e;
      }(),
          c = function () {
        function e() {
          this._entries = new Array();
        }

        return e.prototype.add = function (e, n) {
          this._entries.push([e, n]);
        }, e.prototype.generateSource = function (e) {
          return "fragment" === e ? [] : this._entries.map(function (e) {
            return "attribute " + e[1] + " " + e[0] + ";";
          });
        }, e;
      }(),
          d = function () {
        function e() {
          this._entries = new Array();
        }

        return e.prototype.add = function (e, n) {
          this._entries.push([e, n]);
        }, e.prototype.generateSource = function () {
          return this._entries.map(function (e) {
            return "varying " + e[1] + " " + e[0] + ";";
          });
        }, e;
      }(),
          f = function () {
        function e() {
          this._entries = new Set();
        }

        return e.prototype.add = function (e) {
          this._entries.add(e);
        }, e.prototype.generateSource = function (n) {
          var r = "vertex" === n ? e.WHITELIST_VERTEX : e.WHITELIST_FRAGMENT;
          return t.valuesOfSet(this._entries).filter(function (e) {
            return r.indexOf(e) >= 0;
          }).map(function (e) {
            return "#extension " + e + " : enable";
          });
        }, e.WHITELIST_FRAGMENT = ["GL_EXT_shader_texture_lod", "GL_OES_standard_derivatives"], e.WHITELIST_VERTEX = [], e;
      }(),
          h = function () {
        function e() {
          this._entries = new Map();
        }

        return e.prototype.addInt = function (e, n) {
          var t = n % 1 == 0 ? n.toFixed(0) : n.toString();

          this._entries.set(e, t);
        }, e.prototype.addFloat = function (e, n) {
          var t = n % 1 == 0 ? n.toFixed(1) : n.toString();

          this._entries.set(e, t);
        }, e.prototype.generateSource = function () {
          return t.pairsOfMap(this._entries).map(function (e) {
            return "#define " + e[0] + " " + e[1];
          });
        }, e;
      }(),
          p = "#ifdef GL_FRAGMENT_PRECISION_HIGH\n  precision highp float;\n  precision highp sampler2D;\n#else\n  precision mediump float;\n  precision mediump sampler2D;\n#endif",
          _ = "precision highp float;\nprecision highp sampler2D;";
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js":
  /*!*******************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js ***!
    \*******************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderModulesInterfacesJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports], __WEBPACK_AMD_DEFINE_RESULT__ = function (n, e) {
      function t(n) {
        for (var e = [], t = 1; t < arguments.length; t++) e[t - 1] = arguments[t];

        for (var r = "", l = 0; l < e.length; l++) r += n[l] + e[l];

        return r += n[n.length - 1];
      }

      Object.defineProperty(e, "__esModule", {
        value: !0
      }), e.glsl = t, function (n) {
        function e(n) {
          return Math.round(n).toString();
        }

        n["int"] = e;
      }(t = e.glsl || (e.glsl = {}));
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ReloadableShaderModule.js":
  /*!*********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ReloadableShaderModule.js ***!
    \*********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderTechniqueReloadableShaderModuleJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/promiseUtils */
    "./node_modules/arcgis-js-api/core/promiseUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, i, r) {
      Object.defineProperty(i, "__esModule", {
        value: !0
      });

      var t = function () {
        function e(e, i, r) {
          this._relativePath = i, this._moduleRequire = r, this._module = e;
        }

        return e.prototype.get = function () {
          return this._module;
        }, e.prototype.reload = function () {
          var e = this,
              i = this._moduleRequire.toUrl(this._relativePath);

          return i = i.slice(i.indexOf("esri/")), this._recursivelyInvalidateModuleCache(i), r.create(function (i) {
            e._moduleRequire([e._relativePath], function (r) {
              e._module = r, i();
            });
          });
        }, e.prototype._recursivelyInvalidateModuleCache = function (e) {
          if (-1 !== e.search("shader") || -1 !== e.search("shading")) {
            var i = this._moduleRequire.modules,
                r = i[e];

            if (r) {
              var t = r.deps;
              delete i[e];

              for (var o = 0, u = t; o < u.length; o++) {
                var a = u[o];
                "esri" === a.pid && this._recursivelyInvalidateModuleCache(a.mid);
              }
            }
          }
        }, e;
      }();

      i.ReloadableShaderModule = t;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechnique.js":
  /*!**************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechnique.js ***!
    \**************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderTechniqueShaderTechniqueJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports], __WEBPACK_AMD_DEFINE_RESULT__ = function (r, e) {
      function o(r) {
        var e = r.__proto__.__configurationParameters,
            o = {};
        o.key = r.key;

        for (var i = 0, t = e; i < t.length; i++) {
          var n = t[i];
          o[n] = r[n];
        }

        return o;
      }

      Object.defineProperty(e, "__esModule", {
        value: !0
      });

      var i = function () {
        function r(r, e) {
          this._commonUniformStore = r.commonUniformStore, this._config = o(e), this._program = this.initializeProgram(r), this._commonUniformStore.subscribeProgram(this._program), this._pipeline = this.initializePipeline(r);
        }

        return r.prototype.dispose = function () {
          this._program && (this._commonUniformStore.unsubscribeProgram(this._program), this._program.dispose(), this._program = null);
        }, r.prototype.reload = function (r) {
          this._program && (this._commonUniformStore.unsubscribeProgram(this._program), this._program.dispose()), this._program = this.initializeProgram(r), this._commonUniformStore.subscribeProgram(this._program);
        }, Object.defineProperty(r.prototype, "program", {
          get: function get() {
            return this._program;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(r.prototype, "pipeline", {
          get: function get() {
            return this._pipeline;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(r.prototype, "key", {
          get: function get() {
            return this._config.key;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(r.prototype, "configuration", {
          get: function get() {
            return this._config;
          },
          enumerable: !0,
          configurable: !0
        }), r.prototype.bindPass = function (r, e, o) {}, r.prototype.bindMaterial = function (r, e) {}, r.prototype.bindDraw = function (r) {}, r;
      }();

      e.ShaderTechnique = i;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueConfiguration.js":
  /*!***************************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueConfiguration.js ***!
    \***************************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineCoreShaderTechniqueShaderTechniqueConfigurationJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/mathUtils */
    "./node_modules/arcgis-js-api/core/mathUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r) {
      function i(e) {
        return void 0 === e && (e = {}), function (t, i) {
          var o = t;
          o.__configurationParameters = o.__configurationParameters || [], o.__configurationParameters.push(i);
          var n = "_" + i;
          void 0 === o.__configurationParameters__offset && (o.__configurationParameters__offset = 0);

          var a = o.__configurationParameters__offset,
              f = e.count || 2,
              u = Math.ceil(r.log2(f)),
              s = (1 << u) - 1,
              _ = s << a;

          if (o.__configurationParameters__offset += u, o.__configurationParameters__offset >= 32) throw new Error("ShaderTechniqueConfiguration is too complex, requiring more than 32 bits to encode.\n      Either the configuration must be simplified, or this restriction must be relaxed.(Currently used: " + o.__configurationParameters__offset + ")");
          Object.defineProperty(o, i, {
            get: function get() {
              return this[n];
            },
            set: function set(e) {
              this.key = this.key & ~_ | e << a & _, this[n] = e;
            }
          });
        };
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      });

      var o = function () {
        function e() {
          this.key = 0;
        }

        return e;
      }();

      t.ShaderTechniqueConfiguration = o, t.parameter = i;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/AutoDisposable.js":
  /*!********************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/AutoDisposable.js ***!
    \********************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibAutoDisposableJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/declareExtendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/declareExtendsHelper.js"), __webpack_require__(
    /*! ../../../../core/tsSupport/decorateHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/decorateHelper.js"), __webpack_require__(
    /*! ../../../../core/accessorSupport/decorators */
    "./node_modules/arcgis-js-api/core/accessorSupport/decorators.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, s, i, o, t) {
      function n() {
        return function (e, s) {
          e.__managedDisposables__ = e.__managedDisposables__ || [], e.__managedDisposables__.push(s);
        };
      }

      Object.defineProperty(s, "__esModule", {
        value: !0
      }), s.AutoDisposableMixin = function (e) {
        return function (e) {
          function s() {
            var s = null !== e && e.apply(this, arguments) || this;
            return s._isDisposed = !1, s;
          }

          return i(s, e), s.prototype.dispose = function () {
            for (var e = this.__proto__.__managedDisposables__ || [], s = e.length - 1; s >= 0; s--) {
              var i = e[s];
              this[i] && "function" == typeof this[i].dispose && this[i].dispose(), this[i] = null;
            }

            this._isDisposed = !0;
          }, Object.defineProperty(s.prototype, "isDisposed", {
            get: function get() {
              return this._isDisposed;
            },
            enumerable: !0,
            configurable: !0
          }), s = o([t.subclass("esri.views.3d.webgl-engine.lib.AutoDisposableMixin")], s);
        }(t.declared(e));
      };

      var r = function (e) {
        function s() {
          return null !== e && e.apply(this, arguments) || this;
        }

        return i(s, e), s = o([t.subclass("esri.views.3d.webgl-engine.lib.AutoDisposable")], s);
      }(t.declared(s.AutoDisposableMixin(function () {
        function e() {}

        return e;
      }())));

      s.AutoDisposable = r, s.autoDispose = n;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/BoundingInfo.js":
  /*!******************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/BoundingInfo.js ***!
    \******************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibBoundingInfoJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/PooledArray */
    "./node_modules/arcgis-js-api/core/PooledArray.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ./Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (i, t, e, s, r, n) {
      var h = function () {
        function i(t, e, h, a) {
          this.primitiveIndices = t, this._numIndexPerPrimitive = e, this.indices = h, this._position = a, this.center = r.vec3f64.create(), n.assert(t.length >= 1), n.assert(h.length % this._numIndexPerPrimitive == 0), n.assert(h.length >= t.length * this._numIndexPerPrimitive), n.assert(3 === this._position.size || 4 === this._position.size);
          var b = this._position,
              o = b.data,
              c = b.offsetIdx,
              d = b.strideIdx,
              u = 0,
              v = t.length,
              m = c + d * h[this._numIndexPerPrimitive * t[u]];

          for (i.tmpIndices.clear(), i.tmpIndices.push(m), this.bbMin = r.vec3f64.fromValues(o[m], o[m + 1], o[m + 2]), this.bbMax = r.vec3f64.clone(this.bbMin); u < v; ++u) for (var p = this._numIndexPerPrimitive * t[u], M = 0; M < this._numIndexPerPrimitive; ++M) {
            m = c + d * h[p + M], i.tmpIndices.push(m);
            var f = o[m];
            this.bbMin[0] = Math.min(f, this.bbMin[0]), this.bbMax[0] = Math.max(f, this.bbMax[0]), f = o[m + 1], this.bbMin[1] = Math.min(f, this.bbMin[1]), this.bbMax[1] = Math.max(f, this.bbMax[1]), f = o[m + 2], this.bbMin[2] = Math.min(f, this.bbMin[2]), this.bbMax[2] = Math.max(f, this.bbMax[2]);
          }

          s.vec3.lerp(this.center, this.bbMin, this.bbMax, .5), this.bsRadius = .5 * Math.max(Math.max(this.bbMax[0] - this.bbMin[0], this.bbMax[1] - this.bbMin[1]), this.bbMax[2] - this.bbMin[2]);
          var x = this.bsRadius * this.bsRadius;

          for (u = 0; u < i.tmpIndices.length; ++u) {
            m = i.tmpIndices.data[u];

            var l = o[m] - this.center[0],
                I = o[m + 1] - this.center[1],
                P = o[m + 2] - this.center[2],
                _ = l * l + I * I + P * P;

            if (!(_ <= x)) {
              var g = Math.sqrt(_),
                  y = .5 * (g - this.bsRadius);
              this.bsRadius = this.bsRadius + y, x = this.bsRadius * this.bsRadius;
              var R = y / g;
              this.center[0] += l * R, this.center[1] += I * R, this.center[2] += P * R;
            }
          }

          i.tmpIndices.clear();
        }

        return i.prototype.getCenter = function () {
          return this.center;
        }, i.prototype.getBSRadius = function () {
          return this.bsRadius;
        }, i.prototype.getBBMin = function () {
          return this.bbMin;
        }, i.prototype.getBBMax = function () {
          return this.bbMax;
        }, i.prototype.getPrimitiveIndices = function () {
          return this.primitiveIndices;
        }, i.prototype.getIndices = function () {
          return this.indices;
        }, i.prototype.getPosition = function () {
          return this._position;
        }, i.prototype.getChildren = function () {
          if (this._children) return this._children;

          if (s.vec3.squaredDistance(this.bbMin, this.bbMax) > 1) {
            for (var t = s.vec3.lerp(r.vec3f64.create(), this.bbMin, this.bbMax, .5), e = this.primitiveIndices.length, n = new Uint8Array(e), h = new Array(8), a = 0; a < 8; ++a) h[a] = 0;

            for (var b = this._position, o = b.data, c = b.offsetIdx, d = b.strideIdx, a = 0; a < e; ++a) {
              for (var u = 0, v = this._numIndexPerPrimitive * this.primitiveIndices[a], m = c + d * this.indices[v], p = o[m], M = o[m + 1], f = o[m + 2], x = 1; x < this._numIndexPerPrimitive; ++x) {
                m = c + d * this.indices[v + x];
                var l = o[m],
                    I = o[m + 1],
                    P = o[m + 2];
                l < p && (p = l), I < M && (M = I), P < f && (f = P);
              }

              p < t[0] && (u |= 1), M < t[1] && (u |= 2), f < t[2] && (u |= 4), n[a] = u, ++h[u];
            }

            for (var _ = 0, a = 0; a < 8; ++a) h[a] > 0 && ++_;

            if (_ < 2) return;

            for (var g = new Array(8), a = 0; a < 8; ++a) g[a] = h[a] > 0 ? new Uint32Array(h[a]) : void 0;

            for (var a = 0; a < 8; ++a) h[a] = 0;

            for (var a = 0; a < e; ++a) {
              var u = n[a];
              g[u][h[u]++] = this.primitiveIndices[a];
            }

            this._children = new Array(8);

            for (var a = 0; a < 8; ++a) void 0 !== g[a] && (this._children[a] = new i(g[a], this._numIndexPerPrimitive, this.indices, this._position));
          }

          return this._children;
        }, i;
      }();

      return function (i) {
        i.tmpIndices = new e({
          deallocator: null
        });
      }(h || (h = {})), h;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultTextureUnits.js":
  /*!*************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultTextureUnits.js ***!
    \*************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibDefaultTextureUnitsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, O) {
      Object.defineProperty(O, "__esModule", {
        value: !0
      }), O.DefaultTextureUnits = {
        DIFFUSE: 0,
        COMPONENT_COLOR: 1,
        NORMAL: 2,
        EMISSION: 3,
        OCCLUSION: 4,
        METALLIC_ROUGHNESS: 5
      };
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js":
  /*!*************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js ***!
    \*************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibDefaultVertexAttributeLocationsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, o) {
      Object.defineProperty(o, "__esModule", {
        value: !0
      }), o.Default3D = {
        position: 0,
        normal: 1,
        normalCompressed: 1,
        uv0: 2,
        color: 3,
        instanceColor: 3,
        size: 4,
        tangent: 4,
        auxpos1: 5,
        symbolColor: 5,
        componentIndex: 5,
        auxpos2: 6,
        featureAttribute: 6,
        instanceFeatureAttribute: 6,
        region: 7,
        model: 8,
        modelNormal: 12,
        modelOriginHi: 11,
        modelOriginLo: 15
      };
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexBufferLayouts.js":
  /*!********************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexBufferLayouts.js ***!
    \********************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibDefaultVertexBufferLayoutsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, o) {
      Object.defineProperty(o, "__esModule", {
        value: !0
      }), o.Pos3 = [{
        name: "position",
        count: 3,
        type: 5126,
        offset: 0,
        stride: 12,
        normalized: !1
      }], o.Pos3Tex = [{
        name: "position",
        count: 3,
        type: 5126,
        offset: 0,
        stride: 20,
        normalized: !1
      }, {
        name: "uv0",
        count: 2,
        type: 5126,
        offset: 12,
        stride: 20,
        normalized: !1
      }], o.Pos3NormalTex = [{
        name: "position",
        count: 3,
        type: 5126,
        offset: 0,
        stride: 32,
        normalized: !1
      }, {
        name: "normal",
        count: 3,
        type: 5126,
        offset: 12,
        stride: 32,
        normalized: !1
      }, {
        name: "uv0",
        count: 2,
        type: 5126,
        offset: 24,
        stride: 32,
        normalized: !1
      }], o.Pos3Col = [{
        name: "position",
        count: 3,
        type: 5126,
        offset: 0,
        stride: 16,
        normalized: !1
      }, {
        name: "color",
        count: 4,
        type: 5121,
        offset: 12,
        stride: 16,
        normalized: !1
      }], o.Pos2 = [{
        name: "position",
        count: 2,
        type: 5126,
        offset: 0,
        stride: 8,
        normalized: !1
      }], o.Pos2Tex = [{
        name: "position",
        count: 2,
        type: 5126,
        offset: 0,
        stride: 16,
        normalized: !1
      }, {
        name: "uv0",
        count: 2,
        type: 5126,
        offset: 8,
        stride: 16,
        normalized: !1
      }];
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GLMaterial.js":
  /*!****************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GLMaterial.js ***!
    \****************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibGLMaterialJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/declareExtendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/declareExtendsHelper.js"), __webpack_require__(
    /*! ../../../../core/tsSupport/decorateHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/decorateHelper.js"), __webpack_require__(
    /*! ../../../../core/accessorSupport/decorators */
    "./node_modules/arcgis-js-api/core/accessorSupport/decorators.js"), __webpack_require__(
    /*! ./AutoDisposable */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/AutoDisposable.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, o, i, s) {
      Object.defineProperty(t, "__esModule", {
        value: !0
      });

      var n = function (e) {
        function t(t) {
          var r = e.call(this) || this;
          return r.material = t.material, r.programRep = t.programRep, r.techniqueRep = t.techniqueRep, r;
        }

        return r(t, e), t.prototype.isVisible = function () {
          return this.material.isVisible();
        }, t.prototype.isVisibleInPass = function (e) {
          return this.material.isVisibleInPass(e);
        }, t.prototype.getPrograms = function () {
          return [this.getProgram()];
        }, t.prototype.getDrawMode = function () {
          return 4;
        }, t.prototype.ensureResources = function (e) {
          return 0;
        }, t.prototype.ensureAttributeLocations = function (e) {
          this.getProgram().assertCompatibleVertexAttributeLocations(e);
        }, t = o([i.subclass("esri.views.3d.webgl-engine.lib.GLMaterial")], t);
      }(i.declared(s.AutoDisposable));

      t.GLMaterial = n;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GLMaterialTexture.js":
  /*!***********************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GLMaterialTexture.js ***!
    \***********************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibGLMaterialTextureJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/assignHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/assignHelper.js"), __webpack_require__(
    /*! ../../../../core/tsSupport/extendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/extendsHelper.js"), __webpack_require__(
    /*! ./DefaultTextureUnits */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultTextureUnits.js"), __webpack_require__(
    /*! ./GLMaterial */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GLMaterial.js"), __webpack_require__(
    /*! ../materials/internal/MaterialUtil */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/MaterialUtil.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, i, u, n, s) {
      var x = function (e) {
        function t(t) {
          var r = e.call(this, t) || this,
              i = t.textureRep;
          r.textureRep = i, r.textureId = t.textureId, r.initTransparent = !!t.initTextureTransparent;

          var u = function u(e) {
            return s.acquireIfNotUndefined(e, i, r.initTransparent);
          };

          return r.glTextureRef = u(r.textureId), t.normalTextureId && (r.glTextureRefNormal = u(t.normalTextureId)), t.emissiveTextureId && (r.glTextureRefEmission = u(t.emissiveTextureId)), t.occlusionTextureId && (r.glTextureRefOcclusion = u(t.occlusionTextureId)), t.metallicRoughnessTextureId && (r.glTextureRefRoughnessMetallness = u(t.metallicRoughnessTextureId)), r;
        }

        return i(t, e), t.prototype.dispose = function () {
          s.releaseIfNotUndefined(this.textureId, this.textureRep);
        }, t.prototype.updateTexture = function (e) {
          e !== this.textureId && (s.releaseIfNotUndefined(this.textureId, this.textureRep), this.textureId = e, this.glTextureRef = s.acquireIfNotUndefined(this.textureId, this.textureRep, this.initTransparent));
        }, t.prototype.bindTexture = function (e, t) {
          null != this.glTextureRef && (t.setUniform1i("tex", u.DefaultTextureUnits.DIFFUSE), e.bindTexture(this.glTextureRef.getGLTexture(), u.DefaultTextureUnits.DIFFUSE)), this.glTextureRefNormal && (t.setUniform1i("normalTexture", u.DefaultTextureUnits.NORMAL), e.bindTexture(this.glTextureRefNormal.getGLTexture(), u.DefaultTextureUnits.NORMAL)), this.glTextureRefEmission && (t.setUniform1i("texEmission", u.DefaultTextureUnits.EMISSION), e.bindTexture(this.glTextureRefEmission.getGLTexture(), u.DefaultTextureUnits.EMISSION)), this.glTextureRefOcclusion && (t.setUniform1i("texOcclusion", u.DefaultTextureUnits.OCCLUSION), e.bindTexture(this.glTextureRefOcclusion.getGLTexture(), u.DefaultTextureUnits.OCCLUSION)), this.glTextureRefRoughnessMetallness && (t.setUniform1i("texMetallicRoughness", u.DefaultTextureUnits.METALLIC_ROUGHNESS), e.bindTexture(this.glTextureRefRoughnessMetallness.getGLTexture(), u.DefaultTextureUnits.METALLIC_ROUGHNESS));
        }, t.prototype.bindTextureScale = function (e, t) {
          var r = this.glTextureRef && this.glTextureRef.getGLTexture();
          r && r.descriptor.textureCoordinateScaleFactor ? t.setUniform2fv("textureCoordinateScaleFactor", r.descriptor.textureCoordinateScaleFactor) : t.setUniform2f("textureCoordinateScaleFactor", 1, 1);
        }, t;
      }(n.GLMaterial);

      return function (e) {
        function t(e, t) {
          return r({}, e, t);
        }

        e.makeCtorParameters = t;
      }(x || (x = {})), x;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Geometry.js":
  /*!**************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Geometry.js ***!
    \**************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibGeometryJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ./BoundingInfo */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/BoundingInfo.js"), __webpack_require__(
    /*! ./ComponentUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/ComponentUtils.js"), __webpack_require__(
    /*! ./geometryDataUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/geometryDataUtils.js"), __webpack_require__(
    /*! ./IdGen */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IdGen.js"), __webpack_require__(
    /*! ./Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js"), __webpack_require__(
    /*! ./Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, n, o, i, r, a, u) {
      return function () {
        function t(e, n, o) {
          this.singleUse = !1, this._boundingInfo = null, this._componentAABBs = null, this._id = t.__idGen.gen(n), this._data = e, this._boundingInfo = o;
        }

        return Object.defineProperty(t.prototype, "id", {
          get: function get() {
            return this._id;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "data", {
          get: function get() {
            return this._data;
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype.getIndices = function (t) {
          return this.data.getIndices(t);
        }, Object.defineProperty(t.prototype, "indexCount", {
          get: function get() {
            return this.data.indexCount;
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype.getAttribute = function (t) {
          return this.data.getAttribute(t);
        }, Object.defineProperty(t.prototype, "componentCount", {
          get: function get() {
            return o.componentCount(this.data.componentOffsets);
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "componentOffsets", {
          get: function get() {
            return this.data.componentOffsets;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "vertexCount", {
          get: function get() {
            return this.data.indexCount;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "faceCount", {
          get: function get() {
            return this.data.indexCount / 3;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "boundingInfo", {
          get: function get() {
            return null == this._boundingInfo && (this._boundingInfo = this._calculateBoundingInfo()), this._boundingInfo;
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype.computeAttachmentOrigin = function (t) {
          return "triangle" === this.data.primitiveType ? this.computeAttachmentOriginTriangles(t) : this.computeAttachmentOriginPoints(t);
        }, t.prototype.computeAttachmentOriginTriangles = function (t) {
          var e = this.getIndices(u.VertexAttrConstants.POSITION),
              n = this.getAttribute(u.VertexAttrConstants.POSITION);
          return i.computeAttachmentOriginTriangles(n, e, t);
        }, t.prototype.computeAttachmentOriginPoints = function (t) {
          var e = this.getIndices(u.VertexAttrConstants.POSITION),
              n = this.getAttribute(u.VertexAttrConstants.POSITION);
          return i.computeAttachmentOriginPoints(n, e, t);
        }, t.prototype.invalidateBoundingInfo = function () {
          this._boundingInfo = null, this._componentAABBs = null;
        }, t.prototype.getComponentAABB = function (t, e) {
          null == this._componentAABBs && (this._componentAABBs = this._computeComponentAABBs());

          for (var n = 0; n < 6; n++) e[n] = this._componentAABBs[6 * t + n];

          return e;
        }, t.prototype._computeComponentAABBs = function () {
          for (var t = this.componentCount, e = new Float32Array(6 * t), n = 0; n < t; n++) this._calculateAABB(n, e, 6 * n);

          return e;
        }, t.prototype._calculateAABB = function (t, e, n) {
          for (var o = this.data.getIndices(u.VertexAttrConstants.POSITION), i = this.data.getAttribute(u.VertexAttrConstants.POSITION), r = this.data.componentOffsets, a = r.length ? r[t] : 0, s = r.length ? r[t + 1] : o.length, c = 1 / 0, p = 1 / 0, d = 1 / 0, f = -1 / 0, g = -1 / 0, h = -1 / 0, l = i.offsetIdx, m = i.strideIdx, A = a; A < s; A++) {
            var b = l + m * o[A],
                I = i.data[b],
                O = i.data[b + 1],
                y = i.data[b + 2];
            c = Math.min(c, I), p = Math.min(p, O), d = Math.min(d, y), f = Math.max(f, I), g = Math.max(g, O), h = Math.max(h, y);
          }

          e[n] = c, e[n + 1] = p, e[n + 2] = d, e[n + 3] = f, e[n + 4] = g, e[n + 5] = h;
        }, t.prototype._calculateBoundingInfo = function () {
          var t = this.data.getIndices(u.VertexAttrConstants.POSITION),
              e = this.data.getAttribute(u.VertexAttrConstants.POSITION),
              o = "triangle" === this.data.primitiveType ? 3 : 1;

          if (0 === t.length) {
            t = new Uint32Array(o);

            for (var r = 0; r < o; ++r) t[r] = r;
          }

          var s = t.length;
          a.assert(s % o == 0, "Indexing error: " + s.toFixed(0) + " not divisible by " + o.toFixed(0));
          var c = i.generateDefaultIndexArray(s / o);
          return new n(c, o, t, e);
        }, t.__idGen = new r.IdGen(), t;
      }();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryData.js":
  /*!******************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryData.js ***!
    \******************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibGeometryDataJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ./ComponentUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/ComponentUtils.js"), __webpack_require__(
    /*! ./geometryDataUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/geometryDataUtils.js"), __webpack_require__(
    /*! ./Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, i, r, n) {
      function s(t) {
        var e = n.getFirstObjectValue(t);
        return null == e ? 0 : e.data.length / e.size;
      }

      Object.defineProperty(e, "__esModule", {
        value: !0
      });

      var o = function () {
        function t(e, n, o, a) {
          void 0 === n && (n = t.DefaultIndices), void 0 === o && (o = t.DefaultOffsets), void 0 === a && (a = "triangle"), this.preinterleaved = !1;
          var u = {};

          for (var f in e) {
            var c = e[f],
                d = c.data,
                p = c.size;
            u[f] = {
              data: d,
              size: p,
              offsetIdx: 0,
              strideIdx: p
            };
          }

          if (n === t.DefaultIndices) {
            var l = s(u),
                h = r.generateDefaultIndexArray(l);
            n = {};

            for (var g in u) n[g] = h;
          }

          this._id = r.getNewId(), this._vertexAttributes = u, this._indices = n, this._componentOffsets = i.createOffsets(o), this._primitiveType = a;
        }

        return Object.defineProperty(t.prototype, "id", {
          get: function get() {
            return this._id;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "vertexAttributes", {
          get: function get() {
            return this._vertexAttributes;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "indices", {
          get: function get() {
            return this._indices;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "componentOffsets", {
          get: function get() {
            return this._componentOffsets;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "indexCount", {
          get: function get() {
            var t = n.getFirstObjectValue(this._indices);
            return null == t ? 0 : t.length;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "primitiveType", {
          get: function get() {
            return this._primitiveType;
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype.getVertexAttr = function () {
          return this.vertexAttributes;
        }, t.prototype.toRenderData = function () {
          return {
            id: this._id.toString(),
            preinterleaved: !1,
            indices: this._indices,
            vertexAttr: this._vertexAttributes
          };
        }, t.prototype.getIndices = function (t) {
          return this._indices[t];
        }, t.prototype.getAttribute = function (t) {
          return this._vertexAttributes[t];
        }, t.prototype.estimateGpuMemoryUsage = function () {
          var t = 0;

          if (this._indices[n.VertexAttrConstants.POSITION]) {
            var e = 3;
            t += this._indices[n.VertexAttrConstants.POSITION].length * e * 4;
          }

          if (this._indices[n.VertexAttrConstants.NORMAL]) {
            var e = 3;
            t += this._indices[n.VertexAttrConstants.NORMAL].length * e * 4;
          }

          if (this._indices[n.VertexAttrConstants.UV0]) {
            var e = 2;
            t += this._indices[n.VertexAttrConstants.UV0].length * e * 4;
          }

          if (this._indices[n.VertexAttrConstants.COLOR]) {
            var e = 1;
            t += this._indices[n.VertexAttrConstants.COLOR].length * e * 4;
          }

          return t;
        }, t.DefaultIndices = {}, t.DefaultOffsets = new Uint32Array(0), t;
      }();

      e.GeometryData = o;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryRecord.js":
  /*!********************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryRecord.js ***!
    \********************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibGeometryRecordJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/ObjectPool */
    "./node_modules/arcgis-js-api/core/ObjectPool.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ./IdGen */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IdGen.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, r, i, n, e) {
      return function () {
        function t(r, i, n, e, o, a) {
          this.id = t._idGen.gen(r && r.id), this.geometry = r, this.material = i, this.transformation = n, this.instanceParameters = e, this.origin = o, this.shaderTransformation = a;
        }

        return t.prototype.getStaticTransformation = function () {
          return this.transformation;
        }, t.prototype.getShaderTransformation = function () {
          return this.shaderTransformation ? this.shaderTransformation(this.transformation) : this.transformation;
        }, t.prototype.computeAttachmentOrigin = function (t) {
          return !!(this.material.computeAttachmentOrigin ? this.material.computeAttachmentOrigin(this.geometry, t) : this.geometry.computeAttachmentOrigin(t)) && (n.vec3.transformMat4(t, t, this.getStaticTransformation()), !0);
        }, t._idGen = new e.IdGen(), t.pool = new i(t, !0), t;
      }();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryUtil.js":
  /*!******************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryUtil.js ***!
    \******************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibGeometryUtilJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f32 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f32.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../support/geometryUtils */
    "./node_modules/arcgis-js-api/views/3d/support/geometryUtils.js"), __webpack_require__(
    /*! ./BufferVectorMath */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/BufferVectorMath.js"), __webpack_require__(
    /*! ./GeometryData */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryData.js"), __webpack_require__(
    /*! ./Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, r, a, n, o, s, c, v) {
      var l,
          i = s.Vec3Compact;
      !function (t) {
        function e(t) {
          Array.isArray(t) || (t = [t, t, t]);

          for (var e = new Float32Array(24), r = 0; r < 8; r++) e[3 * r] = a[r][0] * t[0], e[3 * r + 1] = a[r][1] * t[1], e[3 * r + 2] = a[r][2] * t[2];

          var i = {};
          i[v.VertexAttrConstants.POSITION] = new Uint32Array(s), i[v.VertexAttrConstants.NORMAL] = new Uint32Array(l), i[v.VertexAttrConstants.UV0] = new Uint32Array(f);
          var A = {};
          return A[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: e
          }, A[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: new Float32Array(n)
          }, A[v.VertexAttrConstants.UV0] = {
            size: 2,
            data: new Float32Array(o)
          }, new c.GeometryData(A, i);
        }

        for (var r = .5, a = [[-r, -r, r], [r, -r, r], [r, r, r], [-r, r, r], [-r, -r, -r], [r, -r, -r], [r, r, -r], [-r, r, -r]], n = [0, 0, 1, -1, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, -1], o = [0, 0, 1, 0, 1, 1, 0, 1], s = [0, 1, 2, 2, 3, 0, 4, 0, 3, 3, 7, 4, 1, 5, 6, 6, 2, 1, 1, 0, 4, 4, 5, 1, 3, 2, 6, 6, 7, 3, 5, 4, 7, 7, 6, 5], l = new Array(36), i = 0; i < 6; i++) for (var A = 0; A < 6; A++) l[6 * i + A] = i;

        for (var f = new Array(36), i = 0; i < 6; i++) f[6 * i + 0] = 0, f[6 * i + 1] = 1, f[6 * i + 2] = 2, f[6 * i + 3] = 2, f[6 * i + 4] = 3, f[6 * i + 5] = 0;

        t.createGeometry = e;
      }(l || (l = {}));
      var A;
      !function (t) {
        function e(t) {
          Array.isArray(t) || (t = [t, t, t]);

          for (var e = new Float32Array(18), r = 0; r < 6; r++) e[3 * r] = a[r][0] * t[0], e[3 * r + 1] = a[r][1] * t[1], e[3 * r + 2] = a[r][2] * t[2];

          var l = {};
          l[v.VertexAttrConstants.POSITION] = new Uint32Array(o), l[v.VertexAttrConstants.NORMAL] = new Uint32Array(s);
          var i = {};
          return i[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: e
          }, i[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: new Float32Array(n)
          }, new c.GeometryData(i, l);
        }

        var r = .5,
            a = [[-r, 0, -r], [r, 0, -r], [r, 0, r], [-r, 0, r], [0, -r, 0], [0, r, 0]],
            n = [0, 1, -1, 1, 1, 0, 0, 1, 1, -1, 1, 0, 0, -1, -1, 1, -1, 0, 0, -1, 1, -1, -1, 0],
            o = [5, 1, 0, 5, 2, 1, 5, 3, 2, 5, 0, 3, 4, 0, 1, 4, 1, 2, 4, 2, 3, 4, 3, 0],
            s = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7];
        t.createGeometry = e;
      }(A || (A = {}));
      var f;
      !function (t) {
        function e(t) {
          Array.isArray(t) || (t = [t, t, t]);

          for (var e = new Float32Array(12), r = 0; r < 4; r++) e[3 * r] = u[r][0] * t[0], e[3 * r + 1] = u[r][1] * t[1], e[3 * r + 2] = u[r][2] * t[2];

          var a = {};
          a[v.VertexAttrConstants.POSITION] = new Uint32Array(O), a[v.VertexAttrConstants.NORMAL] = new Uint32Array(h);
          var n = {};
          return n[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: e
          }, n[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: new Float32Array(m)
          }, new c.GeometryData(n, a);
        }

        var n = .5,
            o = a.vec3f32.fromValues(-n, 0, -n),
            s = a.vec3f32.fromValues(n, 0, -n),
            l = a.vec3f32.fromValues(0, 0, n),
            i = a.vec3f32.fromValues(0, .5, 0),
            A = a.vec3f32.create(),
            f = a.vec3f32.create(),
            y = a.vec3f32.create(),
            V = a.vec3f32.create(),
            d = a.vec3f32.create();
        r.vec3.subtract(A, o, i), r.vec3.subtract(f, o, s), r.vec3.cross(y, A, f), r.vec3.normalize(y, y), r.vec3.subtract(A, s, i), r.vec3.subtract(f, s, l), r.vec3.cross(V, A, f), r.vec3.normalize(V, V), r.vec3.subtract(A, l, i), r.vec3.subtract(f, l, o), r.vec3.cross(d, A, f), r.vec3.normalize(d, d);
        var u = [o, s, l, i],
            m = [0, -1, 0, y[0], y[1], y[2], V[0], V[1], V[2], d[0], d[1], d[2]],
            O = [0, 1, 2, 3, 1, 0, 3, 2, 1, 3, 0, 2],
            h = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3];
        t.createGeometry = e;
      }(f || (f = {}));
      var y;
      !function (t) {
        function e(t, e, r, a, n, o, s) {
          t = t || 50, a = void 0 !== a ? a : -Math.PI, n = void 0 !== n ? n : 2 * Math.PI, o = void 0 !== o ? o : .5 * -Math.PI, s = void 0 !== s ? s : Math.PI;

          for (var l = Math.max(3, Math.floor(e) || 8), i = Math.max(2, Math.floor(r) || 6), A = (l + 1) * (i + 1), f = new Float32Array(3 * A), y = new Float32Array(3 * A), V = new Float32Array(2 * A), d = [], u = 0, m = 0; m <= i; m++) {
            for (var O = [], h = m / i, x = o + h * s, C = Math.cos(x), w = 0; w <= l; w++) {
              var I = w / l,
                  g = a + I * n,
                  M = Math.cos(g) * C,
                  z = Math.sin(x),
                  N = -Math.sin(g) * C;
              f[3 * u] = M * t, f[3 * u + 1] = z * t, f[3 * u + 2] = N * t, y[3 * u] = M, y[3 * u + 1] = z, y[3 * u + 2] = N, V[2 * u] = I, V[2 * u + 1] = h, O.push(u), ++u;
            }

            d.push(O);
          }

          var P = new Uint32Array(2 * l * (i - 1) * 3);
          u = 0;

          for (var m = 0; m < i; m++) for (var w = 0; w < l; w++) {
            var U = d[m][w],
                G = d[m][w + 1],
                F = d[m + 1][w + 1],
                S = d[m + 1][w];
            0 === m ? (P[u++] = U, P[u++] = F, P[u++] = S) : m === i - 1 ? (P[u++] = U, P[u++] = G, P[u++] = F) : (P[u++] = U, P[u++] = G, P[u++] = F, P[u++] = F, P[u++] = S, P[u++] = U);
          }

          v.assert(u === P.length);
          var p = {};
          p[v.VertexAttrConstants.POSITION] = P, p[v.VertexAttrConstants.NORMAL] = P, p[v.VertexAttrConstants.UV0] = P;
          var T = {};
          return T[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: f
          }, T[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: y
          }, T[v.VertexAttrConstants.UV0] = {
            size: 2,
            data: V
          }, new c.GeometryData(T, p);
        }

        function y(t, e, r) {
          function a(e, r) {
            var a;
            e > r && (a = [r, e], e = a[0], r = a[1]);
            var o = e.toString() + "." + r.toString();
            if (f[o]) return f[o];
            var s = n.length;
            return n.length += 3, i.add(n, 3 * e, n, 3 * r, n, s), i.scale(n, s, t / i.length(n, s)), s /= 3, f[o] = s, s;
          }

          var n,
              o,
              s = t;
          if (r) n = [0, -1, 0, 1, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, -1, 0, 1, 0], o = new Uint32Array([0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 1, 1, 5, 2, 2, 5, 3, 3, 5, 4, 4, 5, 1]);else {
            var l = s * (1 + Math.sqrt(5)) / 2;
            n = [-s, l, 0, s, l, 0, -s, -l, 0, s, -l, 0, 0, -s, l, 0, s, l, 0, -s, -l, 0, s, -l, l, 0, -s, l, 0, s, -l, 0, -s, -l, 0, s], o = new Uint32Array([0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1]);
          }

          for (var A = 0; A < n.length; A += 3) i.scale(n, A, t / i.length(n, A));

          for (var f = {}, A = 0; A < e; A++) {
            for (var y = o.length, V = new Uint32Array(4 * y), d = 0; d < y; d += 3) {
              var u = o[d],
                  m = o[d + 1],
                  O = o[d + 2],
                  h = a(u, m),
                  x = a(m, O),
                  C = a(O, u),
                  w = 4 * d;
              V[w] = u, V[w + 1] = h, V[w + 2] = C, V[w + 3] = m, V[w + 4] = x, V[w + 5] = h, V[w + 6] = O, V[w + 7] = C, V[w + 8] = x, V[w + 9] = h, V[w + 10] = x, V[w + 11] = C;
            }

            o = V, f = {};
          }

          for (var I = new Float32Array(n), A = 0; A < I.length; A += 3) i.normalize(I, A);

          var g = {};
          g[v.VertexAttrConstants.POSITION] = o, g[v.VertexAttrConstants.NORMAL] = o;
          var M = {};
          return M[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: new Float32Array(n)
          }, M[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: I
          }, new c.GeometryData(M, g);
        }

        function m(t, e, r, a, n, o, s, l) {
          var i = e ? new Float64Array([e[0], e[1], e[2]]) : new Float32Array([0, 0, 0]),
              A = t ? new Float32Array([t[0], t[1], t[2]]) : new Float32Array([0, 0, 1]),
              f = o ? new Float32Array(o) : new Float32Array([0, 0]),
              y = r ? new Uint8Array([255 * r[0], 255 * r[1], 255 * r[2], r.length > 3 ? 255 * r[3] : 255]) : new Uint8Array([255, 255, 255, 255]),
              V = null != a && 2 === a.length ? new Float32Array(a) : new Float32Array([1, 1]),
              d = {};

          if (d[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: i
          }, d[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: A
          }, d[v.VertexAttrConstants.UV0] = {
            size: f.length,
            data: f
          }, d[v.VertexAttrConstants.COLOR] = {
            size: 4,
            data: y
          }, d[v.VertexAttrConstants.SIZE] = {
            size: 2,
            data: V
          }, null != n) {
            var u = new Float32Array([n[0], n[1], n[2], n[3]]);
            d[v.VertexAttrConstants.AUXPOS1] = {
              size: 4,
              data: u
            };
          }

          if (null != s) {
            var m = new Float32Array([s[0], s[1], s[2], s[3]]);
            d[v.VertexAttrConstants.AUXPOS2] = {
              size: 4,
              data: m
            };
          }

          return null != l ? (c.GeometryData.call(l, d, c.GeometryData.DefaultIndices, c.GeometryData.DefaultOffsets, "point"), l) : new c.GeometryData(d, c.GeometryData.DefaultIndices, c.GeometryData.DefaultOffsets, "point");
        }

        function O(t, e, r, a, n, o, s, c) {
          var l = c.vertexAttributes;

          if (null != t) {
            var i = l[v.VertexAttrConstants.NORMAL].data;
            i[0] = t[0], i[1] = t[1], i[2] = t[2];
          }

          if (null != e) {
            var i = l[v.VertexAttrConstants.POSITION].data;
            i[0] = e[0], i[1] = e[1], i[2] = e[2];
          }

          if (null != r) {
            var i = l[v.VertexAttrConstants.COLOR].data;
            i[0] = r[0], i[1] = r[1], i[2] = r[2], i[3] = r[3];
          }

          if (null != a) {
            var i = l[v.VertexAttrConstants.SIZE].data;
            i[0] = a[0], i[1] = a[1];
          }

          if (null != n) {
            var i = l[v.VertexAttrConstants.AUXPOS1].data;
            i[0] = n[0], i[1] = n[1], i[2] = n[2], i[3] = n[3];
          }

          if (null != o) {
            var i = l[v.VertexAttrConstants.UV0].data;
            i[0] = o[0], i[1] = o[1];
          }

          if (null != s) {
            var i = l[v.VertexAttrConstants.AUXPOS2].data;
            i[0] = s[0], i[1] = s[1], i[2] = s[2], i[3] = s[3];
          }

          return c;
        }

        function h(t, e) {
          for (var r = new Float32Array(3 * t.length), a = new Float32Array(e ? 3 * t.length : 3), n = new Uint32Array(t.length), o = new Uint32Array(t.length), s = 0; s < t.length; s++) r[3 * s] = t[s][0], r[3 * s + 1] = t[s][1], r[3 * s + 2] = t[s][2], e && (a[3 * s] = e[s][0], a[3 * s + 1] = e[s][1], a[3 * s + 2] = e[s][2]), n[s] = s, o[s] = 0;

          e || (a[0] = 0, a[1] = 1, a[2] = 0);
          var l = new Float32Array(2);
          l[0] = 0, l[1] = 0;
          var i = {};
          i[v.VertexAttrConstants.POSITION] = n, i[v.VertexAttrConstants.NORMAL] = e ? n : o, i[v.VertexAttrConstants.UV0] = o;
          var A = {};
          return A[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: r
          }, A[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: a
          }, A[v.VertexAttrConstants.UV0] = {
            size: 2,
            data: l
          }, new c.GeometryData(A, i, c.GeometryData.DefaultOffsets, "point");
        }

        function x() {
          var t = new Float32Array([0, 0, 0, 0, 0, 100, 100, 0, 0]),
              e = new Uint32Array([0, 1, 2]),
              r = new Float32Array([0, 1, 0]),
              a = new Uint32Array([0, 0, 0]),
              n = new Float32Array([0, 0]),
              o = new Uint32Array([0, 0, 0]),
              s = {};
          s[v.VertexAttrConstants.POSITION] = e, s[v.VertexAttrConstants.NORMAL] = a, s[v.VertexAttrConstants.UV0] = o;
          var l = {};
          return l[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: t
          }, l[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: r
          }, l[v.VertexAttrConstants.UV0] = {
            size: 2,
            data: n
          }, new c.GeometryData(l, s);
        }

        function C(t) {
          var e = new Float32Array(12);
          if (t) for (var r = 0; r < 4; r++) for (var a = 0; a < 3; a++) e[3 * r + a] = t[r][a];else e[0] = -1, e[1] = -1, e[2] = 0, e[3] = 1, e[4] = -1, e[5] = 0, e[6] = 1, e[7] = 1, e[8] = 0, e[9] = -1, e[10] = 1, e[11] = 0;
          var n = new Uint32Array([0, 1, 2, 2, 3, 0]),
              o = new Float32Array([0, 0, 1]),
              s = new Uint32Array([0, 0, 0, 0, 0, 0]),
              l = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),
              i = new Uint8Array([255, 255, 255, 255]),
              A = {};
          A[v.VertexAttrConstants.POSITION] = n, A[v.VertexAttrConstants.NORMAL] = s, A[v.VertexAttrConstants.UV0] = n, A[v.VertexAttrConstants.COLOR] = s;
          var f = {};
          return f[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: e
          }, f[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: o
          }, f[v.VertexAttrConstants.UV0] = {
            size: 2,
            data: l
          }, f[v.VertexAttrConstants.COLOR] = {
            size: 4,
            data: i
          }, new c.GeometryData(f, A);
        }

        function w(t, e, r, n, o, s) {
          void 0 === o && (o = !0), void 0 === s && (s = !0);
          var l = 0,
              i = e,
              A = t,
              f = a.vec3f32.fromValues(0, l, 0),
              y = a.vec3f32.fromValues(0, l + A, 0),
              V = a.vec3f32.fromValues(0, -1, 0),
              d = a.vec3f32.fromValues(0, 1, 0);
          n && (l = A, y = a.vec3f32.fromValues(0, 0, 0), f = a.vec3f32.fromValues(0, l, 0), V = a.vec3f32.fromValues(0, 1, 0), d = a.vec3f32.fromValues(0, -1, 0));
          var u = [y, f],
              m = [V, d],
              O = r + 2,
              h = Math.sqrt(A * A + i * i);
          if (n) for (var x = r - 1; x >= 0; x--) {
            var C = x * (2 * Math.PI / r),
                w = a.vec3f32.fromValues(Math.cos(C) * i, l, Math.sin(C) * i);
            u.push(w);
            var I = a.vec3f32.fromValues(A * Math.cos(C) / h, -i / h, A * Math.sin(C) / h);
            m.push(I);
          } else for (var x = 0; x < r; x++) {
            var C = x * (2 * Math.PI / r),
                w = a.vec3f32.fromValues(Math.cos(C) * i, l, Math.sin(C) * i);
            u.push(w);
            var I = a.vec3f32.fromValues(A * Math.cos(C) / h, i / h, A * Math.sin(C) / h);
            m.push(I);
          }
          var g = new Uint32Array(2 * (r + 2) * 3),
              M = new Uint32Array(2 * (r + 2) * 3),
              z = 0,
              N = 0;

          if (o) {
            for (var x = 3; x < u.length; x++) g[z++] = 1, g[z++] = x - 1, g[z++] = x, M[N++] = 0, M[N++] = 0, M[N++] = 0;

            g[z++] = u.length - 1, g[z++] = 2, g[z++] = 1, M[N++] = 0, M[N++] = 0, M[N++] = 0;
          }

          if (s) {
            for (var x = 3; x < u.length; x++) g[z++] = x, g[z++] = x - 1, g[z++] = 0, M[N++] = x, M[N++] = x - 1, M[N++] = 1;

            g[z++] = 0, g[z++] = 2, g[z++] = u.length - 1, M[N++] = 1, M[N++] = 2, M[N++] = m.length - 1;
          }

          for (var P = new Float32Array(3 * O), x = 0; x < O; x++) P[3 * x] = u[x][0], P[3 * x + 1] = u[x][1], P[3 * x + 2] = u[x][2];

          for (var U = new Float32Array(3 * O), x = 0; x < O; x++) U[3 * x] = m[x][0], U[3 * x + 1] = m[x][1], U[3 * x + 2] = m[x][2];

          var G = {};
          G[v.VertexAttrConstants.POSITION] = g, G[v.VertexAttrConstants.NORMAL] = M;
          var F = {};
          return F[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: P
          }, F[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: U
          }, new c.GeometryData(F, G);
        }

        function I(t, e, n, o, s, l) {
          var i = o ? a.vec3f32.clone(o) : a.vec3f32.fromValues(1, 0, 0),
              A = s ? a.vec3f32.clone(s) : a.vec3f32.fromValues(0, 0, 0),
              f = void 0 === l || l,
              y = a.vec3f32.create();
          r.vec3.normalize(y, i);
          var V = a.vec3f32.create();
          r.vec3.scale(V, y, Math.abs(t));
          var d = a.vec3f32.create();
          r.vec3.scale(d, V, -.5), r.vec3.add(d, d, A);
          var u = a.vec3f32.fromValues(0, 1, 0);
          Math.abs(1 - r.vec3.dot(y, u)) < .2 && r.vec3.set(u, 0, 0, 1);
          var m = a.vec3f32.create();
          r.vec3.cross(m, y, u), r.vec3.normalize(m, m), r.vec3.cross(u, m, y);
          var O = 2 * n + (f ? 2 : 0),
              h = n + (f ? 2 : 0),
              x = new Float32Array(3 * O),
              C = new Float32Array(3 * h),
              w = new Float32Array(2 * O),
              I = new Uint32Array(3 * n * (f ? 4 : 2)),
              g = new Uint32Array(3 * n * (f ? 4 : 2));
          f && (x[3 * (O - 2) + 0] = d[0], x[3 * (O - 2) + 1] = d[1], x[3 * (O - 2) + 2] = d[2], w[2 * (O - 2)] = 0, w[2 * (O - 2) + 1] = 0, x[3 * (O - 1) + 0] = x[3 * (O - 2) + 0] + V[0], x[3 * (O - 1) + 1] = x[3 * (O - 2) + 1] + V[1], x[3 * (O - 1) + 2] = x[3 * (O - 2) + 2] + V[2], w[2 * (O - 1)] = 1, w[2 * (O - 1) + 1] = 1, C[3 * (h - 2) + 0] = -y[0], C[3 * (h - 2) + 1] = -y[1], C[3 * (h - 2) + 2] = -y[2], C[3 * (h - 1) + 0] = y[0], C[3 * (h - 1) + 1] = y[1], C[3 * (h - 1) + 2] = y[2]);

          for (var M = function M(t, e, r) {
            I[t] = e, g[t] = r;
          }, z = 0, N = a.vec3f32.create(), P = a.vec3f32.create(), U = 0; U < n; U++) {
            var G = U * (2 * Math.PI / n);
            r.vec3.scale(N, u, Math.sin(G)), r.vec3.scale(P, m, Math.cos(G)), r.vec3.add(N, N, P), C[3 * U + 0] = N[0], C[3 * U + 1] = N[1], C[3 * U + 2] = N[2], r.vec3.scale(N, N, e), r.vec3.add(N, N, d), x[3 * U + 0] = N[0], x[3 * U + 1] = N[1], x[3 * U + 2] = N[2], w[2 * U + 0] = U / n, w[2 * U + 1] = 0, x[3 * (U + n) + 0] = x[3 * U + 0] + V[0], x[3 * (U + n) + 1] = x[3 * U + 1] + V[1], x[3 * (U + n) + 2] = x[3 * U + 2] + V[2], w[2 * (U + n) + 0] = U / n, w[2 * U + 1] = 1;
            var F = (U + 1) % n;
            M(z++, U, U), M(z++, U + n, U), M(z++, F, F), M(z++, F, F), M(z++, U + n, U), M(z++, F + n, F);
          }

          if (f) {
            for (var U = 0; U < n; U++) {
              var F = (U + 1) % n;
              M(z++, O - 2, h - 2), M(z++, U, h - 2), M(z++, F, h - 2);
            }

            for (var U = 0; U < n; U++) {
              var F = (U + 1) % n;
              M(z++, U + n, h - 1), M(z++, O - 1, h - 1), M(z++, F + n, h - 1);
            }
          }

          var S = {};
          S[v.VertexAttrConstants.POSITION] = I, S[v.VertexAttrConstants.NORMAL] = g, S[v.VertexAttrConstants.UV0] = I;
          var p = {};
          return p[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: x
          }, p[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: C
          }, p[v.VertexAttrConstants.UV0] = {
            size: 2,
            data: w
          }, new c.GeometryData(p, S);
        }

        function g(e, r, a, n, o) {
          a = a || 10, n = null == n || n, v.assert(e.length > 1);

          for (var s = [[0, 0, 0]], c = [], l = [], i = 0; i < a; i++) {
            c.push([0, -i - 1, -(i + 1) % a - 1]);
            var A = i / a * 2 * Math.PI;
            l.push([Math.cos(A) * r, Math.sin(A) * r]);
          }

          return t.createPathExtrusionGeometry(l, e, s, c, n, o);
        }

        function M(t, e, s, l, i, A) {
          void 0 === A && (A = a.vec3f32.fromValues(0, 0, 0));
          var f = t.length,
              y = new Float32Array(e.length * f * 3 + (6 * s.length || 0)),
              d = new Float32Array(e.length * f + (2 * s.length || 0)),
              u = new Float32Array(e.length * f * 3 + (s ? 6 : 0)),
              m = (e.length - 1) * f * 6 + 3 * l.length * 2,
              O = new Uint32Array(m),
              h = new Uint32Array(m),
              x = 0,
              C = 0,
              w = 0,
              I = 0,
              g = 0,
              M = a.vec3f32.create(),
              z = a.vec3f32.create(),
              N = a.vec3f32.create(),
              P = a.vec3f32.create(),
              U = a.vec3f32.create(),
              G = a.vec3f32.create(),
              F = a.vec3f32.create(),
              S = n.vec3f64.create(),
              T = a.vec3f32.create(),
              R = a.vec3f32.create(),
              L = a.vec3f32.create(),
              D = a.vec3f32.create(),
              b = a.vec3f32.create(),
              E = o.plane.create();
          r.vec3.set(T, 0, 1, 0), r.vec3.subtract(z, e[1], e[0]), r.vec3.normalize(z, z), i ? (r.vec3.add(S, e[0], A), r.vec3.normalize(N, S)) : r.vec3.set(N, 0, 0, 1), p(z, N, T, T, U, N, V), r.vec3.copy(P, N), r.vec3.copy(D, U);

          for (var q = 0; q < s.length; q++) r.vec3.scale(G, U, s[q][0]), r.vec3.scale(S, N, s[q][2]), r.vec3.add(G, G, S), r.vec3.add(G, G, e[0]), y[x++] = G[0], y[x++] = G[1], y[x++] = G[2], d[w++] = 0;

          u[C++] = -z[0], u[C++] = -z[1], u[C++] = -z[2];

          for (var q = 0; q < l.length; q++) O[I++] = l[q][0] > 0 ? l[q][0] : -l[q][0] - 1 + s.length, O[I++] = l[q][1] > 0 ? l[q][1] : -l[q][1] - 1 + s.length, O[I++] = l[q][2] > 0 ? l[q][2] : -l[q][2] - 1 + s.length, h[g++] = 0, h[g++] = 0, h[g++] = 0;

          for (var B = s.length, X = s.length - 1, k = 0; k < e.length; k++) {
            var Z = !1;

            if (k > 0) {
              r.vec3.copy(M, z), k < e.length - 1 ? (r.vec3.subtract(z, e[k + 1], e[k]), r.vec3.normalize(z, z)) : Z = !0, r.vec3.add(R, M, z), r.vec3.normalize(R, R), r.vec3.add(L, e[k - 1], P), o.plane.fromPositionAndNormal(e[k], R, E);
              o.plane.intersectRay(E, o.ray.wrap(L, M), S) ? (r.vec3.subtract(S, S, e[k]), r.vec3.normalize(N, S), r.vec3.cross(U, R, N), r.vec3.normalize(U, U)) : p(R, P, D, T, U, N, V), r.vec3.copy(P, N), r.vec3.copy(D, U);
            }

            i && (r.vec3.add(S, e[k], A), r.vec3.normalize(b, S));

            for (var j = 0; j < f; j++) if (r.vec3.scale(G, U, t[j][0]), r.vec3.scale(S, N, t[j][1]), r.vec3.add(G, G, S), r.vec3.normalize(F, G), u[C++] = F[0], u[C++] = F[1], u[C++] = F[2], d[w++] = i ? r.vec3.dot(G, b) : G[2], r.vec3.add(G, G, e[k]), y[x++] = G[0], y[x++] = G[1], y[x++] = G[2], !Z) {
              var H = (j + 1) % f;
              O[I++] = B + j, O[I++] = B + f + j, O[I++] = B + H, O[I++] = B + H, O[I++] = B + f + j, O[I++] = B + f + H;

              for (var J = 0; J < 6; J++) h[g++] = O[I - 6 + J] - X;
            }

            B += f;
          }

          for (var K = e[e.length - 1], q = 0; q < s.length; q++) r.vec3.scale(G, U, s[q][0]), r.vec3.scale(S, N, s[q][1]), r.vec3.add(G, G, S), r.vec3.add(G, G, K), y[x++] = G[0], y[x++] = G[1], y[x++] = G[2], d[w++] = 0;

          var Q = C / 3;
          u[C++] = z[0], u[C++] = z[1], u[C++] = z[2];

          for (var W = B - f, q = 0; q < l.length; q++) O[I++] = l[q][0] >= 0 ? B + l[q][0] : -l[q][0] - 1 + W, O[I++] = l[q][2] >= 0 ? B + l[q][2] : -l[q][2] - 1 + W, O[I++] = l[q][1] >= 0 ? B + l[q][1] : -l[q][1] - 1 + W, h[g++] = Q, h[g++] = Q, h[g++] = Q;

          var Y = {};
          Y[v.VertexAttrConstants.POSITION] = O, Y[v.VertexAttrConstants.NORMAL] = h;
          var $ = {};
          return $[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: y
          }, $.zOffset = {
            size: 1,
            data: d
          }, $[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: u
          }, new c.GeometryData($, Y);
        }

        function z(t, e) {
          v.assert(t.length > 1, "createPolylineGeometry(): polyline needs at least 2 points"), v.assert(3 === t[0].length, "createPolylineGeometry(): malformed vertex"), v.assert(void 0 === e || e.length === t.length, "createPolylineGeometry: need same number of points and normals"), v.assert(void 0 === e || 3 === e[0].length, "createPolylineGeometry(): malformed normal");

          for (var r = new Float32Array(3 * t.length), a = new Uint32Array(2 * (t.length - 1)), n = 0, o = 0, s = 0; s < t.length; s++) {
            for (var l = 0; l < 3; l++) r[n++] = t[s][l];

            s > 0 && (a[o++] = s - 1, a[o++] = s);
          }

          var i = {},
              A = {};

          if (i[v.VertexAttrConstants.POSITION] = a, A[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: r
          }, e) {
            for (var f = new Float32Array(3 * e.length), y = 0, s = 0; s < t.length; s++) for (var l = 0; l < 3; l++) f[y++] = e[s][l];

            i[v.VertexAttrConstants.NORMAL] = a, A[v.VertexAttrConstants.NORMAL] = {
              size: 3,
              data: f
            };
          }

          return new c.GeometryData(A, i, c.GeometryData.DefaultOffsets, "line");
        }

        function N(t, e, r, a) {
          for (var n, o, s = new Float32Array(18), l = [[-e, 0, a / 2], [r, 0, a / 2], [0, t, a / 2], [-e, 0, -a / 2], [r, 0, -a / 2], [0, t, -a / 2]], i = [0, 1, 2, 3, 0, 2, 2, 5, 3, 1, 4, 5, 5, 2, 1, 1, 0, 3, 3, 4, 1, 4, 3, 5], A = 0; A < 6; A++) s[3 * A] = l[A][0], s[3 * A + 1] = l[A][1], s[3 * A + 2] = l[A][2];

          var f = (n = {}, n[v.VertexAttrConstants.POSITION] = new Uint32Array(i), n),
              y = (o = {}, o[v.VertexAttrConstants.POSITION] = {
            size: 3,
            data: s
          }, o);
          return new c.GeometryData(y, f);
        }

        function P(t, e) {
          for (var a = t.vertexAttributes[v.VertexAttrConstants.POSITION].data, n = 0; n < a.length; n += 3) {
            var o = a[n],
                s = a[n + 1],
                c = a[n + 2];
            r.vec3.set(d, o, s, c), r.vec3.transformMat4(d, d, e), a[n] = d[0], a[n + 1] = d[1], a[n + 2] = d[2];
          }
        }

        function U(t, e) {
          var r = e || [1, 1, 1, 1],
              a = new Uint8Array(4);
          a[0] = 255 * r[0], a[1] = 255 * r[1], a[2] = 255 * r[2], a[3] = 255 * (r.length > 3 ? r[3] : 1);
          var n = {},
              o = t.getVertexAttr();

          for (var s in o) n[s] = o[s];

          n[v.VertexAttrConstants.COLOR] = {
            size: 4,
            data: a
          };
          var l = {};

          for (var s in t.indices) l[s] = t.indices[s];

          var i = l[v.VertexAttrConstants.POSITION].length;
          return l[v.VertexAttrConstants.COLOR] = new Uint32Array(i), t = new c.GeometryData(n, l, t.componentOffsets, t.primitiveType);
        }

        function G(t) {
          for (var e = t.getVertexAttr(), a = t.indices, n = s.Vec3Compact.subtract, o = a.position.length / 3, c = new Float32Array(3 * o), l = e.position.data, i = 0, A = a.position, f = new Uint32Array(A.length), y = 0; y < A.length; y += 3) {
            n(l, 3 * A[y], l, 3 * A[y + 2], u, 0), n(l, 3 * A[y], l, 3 * A[y + 1], d, 0), r.vec3.cross(d, d, u), r.vec3.normalize(d, d);
            var V = i / 3;
            c[i++] = d[0], c[i++] = d[1], c[i++] = d[2], f[y] = V, f[y + 1] = V, f[y + 2] = V;
          }

          e[v.VertexAttrConstants.NORMAL] = {
            size: 3,
            data: c,
            offsetIdx: 0,
            strideIdx: 3
          }, a[v.VertexAttrConstants.NORMAL] = f;
        }

        function F(t, e) {
          void 0 === e && (e = t);
          var r = t.getVertexAttr(),
              a = r.position.data,
              n = r.normal.data,
              o = e.getVertexAttr(),
              s = o.position.data,
              c = o.normal.data;
          if (n) for (var v = 0; v < n.length; v += 3) {
            var l = n[v + 1];
            c[v + 1] = -n[v + 2], c[v + 2] = l;
          }
          if (a) for (var v = 0; v < a.length; v += 3) {
            var l = a[v + 1];
            s[v + 1] = -a[v + 2], s[v + 2] = l;
          }
          return e;
        }

        function S(t, e, a, n, o) {
          return !(Math.abs(r.vec3.dot(e, t)) > o) && (r.vec3.cross(a, t, e), r.vec3.normalize(a, a), r.vec3.cross(n, a, t), r.vec3.normalize(n, n), !0);
        }

        function p(t, e, r, a, n, o, s) {
          return S(t, e, n, o, s) || S(t, r, n, o, s) || S(t, a, n, o, s);
        }

        t.createBoxGeometry = l.createGeometry, t.createDiamondGeometry = A.createGeometry, t.createTetrahedronGeometry = f.createGeometry, t.createSphereGeometry = e, t.createPolySphereGeometry = y, t.createPointGeometry = m, t.updatePointGeometry = O, t.createPointArrayGeometry = h, t.createTriangleGeometry = x, t.createSquareGeometry = C, t.createConeGeometry = w, t.createCylinderGeometry = I, t.createTubeGeometry = g, t.createPathExtrusionGeometry = M, t.createPolylineGeometry = z, t.createExtrudedTriangle = N, t.transformInPlace = P, t.addVertexColors = U, t.addNormals = G, t.cgToGIS = F, t.makeOrthoBasisDirUp = S, t.makeOrthoBasisDirUpFallback = p;
      }(y || (y = {}));
      var V = .99619469809,
          d = a.vec3f32.create(),
          u = a.vec3f32.create();
      return y;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/HighlightUtils.js":
  /*!********************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/HighlightUtils.js ***!
    \********************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibHighlightUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ./IdGen */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IdGen.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, i) {
      function r() {
        return t.gen("highlight");
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      });
      var t = new i.IdGen();
      n.generateHighlightId = r;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IdGen.js":
  /*!***********************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IdGen.js ***!
    \***********************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibIdGenJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n) {
      Object.defineProperty(n, "__esModule", {
        value: !0
      });

      var t = function () {
        function e() {
          this._count = 0;
        }

        return e.prototype.gen = function (e) {
          return null == e && (e = "a"), e + "_" + this._count++;
        }, e;
      }();

      n.IdGen = t;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Intersector.js":
  /*!*****************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Intersector.js ***!
    \*****************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibIntersectorJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/has */
    "./node_modules/arcgis-js-api/core/has.js"), __webpack_require__(
    /*! ../../../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../../../../core/now */
    "./node_modules/arcgis-js-api/core/now.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/mat4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f64.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../support/geometryUtils */
    "./node_modules/arcgis-js-api/views/3d/support/geometryUtils.js"), __webpack_require__(
    /*! ./intersectorUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/intersectorUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (r, e, t, i, s, n, a, o, d, c) {
      var f = t("dojo-debug-messages"),
          u = 1e-5;
      return function () {
        function r(r) {
          this.options = new c.IntersectorOptions(), this.results = new c.IntersectorResults(), this.transform = new c.IntersectorTransform(), this.performanceInfo = {
            queryDuration: 0,
            numObjectsTested: 0
          }, this.tolerance = u, this._ray = {
            origin: o.vec3f64.create(),
            direction: o.vec3f64.create()
          }, this._rayEndPoint = o.vec3f64.create(), this._rayStartPointTransformed = o.vec3f64.create(), this._rayEndPointTransformed = o.vec3f64.create(), this.viewingMode = r || "global";
        }

        return Object.defineProperty(r.prototype, "ray", {
          get: function get() {
            return this._ray;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(r.prototype, "rayBeginPoint", {
          get: function get() {
            return this._ray.origin;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(r.prototype, "rayEndPoint", {
          get: function get() {
            return this._rayEndPoint;
          },
          enumerable: !0,
          configurable: !0
        }), r.prototype.reset = function (r, e) {
          this.resetWithRay(d.ray.fromPoints(r, e, this._ray));
        }, r.prototype.resetWithRay = function (r) {
          r !== this._ray && d.ray.copy(r, this._ray), a.vec3.add(this._rayEndPoint, this._ray.origin, this._ray.direction), this._numObjectsTested = 0, this.results.init(this._ray);
        }, r.prototype.intersect = function (r, e, t, n, a, o) {
          var d = this;
          this.point = e, this.camera = t, this.filterPredicate = a, this.tolerance = null == n ? u : n;
          var c,
              l = i.isSome(this.options.verticalOffset) ? this.options.verticalOffset.object3D : null;
          f && (c = s());
          var y = o ? function (r) {
            o(r) && d.intersectObject(r);
          } : function (r) {
            d.intersectObject(r);
          };
          if (r && r.length > 0) for (var h = 0, m = r; h < m.length; h++) {
            var p = m[h],
                v = p.getSpatialQueryAccelerator ? p.getSpatialQueryAccelerator() : void 0;
            if (v) l ? v.forEachAlongRayWithVerticalOffset(this._ray.origin, this._ray.direction, y, l) : v.forEachAlongRay(this._ray.origin, this._ray.direction, y), this.options.selectionMode && this.options.hud && v.forEachDegenerateObject(y);else for (var g = p.getObjects(), _ = 0, O = g; _ < O.length; _++) {
              var b = O[_];
              y(b);
            }
          }
          this.sortResults(), f && (this.performanceInfo.queryDuration = s() - c, this.performanceInfo.numObjectsTested = this._numObjectsTested);
        }, r.prototype.intersectObject = function (r) {
          var e = this;
          this._numObjectsTested++;
          var t = r.geometryRecords;
          if (t) for (var s, o = r.id, d = r.objectTransformation, f = i.isSome(this.options.verticalOffset) ? this.options.verticalOffset.object3D : null, u = this, l = 0, y = t; l < y.length; l++) {
            var h = y[l];
            !function (t) {
              var l = t.geometry,
                  y = t.material,
                  h = t.instanceParameters;
              if (h.hidden) return "continue";
              s = l.id, u.transform.setAndInvalidateLazyTransforms(d, t.getShaderTransformation()), a.vec3.transformMat4(u._rayStartPointTransformed, u._ray.origin, u.transform.inverse), a.vec3.transformMat4(u._rayEndPointTransformed, u._rayEndPoint, u.transform.inverse);
              var m = u.transform.transform;
              i.isSome(f) && (f.objectTransform = u.transform), y.intersect(l, h, u.transform.transform, u, u._rayStartPointTransformed, u._rayEndPointTransformed, function (t, i, a, d, f, u) {
                if (t >= 0) {
                  if (null != e.filterPredicate && !e.filterPredicate(e._ray.origin, e._rayEndPoint, t)) return;
                  if (f) return void ((null == e.results.hud.dist || t < e.results.hud.dist) && e.results.hud.set(r, o, t, i, n.mat4f64.IDENTITY, d, u, s, a));

                  var l = function l(e) {
                    return e.set(r, o, t, i, m, d, null, s, a);
                  };

                  if ((null == e.results.min.drapedLayerOrder || d >= e.results.min.drapedLayerOrder) && (null == e.results.min.dist || t < e.results.min.dist) && l(e.results.min), 0 !== e.options.store && (null == e.results.max.drapedLayerOrder || d < e.results.max.drapedLayerOrder) && (null == e.results.max.dist || t > e.results.max.dist) && l(e.results.max), 2 === e.options.store) {
                    var y = new c.IntersectorResult(e._ray);
                    l(y), e.results.all.push(y);
                  }
                }
              }, t.shaderTransformation);
            }(h);
          }
        }, r.prototype.sortResults = function () {
          this.results.all.sort(function (r, e) {
            return r.dist !== e.dist ? r.dist - e.dist : r.drapedLayerOrder !== e.drapedLayerOrder ? (void 0 !== r.drapedLayerOrder ? r.drapedLayerOrder : Number.MAX_VALUE) - (void 0 !== e.drapedLayerOrder ? e.drapedLayerOrder : Number.MAX_VALUE) : (void 0 !== e.drapedLayerGraphicOrder ? e.drapedLayerGraphicOrder : Number.MIN_VALUE) - (void 0 !== r.drapedLayerGraphicOrder ? r.drapedLayerGraphicOrder : Number.MIN_VALUE);
          });
        }, r.DEFAULT_TOLERANCE = u, r;
      }();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IntervalUtilities.js":
  /*!***********************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IntervalUtilities.js ***!
    \***********************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibIntervalUtilitiesJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports], __WEBPACK_AMD_DEFINE_RESULT__ = function (r, n) {
      return function () {
        function r() {}

        return r.copyIntervals = function (r) {
          for (var n = [], t = 0; t < r.length; t++) {
            var e = r[t];
            n.push([e[0], e[1]]);
          }

          return n;
        }, r.convertFaceToIndexRange = function (r, n) {
          for (var t = 0; t < r.length; t++) {
            var e = r[t];
            e[0] = e[0] * n, e[1] = e[1] * n + (n - 1);
          }
        }, r.sortIntervals = function (r) {
          return r.sort(function (r, n) {
            return r[0] === n[0] ? r[1] > n[1] ? 1 : r[1] < n[1] ? -1 : 0 : r[0] > n[0] ? 1 : r[0] < n[0] ? -1 : 0;
          });
        }, r.intersectIntervals = function (r, n) {
          if (r.length <= 0) return [];

          for (var t = [], e = 0; e < r.length; e++) {
            var u = r[e];

            if (!(u[1] < n[0] || u[0] > n[1])) {
              var o = [u[0], u[1]];
              o[0] < n[0] && (o[0] = n[0]), o[1] > n[1] && (o[1] = n[1]), t.push(o);
            }
          }

          return t;
        }, r.mergeIntervals = function (r) {
          if (r.length <= 0) return [];
          var n = [];
          r = this.sortIntervals(r), n.push(r[0]);

          for (var t = 1; t < r.length; t++) {
            var e = n[n.length - 1];
            e[1] + 1 < r[t][0] ? n.push(r[t]) : e[1] < r[t][1] && (e[1] = r[t][1], n.pop(), n.push(e));
          }

          return n;
        }, r.invertIntervals = function (r, n) {
          for (var t = [], e = 0, u = 0; u < r.length; u++) {
            var o = r[u];
            o[0] > e && t.push([e, o[0] - 1]), e = o[1] + 1;
          }

          return e <= n && t.push([e, n]), t;
        }, r.offsetIntervals = function (r, n) {
          for (var t = [], e = 0; e < r.length; e++) {
            var u = r[e];
            t.push([u[0] + n, u[1] + n]);
          }

          return t;
        }, r;
      }();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Layer.js":
  /*!***********************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Layer.js ***!
    \***********************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibLayerJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/extendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/extendsHelper.js"), __webpack_require__(
    /*! ../../../../core/arrayUtils */
    "./node_modules/arcgis-js-api/core/arrayUtils.js"), __webpack_require__(
    /*! ../../../../core/Evented */
    "./node_modules/arcgis-js-api/core/Evented.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ./IdGen */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IdGen.js"), __webpack_require__(
    /*! ./Octree */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Octree.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, i, r, n, o, a, s, c) {
      return function (t) {
        function e(i, r, n) {
          var o = t.call(this) || this;
          return o._parentStages = new Map(), o._children = new Set(), o.id = e._idGen.gen(i), o.apiLayerUid = n, o.name = i, r = r || {}, o.group = r.group || "", o.isVisible = null == r.isVisible || r.isVisible, o.isPickable = null == r.isPickable || r.isPickable, o.isSliceable = !1, o.translation = r.translation ? a.vec3f64.clone(r.translation) : a.vec3f64.create(), o._extent = [a.vec3f64.fromValues(0, 0, 0), a.vec3f64.fromValues(1e3, 1e3, 1e3)], o._extentDirty = !0, o;
        }

        return i(e, t), e.prototype.addParentStage = function (t) {
          if (!this._parentStages.has(t)) {
            var e = this.on("dirty", function (e) {
              t.notifyDirty(e.origin, e.dirtyType, e.subObject);
            });

            this._parentStages.set(t, e);
          }
        }, e.prototype.removeParentStage = function (t) {
          var e = this._parentStages.get(t);

          e && (e.remove(), this._parentStages["delete"](t)), this.invalidateSpatialQueryAccelerator();
        }, e.prototype.getName = function () {
          return this.name;
        }, e.prototype.getGroup = function () {
          return this.group;
        }, e.prototype.getTranslation = function () {
          return this.translation;
        }, e.prototype.getObjectIds = function () {
          return r.keysOfSet(this._children, function (t) {
            return t.id;
          });
        }, e.prototype.getObjects = function () {
          return r.keysOfSet(this._children);
        }, e.prototype.getExtent = function () {
          return this._updateExtent(), this._extent;
        }, e.prototype.addObject = function (t) {
          this._children.add(t), t.parentLayer = this, this.notifyDirty("layerObjectAdded", t), this._invalidateExtent(), this._octree && this._octree.add(t);
        }, e.prototype.hasObject = function (t) {
          return this._children.has(t);
        }, e.prototype.removeObject = function (t) {
          return !!this._children["delete"](t) && (t.parentLayer = null, this.notifyDirty("layerObjectRemoved", t), this._invalidateExtent(), this._octree && this._octree.remove(t), !0);
        }, e.prototype.notifyObjectBBChanged = function (t, e) {
          this._octree && this._octree.update(t, e);
        }, e.prototype.getCenter = function () {
          this._updateExtent();

          var t = a.vec3f64.create();
          return o.vec3.lerp(t, this._extent[0], this._extent[1], .5);
        }, e.prototype.getBSRadius = function () {
          return this._updateExtent(), .5 * o.vec3.distance(this._extent[0], this._extent[1]);
        }, e.prototype.getSpatialQueryAccelerator = function () {
          return !this._octree && this._children.size > 50 && this._createOctree(), this._octree;
        }, e.prototype.shaderTransformationChanged = function () {
          this.notifyDirty("shaderTransformationChanged", null);
        }, e.prototype.invalidateSpatialQueryAccelerator = function () {
          this._octree && (this._octree.destroy(), this._octree = null);
        }, e.prototype.notifyDirty = function (t, e, i, r) {
          i = i || 0;
          var n = r || this,
              o = {
            origin: n,
            dirtyType: t,
            subObject: e
          };
          this.emit("dirty", o);
        }, e.prototype._createOctree = function () {
          for (var t = this.getExtent(), e = 0, i = 0; i < 3; i++) e = Math.max(e, t[1][i] - t[0][i]);

          var n = a.vec3f64.create();
          o.vec3.lerp(n, t[0], t[1], .5), this._octree = new c(n, 1.2 * e, {
            getRadius: function getRadius(t) {
              return t.getBSRadius();
            },
            getCenter: function getCenter(t) {
              return t.getCenter();
            }
          }), this._octree.add(r.keysOfSet(this._children));
        }, e.prototype._invalidateExtent = function () {
          this._extentDirty = !0;
        }, e.prototype._updateExtent = function () {
          var t = this;

          if (this._extentDirty) {
            if (this._extentDirty = !1, 0 === this._children.size) return void (this._extent = [[0, 0, 0], [0, 0, 0]]);
            var e = null;
            this._children.forEach(function (i) {
              var r = i.getBBMin(),
                  n = i.getBBMax();
              if (e) for (var o = 0; o < 3; ++o) t._extent[0][o] = Math.min(t._extent[0][o], r[o]), t._extent[1][o] = Math.max(t._extent[1][o], n[o]);else e = [a.vec3f64.clone(r), a.vec3f64.clone(n)];
            }), this._extent = e;
          }
        }, e._idGen = new s.IdGen(), e;
      }(n);
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Material.js":
  /*!**************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Material.js ***!
    \**************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibMaterialJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ./IdGen */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IdGen.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r) {
      Object.defineProperty(t, "__esModule", {
        value: !0
      });

      var i = function () {
        function e(t) {
          this.supportsEdges = !1, this._parentStage = null, this._visible = !0, this._renderOccluded = 1, this._renderPriority = 0, this.id = e._idGen.gen(t);
        }

        return e.prototype.update = function (e) {
          return !1;
        }, Object.defineProperty(e.prototype, "parentStage", {
          get: function get() {
            return this._parentStage;
          },
          enumerable: !0,
          configurable: !0
        }), e.prototype.addParentStage = function (e) {
          this._parentStage = e;
        }, e.prototype.removeParentStage = function () {
          this._parentStage = null;
        }, Object.defineProperty(e.prototype, "visible", {
          get: function get() {
            return this._visible;
          },
          set: function set(e) {
            e !== this._visible && (this._visible = e, this.notifyDirty("matChanged"));
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "renderOccluded", {
          get: function get() {
            return this._renderOccluded;
          },
          set: function set(e) {
            e !== this._renderOccluded && (this._renderOccluded = e, this.notifyDirty("matChanged"));
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "renderPriority", {
          get: function get() {
            return this._renderPriority;
          },
          set: function set(e) {
            e !== this._renderPriority && (this._renderPriority = e, this.notifyDirty("matChanged"));
          },
          enumerable: !0,
          configurable: !0
        }), e.prototype.isVisibleInPass = function (e) {
          return !0;
        }, e.prototype.isVisible = function () {
          return this._visible;
        }, e.prototype.notifyDirty = function (e) {
          this.parentStage && this.parentStage.notifyDirty(this, e);
        }, e._idGen = new r.IdGen(), e;
      }();

      t.Material = i;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Object3D.js":
  /*!**************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Object3D.js ***!
    \**************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibObject3DJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/extendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/extendsHelper.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/mat4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/mat4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f64.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../support/mathUtils */
    "./node_modules/arcgis-js-api/views/3d/support/mathUtils.js"), __webpack_require__(
    /*! ./ComponentUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/ComponentUtils.js"), __webpack_require__(
    /*! ./GeometryRecord */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GeometryRecord.js"), __webpack_require__(
    /*! ./HighlightUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/HighlightUtils.js"), __webpack_require__(
    /*! ./IdGen */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IdGen.js"), __webpack_require__(
    /*! ./Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, i, o, n, r, s, a, l, m, h, c, p) {
      var d = p.assert,
          b = function () {
        function t(e) {
          void 0 === e && (e = {}), this._objectTransformation = n.mat4f64.create(), this._bvObjectSpace = new g(), this._bvWorldSpace = new g(), this._bvDirty = !0, this._hasVolatileTransformation = !1, this._allComponentsHiddenDirty = !0, this._allComponentsVisibleDirty = !0, this.id = t._idGen.gen(e.idHint), this.castShadow = null == e.castShadow || e.castShadow, this.metadata = e.metadata, this.metadata && this.metadata.isElevationSource && (this.metadata.lastValidElevationBB = new u()), this.objectTransformation = n.mat4f64.create(), this._initializeGeometryRecords(e.geometries, e.materials, e.transformations, e.origins);
        }

        return Object.defineProperty(t.prototype, "geometryRecords", {
          get: function get() {
            return this._geometryRecords;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "geometries", {
          get: function get() {
            return this._geometries;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "objectTransformation", {
          get: function get() {
            return this._objectTransformation;
          },
          set: function set(t) {
            o.mat4.copy(this._objectTransformation, t), this._invalidateBoundingVolume(), this._notifyDirty("objTransformation");
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype.dispose = function () {
          for (var t = 0, e = this._geometryRecords; t < e.length; t++) {
            var i = e[t];
            m.pool.release(i);
          }

          this._geometryRecords = null, this._geometries = null;
        }, t.prototype._initializeGeometryRecords = function (t, e, i, o) {
          if (!Array.isArray(t)) return this._geometryRecords = [], void (this._geometries = []);
          d(e.length === t.length, "Object3D: materials don't match geometries"), d(i.length === t.length, "Object3D: transformations don't match geometries"), this._geometryRecords = new Array(t.length), this._geometries = t.slice();

          for (var r = 0; r < t.length; r++) {
            var s = {};
            this._geometryRecords[r] = m.pool.acquire(t[r], e[r], n.mat4f64.clone(i[r]), s, o && o[r]);
          }

          this._hasVolatileTransformation = !1;
        }, Object.defineProperty(t.prototype, "parentLayer", {
          get: function get() {
            return this._parentLayer;
          },
          set: function set(t) {
            d(null == this._parentLayer || null == t, "Object3D can only be added to a single Layer"), this._parentLayer = t;
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype.getNumGeometryRecords = function () {
          return this._geometryRecords.length;
        }, t.prototype.findGeometryRecords = function (t) {
          for (var e = [], i = 0; i < this._geometries.length; i++) this._geometries[i] === t && e.push(this._geometryRecords[i]);

          return e;
        }, t.prototype.getGeometryRecord = function (t) {
          return d(t >= 0 && t < this._geometryRecords.length, "Object3d.getGeometryDataByIndex: index out of range"), this._geometryRecords[t];
        }, t.prototype.addGeometry = function (t, e, i, o, r, s) {
          i = i ? n.mat4f64.clone(i) : n.mat4f64.IDENTITY, this._geometries.push(t);
          var a = m.pool.acquire(t, e, i, o || {}, r, s);
          return this._geometryRecords.push(a), this._hasVolatileTransformation = this._geometryRecords.some(function (t) {
            return !!t.shaderTransformation;
          }), this._notifyDirty("objGeometryAdded", a), this._invalidateBoundingVolume(), this._allComponentsHiddenDirty = !0, this._allComponentsVisibleDirty = !0, a;
        }, t.prototype.removeGeometry = function (t) {
          var e = this._geometryRecords.splice(t, 1)[0];

          return m.pool.release(e), this._hasVolatileTransformation = this._geometryRecords.some(function (t) {
            return !!t.shaderTransformation;
          }), this._geometries.splice(t, 1), this._notifyDirty("objGeometryRemoved", e), this._invalidateBoundingVolume(), this._allComponentsHiddenDirty = !0, this._allComponentsVisibleDirty = !0, e;
        }, t.prototype.removeAllGeometries = function () {
          for (; this.getNumGeometryRecords() > 0;) this.removeGeometry(0);
        }, t.prototype.geometryVertexAttrsUpdated = function (t) {
          this._notifyDirty("vertexAttrsUpdated", this._geometryRecords[t]), this._invalidateBoundingVolume();
        }, t.prototype.areAllComponentsHidden = function () {
          if (this._allComponentsHiddenDirty) {
            this._allComponentsHiddenDirty = !1, this._allComponentsHidden = !0;

            for (var t = 0, e = this._geometryRecords; t < e.length; t++) {
              var i = e[t],
                  o = i.instanceParameters.componentVisibilities,
                  n = i.geometry.data.componentOffsets;

              if (!l.isAllHidden(o, n)) {
                this._allComponentsHidden = !1;
                break;
              }
            }
          }

          return this._allComponentsHidden;
        }, t.prototype.areAllComponentsVisible = function () {
          if (this._allComponentsVisibleDirty) {
            this._allComponentsVisibleDirty = !1, this._allComponentsVisible = !0;

            for (var t = 0, e = this._geometryRecords; t < e.length; t++) {
              var i = e[t],
                  o = i.instanceParameters.componentVisibilities,
                  n = i.geometry.data.componentOffsets;

              if (!l.isAllVisible(o, n)) {
                this._allComponentsVisible = !1;
                break;
              }
            }
          }

          return this._allComponentsVisible;
        }, t.prototype.hasComponents = function () {
          for (var t = !1, e = 0; e < this._geometries.length; e++) {
            var i = this._geometries[e];
            if (t = l.hasComponents(i.data.componentOffsets)) break;
          }

          return t;
        }, t.prototype.setComponentVisibility = function (t, e, i) {
          var o = t.geometry,
              n = t.instanceParameters.componentVisibilities,
              r = o.data.componentOffsets,
              s = l.updateVisibility(n, r, e, i);
          t.instanceParameters.componentVisibilities = s, this._notifyDirty("visibilityChanged", t), this._allComponentsHiddenDirty = !0, this._allComponentsVisibleDirty = !0;
        }, t.prototype.setHidden = function (t, e) {
          t.instanceParameters.hidden = !!e, this._notifyDirty("visibilityChanged", t);
        }, t.prototype.isHidden = function (t) {
          return !!t.instanceParameters.hidden;
        }, t.prototype.getComponentVisibility = function (t, e) {
          var i = t.instanceParameters.componentVisibilities;
          return l.getVisibility(i, e);
        }, t.prototype.hideAllComponents = function () {
          if (this._allComponentsHiddenDirty || !this._allComponentsHidden) {
            for (var t = 0, e = this._geometryRecords; t < e.length; t++) {
              var i = e[t],
                  o = i.instanceParameters.componentVisibilities,
                  n = l.hideAllComponents(o);
              i.instanceParameters.componentVisibilities = n;
            }

            this._notifyDirty("visibilityChanged"), this._allComponentsHiddenDirty = !1, this._allComponentsVisibleDirty = !1, this._allComponentsHidden = !0, this._allComponentsVisible = !1;
          }
        }, t.prototype.unhideAllComponents = function () {
          if (this._allComponentsVisibleDirty || !this._allComponentsVisible) {
            for (var t = 0, e = this._geometryRecords; t < e.length; t++) {
              var i = e[t],
                  o = i.instanceParameters.componentVisibilities,
                  n = l.unhideAllComponents(o);
              i.instanceParameters.componentVisibilities = n;
            }

            this._notifyDirty("visibilityChanged"), this._allComponentsHiddenDirty = !1, this._allComponentsVisibleDirty = !1, this._allComponentsHidden = !1, this._allComponentsVisible = !0;
          }
        }, t.prototype._setComponentHighlight = function (t, e, i, o) {
          var n = t.instanceParameters.componentHighlights,
              r = l.addHighlight(n, e, i, o);
          t.instanceParameters.componentHighlights = r;
        }, t.prototype.setComponentHighlight = function (t, e, i) {
          var o = h.generateHighlightId();
          return this._setComponentHighlight(t, e, i, o), this._notifyDirty("componentHighlightChanged"), o;
        }, t.prototype.highlightAllComponents = function (t) {
          for (var e = h.generateHighlightId(), i = 0, o = this._geometryRecords; i < o.length; i++) {
            var n = o[i];

            this._setComponentHighlight(n, null, t, e);
          }

          return this._notifyDirty("componentHighlightChanged"), e;
        }, t.prototype.removeHighlights = function (t) {
          for (var e = 0, i = this._geometryRecords; e < i.length; e++) {
            var o = i[e],
                n = o.instanceParameters,
                r = n.componentHighlights,
                s = l.removeHighlight(r, t);
            n.componentHighlights = s;
          }

          this._notifyDirty("componentHighlightChanged");
        }, t.prototype.getComponentFromTriangleNr = function (t, e) {
          d(t >= 0 && t < this._geometryRecords.length, "Object3d.getComponentFromTriangleNr: index out of range");
          var i = this._geometryRecords[t],
              o = i.geometry.data.componentOffsets;
          return l.componentFind(o, 3 * e);
        }, t.prototype.setGeometryTransformation = function (t, e) {
          d(t >= 0 && t < this._geometryRecords.length, "Object3d.setGeometryTransformation: index out of range");
          var i = this._geometryRecords[t];
          m.pool.release(i);
          var o = m.pool.acquire(i.geometry, i.material, n.mat4f64.clone(e), i.instanceParameters);
          this._geometryRecords[t] = o, this._notifyDirty("objGeometryReplaced", [i, o]), this._invalidateBoundingVolume();
        }, t.prototype.getCombinedStaticTransformation = function (t, e) {
          return e = e || n.mat4f64.create(), o.mat4.multiply(e, this.objectTransformation, t.getStaticTransformation()), e;
        }, t.prototype.getCombinedShaderTransformation = function (t, e) {
          return e = e || n.mat4f64.create(), o.mat4.multiply(e, this.objectTransformation, t.getShaderTransformation()), e;
        }, t.prototype.hasVolativeTransformation = function () {
          return this._hasVolatileTransformation;
        }, t.prototype.getMetadata = function () {
          return this.metadata;
        }, t.prototype.getBBMin = function (t) {
          return this._validateBoundingVolume(), t ? this._bvObjectSpace.bbMin : this._bvWorldSpace.bbMin;
        }, t.prototype.getBBMax = function (t) {
          return this._validateBoundingVolume(), t ? this._bvObjectSpace.bbMax : this._bvWorldSpace.bbMax;
        }, t.prototype.getCenter = function (t) {
          return this._validateBoundingVolume(), t ? this._bvObjectSpace.center : this._bvWorldSpace.center;
        }, t.prototype.getBSRadius = function (t) {
          return this._validateBoundingVolume(), t ? this._bvObjectSpace.bsRadius : this._bvWorldSpace.bsRadius;
        }, t.prototype._validateBoundingVolume = function () {
          if (this._bvDirty || this._hasVolatileTransformation) {
            this._bvObjectSpace.init(), this._bvWorldSpace.init();

            for (var t = 0; t < this._geometryRecords.length; ++t) {
              var e = this._geometries[t],
                  i = this._geometryRecords[t],
                  o = e.boundingInfo;
              this._calculateTransformedBoundingVolume(o, this._bvObjectSpace, i.getShaderTransformation()), this._calculateTransformedBoundingVolume(o, this._bvWorldSpace, this.getCombinedShaderTransformation(i));
            }

            r.vec3.lerp(this._bvObjectSpace.center, this._bvObjectSpace.bbMin, this._bvObjectSpace.bbMax, .5), r.vec3.lerp(this._bvWorldSpace.center, this._bvWorldSpace.bbMin, this._bvWorldSpace.bbMax, .5);

            for (var n = s.vec3f64.create(), l = s.vec3f64.create(), m = a.maxScale(this.objectTransformation), t = 0; t < this._geometryRecords.length; ++t) {
              var e = this._geometries[t],
                  h = this._geometryRecords[t].getShaderTransformation(),
                  c = a.maxScale(h),
                  o = e.boundingInfo;

              r.vec3.transformMat4(n, o.getCenter(), h);
              var p = r.vec3.distance(n, this._bvObjectSpace.center),
                  d = o.getBSRadius() * c;
              this._bvObjectSpace.bsRadius = Math.max(this._bvObjectSpace.bsRadius, p + d), r.vec3.transformMat4(l, n, this.objectTransformation);
              var b = r.vec3.distance(l, this._bvWorldSpace.center),
                  u = d * m;
              this._bvWorldSpace.bsRadius = Math.max(this._bvWorldSpace.bsRadius, b + u);
            }

            this._bvDirty = !1;
          }
        }, t.prototype._calculateTransformedBoundingVolume = function (t, e, i) {
          var o = t.getBBMin(),
              n = t.getBBMax(),
              a = s.vec3f64.clone(o),
              l = s.vec3f64.clone(n);
          r.vec3.transformMat4(a, a, i), r.vec3.transformMat4(l, l, i);

          for (var m = 0; m < 3; ++m) e.bbMin[m] = Math.min(e.bbMin[m], a[m], l[m]), e.bbMax[m] = Math.max(e.bbMax[m], a[m], l[m]);

          for (var m = 0; m < 3; ++m) {
            r.vec3.copy(a, o), r.vec3.copy(l, n), a[m] = n[m], l[m] = o[m], r.vec3.transformMat4(a, a, i), r.vec3.transformMat4(l, l, i);

            for (var h = 0; h < 3; ++h) e.bbMin[h] = Math.min(e.bbMin[h], a[h], l[h]), e.bbMax[h] = Math.max(e.bbMax[h], a[h], l[h]);
          }
        }, t.prototype._invalidateBoundingVolume = function () {
          this._bvDirty = !0, this._parentLayer && this._parentLayer.notifyObjectBBChanged(this, {
            center: this._bvWorldSpace.center,
            radius: this._bvWorldSpace.bsRadius
          });
        }, t.prototype._notifyDirty = function (t, e, i, o) {
          if (this._parentLayer) {
            i = i || 1;
            var n = o || this;

            this._parentLayer.notifyDirty(t, e, i, n);
          }
        }, Object.defineProperty(t.prototype, "test", {
          get: function get() {
            var t = this;
            return {
              hasGeometry: function hasGeometry(e) {
                return t._geometries.indexOf(e) > -1;
              },
              getGeometryIndex: function getGeometryIndex(e) {
                return t._geometries.indexOf(e);
              }
            };
          },
          enumerable: !0,
          configurable: !0
        }), t._idGen = new c.IdGen(), t;
      }(),
          u = function () {
        function t() {
          this.bbMin = s.vec3f64.fromValues(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE), this.bbMax = s.vec3f64.fromValues(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
        }

        return t.prototype.isEmpty = function () {
          return this.bbMax[0] < this.bbMin[0] && this.bbMax[1] < this.bbMin[1] && this.bbMax[2] < this.bbMin[2];
        }, t;
      }(),
          g = function (t) {
        function e() {
          var e = t.call(this) || this;
          return e.center = s.vec3f64.create(), e.bsRadius = 0, e;
        }

        return i(e, t), e.prototype.init = function () {
          r.vec3.set(this.bbMin, Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE), r.vec3.set(this.bbMax, -Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE), r.vec3.set(this.center, 0, 0, 0), this.bsRadius = 0;
        }, e.prototype.getCenter = function () {
          return this.center;
        }, e.prototype.getBSRadius = function () {
          return this.bsRadius;
        }, e;
      }(u);

      return b;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Octree.js":
  /*!************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Octree.js ***!
    \************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibOctreeJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/ObjectPool */
    "./node_modules/arcgis-js-api/core/ObjectPool.js"), __webpack_require__(
    /*! ../../../../core/PooledArray */
    "./node_modules/arcgis-js-api/core/PooledArray.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../support/geometryUtils */
    "./node_modules/arcgis-js-api/views/3d/support/geometryUtils.js"), __webpack_require__(
    /*! ./Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, n, i, o, a, s) {
      function c(e, t, r) {
        e[0] = Math.min(e[0], t[0] - r), e[1] = Math.min(e[1], t[1] - r), e[2] = Math.min(e[2], t[2] - r);
      }

      function u(e, t, r) {
        e[0] = Math.max(e[0], t[0] + r), e[1] = Math.max(e[1], t[1] + r), e[2] = Math.max(e[2], t[2] + r);
      }

      function h(e, t, r) {
        return r = r || e, r[0] = e[0] + t, r[1] = e[1] + t, r[2] = e[2] + t, r;
      }

      function f(e, t, r) {
        return !a.frustum.intersectsSphere(r.planes, a.sphere.wrap(t, e));
      }

      function d(e, t, r) {
        if (!V.length) for (var n = 0; n < 8; ++n) V.push({
          index: 0,
          distance: 0
        });

        for (var n = 0; n < 8; ++n) {
          var i = v[n];
          V.data[n].index = n, V.data[n].distance = p(e, t, i);
        }

        V.sort(function (e, t) {
          return e.distance - t.distance;
        }), r.clear();

        for (var n = 0; n < 8; ++n) r.push(V.data[n].index);
      }

      function l(e, t) {
        for (var r = 1 / 0, n = null, i = 0; i < 8; ++i) {
          var o = p(e, t, g[i]);
          o < r && (r = o, n = g[i]);
        }

        return n;
      }

      function p(e, t, r) {
        return t * (e[0] * r[0] + e[1] * r[1] + e[2] * r[2]);
      }

      var _ = function () {
        function e(e, t, r, n) {
          this._maximumObjectsPerNode = 10, this._maximumDepth = 20, this._degenerateObjects = new Set(), this._objectCount = 0, this._objectToBoundingSphere = r, n && (void 0 !== n.maximumObjectsPerNode && (this._maximumObjectsPerNode = n.maximumObjectsPerNode), void 0 !== n.maximumDepth && (this._maximumDepth = n.maximumDepth)), isNaN(e[0]) || isNaN(e[1]) || isNaN(e[2]) || isNaN(t) ? this._root = new m(null, o.vec3f64.fromValues(0, 0, 0), .5) : this._root = new m(null, e, t / 2);
        }

        return Object.defineProperty(e.prototype, "center", {
          get: function get() {
            return this._root.center;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "size", {
          get: function get() {
            return 2 * this._root.halfSize;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "root", {
          get: function get() {
            return this._root.node;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "maximumObjectsPerNode", {
          get: function get() {
            return this._maximumObjectsPerNode;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "maximumDepth", {
          get: function get() {
            return this._maximumDepth;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "objectCount", {
          get: function get() {
            return this._objectCount;
          },
          enumerable: !0,
          configurable: !0
        }), e.prototype.destroy = function () {
          this._degenerateObjects.clear(), this._root = null, m.clearPool(), y = [null], N.prune(), V.prune(), D.prune();
        }, e.prototype.add = function (e, t) {
          var r = this._objectOrObjectsArray(e);

          t = null == t ? r.length : t, this._objectCount += t, this._grow(r, t);

          for (var n = m.acquire(), i = 0; i < t; i++) {
            var o = r[i];
            n.init(this._root), this._isDegenerate(o) ? this._degenerateObjects.add(o) : this._add(o, n);
          }

          m.release(n);
        }, e.prototype.remove = function (e, t) {
          var r = this._objectOrObjectsArray(e);

          this._objectCount -= r.length;

          for (var n = m.acquire(), i = 0; i < r.length; i++) {
            var o = r[i],
                a = t || this._boundingSphereFromObject(o, E);

            this._isValidRadius(a.radius) ? (n.init(this._root), this._remove(o, a, n)) : this._degenerateObjects["delete"](o);
          }

          m.release(n), this._shrink();
        }, e.prototype.update = function (e, t) {
          !this._isValidRadius(t.radius) && this._isDegenerate(e) || (this.remove(e, t), this.add(e));
        }, e.prototype.forEachAlongRay = function (e, t, r) {
          var n = this,
              i = a.ray.wrap(e, t);

          this._forEachNode(this._root, function (e) {
            if (!n._intersectsNode(i, e)) return !1;
            var t = e.node;
            return t.terminals.forEach(function (e) {
              n._intersectsObject(i, e) && r(e);
            }), null !== t.residents && t.residents.forEach(function (e) {
              n._intersectsObject(i, e) && r(e);
            }), !0;
          });
        }, e.prototype.forEachAlongRayWithVerticalOffset = function (e, t, r, n) {
          var i = this,
              o = a.ray.wrap(e, t);

          this._forEachNode(this._root, function (e) {
            if (!i._intersectsNodeWithOffset(o, e, n)) return !1;
            var t = e.node;
            return t.terminals.forEach(function (e) {
              i._intersectsObjectWithOffset(o, e, n) && r(e);
            }), null !== t.residents && t.residents.forEach(function (e) {
              i._intersectsObjectWithOffset(o, e, n) && r(e);
            }), !0;
          });
        }, e.prototype.forEach = function (e) {
          this._forEachNode(this._root, function (t) {
            var r = t.node;
            return r.terminals.forEach(e), null !== r.residents && r.residents.forEach(e), !0;
          }), this._degenerateObjects.forEach(e);
        }, e.prototype.forEachDegenerateObject = function (e) {
          this._degenerateObjects.forEach(e);
        }, e.prototype.findClosest = function (e, t, r, n, i) {
          return this._findClosest(e, "front-to-back" === t ? 1 : -1, r, n, i);
        }, e.prototype.forEachInDepthRange = function (e, t, r, n, i, o, a, s) {
          this._forEachInDepthRange(e, t, "front-to-back" === r ? 1 : -1, n, i, o, a, s);
        }, e.prototype.forEachNode = function (e) {
          this._forEachNode(this._root, function (t) {
            return e(t.node, t.center, 2 * t.halfSize);
          });
        }, e.prototype._intersectsNode = function (e, t) {
          return h(t.center, 2 * -t.halfSize, O), h(t.center, 2 * t.halfSize, x), s.rayBoxTest(e.origin, e.direction, O, x);
        }, e.prototype._intersectsNodeWithOffset = function (e, t, r) {
          return h(t.center, 2 * -t.halfSize, O), h(t.center, 2 * t.halfSize, x), r.applyToMinMax(O, x), s.rayBoxTest(e.origin, e.direction, O, x);
        }, e.prototype._intersectsObject = function (e, t) {
          var r = this._objectToBoundingSphere.getRadius(t);

          return !(r > 0) || a.sphere.intersectsRay(a.sphere.wrap(r, this._objectToBoundingSphere.getCenter(t)), e);
        }, e.prototype._intersectsObjectWithOffset = function (e, t, r) {
          var n = this._objectToBoundingSphere.getRadius(t);

          return !(n > 0) || a.sphere.intersectsRay(r.applyToBoundingSphere(n, this._objectToBoundingSphere.getCenter(t)), e);
        }, e.prototype._forEachNode = function (e, t) {
          for (var r = m.acquire().init(e), n = [r]; 0 !== n.length;) {
            if (r = n.pop(), t(r) && !r.isLeaf()) for (var i = 0; i < r.node.children.length; i++) {
              var o = r.node.children[i];
              o && n.push(m.acquire().init(r).advance(i));
            }
            m.release(r);
          }
        }, e.prototype._forEachNodeDepthOrdered = function (e, t, r, n) {
          void 0 === n && (n = 1);
          var i = m.acquire().init(e),
              o = [i];

          for (d(r, n, D); 0 !== o.length;) {
            if (i = o.pop(), t(i) && !i.isLeaf()) for (var a = 7; a >= 0; --a) {
              var s = D.data[a];

              if (!(s >= i.node.children.length)) {
                var c = i.node.children[s];
                c && o.push(m.acquire().init(i).advance(s));
              }
            }
            m.release(i);
          }
        }, e.prototype._findClosest = function (e, t, r, n, o) {
          var a = this,
              s = 1 / 0,
              c = 1 / 0,
              u = null,
              h = l(e, t),
              d = 0,
              _ = function _(i) {
            if (++d, !n || n(i)) {
              var o = a._objectToBoundingSphere.getCenter(i),
                  h = a._objectToBoundingSphere.getRadius(i);

              if (!r || !f(o, h, r)) {
                var l = p(e, t, o),
                    _ = l - h,
                    m = l + h;

                _ < s && (s = _, c = m, u = i);
              }
            }
          };

          return this._forEachNodeDepthOrdered(this._root, function (n) {
            if (null != o && d >= o) return !1;
            if (r && f(n.center, n.halfSize * b, r)) return !1;
            if (i.vec3.scale(S, h, n.halfSize), i.vec3.add(S, S, n.center), p(e, t, S) > c) return !1;
            var a = n.node;
            return a.terminals.forEach(function (e) {
              _(e);
            }), null !== a.residents && a.residents.forEach(function (e) {
              _(e);
            }), !0;
          }, e, t), u;
        }, e.prototype._forEachInDepthRange = function (e, t, r, n, o, a, s, c) {
          var u = this,
              h = -1 / 0,
              d = 1 / 0,
              _ = {
            setRange: function setRange(e) {
              1 === r ? (h = Math.max(h, e.near), d = Math.min(d, e.far)) : (h = Math.max(h, -e.far), d = Math.min(d, -e.near));
            }
          };

          _.setRange(n);

          var m = p(t, r, e),
              v = l(t, r),
              g = l(t, -1 * r),
              y = 0,
              j = function j(e) {
            if (++y, !s || s(e)) {
              var n = u._objectToBoundingSphere.getCenter(e),
                  i = u._objectToBoundingSphere.getRadius(e),
                  c = p(t, r, n) - m,
                  l = c - i,
                  v = c + i;

              l > d || v < h || a && f(n, i, a) || o(e, _);
            }
          };

          this._forEachNodeDepthOrdered(this._root, function (e) {
            if (null != c && y >= c) return !1;
            if (a && f(e.center, e.halfSize * b, a)) return !1;
            if (i.vec3.scale(S, v, e.halfSize), i.vec3.add(S, S, e.center), p(t, r, S) - m > d) return !1;
            if (i.vec3.scale(S, g, e.halfSize), i.vec3.add(S, S, e.center), p(t, r, S) - m < h) return !1;
            var n = e.node;
            return n.terminals.forEach(function (e) {
              j(e);
            }), null !== n.residents && n.residents.forEach(function (e) {
              j(e);
            }), !0;
          }, t, r);
        }, e.prototype._objectOrObjectsArray = function (e) {
          return Array.isArray(e) ? e : (y[0] = e, y);
        }, e.prototype._remove = function (e, t, r) {
          N.clear();
          var n = r.advanceTo(t, function (e, t) {
            N.push(e.node), N.push(t);
          }),
              i = n ? r.node.terminals : r.node.residents;
          if (i.removeUnordered(e), 0 === i.length) for (var o = N.length - 2; o >= 0; o -= 2) {
            var a = N.data[o],
                s = N.data[o + 1];
            if (!this._purge(a, s)) break;
          }
        }, e.prototype._nodeIsEmpty = function (e) {
          if (0 !== e.terminals.length) return !1;
          if (null !== e.residents) return 0 === e.residents.length;

          for (var t = 0; t < e.children.length; t++) if (e.children[t]) return !1;

          return !0;
        }, e.prototype._purge = function (e, t) {
          return t >= 0 && (e.children[t] = null), !!this._nodeIsEmpty(e) && (null === e.residents && (e.residents = new n({
            shrink: !0
          })), !0);
        }, e.prototype._add = function (e, t) {
          t.advanceTo(this._boundingSphereFromObject(e, E)) ? t.node.terminals.push(e) : (t.node.residents.push(e), t.node.residents.length > this._maximumObjectsPerNode && t.depth < this._maximumDepth && this._split(t));
        }, e.prototype._split = function (e) {
          var t = e.node.residents;
          e.node.residents = null;

          for (var r = 0; r < t.length; r++) {
            var n = m.acquire().init(e);
            this._add(t.data[r], n), m.release(n);
          }
        }, e.prototype._grow = function (e, t) {
          var r = this;

          if (0 !== t) {
            var n = this._boundingSphereFromObjects(e, t, function (e, t) {
              return r._boundingSphereFromObject(e, t);
            }, M);

            if (this._isValidRadius(n.radius) && !this._fitsInsideTree(n)) if (this._nodeIsEmpty(this._root.node)) i.vec3.copy(this._root.center, n.center), this._root.halfSize = 1.25 * n.radius;else {
              var o = m.acquire();
              this._rootBoundsForRootAsSubNode(n, o), this._placingRootViolatesMaxDepth(o) ? this._rebuildTree(n, o) : this._growRootAsSubNode(o), m.release(o);
            }
          }
        }, e.prototype._rebuildTree = function (e, t) {
          var r = this;
          i.vec3.copy(z.center, t.center), z.radius = t.halfSize;

          var n = this._boundingSphereFromObjects([e, z], 2, function (e) {
            return e;
          }, R),
              o = m.acquire().init(this._root);

          this._root.initFrom(null, n.center, 1.25 * n.radius), this._forEachNode(o, function (e) {
            return r.add(e.node.terminals.data, e.node.terminals.length), null !== e.node.residents && r.add(e.node.residents.data, e.node.residents.length), !0;
          }), m.release(o);
        }, e.prototype._placingRootViolatesMaxDepth = function (e) {
          var t = 0;
          return this._forEachNode(this._root, function (e) {
            return t = Math.max(t, e.depth), !0;
          }), t + Math.log(e.halfSize / this._root.halfSize) * Math.LOG2E > this._maximumDepth;
        }, e.prototype._rootBoundsForRootAsSubNode = function (e, t) {
          for (var r = e.radius, n = e.center, i = -1 / 0, o = this._root.center, a = this._root.halfSize, s = 0; s < 3; s++) {
            var c = o[s] - a - (n[s] - r),
                u = n[s] + r - (o[s] + a),
                h = Math.max(0, Math.ceil(c / (2 * a))),
                f = Math.max(0, Math.ceil(u / (2 * a))) + 1,
                d = Math.pow(2, Math.ceil(Math.log(h + f) * Math.LOG2E));
            i = Math.max(i, d), T[s].min = h, T[s].max = f;
          }

          for (var s = 0; s < 3; s++) {
            var h = T[s].min,
                f = T[s].max,
                l = (i - (h + f)) / 2;
            h += Math.ceil(l), f += Math.floor(l);
            var p = o[s] - a - h * a * 2;
            j[s] = p + (f + h) * a;
          }

          return t.initFrom(null, j, i * a, 0);
        }, e.prototype._growRootAsSubNode = function (e) {
          var t = this._root.node;
          i.vec3.copy(M.center, this._root.center), M.radius = this._root.halfSize, this._root.init(e), e.advanceTo(M, null, !0), e.node.children = t.children, e.node.residents = t.residents, e.node.terminals = t.terminals;
        }, e.prototype._shrink = function () {
          for (;;) {
            var e = this._findShrinkIndex();

            if (-1 === e) break;
            this._root.advance(e), this._root.depth = 0;
          }
        }, e.prototype._findShrinkIndex = function () {
          if (0 !== this._root.node.terminals.length || this._root.isLeaf()) return -1;

          for (var e = null, t = this._root.node.children, r = 0, n = 0; n < t.length && null == e;) r = n++, e = t[r];

          for (; n < t.length;) if (t[n++]) return -1;

          return r;
        }, e.prototype._isDegenerate = function (e) {
          var t = this._objectToBoundingSphere.getRadius(e);

          return !this._isValidRadius(t);
        }, e.prototype._isValidRadius = function (e) {
          return !isNaN(e) && e !== -1 / 0 && e !== 1 / 0 && e > 0;
        }, e.prototype._fitsInsideTree = function (e) {
          var t = this._root.center,
              r = this._root.halfSize,
              n = e.center;
          return e.radius <= r && n[0] >= t[0] - r && n[0] <= t[0] + r && n[1] >= t[1] - r && n[1] <= t[1] + r && n[2] >= t[2] - r && n[2] <= t[2] + r;
        }, e.prototype._boundingSphereFromObject = function (e, t) {
          return i.vec3.copy(t.center, this._objectToBoundingSphere.getCenter(e)), t.radius = this._objectToBoundingSphere.getRadius(e), t;
        }, e.prototype._boundingSphereFromObjects = function (e, t, r, n) {
          if (1 === t) {
            var o = r(e[0], M);
            i.vec3.copy(n.center, o.center), n.radius = o.radius;
          } else {
            O[0] = 1 / 0, O[1] = 1 / 0, O[2] = 1 / 0, x[0] = -1 / 0, x[1] = -1 / 0, x[2] = -1 / 0;

            for (var a = 0; a < t; a++) {
              var o = r(e[a], M);
              this._isValidRadius(o.radius) && (c(O, o.center, o.radius), u(x, o.center, o.radius));
            }

            i.vec3.lerp(n.center, O, x, .5), n.radius = Math.max(x[0] - O[0], x[1] - O[1], x[2] - O[2]) / 2;
          }

          return n;
        }, e;
      }(),
          m = function () {
        function e(e, t, r) {
          void 0 === r && (r = 0), this.center = o.vec3f64.create(), this.initFrom(e, t, r, 0);
        }

        return e.prototype.init = function (e) {
          return this.initFrom(e.node, e.center, e.halfSize, e.depth);
        }, e.prototype.initFrom = function (t, r, n, o) {
          return void 0 === t && (t = null), void 0 === n && (n = this.halfSize), void 0 === o && (o = this.depth), this.node = t || e.createEmptyNode(), r && i.vec3.copy(this.center, r), this.halfSize = n, this.depth = o, this;
        }, e.prototype.advance = function (t) {
          var r = this.node.children[t];
          r || (r = e.createEmptyNode(), this.node.children[t] = r), this.node = r, this.halfSize /= 2, this.depth++;
          var n = v[t];
          return this.center[0] += n[0] * this.halfSize, this.center[1] += n[1] * this.halfSize, this.center[2] += n[2] * this.halfSize, this;
        }, e.prototype.advanceTo = function (e, t, r) {
          for (void 0 === r && (r = !1);;) {
            if (this.isTerminalFor(e)) return t && t(this, -1), !0;
            if (this.isLeaf() && !r) return t && t(this, -1), !1;
            this.isLeaf() && (this.node.residents = null);

            var n = this._childIndex(e);

            t && t(this, n), this.advance(n);
          }
        }, e.prototype.isLeaf = function () {
          return null != this.node.residents;
        }, e.prototype.isTerminalFor = function (e) {
          return e.radius > this.halfSize / 2;
        }, e.prototype._childIndex = function (e) {
          for (var t = e.center, r = this.center, n = 0, i = 0; i < 3; i++) r[i] < t[i] && (n |= 1 << i);

          return n;
        }, e.createEmptyNode = function () {
          return {
            children: [null, null, null, null, null, null, null, null],
            terminals: new n({
              shrink: !0
            }),
            residents: new n({
              shrink: !0
            })
          };
        }, e.acquire = function () {
          return e._pool.acquire();
        }, e.release = function (t) {
          e._pool.release(t);
        }, e.clearPool = function () {
          e._pool.prune();
        }, e._pool = new r(e), e;
      }(),
          v = [o.vec3f64.fromValues(-1, -1, -1), o.vec3f64.fromValues(1, -1, -1), o.vec3f64.fromValues(-1, 1, -1), o.vec3f64.fromValues(1, 1, -1), o.vec3f64.fromValues(-1, -1, 1), o.vec3f64.fromValues(1, -1, 1), o.vec3f64.fromValues(-1, 1, 1), o.vec3f64.fromValues(1, 1, 1)],
          g = [o.vec3f64.fromValues(-1, -1, -1), o.vec3f64.fromValues(-1, -1, 1), o.vec3f64.fromValues(-1, 1, -1), o.vec3f64.fromValues(-1, 1, 1), o.vec3f64.fromValues(1, -1, -1), o.vec3f64.fromValues(1, -1, 1), o.vec3f64.fromValues(1, 1, -1), o.vec3f64.fromValues(1, 1, 1)],
          b = Math.sqrt(3),
          y = [null],
          j = o.vec3f64.create(),
          S = o.vec3f64.create(),
          O = o.vec3f64.create(),
          x = o.vec3f64.create(),
          N = new n(),
          E = {
        center: o.vec3f64.create(),
        radius: 0
      },
          M = {
        center: o.vec3f64.create(),
        radius: 0
      },
          z = {
        center: o.vec3f64.create(),
        radius: 0
      },
          R = {
        center: o.vec3f64.create(),
        radius: 0
      },
          T = [{
        min: 0,
        max: 0
      }, {
        min: 0,
        max: 0
      }, {
        min: 0,
        max: 0
      }],
          V = new n(),
          D = new n();

      return _;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/ResizableFloat32Array.js":
  /*!***************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/ResizableFloat32Array.js ***!
    \***************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibResizableFloat32ArrayJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/mathUtils */
    "./node_modules/arcgis-js-api/core/mathUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (r, e, t) {
      Object.defineProperty(e, "__esModule", {
        value: !0
      });

      var a = function () {
        function r(r) {
          null == r ? r = 16 : r < 65536 && (r = t.nextHighestPowerOfTwo(r)), this._array = new Float32Array(r), this._size = 0;
        }

        return r.prototype.resize = function (r, e) {
          if (this._size = r, this._size > this._array.length) {
            for (var t = this._array.length || 1; t < this._size;) t *= 2;

            var a = new Float32Array(t);
            return e && a.set(this._array), this._array = a, !0;
          }

          var i = 2 * this._size;

          if (i <= this._array.length) {
            for (var t = this._array.length; t >= i;) t = Math.floor(t / 2);

            var a = new Float32Array(t);
            return e && a.set(this._array.subarray(0, t)), this._array = a, !0;
          }

          return !1;
        }, r.prototype.append = function (r) {
          var e = this._size;
          this.resize(this._size + r.length, !0), this._array.set(r, e);
        }, r.prototype.erase = function (r, e) {
          for (var t = r; t < e; ++t) this._array[t] = 0;
        }, Object.defineProperty(r.prototype, "array", {
          get: function get() {
            return this._array;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(r.prototype, "size", {
          get: function get() {
            return this._size;
          },
          enumerable: !0,
          configurable: !0
        }), r;
      }();

      e.ResizableFloat32Array = a;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/WebGLDriverTest.js":
  /*!*********************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/WebGLDriverTest.js ***!
    \*********************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibWebGLDriverTestJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../../webgl */
    "./node_modules/arcgis-js-api/views/webgl.js"), __webpack_require__(
    /*! ./doublePrecisionUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/doublePrecisionUtils.js"), __webpack_require__(
    /*! ./Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js"), __webpack_require__(
    /*! ../shaders/sources/shaderRepository */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/sources/shaderRepository.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, o, t, r, i, a, s) {
      function u(e) {
        return (o.isNone(f) || f.context !== e) && (f = new c(e)), f;
      }

      function l(e, n) {
        var o = new r.FramebufferObject(e, {
          colorTarget: 0,
          depthStencilTarget: 0
        }, {
          target: 3553,
          wrapMode: 33071,
          pixelFormat: 6408,
          dataType: 5121,
          samplingMode: 9728,
          width: 1,
          height: 1
        }),
            u = r.BufferObject.createVertex(e, 35044, new Uint16Array([0, 0, 1, 0, 0, 1, 1, 1])),
            l = new r.VertexArrayObject(e, {
          a_pos: 0
        }, {
          geometry: [{
            name: "a_pos",
            count: 2,
            type: 5123,
            offset: 0,
            stride: 4,
            normalized: !1
          }]
        }, {
          geometry: u
        }),
            c = t.vec3f64.fromValues(5633261.287538229, 2626832.878767164, 1434988.0495278358),
            f = t.vec3f64.fromValues(5633271.46742708, 2626873.6381334523, 1434963.231608387);
        e.bindFramebuffer(o);

        var d = function (o, t) {
          var a = s.util["doublePrecision.glsl"],
              u = n ? "#define DOUBLE_PRECISION_REQUIRES_OBFUSCATION" : "",
              l = "\n\n  precision highp float;\n\n  attribute vec2 a_pos;\n\n  uniform vec3 u_highA;\n  uniform vec3 u_lowA;\n  uniform vec3 u_highB;\n  uniform vec3 u_lowB;\n\n  varying vec4 v_color;\n\n  " + u + "\n\n  " + a + "\n\n  const float MAX_RGBA_FLOAT =\n    255.0 / 256.0 +\n    255.0 / 256.0 / 256.0 +\n    255.0 / 256.0 / 256.0 / 256.0 +\n    255.0 / 256.0 / 256.0 / 256.0 / 256.0;\n\n  const vec4 FIXED_POINT_FACTORS = vec4(1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0);\n\n  vec4 float2rgba(const float value) {\n    // Make sure value is in the domain we can represent\n    float valueInValidDomain = clamp(value, 0.0, MAX_RGBA_FLOAT);\n\n    // Decompose value in 32bit fixed point parts represented as\n    // uint8 rgba components. Decomposition uses the fractional part after multiplying\n    // by a power of 256 (this removes the bits that are represented in the previous\n    // component) and then converts the fractional part to 8bits.\n    vec4 fixedPointU8 = floor(fract(valueInValidDomain * FIXED_POINT_FACTORS) * 256.0);\n\n    // Convert uint8 values (from 0 to 255) to floating point representation for\n    // the shader\n    const float toU8AsFloat = 1.0 / 255.0;\n\n    return fixedPointU8 * toU8AsFloat;\n  }\n\n  void main() {\n    vec3 val = dpAdd(u_highA, u_lowA, -u_highB, -u_lowB);\n\n    v_color = float2rgba(val.z / 25.0);\n\n    gl_Position = vec4(a_pos * 2.0 - 1.0, 0.0, 1.0);\n  }\n  ",
              c = new r.Program(e, l, "\n  precision highp float;\n\n  varying vec4 v_color;\n\n  void main() {\n    gl_FragColor = v_color;\n  }\n  ", {
            a_pos: 0
          }),
              f = new Float32Array(6);
          i.encodeDoubleArray(o, f, 3);
          var d = new Float32Array(6);
          return i.encodeDoubleArray(t, d, 3), e.bindProgram(c), c.setUniform3f("u_highA", f[0], f[2], f[4]), c.setUniform3f("u_lowA", f[1], f[3], f[5]), c.setUniform3f("u_highB", d[0], d[2], d[4]), c.setUniform3f("u_lowB", d[1], d[3], d[5]), c;
        }(c, f),
            p = e.getViewport(),
            v = p.x,
            h = p.y,
            _ = p.width,
            b = p.height;

        e.setViewport(0, 0, 1, 1), e.bindVAO(l), e.drawArrays(5, 0, 4), e.setViewport(v, h, _, b);
        var m = new Uint8Array(4);
        o.readPixels(0, 0, 1, 1, 6408, 5121, m), d.dispose(), l.dispose(!1), u.dispose(), o.dispose();
        var g = (c[2] - f[2]) / 25,
            A = a.unpackFloatRGBA(m);
        return Math.abs(g - A);
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      });

      var c = function () {
        function e(e) {
          this.context = e, this._doublePrecisionRequiresObfuscation = null;
        }

        return Object.defineProperty(e.prototype, "doublePrecisionRequiresObfuscation", {
          get: function get() {
            if (o.isNone(this._doublePrecisionRequiresObfuscation)) {
              var e = l(this.context, !1),
                  n = l(this.context, !0);
              this._doublePrecisionRequiresObfuscation = 0 !== e && (0 === n || e / n > 5);
            }

            return this._doublePrecisionRequiresObfuscation;
          },
          enumerable: !0,
          configurable: !0
        }), e;
      }(),
          f = null;

      n.testWebGLDriver = u;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/doublePrecisionUtils.js":
  /*!**************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/doublePrecisionUtils.js ***!
    \**************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibDoublePrecisionUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r) {
      function o(e, r) {
        c[0] = e, c[1] = e - c[0], r[0] = c[0], r[1] = c[1];
      }

      function n(e, r, o) {
        for (var n = 0; n < o; ++n) r[2 * n] = e[n], r[2 * n + 1] = e[n] - r[2 * n];
      }

      function a(e, r, o) {
        for (var n = 0; n < o; ++n) r[n] = e[2 * n] + e[2 * n + 1];
      }

      function u(e, r, o, a) {
        for (var u = 0; u < a; ++u) t[0] = e[u], n(t, c, 1), r[u] = c[0], o[u] = c[1];
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      }), r.encodeDouble = o, r.encodeDoubleArray = n, r.decodeDoubleArray = a, r.encodeDoubleArraySplit = u;
      var t = new Float64Array(1),
          c = new Float32Array(2);
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/glUtil3D.js":
  /*!**************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/glUtil3D.js ***!
    \**************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibGlUtil3DJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ./DefaultVertexAttributeLocations */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js"), __webpack_require__(
    /*! ./DefaultVertexBufferLayouts */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexBufferLayouts.js"), __webpack_require__(
    /*! ../../../webgl/BufferObject */
    "./node_modules/arcgis-js-api/views/webgl/BufferObject.js"), __webpack_require__(
    /*! ../../../webgl/Texture */
    "./node_modules/arcgis-js-api/views/webgl/Texture.js"), __webpack_require__(
    /*! ../../../webgl/VertexArrayObject */
    "./node_modules/arcgis-js-api/views/webgl/VertexArrayObject.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, a, o, n, i) {
      function u(e, t, n) {
        void 0 === t && (t = a.Pos2), void 0 === n && (n = r.Default3D);
        var u = null;

        switch (t) {
          case a.Pos3Tex:
            u = new Float32Array([-1, -1, 0, 0, 0, 1, -1, 0, 1, 0, -1, 1, 0, 0, 1, 1, 1, 0, 1, 1]);
            break;

          case a.Pos3:
            u = new Float32Array([-1, -1, 0, 1, -1, 0, -1, 1, 0, 1, 1, 0]);
            break;

          case a.Pos2Tex:
            u = new Float32Array([-1, -1, 0, 0, 1, -1, 1, 0, -1, 1, 0, 1, 1, 1, 1, 1]);
            break;

          case a.Pos2:
          default:
            u = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]);
        }

        return new i(e, n, {
          geometry: t
        }, {
          geometry: o.createVertex(e, 35044, u)
        });
      }

      function l(e, t) {
        return void 0 === t && (t = s), new n(e, {
          target: 3553,
          pixelFormat: 6408,
          dataType: 5121,
          samplingMode: 9728,
          width: t,
          height: t
        });
      }

      function c(e, t, r) {
        void 0 === r && (r = s);

        for (var a = new Uint8Array(r * r * 4), o = 0; o < a.length; o += 4) a[o + 0] = 255 * t[0], a[o + 1] = 255 * t[1], a[o + 2] = 255 * t[2], a[o + 3] = 255 * t[3];

        return new n(e, {
          target: 3553,
          pixelFormat: 6408,
          dataType: 5121,
          samplingMode: 9728,
          width: r,
          height: r
        }, a);
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.createQuadVAO = u;
      var s = 4;
      t.createEmptyTexture = l, t.createColorTexture = c;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/intersectorUtils.js":
  /*!**********************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/intersectorUtils.js ***!
    \**********************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibIntersectorUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/mat3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat3.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/mat3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat3f64.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/mat4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/mat4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f64.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/quat */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/quat.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/quatf64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/quatf64.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f32 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f32.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec4.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec4f64.js"), __webpack_require__(
    /*! ../../support/geometryUtils */
    "./node_modules/arcgis-js-api/views/3d/support/geometryUtils.js"), __webpack_require__(
    /*! ../../support/geometryUtils/boundedPlane */
    "./node_modules/arcgis-js-api/views/3d/support/geometryUtils/boundedPlane.js"), __webpack_require__(
    /*! ../../support/geometryUtils/sphere */
    "./node_modules/arcgis-js-api/views/3d/support/geometryUtils/sphere.js"), __webpack_require__(
    /*! ./Object3D */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Object3D.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, r, i, n, a, s, o, h, c, f, l, p, u, m, b, d, y) {
      function g(t) {
        return function (e, r, i) {
          return c.vec3.lerp(P, e, r, i), !b.extrusionContainsPoint(t, P);
        };
      }

      function v(t, e) {
        return r.isNone(t) || null == t.layerUid ? null : r.isSome(e.graphicsView) && t.layerUid === e.graphicsView.mockLayerId ? e.graphics : e.map.findLayerByUid(t.layerUid);
      }

      function O(t, e) {
        if (r.isNone(t)) return null;
        var i = v(t, e);
        if (r.isNone(i)) return null;
        if (i === e.graphics) return r.isSome(e.graphicsView) ? r.expect(e.graphicsView.getGraphicFromGraphicUid(t.graphicUid)) : null;
        var n = e.allLayerViews.find(function (t) {
          return t.layer === i;
        });
        return n ? x(n, t) : null;
      }

      function x(t, e) {
        return !t || t.suspended ? null : "getGraphicFromIntersectorMetadata" in t && e ? t.getGraphicFromIntersectorMetadata(e) : "getGraphicFromGraphicUid" in t && null != e.graphicUid ? t.getGraphicFromGraphicUid(e.graphicUid) : null;
      }

      function T(t, e) {
        var r = t.metadata.layerUid;
        return null != r ? e.map.findLayerByUid(r) : null;
      }

      function S(t) {
        return t.metadata.createGraphic();
      }

      Object.defineProperty(e, "__esModule", {
        value: !0
      }), e.sliceFilterPredicate = g;

      var M = function () {
        function t() {
          this.selectionMode = !1, this.hud = !0, this.selectOpaqueTerrainOnly = !0, this.invisibleTerrain = !1, this.backfacesTerrain = !0, this.storeTerrainResults = !0, this.store = 2;
        }

        return t;
      }();

      e.IntersectorOptions = M;

      var z = function () {
        function t() {
          this._transform = s.mat4f64.create(), this._transformInverse = new I({
            value: this._transform
          }, a.mat4.invert, s.mat4f64.create), this._transformInverseTranspose = new I(this._transformInverse, a.mat4.transpose, s.mat4f64.create), this._transformTranspose = new I({
            value: this._transform
          }, a.mat4.transpose, s.mat4f64.create), this._transformInverseRotation = new I({
            value: this._transform
          }, i.mat3.normalFromMat4Legacy, n.mat3f64.create);
        }

        return t.prototype.invalidateLazyTransforms = function () {
          this._transformInverse.invalidate(), this._transformInverseTranspose.invalidate(), this._transformTranspose.invalidate(), this._transformInverseRotation.invalidate();
        }, Object.defineProperty(t.prototype, "transform", {
          get: function get() {
            return this._transform;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "inverse", {
          get: function get() {
            return this._transformInverse.value;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "inverseTranspose", {
          get: function get() {
            return this._transformInverseTranspose.value;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "inverseRotation", {
          get: function get() {
            return this._transformInverseRotation.value;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "transpose", {
          get: function get() {
            return this._transformTranspose.value;
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype.setTransformMatrix = function (t) {
          a.mat4.copy(this._transform, t);
        }, t.prototype.multiplyTransform = function (t) {
          a.mat4.multiply(this._transform, this._transform, t);
        }, t.prototype.set = function (t) {
          a.mat4.copy(this._transform, t), this.invalidateLazyTransforms();
        }, t.prototype.setAndInvalidateLazyTransforms = function (t, e) {
          this.setTransformMatrix(t), this.multiplyTransform(e), this.invalidateLazyTransforms();
        }, t;
      }();

      e.IntersectorTransform = z;

      var I = function () {
        function t(t, e, r) {
          this.original = t, this.update = e, this.dirty = !0, this.transform = r();
        }

        return t.prototype.invalidate = function () {
          this.dirty = !0;
        }, Object.defineProperty(t.prototype, "value", {
          get: function get() {
            return this.dirty && (this.update(this.transform, this.original.value), this.dirty = !1), this.transform;
          },
          enumerable: !0,
          configurable: !0
        }), t;
      }(),
          V = function () {
        function t() {
          this.min = new _(), this.max = new _(), this.hud = new _(), this.terrain = new _();
        }

        return t.prototype.init = function (t) {
          this.min.init(t), this.max.init(t), this.hud.init(t), this.terrain.init(t), this.all = [];
        }, t;
      }();

      e.IntersectorResults = V;

      var _ = function () {
        function t(t) {
          this.normal = l.vec3f64.create(), this.transformation = s.mat4f64.create(), this._ray = m.ray.create(), this.init(t);
        }

        return Object.defineProperty(t.prototype, "ray", {
          get: function get() {
            return this._ray;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "hasIntersectionPoint", {
          get: function get() {
            return null != this.dist;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "distanceInRenderSpace", {
          get: function get() {
            if (null != this.dist) return c.vec3.scale(G, this.ray.direction, this.dist), c.vec3.length(G);
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype.getIntersectionPoint = function (t) {
          return !!this.hasIntersectionPoint && (c.vec3.scale(G, this.ray.direction, this.dist), c.vec3.add(t, this.ray.origin, G), !0);
        }, t.prototype.getTransformedNormal = function (t) {
          return c.vec3.copy(R, this.normal), R[3] = 0, p.vec4.transformMat4(R, R, this.transformation), c.vec3.copy(t, R), c.vec3.normalize(t, t), t;
        }, t.prototype.set = function (t, e, r, i, n, s, o, h, f, p) {
          t instanceof y && (t = {
            type: "stage",
            obj: t
          }), this.dist = r, c.vec3.copy(this.normal, i), a.mat4.copy(this.transformation, n), this.target = t, this.name = e, this.drapedLayerOrder = s, this.center = o ? l.vec3f64.clone(o) : null, this.geometryId = h, this.triangleNr = f, this.drapedLayerGraphicOrder = p;
        }, t.prototype.copyFrom = function (t) {
          m.ray.copy(t._ray, this._ray), this.dist = t.dist, this.target = t.target, this.name = t.name, this.drapedLayerOrder = t.drapedLayerOrder, this.center = t.center ? l.vec3f64.clone(t.center) : null, this.geometryId = t.geometryId, this.triangleNr = t.triangleNr, this.intersector = t.intersector, this.drapedLayerGraphicOrder = t.drapedLayerGraphicOrder, c.vec3.copy(this.normal, t.normal), a.mat4.copy(this.transformation, t.transformation);
        }, t.prototype.init = function (t) {
          this.dist = void 0, this.target = void 0, this.name = void 0, this.drapedLayerOrder = void 0, this.drapedLayerGraphicOrder = void 0, this.center = null, this.geometryId = null, this.triangleNr = null, this.intersector = "Stage", t ? m.ray.copy(t, this._ray) : this._ray = m.ray.create();
        }, t.prototype.toOwner = function (t) {
          if (!this.target) return null;

          switch (this.target.type) {
            case "stage":
              return v(this.target.obj.getMetadata(), t);

            case "external":
              switch (this.intersector) {
                case "PointRenderer":
                  return T(this.target, t);

                case "I3S":
                case "LodRenderer":
                case "DrapedRenderer":
                  return v(this.target.metadata, t);

                case "TerrainRenderer":
                  return t.map && t.map.ground;
              }

          }

          return null;
        }, t.prototype.toGraphic = function (t) {
          if (!this.target) return null;

          switch (this.target.type) {
            case "stage":
              return O(this.target.obj.getMetadata(), t);

            case "external":
              switch (this.intersector) {
                case "PointRenderer":
                  return S(this.target);

                case "I3S":
                case "LodRenderer":
                case "DrapedRenderer":
                  return O(this.target.metadata, t);
              }

          }

          return null;
        }, t;
      }();

      e.IntersectorResult = _;

      var L = function () {
        function t(t) {
          this.offset = t, this.tmpVertex = l.vec3f64.create();
        }

        return t.prototype.applyToVertex = function (t, e, r) {
          var i = t + this.localOrigin[0],
              n = e + this.localOrigin[1],
              a = r + this.localOrigin[2],
              s = this.offset / Math.sqrt(i * i + n * n + a * a);
          return this.tmpVertex[0] = t + i * s, this.tmpVertex[1] = e + n * s, this.tmpVertex[2] = r + a * s, this.tmpVertex;
        }, t.prototype.applyToAABB = function (t) {
          var e = t[0] + this.localOrigin[0],
              r = t[1] + this.localOrigin[1],
              i = t[2] + this.localOrigin[2],
              n = t[3] + this.localOrigin[0],
              a = t[4] + this.localOrigin[1],
              s = t[5] + this.localOrigin[2],
              o = this.offset / Math.sqrt(e * e + r * r + i * i);
          t[0] += e * o, t[1] += r * o, t[2] += i * o;
          var h = this.offset / Math.sqrt(n * n + a * a + s * s);
          return t[3] += n * h, t[4] += a * h, t[5] += s * h, t;
        }, t;
      }();

      e.TerrainVerticalOffsetGlobalViewingMode = L;

      var q = function () {
        function t(t) {
          this.offset = t, this.componentLocalOriginLength = 0, this.tmpVertex = l.vec3f64.create(), this.mbs = u.vec4f64.create(), this.obb = {
            center: l.vec3f64.create(),
            halfSize: f.vec3f32.create(),
            quaternion: null
          };
        }

        return Object.defineProperty(t.prototype, "localOrigin", {
          set: function set(t) {
            this.componentLocalOriginLength = Math.sqrt(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype.applyToVertex = function (t, e, r) {
          var i = t,
              n = e,
              a = r + this.componentLocalOriginLength,
              s = this.offset / Math.sqrt(i * i + n * n + a * a);
          return this.tmpVertex[0] = t + i * s, this.tmpVertex[1] = e + n * s, this.tmpVertex[2] = r + a * s, this.tmpVertex;
        }, t.prototype.applyToAABB = function (t) {
          var e = t[0],
              r = t[1],
              i = t[2] + this.componentLocalOriginLength,
              n = t[3],
              a = t[4],
              s = t[5] + this.componentLocalOriginLength,
              o = this.offset / Math.sqrt(e * e + r * r + i * i);
          t[0] += e * o, t[1] += r * o, t[2] += i * o;
          var h = this.offset / Math.sqrt(n * n + a * a + s * s);
          return t[3] += n * h, t[4] += a * h, t[5] += s * h, t;
        }, t.prototype.applyToMbs = function (t) {
          var e = Math.sqrt(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]),
              r = this.offset / e;
          return this.mbs[0] = t[0] + t[0] * r, this.mbs[1] = t[1] + t[1] * r, this.mbs[2] = t[2] + t[2] * r, this.mbs[3] = t[3] + t[3] * this.offset / e, this.mbs;
        }, t.prototype.applyToObb = function (t) {
          var e = t.center,
              r = this.offset / Math.sqrt(e[0] * e[0] + e[1] * e[1] + e[2] * e[2]);
          this.obb.center[0] = e[0] + e[0] * r, this.obb.center[1] = e[1] + e[1] * r, this.obb.center[2] = e[2] + e[2] * r, c.vec3.transformQuat(this.obb.halfSize, t.halfSize, t.quaternion), c.vec3.add(this.obb.halfSize, this.obb.halfSize, t.center);
          var i = this.offset / Math.sqrt(this.obb.halfSize[0] * this.obb.halfSize[0] + this.obb.halfSize[1] * this.obb.halfSize[1] + this.obb.halfSize[2] * this.obb.halfSize[2]);
          return this.obb.halfSize[0] += this.obb.halfSize[0] * i, this.obb.halfSize[1] += this.obb.halfSize[1] * i, this.obb.halfSize[2] += this.obb.halfSize[2] * i, c.vec3.subtract(this.obb.halfSize, this.obb.halfSize, t.center), o.quat.conjugate(U, t.quaternion), c.vec3.transformQuat(this.obb.halfSize, this.obb.halfSize, U), this.obb.halfSize[0] *= this.obb.halfSize[0] < 0 ? -1 : 1, this.obb.halfSize[1] *= this.obb.halfSize[1] < 0 ? -1 : 1, this.obb.halfSize[2] *= this.obb.halfSize[2] < 0 ? -1 : 1, this.obb.quaternion = t.quaternion, this.obb;
        }, t;
      }();

      e.I3SVerticalOffsetGlobalViewingMode = q;

      var w = function () {
        function t(t) {
          this.offset = t, this.sphere = d.create(), this.tmpVertex = l.vec3f64.create();
        }

        return t.prototype.applyToVertex = function (t, e, r) {
          var i = this.objectTransform.transform,
              n = i[0] * t + i[4] * e + i[8] * r + i[12],
              a = i[1] * t + i[5] * e + i[9] * r + i[13],
              s = i[2] * t + i[6] * e + i[10] * r + i[14],
              o = this.offset / Math.sqrt(n * n + a * a + s * s);
          n += n * o, a += a * o, s += s * o;
          var h = this.objectTransform.inverse;
          return this.tmpVertex[0] = h[0] * n + h[4] * a + h[8] * s + h[12], this.tmpVertex[1] = h[1] * n + h[5] * a + h[9] * s + h[13], this.tmpVertex[2] = h[2] * n + h[6] * a + h[10] * s + h[14], this.tmpVertex;
        }, t.prototype.applyToMinMax = function (t, e) {
          var r = this.offset / Math.sqrt(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);
          t[0] += t[0] * r, t[1] += t[1] * r, t[2] += t[2] * r;
          var i = this.offset / Math.sqrt(e[0] * e[0] + e[1] * e[1] + e[2] * e[2]);
          e[0] += e[0] * i, e[1] += e[1] * i, e[2] += e[2] * i;
        }, t.prototype.applyToAABB = function (t) {
          var e = this.offset / Math.sqrt(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);
          t[0] += t[0] * e, t[1] += t[1] * e, t[2] += t[2] * e;
          var r = this.offset / Math.sqrt(t[3] * t[3] + t[4] * t[4] + t[5] * t[5]);
          return t[3] += t[3] * r, t[4] += t[4] * r, t[5] += t[5] * r, t;
        }, t.prototype.applyToBoundingSphere = function (t, e) {
          var r = Math.sqrt(e[0] * e[0] + e[1] * e[1] + e[2] * e[2]),
              i = this.offset / r;
          return this.sphere.center[0] = e[0] + e[0] * i, this.sphere.center[1] = e[1] + e[1] * i, this.sphere.center[2] = e[2] + e[2] * i, this.sphere.radius = t + t * this.offset / r, this.sphere;
        }, t;
      }();

      e.Object3DVerticalOffsetGlobalViewingMode = w;

      var j = function () {
        function t(t) {
          this.terrain = new L(t), this.i3s = new q(t), this.object3D = new w(t);
        }

        return t;
      }();

      e.VerticalOffsetForGlobalViewingMode = j, e.TERRAIN_ID = "terrain";
      var P = l.vec3f64.create(),
          G = l.vec3f64.create(),
          R = u.vec4f64.create(),
          U = h.quatf64.create();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/screenSizePerspectiveUtils.js":
  /*!********************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/screenSizePerspectiveUtils.js ***!
    \********************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineLibScreenSizePerspectiveUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/mathUtils */
    "./node_modules/arcgis-js-api/core/mathUtils.js"), __webpack_require__(
    /*! ../../support/earthUtils */
    "./node_modules/arcgis-js-api/views/3d/support/earthUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, a, t, r) {
      function i(e) {
        return new g(e, a.defaultDescription);
      }

      function n(e) {
        var t = a.defaultDescription.curvatureDependent,
            r = a.defaultDescription.scaleStart,
            i = a.defaultDescription.scaleFallOffRange;
        return new g(e, {
          curvatureDependent: {
            min: {
              curvature: t.min.curvature,
              tiltAngle: t.min.tiltAngle,
              scaleFallOffFactor: P.curvatureDependent.min.scaleFallOffFactor
            },
            max: {
              curvature: t.max.curvature,
              tiltAngle: t.max.tiltAngle,
              scaleFallOffFactor: P.curvatureDependent.max.scaleFallOffFactor
            }
          },
          scaleStart: r,
          scaleFallOffRange: i,
          minPixelSize: P.minPixelSize
        });
      }

      function l(e) {
        return Math.abs(e * e * e);
      }

      function c(e, a, t, r) {
        void 0 === r && (r = x);
        var i = t.parameters,
            n = t.paddingPixelsOverride;
        return r.scale = Math.min(i.divisor / (a - i.offset), 1), r.factor = l(e), r.minPixelSize = i.minPixelSize, r.paddingPixels = n, r;
      }

      function s(e, a) {
        return 0 === e ? a.minPixelSize : a.minPixelSize * (1 + 2 * a.paddingPixels / e);
      }

      function o(e, a) {
        return Math.max(t.lerp(e * a.scale, e, a.factor), s(e, a));
      }

      function u(e, a, r) {
        void 0 === r && (r = [0, 0]);
        var i = Math.min(Math.max(a.scale, s(e[1], a) / e[1]), 1);
        return r[0] = t.lerp(e[0] * i, e[0], a.factor), r[1] = t.lerp(e[1] * i, e[1], a.factor), r;
      }

      function d(e, a, t) {
        var r = c(e, a, t);
        return r.minPixelSize = 0, r.paddingPixels = 0, o(1, r);
      }

      function f(e, a, t, r) {
        return r.scale = d(e, a, t), r.factor = 0, r.minPixelSize = t.parameters.minPixelSize, r.paddingPixels = t.paddingPixelsOverride, r;
      }

      function p(e, a, t) {
        void 0 === t && (t = [0, 0]);
        var r = Math.min(Math.max(a.scale, s(e[1], a) / e[1]), 1);
        return t[0] = e[0] * r, t[1] = e[1] * r, t;
      }

      function m(e, a, t, r) {
        return o(e, c(a, t, r));
      }

      function v() {
        return {
          camera: {
            distance: 0,
            fovY: 0
          },
          divisor: 0,
          offset: 0,
          minPixelSize: 0,
          paddingPixels: 0
        };
      }

      function h(e, a) {
        return a.camera.distance = e.camera.distance, a.camera.fovY = e.camera.fovY, a.divisor = e.divisor, a.offset = e.offset, a.minPixelSize = e.minPixelSize, a;
      }

      Object.defineProperty(a, "__esModule", {
        value: !0
      }), a.getSettings = i, a.getLabelSettings = n, a.perspectiveFactor = l, a.scaleFactor = c, a.applyScaleFactor = o, a.applyScaleFactorVec2 = u, a.precomputeScale = d, a.precomputeScaleFactor = f, a.applyPrecomputedScaleFactorVec2 = p, a.scale = m;

      var g = function () {
        function e(e, a, t, r) {
          void 0 === t && (t = v()), this.viewingMode = e, this.description = a, this.parameters = t, this._paddingPixelsOverride = r, "local" === this.viewingMode ? (this.coverageCompensation = this.surfaceCoverageCompensationLocal, this.calculateCurvatureDependentParameters = this.calculateCurvatureDependentParametersLocal) : (this.coverageCompensation = this.surfaceCoverageCompensationGlobal, this.calculateCurvatureDependentParameters = this.calculateCurvatureDependentParametersGlobal);
        }

        return Object.defineProperty(e.prototype, "paddingPixelsOverride", {
          get: function get() {
            return this._paddingPixelsOverride || this.parameters.paddingPixels;
          },
          enumerable: !0,
          configurable: !0
        }), e.prototype.update = function (e) {
          return (!this.parameters || this.parameters.camera.fovY !== e.fovY || this.parameters.camera.distance !== e.distance) && (this.calculateParameters(e, this.parameters), !0);
        }, e.prototype.overridePadding = function (a) {
          return a !== this.paddingPixelsOverride ? new e(this.viewingMode, this.description, this.parameters, a) : this;
        }, e.prototype.calculateParameters = function (e, a) {
          var t = this.description,
              r = t.scaleStart,
              i = t.scaleFallOffRange,
              n = t.minPixelSize,
              l = e.fovY,
              c = e.distance,
              s = this.calculateCurvatureDependentParameters(e),
              o = this.coverageCompensation(e, s),
              u = s.tiltAngle,
              d = s.scaleFallOffFactor,
              f = Math.sin(u) * c,
              p = .5 * Math.PI - u - l * (.5 - r * o),
              m = f / Math.cos(p),
              v = p + l * i * o,
              h = f / Math.cos(v),
              g = (m - d * h) / (1 - d);
          return a.camera.fovY = e.fovY, a.camera.distance = e.distance, a.offset = g, a.divisor = m - g, a.minPixelSize = n, a;
        }, e.prototype.calculateCurvatureDependentParametersLocal = function (e, a) {
          return void 0 === a && (a = F), a.tiltAngle = this.description.curvatureDependent.min.tiltAngle, a.scaleFallOffFactor = this.description.curvatureDependent.min.scaleFallOffFactor, a;
        }, e.prototype.calculateCurvatureDependentParametersGlobal = function (e, a) {
          void 0 === a && (a = F);
          var i = this.description.curvatureDependent,
              n = 1 + e.distance / r.earthRadius,
              l = Math.sqrt(n * n - 1),
              c = [i.min.curvature, i.max.curvature],
              s = c[0],
              o = c[1],
              u = t.clamp((l - s) / (o - s), 0, 1),
              d = [i.min, i.max],
              f = d[0],
              p = d[1];
          return a.tiltAngle = t.lerp(f.tiltAngle, p.tiltAngle, u), a.scaleFallOffFactor = t.lerp(f.scaleFallOffFactor, p.scaleFallOffFactor, u), a;
        }, e.prototype.surfaceCoverageCompensationLocal = function (e, a) {
          return (e.fovY - a.tiltAngle) / e.fovY;
        }, e.prototype.surfaceCoverageCompensationGlobal = function (e, a) {
          var t = r.earthRadius * r.earthRadius,
              i = a.tiltAngle + .5 * Math.PI,
              n = e.fovY,
              l = e.distance,
              c = l * l,
              s = c + t - 2 * Math.cos(i) * l * r.earthRadius,
              o = Math.sqrt(s),
              u = Math.sqrt(s - t);
          return (Math.acos(u / o) - Math.asin(r.earthRadius / (o / Math.sin(i))) + .5 * n) / n;
        }, e;
      }();

      a.defaultDescription = {
        curvatureDependent: {
          min: {
            curvature: t.deg2rad(10),
            tiltAngle: t.deg2rad(12),
            scaleFallOffFactor: .5
          },
          max: {
            curvature: t.deg2rad(70),
            tiltAngle: t.deg2rad(40),
            scaleFallOffFactor: .8
          }
        },
        scaleStart: .3,
        scaleFallOffRange: .65,
        minPixelSize: 0
      };
      var P = {
        curvatureDependent: {
          min: {
            scaleFallOffFactor: .7
          },
          max: {
            scaleFallOffFactor: .95
          }
        },
        minPixelSize: 14
      };
      a.copyParameters = h;
      var x = {
        scale: 0,
        factor: 0,
        minPixelSize: 0,
        paddingPixels: 0
      },
          F = {
        tiltAngle: 0,
        scaleFallOffFactor: 0
      };
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/DefaultMaterial.js":
  /*!***************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/DefaultMaterial.js ***!
    \***************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsDefaultMaterialJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/extendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/extendsHelper.js"), __webpack_require__(
    /*! ../../../../core/tsSupport/assignHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/assignHelper.js"), __webpack_require__(
    /*! ../../../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/mat3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat3f64.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../support/buffer/InterleavedLayout */
    "./node_modules/arcgis-js-api/views/3d/support/buffer/InterleavedLayout.js"), __webpack_require__(
    /*! ../core/shaderLibrary/DiscardOrAdjustAlpha.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/DiscardOrAdjustAlpha.glsl.js"), __webpack_require__(
    /*! ../lib/GLMaterialTexture */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GLMaterialTexture.js"), __webpack_require__(
    /*! ../lib/Material */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Material.js"), __webpack_require__(
    /*! ../lib/Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js"), __webpack_require__(
    /*! ./internal/bufferWriterUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js"), __webpack_require__(
    /*! ./internal/MaterialUtil */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/MaterialUtil.js"), __webpack_require__(
    /*! ./renderers/InstancedRenderer */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/InstancedRenderer.js"), __webpack_require__(
    /*! ./renderers/MergedRenderer */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/MergedRenderer.js"), __webpack_require__(
    /*! ../shaders/DefaultMaterialTechnique */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js"), __webpack_require__(
    /*! ../../../webgl/renderState */
    "./node_modules/arcgis-js-api/views/webgl/renderState.js"), __webpack_require__(
    /*! ../../../webgl/renderState */
    "./node_modules/arcgis-js-api/views/webgl/renderState.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, i, r, a, n, s, o, c, l, u, p, h, f, m, d, v, g, b, P) {
      function y(e, t) {
        return e ? t ? 6 : 9 : 4;
      }

      function x(e) {
        return e.cullFace ? 0 !== e.cullFace : !e.slicePlaneEnabled && !e.transparent && !e.doubleSided;
      }

      var q = h.assert,
          S = function (e) {
        function t(i, r) {
          var a = e.call(this, r) || this;
          return a.supportsEdges = !0, a.techniqueConfig = new g.DefaultMaterialTechniqueConfiguration(), a.params = m.copyParameters(i, I), a.vertexBufferLayout = t.getVertexBufferLayout(a.params), a.instanceBufferLayout = i.instanced ? t.getInstanceBufferLayout(a.params) : null, a;
        }

        return i(t, e), t.prototype.isVisibleInPass = function (e) {
          return 3 !== e || this.params.castShadows;
        }, t.prototype.isVisible = function () {
          var t = this.params;
          if (!e.prototype.isVisible.call(this) || 0 === t.layerOpacity) return !1;
          var i = t.instanced,
              r = t.vertexColors,
              a = t.symbolColors,
              n = !!i && i.indexOf("color") > -1,
              s = t.vvColorEnabled,
              o = "replace" === t.colorMixMode,
              c = t.opacity > 0,
              l = t.externalColor && t.externalColor[3] > 0;
          return r && (n || s || a) ? !!o || c : r ? o ? l : c : n || s || a ? !!o || c : o ? l : c;
        }, t.prototype.setParameterValues = function (e) {
          var t = this.params;

          for (var i in e) "instanced" === i && q(e.instanced === t.instanced, "Can not change instanced attributes"), "textureId" === i && q(t.textureId, "Can only change texture of material that already has a texture"), "vertexColors" === i && !0 === e[i] && e[i] !== t[i] && q(t.vertexColors, "Can not enable vertex colors after DefaultMaterial creation"), t[i] = e[i];

          this.notifyDirty("matChanged");
        }, t.prototype.getParameters = function () {
          return this.params;
        }, t.prototype.getTechniqueConfig = function (e) {
          return this.techniqueConfig.output = e, this.techniqueConfig.hasNormalTexture = !!this.params.normalTextureId, this.techniqueConfig.hasColorTexture = !!this.params.textureId, this.techniqueConfig.vertexTangents = this.params.vertexTangents, this.techniqueConfig.instanced = !!this.params.instanced, this.techniqueConfig.instancedDoublePrecision = this.params.instancedDoublePrecision, this.techniqueConfig.vvSize = this.params.vvSizeEnabled, this.techniqueConfig.verticalOffset = null !== this.params.verticalOffset, this.techniqueConfig.screenSizePerspective = null !== this.params.screenSizePerspective, this.techniqueConfig.slice = this.params.slicePlaneEnabled, this.techniqueConfig.sliceHighlightDisabled = this.params.sliceHighlightDisabled, this.techniqueConfig.alphaDiscardMode = "opaque" === this.params.textureAlphaMode ? 1 : "mask" === this.params.textureAlphaMode ? 2 : "maskBlend" === this.params.textureAlphaMode ? 3 : 0, this.techniqueConfig.normalsTypeDerivate = "screenDerivative" === this.params.normals, 0 === e && (this.techniqueConfig.treeRendering = !!this.params.treeRendering, this.techniqueConfig.vertexColors = this.params.vertexColors, this.techniqueConfig.symbolColors = this.params.symbolColors, this.techniqueConfig.doubleSidedMode = this.params.doubleSided && "normal" === this.params.doubleSidedType ? 1 : this.params.doubleSided && "winding-order" === this.params.doubleSidedType ? 2 : 0, this.techniqueConfig.instancedColor = !!this.params.instanced && this.params.instanced.indexOf("color") > -1, this.techniqueConfig.receiveShadows = this.params.receiveShadows, this.techniqueConfig.receiveAmbientOcclusion = this.params.receiveSSAO, this.techniqueConfig.vvColor = this.params.vvColorEnabled, this.techniqueConfig.textureAlphaPremultiplied = !!this.params.textureAlphaPremultiplied, this.techniqueConfig.usePBR = this.params.usePBR, this.techniqueConfig.hasMetalnessAndRoughnessTexture = !!this.params.metallicRoughnessTextureId, this.techniqueConfig.hasEmissionTexture = !!this.params.emissiveTextureId, this.techniqueConfig.hasOcclusionTexture = !!this.params.occlusionTextureId, this.techniqueConfig.offsetBackfaces = !(!this.params.transparent || !this.params.offsetTransparentBackfaces)), this.techniqueConfig;
        }, t.prototype.intersect = function (e, t, i, r, n, o, c) {
          if (null !== this.params.verticalOffset) {
            var l = r.camera;
            s.vec3.set(W, i[12], i[13], i[14]);
            var u = null;

            switch (r.viewingMode) {
              case "global":
                u = s.vec3.normalize(B, W);
                break;

              case "local":
                u = s.vec3.copy(B, E);
            }

            var p = 0;

            if (null !== this.params.verticalOffset) {
              var h = s.vec3.subtract(k, W, l.eye),
                  f = s.vec3.length(h),
                  d = s.vec3.scale(h, h, 1 / f),
                  v = null;
              this.params.screenSizePerspective && (v = s.vec3.dot(u, d)), p += m.verticalOffsetAtDistance(l, f, this.params.verticalOffset, v, this.params.screenSizePerspective);
            }

            s.vec3.scale(u, u, p), s.vec3.transformMat3(L, u, r.transform.inverseRotation), n = s.vec3.subtract(R, n, L), o = s.vec3.subtract(z, o, L);
          }

          m.intersectTriangleGeometry(e, t, r, n, o, a.isSome(r.options.verticalOffset) ? r.options.verticalOffset.object3D : void 0, c);
        }, t.prototype.getGLMaterials = function () {
          return {
            color: C,
            depthShadowMap: w,
            normal: D,
            depth: T,
            highlight: M
          };
        }, t.prototype.createRenderer = function (e, t) {
          return this.params.softwareInstanced ? new d(e, t, this) : new v(e, t, this);
        }, t.prototype.createBufferWriter = function () {
          return new O(this.vertexBufferLayout, this.instanceBufferLayout);
        }, t.getVertexBufferLayout = function (e) {
          var t = e.textureId || e.normalTextureId || e.metallicRoughnessTextureId || e.emissiveTextureId || e.occlusionTextureId,
              i = c.newLayout().vec3f("position").vec3f("normal");
          return e.vertexTangents && i.vec4f("tangent"), t && i.vec2f("uv0"), e.vertexColors && i.vec4u8("color"), e.symbolColors && i.vec4u8("symbolColor"), i;
        }, t.getInstanceBufferLayout = function (e) {
          var t = c.newLayout();
          return t = e.instancedDoublePrecision ? t.vec3f("modelOriginHi").vec3f("modelOriginLo").mat3f("model").mat3f("modelNormal") : t.mat4f("model").mat4f("modelNormal"), e.instanced && e.instanced.indexOf("color") > -1 && (t = t.vec4f("instanceColor")), e.instanced && e.instanced.indexOf("featureAttribute") > -1 && (t = t.vec4f("instanceFeatureAttribute")), t;
        }, t;
      }(p.Material),
          C = function (e) {
        function t(t) {
          var i = this,
              r = t.material,
              a = r.getParameters();
          i = e.call(this, u.makeCtorParameters(t, a)) || this, i.params = m.copyParameters(a);
          var n = i.params;
          return i.slot = y(n.transparent, n.writeDepth), i.technique = i.techniqueRep.acquireAndReleaseExisting(g.DefaultMaterialTechnique, i.material.getTechniqueConfig(0), i.technique), i.selectPipeline(0), i;
        }

        return i(t, e), t.prototype.selectPipeline = function (e) {
          var t = this.params,
              i = 0 === e ? A(t) : null;
          this.pipelineState = P.makePipelineState({
            blending: i,
            culling: V(t),
            depthTest: {
              func: 513
            },
            depthWrite: t.writeDepth && P.defaultDepthWriteParams,
            colorWrite: P.defaultColorWriteParams
          });
        }, t.prototype.beginSlot = function (e) {
          return e === this.slot;
        }, t.prototype.getProgram = function () {
          return this.technique.program;
        }, t.prototype.getPrograms = function () {
          return null;
        }, t.prototype.updateParameters = function () {
          this.params = m.copyParameters(this.material.getParameters()), this.slot = y(this.params.transparent, this.params.writeDepth), this.updateTexture(this.params.textureId), this.technique = this.techniqueRep.acquireAndReleaseExisting(g.DefaultMaterialTechnique, this.material.getTechniqueConfig(0), this.technique), this.selectPipeline(0);
        }, t.prototype._updateShadowState = function (e) {
          e.shadowMappingEnabled !== this.params.receiveShadows && (this.material.setParameterValues({
            receiveShadows: e.shadowMappingEnabled
          }), this.updateParameters());
        }, t.prototype.bind = function (e, t) {
          var i = this.params;

          this._updateShadowState(t);

          var r = this.technique.program;
          e.bindProgram(r), e.setPipelineState(this.pipelineState), this.technique.bindPass(e, i, t), m.bindVerticalOffset(i.verticalOffset, t, r), m.bindScreenSizePerspective(i.screenSizePerspective, r), this.bindTexture(e, r);
        }, t.prototype.release = function () {}, t.prototype.bindView = function (e) {
          var t = this.technique.program,
              i = this.params,
              r = i.instancedDoublePrecision ? o.vec3f64.fromValues(e.viewInvTransp[3], e.viewInvTransp[7], e.viewInvTransp[11]) : e.origin;
          m.bindView(r, e.view, t), m.bindCamPos(r, e.viewInvTransp, t), i.instancedDoublePrecision && m.bindViewOriginDouble(r, t), i.slicePlaneEnabled && m.bindSlicePlane(r, e.slicePlane, t), e.shadowMappingEnabled && e.shadowMap.bindView(t, r);
        }, t.prototype.bindInstance = function (e) {
          var t = this.technique.program;
          t.setUniformMatrix4fv("model", e.transformation), t.setUniformMatrix4fv("modelNormal", e.transformationNormal);
        }, t.prototype.getDrawMode = function () {
          return 4;
        }, t;
      }(u),
          T = function (e) {
        function t(t) {
          var i = this,
              r = t.material;
          return i = e.call(this, u.makeCtorParameters(t, r.getParameters())) || this, i.updateParameters(), i;
        }

        return i(t, e), t.prototype.beginSlot = function (e) {
          return e === this.slot;
        }, t.prototype.getProgram = function () {
          return this.technique.program;
        }, t.prototype.getPrograms = function () {
          return null;
        }, t.prototype.selectPipeline = function () {
          var e = this.params;
          this.pipelineState = P.makePipelineState({
            culling: V(e),
            depthTest: {
              func: 513
            },
            depthWrite: e.writeDepth && P.defaultDepthWriteParams,
            colorWrite: P.defaultColorWriteParams
          });
        }, t.prototype.selectSlot = function () {
          this.slot = y(this.params.transparent, this.params.writeDepth);
        }, t.prototype.updateParameters = function () {
          this.params = m.copyParameters(this.material.getParameters()), this.technique = this.techniqueRep.acquireAndReleaseExisting(g.DefaultMaterialTechnique, this.material.getTechniqueConfig(1), this.technique), this.selectPipeline(), this.selectSlot(), this.updateTexture(this.params.textureId);
        }, t.prototype.bind = function (e, t) {
          var i = this.technique.program,
              r = this.params;
          e.bindProgram(i), e.setPipelineState(this.pipelineState), this.technique.bindPass(e, r, t), m.bindVerticalOffset(r.verticalOffset, t, i), m.bindScreenSizePerspective(r.screenSizePerspective, i), this.bindTexture(e, i);
        }, t.prototype.release = function () {}, t.prototype.bindView = function (e) {
          var t = this.technique.program,
              i = this.params,
              r = i.instancedDoublePrecision ? o.vec3f64.fromValues(e.viewInvTransp[3], e.viewInvTransp[7], e.viewInvTransp[11]) : e.origin;
          m.bindView(r, e.view, t), i.slicePlaneEnabled && m.bindSlicePlane(r, e.slicePlane, t), i.screenSizePerspective && m.bindCamPos(r, e.viewInvTransp, t), i.instancedDoublePrecision && m.bindViewOriginDouble(r, t);
        }, t.prototype.bindInstance = function (e) {
          this.technique.program.setUniformMatrix4fv("model", e.transformation);
        }, t.prototype.getDrawMode = function () {
          return 4;
        }, t;
      }(u),
          w = function (e) {
        function t(t) {
          return e.call(this, t) || this;
        }

        return i(t, e), t.prototype.updateParameters = function () {
          this.params = m.copyParameters(this.material.getParameters()), this.technique = this.techniqueRep.acquireAndReleaseExisting(g.DefaultMaterialTechnique, this.material.getTechniqueConfig(3), this.technique), this.selectPipeline(), this.selectSlot(), this.updateTexture(this.params.textureId);
        }, t;
      }(T),
          D = function (e) {
        function t(t) {
          var i = this,
              r = t.material,
              a = r.getParameters();
          return i = e.call(this, u.makeCtorParameters(t, a)) || this, i.params = m.copyParameters(a), i.technique = i.techniqueRep.acquireAndReleaseExisting(g.DefaultMaterialTechnique, i.material.getTechniqueConfig(2), i.technique), i.selectPipeline(), i.selectSlot(), i;
        }

        return i(t, e), t.prototype.beginSlot = function (e) {
          return e === this.slot;
        }, t.prototype.getProgram = function () {
          return this.technique.program;
        }, t.prototype.getPrograms = function () {
          return null;
        }, t.prototype.selectPipeline = function () {
          var e = this.params;
          this.pipelineState = P.makePipelineState({
            culling: V(e),
            depthTest: {
              func: 513
            },
            depthWrite: e.writeDepth && P.defaultDepthWriteParams,
            colorWrite: P.defaultColorWriteParams
          });
        }, t.prototype.selectSlot = function () {
          this.slot = y(this.params.transparent, this.params.writeDepth);
        }, t.prototype.updateParameters = function () {
          this.params = m.copyParameters(this.material.getParameters()), this.technique = this.techniqueRep.acquireAndReleaseExisting(g.DefaultMaterialTechnique, this.material.getTechniqueConfig(2), this.technique), this.selectPipeline(), this.selectSlot(), this.updateTexture(this.params.textureId);
        }, t.prototype.bind = function (e, t) {
          var i = this.technique.program,
              r = this.params;
          e.bindProgram(i), e.setPipelineState(this.pipelineState), this.technique.bindPass(e, r, t), m.bindVerticalOffset(r.verticalOffset, t, i), m.bindScreenSizePerspective(r.screenSizePerspective, i), this.bindTexture(e, i);
        }, t.prototype.release = function () {}, t.prototype.bindView = function (e) {
          var t = this.technique.program,
              i = this.params,
              r = i.instancedDoublePrecision ? o.vec3f64.fromValues(e.viewInvTransp[3], e.viewInvTransp[7], e.viewInvTransp[11]) : e.origin;
          m.bindView(r, e.view, t), t.setUniformMatrix4fv("viewNormal", e.viewInvTransp), i.slicePlaneEnabled && m.bindSlicePlane(r, e.slicePlane, t), i.screenSizePerspective && m.bindCamPos(r, e.viewInvTransp, t), i.instancedDoublePrecision && m.bindViewOriginDouble(r, t);
        }, t.prototype.bindInstance = function (e) {
          var t = this.technique.program;
          t.setUniformMatrix4fv("model", e.transformation), t.setUniformMatrix4fv("modelNormal", e.transformationNormal);
        }, t.prototype.getDrawMode = function () {
          return 4;
        }, t;
      }(u),
          M = function (e) {
        function t(t) {
          var i = this,
              r = t.material;
          return i = e.call(this, u.makeCtorParameters(t, r.getParameters())) || this, i.updateParameters(), i;
        }

        return i(t, e), t.prototype.beginSlot = function (e) {
          return e === this.slot;
        }, t.prototype.getProgram = function () {
          return this.technique.program;
        }, t.prototype.getPrograms = function () {
          return null;
        }, t.prototype.selectPipeline = function () {
          var e = this.params;
          this.pipelineState = P.makePipelineState({
            culling: V(e),
            depthTest: {
              func: 513
            },
            depthWrite: e.writeDepth && P.defaultDepthWriteParams,
            colorWrite: P.defaultColorWriteParams
          });
        }, t.prototype.selectSlot = function () {
          this.slot = y(this.params.transparent, this.params.writeDepth);
        }, t.prototype.updateParameters = function () {
          this.params = m.copyParameters(this.material.getParameters()), this.technique = this.techniqueRep.acquireAndReleaseExisting(g.DefaultMaterialTechnique, this.material.getTechniqueConfig(4), this.technique), this.selectPipeline(), this.selectSlot(), this.updateTexture(this.params.textureId);
        }, t.prototype.bind = function (e, t) {
          var i = this.technique.program,
              r = this.params;
          e.bindProgram(i), e.setPipelineState(this.pipelineState), this.technique.bindPass(e, r, t), m.bindVerticalOffset(r.verticalOffset, t, i), m.bindScreenSizePerspective(r.screenSizePerspective, i), this.bindTexture(e, i);
        }, t.prototype.release = function () {}, t.prototype.bindView = function (e) {
          var t = this.technique.program,
              i = this.params,
              r = i.instancedDoublePrecision ? o.vec3f64.fromValues(e.viewInvTransp[3], e.viewInvTransp[7], e.viewInvTransp[11]) : e.origin;
          m.bindView(r, e.view, t), i.slicePlaneEnabled && m.bindSlicePlane(r, e.slicePlane, t), i.screenSizePerspective && m.bindCamPos(r, e.viewInvTransp, t), i.instancedDoublePrecision && m.bindViewOriginDouble(r, t);
        }, t.prototype.bindInstance = function (e) {
          var t = this.technique.program;
          t.setUniformMatrix4fv("model", e.transformation), t.setUniformMatrix4fv("modelNormal", e.transformationNormal);
        }, t.prototype.getDrawMode = function () {
          return 4;
        }, t;
      }(u);

      !function (e) {
        e.COLOR_GAMMA = 2.1;
      }(S || (S = {}));

      var I = {
        textureId: void 0,
        initTextureTransparent: !1,
        usePBR: !1,
        normalTextureId: void 0,
        vertexTangents: !1,
        occlusionTextureId: void 0,
        emissiveTextureId: void 0,
        metallicRoughnessTextureId: void 0,
        emissiveFactor: [0, 0, 0],
        metallicFactor: 0,
        roughnessFactor: 1,
        reflectanceFactor: .5,
        ambient: [.2, .2, .2],
        diffuse: [.8, .8, .8],
        specular: [0, 0, 0],
        externalColor: [1, 1, 1, 1],
        colorMixMode: "multiply",
        opacity: 1,
        layerOpacity: 1,
        vertexColors: !1,
        symbolColors: !1,
        doubleSided: !1,
        doubleSidedType: "normal",
        cullFace: void 0,
        softwareInstanced: !1,
        instanced: void 0,
        instancedDoublePrecision: !1,
        normals: "default",
        receiveSSAO: !0,
        receiveShadows: !1,
        castShadows: !0,
        verticalOffset: null,
        screenSizePerspective: null,
        slicePlaneEnabled: !1,
        sliceHighlightDisabled: !1,
        offsetTransparentBackfaces: !1,
        vvSizeEnabled: !1,
        vvSizeMinSize: [1, 1, 1],
        vvSizeMaxSize: [100, 100, 100],
        vvSizeOffset: [0, 0, 0],
        vvSizeFactor: [1, 1, 1],
        vvSizeValue: [1, 1, 1],
        vvColorEnabled: !1,
        vvColorValues: [0, 0, 0, 0, 0, 0, 0, 0],
        vvColorColors: [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0],
        vvSymbolAnchor: [0, 0, 0],
        vvSymbolRotationMatrix: n.mat3f64.create(),
        transparent: !1,
        writeDepth: !0,
        textureAlphaMode: "blend",
        textureAlphaCutoff: l.TEXTURE_ALPHA_CUTOFF_DEFAULT,
        textureAlphaPremultiplied: !1
      },
          O = function () {
        function e(e, t) {
          this.vertexBufferLayout = e, this.instanceBufferLayout = t;
        }

        return e.prototype.allocate = function (e) {
          return this.vertexBufferLayout.createBuffer(e);
        }, e.prototype.elementCount = function (e) {
          return e.indices.position.length;
        }, e.prototype.write = function (e, t, i, r) {
          f.writeDefaultAttributes(t, this.vertexBufferLayout, e.transformation, e.invTranspTransformation, i, r);
        }, e;
      }(),
          A = function A(e) {
        return e.transparent && b.separateBlendingParams(770, 1, 771, 771);
      },
          V = function V(e) {
        return x(e) && {
          face: 1 === e.cullFace ? 1028 : 1029,
          mode: 2305
        };
      },
          R = o.vec3f64.create(),
          z = o.vec3f64.create(),
          E = o.vec3f64.fromValues(0, 0, 1),
          B = o.vec3f64.create(),
          L = o.vec3f64.create(),
          W = o.vec3f64.create(),
          k = o.vec3f64.create();

      return S;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/RibbonLineMaterial.js":
  /*!******************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/RibbonLineMaterial.js ***!
    \******************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsRibbonLineMaterialJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/extendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/extendsHelper.js"), __webpack_require__(
    /*! ../../../../core/tsSupport/assignHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/assignHelper.js"), __webpack_require__(
    /*! ../../../../core/Logger */
    "./node_modules/arcgis-js-api/core/Logger.js"), __webpack_require__(
    /*! ../../../../core/mathUtils */
    "./node_modules/arcgis-js-api/core/mathUtils.js"), __webpack_require__(
    /*! ../../../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../../../../core/screenUtils */
    "./node_modules/arcgis-js-api/core/screenUtils.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec2 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec2.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../support/geometryUtils */
    "./node_modules/arcgis-js-api/views/3d/support/geometryUtils.js"), __webpack_require__(
    /*! ../../support/buffer/InterleavedLayout */
    "./node_modules/arcgis-js-api/views/3d/support/buffer/InterleavedLayout.js"), __webpack_require__(
    /*! ../lib/ComponentUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/ComponentUtils.js"), __webpack_require__(
    /*! ../lib/geometryDataUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/geometryDataUtils.js"), __webpack_require__(
    /*! ../lib/GLMaterial */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GLMaterial.js"), __webpack_require__(
    /*! ../lib/Material */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Material.js"), __webpack_require__(
    /*! ../lib/Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js"), __webpack_require__(
    /*! ./VisualVariableMaterialParameters */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/VisualVariableMaterialParameters.js"), __webpack_require__(
    /*! ./internal/MaterialUtil */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/MaterialUtil.js"), __webpack_require__(
    /*! ./renderers/MergedRenderer */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/MergedRenderer.js"), __webpack_require__(
    /*! ../shaders/RibbonLineTechnique */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/RibbonLineTechnique.js"), __webpack_require__(
    /*! ../shaders/RibbonLineTechnique */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/RibbonLineTechnique.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, i, n, r, a, s, o, c, p, u, l, h, v, b, f, d, m, g, C, A, S, y) {
      function R(t, e, i, n, r) {
        for (var a = 0; a < r; a++) i[n++] = t[e++];

        return n;
      }

      var x = r.getLogger("esri.views.3d.webgl-engine.materials.RibbonLineMaterial"),
          P = function (t) {
        function e(e, i) {
          var n = t.call(this, i) || this;
          return n.techniqueConfig = new y.RibbonLineTechniqueConfiguration(), n.params = C.copyParameters(e, V), n.validateParams(), n.params.transparent = n.params.color[3] < 1 || n.params.transparent, n.layout = n.createLayout(), n;
        }

        return i(e, t), e.prototype.dispose = function () {}, e.prototype.setParameterValues = function (t) {
          for (var e in t) if ("cap" !== e) {
            if ("join" === e) {
              var i = "round" === this.params[e],
                  n = "round" === t[e];

              if (i !== n) {
                x.error("join cannot be changed after creation");
                continue;
              }
            }

            if ("stipplePattern" === e) {
              var r = !!this.params[e],
                  a = !!t[e];

              if (r !== a) {
                x.error("stippledness cannot be changed after creation");
                continue;
              }
            }

            this.params[e] = t[e];
          } else x.error("cap cannot be changed after creation");

          this.validateParams(), this.notifyDirty("matChanged");
        }, e.prototype.getParameters = function () {
          return this.params;
        }, e.prototype.getPassParameters = function () {
          return this.params;
        }, e.prototype.getTechniqueConfig = function (t) {
          this.techniqueConfig.output = t;
          var e = s.isSome(this.params.stipplePattern);
          return this.techniqueConfig.stippleEnabled = e, this.techniqueConfig.stippleIntegerRepeatsEnabled = e && this.params.stippleIntegerRepeats, this.techniqueConfig.stippleOffColorEnabled = e && s.isSome(this.params.stippleOffColor), this.techniqueConfig.slicePlaneEnabled = this.params.slicePlaneEnabled, this.techniqueConfig.roundJoins = "round" === this.params.join, this.techniqueConfig.roundCaps = "round" === this.params.cap, this.techniqueConfig.transparent = this.params.transparent, this.techniqueConfig.polygonOffset = this.params.polygonOffset, this.techniqueConfig.writeDepth = this.params.writeDepth, this.techniqueConfig.vvColor = this.params.vvColorEnabled, this.techniqueConfig.vvOpacity = this.params.vvOpacityEnabled, this.techniqueConfig.vvSize = this.params.vvSizeEnabled, this.techniqueConfig.writeDepth = this.params.writeDepth, this.techniqueConfig.writeDepth = this.params.writeDepth, this.techniqueConfig;
        }, e.prototype.intersect = function (t, e, i, n, r, a, s, o, c) {
          c ? C.intersectDrapedRenderLineGeometry(t, n, a, this.params.width, s) : this.intersectLineGeometry(t, e, i, n, this.params.width, s);
        }, e.prototype.intersectLineGeometry = function (t, e, i, n, r, s) {
          if (n.options.selectionMode && !v.isAllHidden(e.componentVisibilities, t.componentOffsets)) {
            if (!m.isTranslationMatrix(i)) return void x.error("intersection assumes a translation-only matrix");
            var o = t.data,
                u = o.getVertexAttr(),
                h = u[y.RibbonVertexAttributeConstants.POSITION].data,
                b = r;

            if (this.params.vvSizeEnabled) {
              var f = u[y.RibbonVertexAttributeConstants.SIZEFEATUREATTRIBUTE].data[0];
              b *= a.clamp(this.params.vvSizeOffset[0] + f * this.params.vvSizeFactor[0], this.params.vvSizeMinSize[0], this.params.vvSizeMaxSize[0]);
            } else u[y.RibbonVertexAttributeConstants.SIZE] && (b *= u[y.RibbonVertexAttributeConstants.SIZE].data[0]);

            var d = n.camera,
                g = B;
            c.vec2.copy(g, n.point);
            var C = b * d.pixelRatio,
                A = 4 * d.pixelRatio,
                S = C / 2 + A;
            p.vec3.set(H[0], g[0] - S, g[1] + S, 0), p.vec3.set(H[1], g[0] + S, g[1] + S, 0), p.vec3.set(H[2], g[0] + S, g[1] - S, 0), p.vec3.set(H[3], g[0] - S, g[1] - S, 0);

            for (var R = 0; R < 4; R++) d.unprojectPoint(H[R], Y[R]);

            l.plane.fromPoints(d.eye, Y[0], Y[1], _), l.plane.fromPoints(d.eye, Y[1], Y[2], W), l.plane.fromPoints(d.eye, Y[2], Y[3], K), l.plane.fromPoints(d.eye, Y[3], Y[0], Q);

            for (var P = Number.MAX_VALUE, E = this.params.isClosed ? h.length - 2 : h.length - 5, R = 0; R < E; R += 3) {
              U[0] = h[R] + i[12], U[1] = h[R + 1] + i[13], U[2] = h[R + 2] + i[14];
              var I = (R + 3) % h.length;

              if (w[0] = h[I] + i[12], w[1] = h[I + 1] + i[13], w[2] = h[I + 2] + i[14], !(l.plane.signedDistance(_, U) < 0 && l.plane.signedDistance(_, w) < 0 || l.plane.signedDistance(W, U) < 0 && l.plane.signedDistance(W, w) < 0 || l.plane.signedDistance(K, U) < 0 && l.plane.signedDistance(K, w) < 0 || l.plane.signedDistance(Q, U) < 0 && l.plane.signedDistance(Q, w) < 0)) {
                if (d.projectPoint(U, N), d.projectPoint(w, z), N[2] < 0 && z[2] > 0) {
                  p.vec3.subtract(D, U, w);
                  var O = d.frustum,
                      V = -l.plane.signedDistance(O.planes[4], U),
                      T = V / p.vec3.dot(D, O.planes[4]);
                  p.vec3.scale(D, D, T), p.vec3.add(U, U, D), d.projectPoint(U, N);
                } else if (N[2] > 0 && z[2] < 0) {
                  p.vec3.subtract(D, w, U);
                  var O = d.frustum,
                      V = -l.plane.signedDistance(O.planes[4], w),
                      T = V / p.vec3.dot(D, O.planes[4]);
                  p.vec3.scale(D, D, T), p.vec3.add(w, w, D), d.projectPoint(w, z);
                } else if (N[2] < 0 && z[2] < 0) continue;

                N[2] = 0, z[2] = 0;
                var q = l.lineSegment.distance2(l.lineSegment.fromPoints(N, z, Z), g);
                q < P && (P = q, p.vec3.copy(j, U), p.vec3.copy(F, w));
              }
            }

            var L = n.rayBeginPoint,
                J = n.rayEndPoint;

            if (P < S * S) {
              var X = Number.MAX_VALUE;

              if (l.lineSegment.closestLineSegmentPoint(l.lineSegment.fromPoints(j, F, Z), l.lineSegment.fromPoints(L, J, G), M)) {
                p.vec3.subtract(M, M, L);
                var k = p.vec3.length(M);
                p.vec3.scale(M, M, 1 / k), X = k / p.vec3.distance(L, J);
              }

              s(X, M);
            }
          }
        }, e.prototype.computeAttachmentOrigin = function (t, e) {
          var i = t.data,
              n = "getVertexAttr" in i ? i.getVertexAttr() : "vertexAttr" in i ? i.vertexAttr : null;
          if (!n) return null;
          var r = y.RibbonVertexAttributeConstants.POSITION,
              a = n[r];
          return b.computeAttachmentOriginLines(a, null, e);
        }, e.prototype.createLayout = function () {
          var t = h.newLayout().vec3f(y.RibbonVertexAttributeConstants.POSITION).f32(y.RibbonVertexAttributeConstants.SUBDIVISIONFACTOR).vec2f(y.RibbonVertexAttributeConstants.UV0).vec3f(y.RibbonVertexAttributeConstants.AUXPOS1).vec3f(y.RibbonVertexAttributeConstants.AUXPOS2);
          return this.params.vvSizeEnabled ? t.f32(y.RibbonVertexAttributeConstants.SIZEFEATUREATTRIBUTE) : t.f32(y.RibbonVertexAttributeConstants.SIZE), this.params.vvColorEnabled ? t.f32(y.RibbonVertexAttributeConstants.COLORFEATUREATTRIBUTE) : t.vec4f(y.RibbonVertexAttributeConstants.COLOR), this.params.vvOpacityEnabled && t.f32(y.RibbonVertexAttributeConstants.OPACITYFEATUREATTRIBUTE), t;
        }, e.prototype.createBufferWriter = function () {
          return new T(this.layout, this.params);
        }, e.prototype.createRenderer = function (t, e) {
          return new A(t, e, this, y.ribbonVertexAttributeLocations);
        }, e.prototype.getGLMaterials = function () {
          return {
            color: I,
            depthShadowMap: void 0,
            normal: void 0,
            depth: void 0,
            highlight: O
          };
        }, e.prototype.validateParams = function () {
          this.params.width && this.params.width > 1 && (this.params.width = Math.round(this.params.width)), "miter" !== this.params.join && (this.params.miterLimit = 0);
        }, e;
      }(d.Material),
          E = function (t) {
        function e(e) {
          var i = t.call(this, e) || this;
          return i.output = e.output, i.updateParameters(), i;
        }

        return i(e, t), e.prototype.updateParameters = function () {
          this.technique = this.techniqueRep.acquireAndReleaseExisting(S.RibbonLineTechnique, this.material.getTechniqueConfig(this.output), this.technique);
        }, e.prototype.beginSlot = function (t) {
          if (0 === this.output) {
            return t === (this.technique.configuration.writeDepth ? 6 : 9);
          }

          return 4 === t;
        }, e.prototype.getProgram = function () {
          return this.technique.program;
        }, e.prototype.getPrograms = function () {
          return null;
        }, e.prototype.bind = function (t, e) {
          t.bindProgram(this.technique.program), this.technique.bindPipelineState(t), this.technique.bindPass(t, this.material.getPassParameters(), e);
        }, e.prototype.release = function () {}, e.prototype.bindView = function (t) {
          this.technique.bindDraw(t);
        }, e.prototype.bindInstance = function (t) {
          this.technique.bindInstance(t);
        }, e.prototype.getDrawMode = function () {
          return 5;
        }, e;
      }(f.GLMaterial),
          I = function (t) {
        function e(e) {
          return t.call(this, n({}, e, {
            output: 0
          })) || this;
        }

        return i(e, t), e;
      }(E),
          O = function (t) {
        function e(e) {
          return t.call(this, n({}, e, {
            output: 4
          })) || this;
        }

        return i(e, t), e;
      }(E),
          V = n({
        width: 0,
        color: [1, 1, 1, 1],
        join: "miter",
        cap: "butt",
        miterLimit: 5,
        writeDepth: !0,
        polygonOffset: !1,
        stipplePattern: null,
        stippleIntegerRepeats: !1,
        stippleOffColor: null,
        slicePlaneEnabled: !1,
        vvFastUpdate: !1,
        transparent: !1,
        isClosed: !1
      }, g.Default),
          T = function () {
        function t(t, e) {
          if (this.params = e, this.numCapSubdivisions = 0, this.numJoinSubdivisions = 0, this.vertexBufferLayout = t, !e.isClosed) switch (this.params.cap) {
            case "butt":
              this.numCapSubdivisions = 0;
              break;

            case "square":
              this.numCapSubdivisions = 1;
              break;

            case "round":
              this.numCapSubdivisions = q;
          }

          switch (this.params.join) {
            case "miter":
            case "bevel":
              this.numJoinSubdivisions = e.stipplePattern ? 1 : 0;
              break;

            case "round":
              this.numJoinSubdivisions = L;
          }
        }

        return t.prototype.allocate = function (t) {
          return this.vertexBufferLayout.createBuffer(t);
        }, t.prototype.elementCount = function (t) {
          var e = 2 * this.numCapSubdivisions + 2,
              i = t.indices[y.RibbonVertexAttributeConstants.POSITION].length / 2 + 1,
              n = this.params.isClosed,
              r = n ? 2 : 2 * e,
              a = n ? 0 : 1,
              s = n ? i : i - 1;
          if (t.vertexAttr[y.RibbonVertexAttributeConstants.SUBDIVISIONS]) for (var o = t.vertexAttr[y.RibbonVertexAttributeConstants.SUBDIVISIONS].data, c = a; c < s; ++c) {
            var p = o[c];
            r += 4 + 2 * p;
          } else {
            r += s * (2 * this.numJoinSubdivisions + 4);
          }
          return r += 2;
        }, t.prototype.write = function (t, e, i, n) {
          var r = this,
              a = J,
              s = X,
              o = k,
              c = e.vertexAttr[y.RibbonVertexAttributeConstants.POSITION].data,
              u = e.indices && e.indices[y.RibbonVertexAttributeConstants.POSITION];
          u && u.length !== 2 * (c.length / 3 - 1) && console.warn("RibbonLineMaterial does not support indices");
          var l = null;
          e.vertexAttr[y.RibbonVertexAttributeConstants.SUBDIVISIONS] && (l = e.vertexAttr[y.RibbonVertexAttributeConstants.SUBDIVISIONS].data);
          var h = 1,
              v = 0;
          this.params.vvSizeEnabled ? v = e.vertexAttr[y.RibbonVertexAttributeConstants.SIZEFEATUREATTRIBUTE].data[0] : e.vertexAttr[y.RibbonVertexAttributeConstants.SIZE] && (h = e.vertexAttr[y.RibbonVertexAttributeConstants.SIZE].data[0]);
          var b = [1, 1, 1, 1],
              f = 0;
          this.params.vvColorEnabled ? f = e.vertexAttr[y.RibbonVertexAttributeConstants.COLORFEATUREATTRIBUTE].data[0] : e.vertexAttr[y.RibbonVertexAttributeConstants.COLOR] && (b = e.vertexAttr[y.RibbonVertexAttributeConstants.COLOR].data);
          var d = 0;
          this.params.vvOpacityEnabled && (d = e.vertexAttr[y.RibbonVertexAttributeConstants.OPACITYFEATUREATTRIBUTE].data[0]);

          var m = c.length / 3,
              g = t.transformation,
              C = new Float32Array(i.buffer),
              A = this.vertexBufferLayout.stride / 4,
              S = n * A,
              x = S,
              P = function P(t, e, i, n, a, s) {
            C[S++] = e[0], C[S++] = e[1], C[S++] = e[2], C[S++] = n, C[S++] = a, C[S++] = s, C[S++] = t[0], C[S++] = t[1], C[S++] = t[2], C[S++] = i[0], C[S++] = i[1], C[S++] = i[2], r.params.vvSizeEnabled ? C[S++] = v : C[S++] = h, r.params.vvColorEnabled ? C[S++] = f : (C[S++] = b[0], C[S++] = b[1], C[S++] = b[2], C[S++] = b[3]), r.params.vvOpacityEnabled && (C[S++] = d);
          };

          S += A, p.vec3.set(s, c[0], c[1], c[2]), g && p.vec3.transformMat4(s, s, g);
          var E = this.params.isClosed;

          if (E) {
            var I = c.length - 3;
            p.vec3.set(a, c[I], c[I + 1], c[I + 2]), g && p.vec3.transformMat4(a, a, g);
          } else {
            p.vec3.copy(a, s), p.vec3.set(o, c[3], c[4], c[5]), g && p.vec3.transformMat4(o, o, g);

            for (var O = 0; O < this.numCapSubdivisions; ++O) {
              var V = 1 - O / this.numCapSubdivisions;
              P(a, s, o, V, 1, -4), P(a, s, o, V, 1, 4);
            }

            P(a, s, o, 0, 0, -4), P(a, s, o, 0, 0, 4), p.vec3.copy(a, s), p.vec3.copy(s, o);
          }

          for (var T = E ? 0 : 1, q = E ? m : m - 1, O = T; O < q; O++) {
            var L = (O + 1) % m * 3;
            p.vec3.set(o, c[L + 0], c[L + 1], c[L + 2]), g && p.vec3.transformMat4(o, o, g), P(a, s, o, 0, 1, -1), P(a, s, o, 0, 1, 1);

            for (var U = l ? l[O] : this.numJoinSubdivisions, w = 0; w < U; ++w) {
              var V = (w + 1) / (U + 1);
              P(a, s, o, V, 1, -2), P(a, s, o, V, 1, 2);
            }

            P(a, s, o, 1, 0, -2), P(a, s, o, 1, 0, 2), p.vec3.copy(a, s), p.vec3.copy(s, o);
          }

          if (E) {
            S = R(C, x + A, C, S, 2 * A);
          } else {
            P(a, s, o, 0, 1, -5), P(a, s, o, 0, 1, 5);

            for (var O = 0; O < this.numCapSubdivisions; ++O) {
              var V = (O + 1) / this.numCapSubdivisions;
              P(a, s, o, V, 1, -5), P(a, s, o, V, 1, 5);
            }
          }

          R(C, x + A, C, x, A), S = R(C, S - A, C, S, A);
        }, t;
      }(),
          q = 3,
          L = 1,
          U = u.vec3f64.create(),
          w = u.vec3f64.create(),
          D = u.vec3f64.create(),
          M = u.vec3f64.create(),
          B = u.vec3f64.create(),
          N = o.createRenderScreenPointArray3(),
          z = o.createRenderScreenPointArray3(),
          j = u.vec3f64.create(),
          F = u.vec3f64.create(),
          Z = l.lineSegment.create(),
          G = l.lineSegment.create(),
          J = u.vec3f64.create(),
          X = u.vec3f64.create(),
          k = u.vec3f64.create(),
          H = [o.createRenderScreenPointArray3(), o.createRenderScreenPointArray3(), o.createRenderScreenPointArray3(), o.createRenderScreenPointArray3()],
          Y = [u.vec3f64.create(), u.vec3f64.create(), u.vec3f64.create(), u.vec3f64.create()],
          _ = l.plane.create(),
          W = l.plane.create(),
          K = l.plane.create(),
          Q = l.plane.create();

      return P;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/VisualVariableMaterialParameters.js":
  /*!********************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/VisualVariableMaterialParameters.js ***!
    \********************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsVisualVariableMaterialParametersJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/mat3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat3f64.js"), __webpack_require__(
    /*! ../../../../core/libs/gl-matrix-2/vec3f32 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f32.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, v, a, i) {
      var o;
      return function (e) {
        e.Default = {
          vvSizeEnabled: !1,
          vvSizeMinSize: i.vec3f32.fromValues(1, 1, 1),
          vvSizeMaxSize: i.vec3f32.fromValues(100, 100, 100),
          vvSizeOffset: i.vec3f32.fromValues(0, 0, 0),
          vvSizeFactor: i.vec3f32.fromValues(1, 1, 1),
          vvSizeValue: i.vec3f32.fromValues(1, 1, 1),
          vvColorEnabled: !1,
          vvColorValues: [0, 0, 0, 0, 0, 0, 0, 0],
          vvColorColors: [1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0],
          vvOpacityEnabled: !1,
          vvOpacityValues: [0, 0, 0, 0, 0, 0, 0, 0],
          vvOpacityOpacities: [1, 1, 1, 1, 1, 1, 1, 1],
          vvSymbolAnchor: [0, 0, 0],
          vvSymbolRotationMatrix: a.mat3f64.create()
        };
      }(o || (o = {})), o;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/WaterGLMaterial.js":
  /*!***************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/WaterGLMaterial.js ***!
    \***************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsWaterGLMaterialJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/extendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/extendsHelper.js"), __webpack_require__(
    /*! ../lib/GLMaterial */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/GLMaterial.js"), __webpack_require__(
    /*! ./WaterTechnique */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/WaterTechnique.js"), __webpack_require__(
    /*! ./internal/MaterialUtil */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/MaterialUtil.js"), __webpack_require__(
    /*! ./internal/waterMaterialUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/waterMaterialUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, i, r, a, n, o) {
      Object.defineProperty(t, "__esModule", {
        value: !0
      });

      var s = function (e) {
        function t(t) {
          var i = e.call(this, t) || this;
          return i.techniqueConfig = new a.WaterTechniqueConfiguration(), i.updateParameters(), i;
        }

        return i(t, e), t.prototype.updateParameters = function () {
          this.params = n.copyParameters(this.material.getParameters()), this.selectProgram(0);
        }, t.prototype.selectProgram = function (e) {
          this.techniqueConfig.output = e, this.techniqueConfig.writeDepth = this.params.writeDepth, this.techniqueConfig.receiveShadows = this.params.receiveShadows, this.techniqueConfig.slice = this.params.slicePlaneEnabled, this.techniqueConfig.transparent = this.params.transparent, this.technique = this.techniqueRep.acquireAndReleaseExisting(a.WaterTechnique, this.techniqueConfig, this.technique);
        }, t.prototype.beginSlot = function (e) {
          var t = 4;
          return this.params.transparent && (t = this.params.writeDepth ? 6 : 9), e === t;
        }, t.prototype.getProgram = function () {
          return this.technique.program;
        }, t.prototype.getPrograms = function () {
          return null;
        }, t.prototype._initTextures = function (e) {
          this.texturePaths = [this.params.waveTexture, this.params.perturbationTexture], o.waterTextureRepo.initialize(e, this.texturePaths);
        }, t.prototype._setWaveUniforms = function (e) {
          e.setUniform1i("texWaveNormal", 0), e.setUniform1i("texWavePerturbation", 1), e.setUniform4f("waveParams", this.params.waveStrength, this.params.waveTextureRepeat, this.params.flowStrength, this.params.flowOffset), e.setUniform2f("waveDirection", this.params.waveDirection[0] * this.params.waveVelocity, this.params.waveDirection[1] * this.params.waveVelocity);
          var t = .001 * this.material.animation.time;
          e.setUniform1f("timeElapsed", t * this.params.animationSpeed);
        }, t.prototype._updateShadowState = function (e) {
          e.shadowMappingEnabled !== this.params.receiveShadows && (this.material.setParameterValues({
            receiveShadows: e.shadowMappingEnabled
          }), this.updateParameters());
        }, t.prototype.ensureResources = function (e) {
          return o.waterTextureRepo.ready() || o.waterTextureRepo.loading() || this._initTextures(e), o.waterTextureRepo.ready() ? 2 : 1;
        }, t.prototype.bind = function (e, t) {
          o.waterTextureRepo.ready() && (this._updateShadowState(t), e.bindProgram(this.technique.program), e.setPipelineState(this.technique.pipeline), o.waterTextureRepo.bindRepo(e), this.technique.program.setUniform4fv("waterColor", this.params.color), this._setWaveUniforms(this.technique.program));
        }, t.prototype.release = function () {}, t.prototype.bindView = function (e) {
          var t = this.technique.program;
          t.setUniform3fv("localOrigin", e.origin), n.bindView(e.origin, e.view, t), n.bindCamPos(e.origin, e.viewInvTransp, t), this.params.slicePlaneEnabled && n.bindSlicePlane(e.origin, e.slicePlane, t), e.shadowMappingEnabled && (e.shadowMap.bind(t), e.shadowMap.bindView(t, e.origin));
        }, t.prototype.bindInstance = function (e) {
          this.technique.program.setUniformMatrix4fv("model", e.transformation);
        }, t.prototype.getDrawMode = function () {
          return 4;
        }, t;
      }(r.GLMaterial);

      t.WaterGLMaterial = s;

      var p = function (e) {
        function t() {
          return null !== e && e.apply(this, arguments) || this;
        }

        return i(t, e), t.prototype.updateParameters = function () {
          this.params = n.copyParameters(this.material.getParameters()), this.selectProgram(5);
        }, t.prototype.bind = function (e) {
          e.bindProgram(this.technique.program), e.setPipelineState(this.technique.pipeline), this.technique.program.setUniform4fv("waterColor", this.params.color);
        }, t.prototype.bindView = function (e) {
          this.technique.program.setUniform3fv("localOrigin", e.origin), n.bindView(e.origin, e.view, this.technique.program);
        }, t.prototype.beginSlot = function (e) {
          return null == e;
        }, t;
      }(s);

      t.WaterDrapedGLMaterial = p;

      var h = function (e) {
        function t() {
          return null !== e && e.apply(this, arguments) || this;
        }

        return i(t, e), t.prototype.updateParameters = function () {
          this.params = n.copyParameters(this.material.getParameters()), this.selectProgram(2);
        }, t.prototype.bind = function (e) {
          o.waterTextureRepo.ready() && (e.bindProgram(this.technique.program), e.setPipelineState(this.technique.pipeline), o.waterTextureRepo.bindRepo(e), this._setWaveUniforms(this.technique.program));
        }, t.prototype.bindView = function (e) {
          this.technique.program.setUniform3fv("localOrigin", e.origin), n.bindView(e.origin, e.view, this.technique.program);
        }, t.prototype.beginSlot = function (e) {
          return 19 === e;
        }, t;
      }(s);

      t.WaterNormalGLMaterial = h;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/WaterTechnique.js":
  /*!**************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/WaterTechnique.js ***!
    \**************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsWaterTechniqueJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/extendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/extendsHelper.js"), __webpack_require__(
    /*! ../../../../core/tsSupport/decorateHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/decorateHelper.js"), __webpack_require__(
    /*! ../../../../core/tsSupport/assignHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/assignHelper.js"), __webpack_require__(
    /*! ../core/shaderTechnique/ReloadableShaderModule */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ReloadableShaderModule.js"), __webpack_require__(
    /*! ../core/shaderTechnique/ShaderTechnique */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechnique.js"), __webpack_require__(
    /*! ../core/shaderTechnique/ShaderTechniqueConfiguration */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueConfiguration.js"), __webpack_require__(
    /*! ../lib/DefaultVertexAttributeLocations */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js"), __webpack_require__(
    /*! ../shaders/WaterSurface.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/WaterSurface.glsl.js"), __webpack_require__(
    /*! ../../../webgl/Program */
    "./node_modules/arcgis-js-api/views/webgl/Program.js"), __webpack_require__(
    /*! ../../../webgl/renderState */
    "./node_modules/arcgis-js-api/views/webgl/renderState.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, i, a, o, n, u, p, l, s, d) {
      Object.defineProperty(t, "__esModule", {
        value: !0
      });

      var c = function (t) {
        function i() {
          return null !== t && t.apply(this, arguments) || this;
        }

        return r(i, t), i.prototype.initializeProgram = function (e) {
          var t = i.shader.get(),
              r = this.configuration,
              a = t.build({
            output: r.output,
            viewingMode: e.viewingMode,
            slicePlaneEnabled: r.slice,
            sliceHighlightDisabled: !1,
            receiveShadows: r.receiveShadows,
            usePBR: !1,
            usePBRforWater: !0,
            useCustomDTRExponentForWater: !0
          });
          return new s(e.rctx, a.generateSource("vertex"), a.generateSource("fragment"), p.Default3D);
        }, i.prototype.initializePipeline = function () {
          var e = this.configuration;
          return 2 === e.output ? d.makePipelineState({
            depthTest: {
              func: 513
            },
            depthWrite: e.writeDepth && d.defaultDepthWriteParams,
            colorWrite: d.defaultColorWriteParams
          }) : d.makePipelineState({
            blending: e.transparent && d.separateBlendingParams(770, 1, 771, 771),
            depthTest: {
              func: 513
            },
            depthWrite: e.writeDepth && d.defaultDepthWriteParams,
            colorWrite: d.defaultColorWriteParams
          });
        }, i.prototype.bindPipelineState = function (e) {
          e.setPipelineState(this.pipeline);
        }, i.shader = new o.ReloadableShaderModule(l, "../shaders/WaterSurface.glsl", e), i;
      }(n.ShaderTechnique);

      t.WaterTechnique = c;

      var h = function (e) {
        function t() {
          var t = null !== e && e.apply(this, arguments) || this;
          return t.output = 0, t.receiveShadows = !1, t.slice = !1, t.transparent = !1, t.writeDepth = !1, t;
        }

        return r(t, e), i([u.parameter({
          count: 6
        })], t.prototype, "output", void 0), i([u.parameter()], t.prototype, "receiveShadows", void 0), i([u.parameter()], t.prototype, "slice", void 0), i([u.parameter()], t.prototype, "transparent", void 0), i([u.parameter()], t.prototype, "writeDepth", void 0), t;
      }(u.ShaderTechniqueConfiguration);

      t.WaterTechniqueConfiguration = h;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/DefaultBufferWriter.js":
  /*!****************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/DefaultBufferWriter.js ***!
    \****************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsInternalDefaultBufferWriterJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../support/buffer/InterleavedLayout */
    "./node_modules/arcgis-js-api/views/3d/support/buffer/InterleavedLayout.js"), __webpack_require__(
    /*! ../../lib/Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js"), __webpack_require__(
    /*! ./bufferWriterUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, r, n, o) {
      Object.defineProperty(e, "__esModule", {
        value: !0
      }), e.PositionLayout = r.newLayout().vec3f(n.VertexAttrConstants.POSITION), e.PositionUVLayout = r.newLayout().vec3f(n.VertexAttrConstants.POSITION).vec2f(n.VertexAttrConstants.UV0), e.PositionColorLayout = r.newLayout().vec3f(n.VertexAttrConstants.POSITION).vec4u8(n.VertexAttrConstants.COLOR);

      var u = function () {
        function t(t) {
          this.vertexBufferLayout = t;
        }

        return t.prototype.allocate = function (t) {
          return this.vertexBufferLayout.createBuffer(t);
        }, t.prototype.elementCount = function (t) {
          return t.indices[n.VertexAttrConstants.POSITION].length;
        }, t.prototype.write = function (t, e, r, n) {
          o.writeDefaultAttributes(e, this.vertexBufferLayout, t.transformation, t.invTranspTransformation, r, n);
        }, t;
      }();

      e.DefaultBufferWriter = u;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/MaterialUtil.js":
  /*!*********************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/MaterialUtil.js ***!
    \*********************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsInternalMaterialUtilJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/tsSupport/assignHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/assignHelper.js"), __webpack_require__(
    /*! ../../../../../core/mathUtils */
    "./node_modules/arcgis-js-api/core/mathUtils.js"), __webpack_require__(
    /*! ../../../../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4f32 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f32.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f64.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec4.js"), __webpack_require__(
    /*! ../../../../../geometry/support/aaBoundingBox */
    "./node_modules/arcgis-js-api/geometry/support/aaBoundingBox.js"), __webpack_require__(
    /*! ../../lib/ComponentUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/ComponentUtils.js"), __webpack_require__(
    /*! ../../lib/doublePrecisionUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/doublePrecisionUtils.js"), __webpack_require__(
    /*! ../../lib/screenSizePerspectiveUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/screenSizePerspectiveUtils.js"), __webpack_require__(
    /*! ../../lib/Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, i, n, a, o, c, s, f, l, u, v, m, d, g) {
      function p(e, t, r, i, n, a, o) {
        var c = t && t.componentVisibilities,
            s = r.tolerance;
        if (e.componentCount > 1) b(e, c, i, n, s, a, o);else if (!c || v.getVisibility(c, 0)) if (e.boundingInfo) g.assert("triangle" === e.data.primitiveType), h(e.boundingInfo, i, n, s, a, o);else {
          var f = e.getIndices(X.POSITION),
              l = e.getAttribute(X.POSITION),
              u = f.length / 3;
          x(i, n, 0, u, f, l, void 0, a, o);
        }
      }

      function h(e, t, r, i, a, o) {
        var c = B(t, r, Z);

        if (u.setMin(k, e.getBBMin()), u.setMax(k, e.getBBMax()), n.isSome(a) && a.applyToAABB(k), S(k, t, c, i)) {
          var s = e.getPrimitiveIndices(),
              f = e.getIndices(),
              l = e.getPosition(),
              v = s ? s.length : f.length / 3;

          if (v > ne) {
            var m = e.getChildren();

            if (void 0 !== m) {
              for (var d = 0; d < 8; ++d) void 0 !== m[d] && h(m[d], t, r, i, a, o);

              return;
            }
          }

          x(t, r, 0, v, f, l, s, a, o);
        }
      }

      function b(e, t, r, i, a, o, c) {
        var s = B(r, i, Z),
            f = e.componentCount,
            l = e.componentOffsets,
            m = e.getIndices(X.POSITION),
            d = e.getAttribute(X.POSITION),
            g = e.boundingInfo;
        if (!g || (u.setMin(k, g.getBBMin()), u.setMax(k, g.getBBMax()), n.isSome(o) && o.applyToAABB(k), S(k, r, s, a))) for (var p = 0; p < f; p++) if (!t || v.getVisibility(t, p)) {
          if (e.getComponentAABB) {
            var h = e.getComponentAABB(p, k);
            if (n.isSome(o) && o.applyToAABB(h), !S(h, r, s, a)) continue;
          }

          var b = l[p] / 3,
              M = l[p + 1] / 3;
          x(r, i, b, M, m, d, void 0, o, c);
        }
      }

      function x(e, t, r, i, a, o, c, s, f) {
        var l, u, v;
        if (c) return M(e, t, r, i, a, o, c, s, f);

        for (var m = o.data, d = o.offsetIdx, g = o.strideIdx, p = e[0], h = e[1], b = e[2], x = t[0], B = t[1], S = t[2], A = x - p, I = B - h, T = S - b, y = r, O = 3 * r; y < i; ++y) {
          var U = d + g * a[O++],
              L = m[U++],
              V = m[U++],
              w = m[U];
          U = d + g * a[O++];
          var D = m[U++],
              W = m[U++],
              R = m[U];
          U = d + g * a[O++];
          var E = m[U++],
              N = m[U++],
              C = m[U];
          n.isSome(s) && (l = s.applyToVertex(L, V, w), L = l[0], V = l[1], w = l[2], u = s.applyToVertex(D, W, R), D = u[0], W = u[1], R = u[2], v = s.applyToVertex(E, N, C), E = v[0], N = v[1], C = v[2]);

          var z = D - L,
              F = W - V,
              H = R - w,
              q = E - L,
              _ = N - V,
              j = C - w,
              G = I * j - _ * T,
              Y = T * q - j * A,
              k = A * _ - q * I,
              X = z * G + F * Y + H * k;

          if (!(Math.abs(X) <= J)) {
            var Z = p - L,
                Q = h - V,
                $ = b - w,
                ee = Z * G + Q * Y + $ * k;

            if (X > 0) {
              if (ee < 0 || ee > X) continue;
            } else if (ee > 0 || ee < X) continue;

            var te = Q * H - F * $,
                re = $ * z - H * Z,
                ie = Z * F - z * Q,
                ne = A * te + I * re + T * ie;

            if (X > 0) {
              if (ne < 0 || ee + ne > X) continue;
            } else if (ne > 0 || ee + ne < X) continue;

            var ae = (q * te + _ * re + j * ie) / X;

            if (ae >= 0) {
              f(ae, P(z, F, H, q, _, j, K), y);
            }
          }
        }
      }

      function M(e, t, r, i, a, o, c, s, f) {
        for (var l, u, v, m = o.data, d = o.offsetIdx, g = o.strideIdx, p = e[0], h = e[1], b = e[2], x = t[0], M = t[1], B = t[2], S = x - p, A = M - h, I = B - b, T = r; T < i; ++T) {
          var y = c[T],
              O = 3 * y,
              U = d + g * a[O++],
              L = m[U++],
              V = m[U++],
              w = m[U];
          U = d + g * a[O++];
          var D = m[U++],
              W = m[U++],
              R = m[U];
          U = d + g * a[O];
          var E = m[U++],
              N = m[U++],
              C = m[U];
          n.isSome(s) && (l = s.applyToVertex(L, V, w), L = l[0], V = l[1], w = l[2], u = s.applyToVertex(D, W, R), D = u[0], W = u[1], R = u[2], v = s.applyToVertex(E, N, C), E = v[0], N = v[1], C = v[2]);

          var z = D - L,
              F = W - V,
              H = R - w,
              q = E - L,
              _ = N - V,
              j = C - w,
              G = A * j - _ * I,
              Y = I * q - j * S,
              k = S * _ - q * A,
              X = z * G + F * Y + H * k;

          if (!(Math.abs(X) <= J)) {
            var Z = p - L,
                Q = h - V,
                $ = b - w,
                ee = Z * G + Q * Y + $ * k;

            if (X > 0) {
              if (ee < 0 || ee > X) continue;
            } else if (ee > 0 || ee < X) continue;

            var te = Q * H - F * $,
                re = $ * z - H * Z,
                ie = Z * F - z * Q,
                ne = S * te + A * re + I * ie;

            if (X > 0) {
              if (ne < 0 || ee + ne > X) continue;
            } else if (ne > 0 || ee + ne < X) continue;

            var ae = (q * te + _ * re + j * ie) / X;

            if (ae >= 0) {
              f(ae, P(z, F, H, q, _, j, K), y);
            }
          }
        }
      }

      function P(e, t, r, i, n, a, o) {
        return s.vec3.set(Q, e, t, r), s.vec3.set($, i, n, a), s.vec3.cross(o, Q, $), s.vec3.normalize(o, o), o;
      }

      function B(e, t, r) {
        return s.vec3.set(r, 1 / (t[0] - e[0]), 1 / (t[1] - e[1]), 1 / (t[2] - e[2]));
      }

      function S(e, t, r, i) {
        return A(e, t, r, i, 1 / 0);
      }

      function A(e, t, r, i, n) {
        var a = (e[0] - i - t[0]) * r[0],
            o = (e[3] + i - t[0]) * r[0],
            c = Math.min(a, o),
            s = Math.max(a, o),
            f = (e[1] - i - t[1]) * r[1],
            l = (e[4] + i - t[1]) * r[1];
        if ((s = Math.min(s, Math.max(f, l))) < 0) return !1;
        if ((c = Math.max(c, Math.min(f, l))) > s) return !1;
        var u = (e[2] - i - t[2]) * r[2],
            v = (e[5] + i - t[2]) * r[2];
        return !((s = Math.min(s, Math.max(u, v))) < 0) && !((c = Math.max(c, Math.min(u, v))) > s) && c < n;
      }

      function I(e, t, r) {
        return l.vec4.set(r, e[0] - t[0], e[1] - t[1], e[2] - t[2], 1);
      }

      function T(e, t, r, i) {
        return a.mat4.translate(Y, r, t), r = Y, l.vec4.transformMat4(i, e, r);
      }

      function y(e, t, r, i) {
        return i[0] = e[0] + r[0], i[1] = e[1] + r[1], i[2] = e[2] + r[2], i[3] = e[3], l.vec4.transformMat4(i, i, t);
      }

      function O(e, t) {
        return l.vec4.scale(t, e, 1 / Math.abs(e[3]));
      }

      function U(e, t, r, i) {
        return d.scale(e, r, t, i);
      }

      function L(e, t, r, n, a) {
        var o = (r.screenLength || 0) * e.pixelRatio;
        a && (o = U(o, t, n, a));
        var c = o * Math.tan(.5 * e.fovY) / (.5 * e.fullHeight);
        return i.clamp(c * t, r.minWorldLength || 0, null != r.maxWorldLength ? r.maxWorldLength : 1 / 0);
      }

      function V(e, t, r) {
        if (void 0 !== e) return t.acquire(e, r);
      }

      function w(e, t) {
        void 0 !== e && t.release(e);
      }

      function D(e, t, r) {
        a.mat4.translate(ee, t, e), r.setUniform3fv("localOrigin", e), r.setUniformMatrix4fv("view", ee);
      }

      function W(e, t, r) {
        r.setUniform3f("camPos", t[3] - e[0], t[7] - e[1], t[11] - e[2]);
      }

      function R(e, t) {
        m.encodeDoubleArraySplit(e, te, re, 3), t.setUniform3fv("viewOriginHi", te), t.setUniform3fv("viewOriginLo", re);
      }

      function E(e, t, r) {
        s.vec3.subtract(ie, t.origin, e), r.setUniform3fv("slicePlaneOrigin", ie), r.setUniform3fv("slicePlaneBasis1", t.basis1), r.setUniform3fv("slicePlaneBasis2", t.basis2);
      }

      function N(e, t, r) {
        if (e) {
          var i = z(e, t.fovY, t.viewport[3]),
              n = t.pixelRatio || 1;
          r.setUniform4f("verticalOffset", i.screenLength * n, i.perDistance, i.minWorldLength, i.maxWorldLength);
        }
      }

      function C(e, t, r) {
        e.bindTexture(t.highlightDepthTexture, 5), r.setUniform1i("depthTex", 5), r.setUniform4f("highlightViewportPixelSz", 0, 0, 1 / t.viewport[2], 1 / t.viewport[3]);
      }

      function z(e, t, r, i) {
        return void 0 === i && (i = ae), i.screenLength = e.screenLength, i.perDistance = Math.tan(.5 * t) / (.5 * r), i.minWorldLength = e.minWorldLength, i.maxWorldLength = e.maxWorldLength, i;
      }

      function F(e, t, r) {
        if (void 0 === r && (r = "screenSizePerspectiveAlignment"), e) {
          var i = e.parameters,
              n = e.paddingPixelsOverride;
          t.setUniform4f(r, i.divisor, i.offset, i.minPixelSize, n);
        }
      }

      function H(e, t) {
        var r = t ? H(t) : {};

        for (var i in e) {
          var n = e[i];
          n && n.forEach && (n = j(n)), null == n && i in r || (r[i] = n);
        }

        return r;
      }

      function q(e, t) {
        var r = !1;

        for (var i in t) {
          var n = t[i];
          void 0 !== n && (r = !0, Array.isArray(n) ? e[i] = n.slice() : e[i] = n);
        }

        return r;
      }

      function _(e, t, r, n, a) {
        if (t.options.selectionMode) {
          for (var o = e.getAttribute(X.POSITION).data, c = e.getAttribute(X.SIZE), s = c && c.data[0], f = r[0], l = r[1], u = s + n, v = (u / 2 + 4) * e.pixelRatio, m = Number.MAX_VALUE, d = 0; d < o.length - 5; d += 3) {
            var g = o[d],
                p = o[d + 1],
                h = o[d + 3],
                b = o[d + 4],
                x = f - g,
                M = l - p,
                P = h - g,
                B = b - p,
                S = P * x + B * M,
                A = P * P + B * B,
                I = i.clamp(S / A, 0, 1),
                T = P * I - x,
                y = B * I - M,
                O = T * T + y * y;
            O < m && (m = O);
          }

          m < v * v && a();
        }
      }

      function j(e) {
        var t = [];
        return e.forEach(function (e) {
          return t.push(e);
        }), t;
      }

      function G(e, i) {
        return r({
          usePBR: e
        }, i ? t.defaultPBRTreeMaterialParameters : t.defaultPBRMaterialParameters);
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      });
      var Y = c.mat4f64.create(),
          k = u.create(),
          X = g.VertexAttrConstants;
      t.intersectTriangleGeometry = p;
      var Z = f.vec3f64.create(),
          J = Math.pow(2, -52),
          K = f.vec3f64.create();
      t.intersectTriangles = x;
      var Q = f.vec3f64.create(),
          $ = f.vec3f64.create();
      t.computeNormal = P, t.computeInvDir = B, t.intersectAabbInvDir = S, t.intersectAabbInvDirBefore = A, t.transformToWorld = I, t.transformToView = T, t.transformToProjection = y, t.transformToNDC = O, t.applyScreenSizePerspectiveScale = U, t.verticalOffsetAtDistance = L, t.acquireIfNotUndefined = V, t.releaseIfNotUndefined = w;
      var ee = o.mat4f32.create();
      t.bindView = D, t.bindCamPos = W;
      var te = f.vec3f64.create(),
          re = f.vec3f64.create();
      t.bindViewOriginDouble = R;
      var ie = f.vec3f64.create();
      t.bindSlicePlane = E, t.bindVerticalOffset = N, t.bindHighlightRendering = C, t.bindScreenSizePerspective = F, t.copyParameters = H, t.updateParameters = q;
      !function (e) {
        function t(e, t) {
          for (var r = [], i = 0; i < 2; i++) for (var a = 0; a < 2; a++) {
            var o = n({
              shadowMappingEnabled: 1 === i,
              ssaoEnabled: 1 === a
            }),
                c = n({
              shadowMappingEnabled: 1 === i,
              ssaoEnabled: 1 === a && e.receiveSSAO
            });
            r[o] = r[c] || t({
              receiveShadows: 1 === i,
              receiveSSAO: 1 === a && e.receiveSSAO
            });
          }

          return {
            programs: r.filter(function (e) {
              return null != e;
            }),
            byParameter: r
          };
        }

        function r(e, t) {
          return e.byParameter[n(t)];
        }

        function i(e) {
          return e.programs;
        }

        function n(e) {
          return (e.shadowMappingEnabled ? 1 : 0) | (e.ssaoEnabled ? 2 : 0);
        }

        e.create = t, e.lookup = r, e.programs = i;
      }(t.BindParametersMap || (t.BindParametersMap = {})), t.intersectDrapedRenderLineGeometry = _, t.colorMixModes = {
        multiply: 1,
        ignore: 2,
        replace: 3,
        tint: 4
      };
      var ne = 1e3,
          ae = {
        screenLength: 0,
        perDistance: 0,
        minWorldLength: 0,
        maxWorldLength: 0
      };
      t.defaultPBRMaterialParameters = {
        roughnessFactor: .6,
        metallicFactor: 0,
        reflectanceFactor: .2
      }, t.defaultPBRTreeMaterialParameters = {
        roughnessFactor: 1,
        metallicFactor: 0,
        reflectanceFactor: .2
      }, t.getDefaultPBRMaterialParameters = G;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js":
  /*!**************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js ***!
    \**************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsInternalBufferWriterUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../support/buffer/BufferView */
    "./node_modules/arcgis-js-api/views/3d/support/buffer/BufferView.js"), __webpack_require__(
    /*! ../../lib/Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r, f, t) {
      function a(e, r, f, t, a) {
        var i = f.typedBuffer,
            s = f.typedBufferStride,
            o = e.length;
        if (t *= s, null == a || 1 === a) for (var u = 0; u < o; ++u) {
          var v = 2 * e[u];
          i[t] = r[v], i[t + 1] = r[v + 1], t += s;
        } else for (var u = 0; u < o; ++u) for (var v = 2 * e[u], n = 0; n < a; ++n) i[t] = r[v], i[t + 1] = r[v + 1], t += s;
      }

      function i(e, r, f, t, a) {
        var i = f.typedBuffer,
            s = f.typedBufferStride,
            o = e.length;
        if (t *= s, null == a || 1 === a) for (var u = 0; u < o; ++u) {
          var v = 3 * e[u];
          i[t] = r[v], i[t + 1] = r[v + 1], i[t + 2] = r[v + 2], t += s;
        } else for (var u = 0; u < o; ++u) for (var v = 3 * e[u], n = 0; n < a; ++n) i[t] = r[v], i[t + 1] = r[v + 1], i[t + 2] = r[v + 2], t += s;
      }

      function s(e, r, f, t, a) {
        var i = f.typedBuffer,
            s = f.typedBufferStride,
            o = e.length;
        if (t *= s, null == a || 1 === a) for (var u = 0; u < o; ++u) {
          var v = 4 * e[u];
          i[t] = r[v], i[t + 1] = r[v + 1], i[t + 2] = r[v + 2], i[t + 3] = r[v + 3], t += s;
        } else for (var u = 0; u < o; ++u) for (var v = 4 * e[u], n = 0; n < a; ++n) i[t] = r[v], i[t + 1] = r[v + 1], i[t + 2] = r[v + 2], i[t + 3] = r[v + 3], t += s;
      }

      function o(e, r, f, t) {
        var a = f.typedBuffer,
            i = f.typedBufferStride,
            s = e.length;
        t *= i;

        for (var o = 0; o < s; ++o) {
          for (var u = 9 * e[o], v = 0; v < 9; ++v) a[t + v] = r[u + v];

          t += i;
        }
      }

      function u(e, r, f, t) {
        var a = f.typedBuffer,
            i = f.typedBufferStride,
            s = e.length;
        t *= i;

        for (var o = 0; o < s; ++o) {
          for (var u = 16 * e[o], v = 0; v < 16; ++v) a[t + v] = r[u + v];

          t += i;
        }
      }

      function v(e, r, f, t, a, s) {
        if (f) {
          var o = f,
              u = t.typedBuffer,
              v = t.typedBufferStride,
              n = e.length;
          if (a *= v, null == s || 1 === s) for (var l = 0; l < n; ++l) {
            var d = 3 * e[l],
                B = r[d],
                c = r[d + 1],
                V = r[d + 2];
            u[a] = o[0] * B + o[4] * c + o[8] * V + o[12], u[a + 1] = o[1] * B + o[5] * c + o[9] * V + o[13], u[a + 2] = o[2] * B + o[6] * c + o[10] * V + o[14], a += v;
          } else for (var l = 0; l < n; ++l) for (var d = 3 * e[l], B = r[d], c = r[d + 1], V = r[d + 2], p = o[0] * B + o[4] * c + o[8] * V + o[12], w = o[1] * B + o[5] * c + o[9] * V + o[13], y = o[2] * B + o[6] * c + o[10] * V + o[14], g = 0; g < s; ++g) u[a] = p, u[a + 1] = w, u[a + 2] = y, a += v;
        } else i(e, r, t, a, s);
      }

      function n(e, r, f, t, a, s) {
        if (f) {
          var o = f,
              u = t.typedBuffer,
              v = t.typedBufferStride,
              n = e.length;
          if (a *= v, null == s || 1 === s) for (var l = 0; l < n; ++l) {
            var d = 3 * e[l],
                B = r[d],
                c = r[d + 1],
                V = r[d + 2];
            u[a] = o[0] * B + o[4] * c + o[8] * V, u[a + 1] = o[1] * B + o[5] * c + o[9] * V, u[a + 2] = o[2] * B + o[6] * c + o[10] * V, a += v;
          } else for (var l = 0; l < n; ++l) for (var d = 3 * e[l], B = r[d], c = r[d + 1], V = r[d + 2], p = o[0] * B + o[4] * c + o[8] * V, w = o[1] * B + o[5] * c + o[9] * V, y = o[2] * B + o[6] * c + o[10] * V, g = 0; g < s; ++g) u[a] = p, u[a + 1] = w, u[a + 2] = y, a += v;
        } else i(e, r, t, a, s);
      }

      function l(e, r, f, t, a, i) {
        var s = t.typedBuffer,
            o = t.typedBufferStride,
            u = e.length;

        if (a *= o, null == i || 1 === i) {
          if (4 === f) for (var v = 0; v < u; ++v) {
            var n = 4 * e[v];
            s[a] = r[n], s[a + 1] = r[n + 1], s[a + 2] = r[n + 2], s[a + 3] = r[n + 3], a += o;
          } else if (3 === f) for (var v = 0; v < u; ++v) {
            var n = 3 * e[v];
            s[a] = r[n], s[a + 1] = r[n + 1], s[a + 2] = r[n + 2], s[a + 3] = 255, a += o;
          }
        } else if (4 === f) for (var v = 0; v < u; ++v) for (var n = 4 * e[v], l = 0; l < i; ++l) s[a] = r[n], s[a + 1] = r[n + 1], s[a + 2] = r[n + 2], s[a + 3] = r[n + 3], a += o;else if (3 === f) for (var v = 0; v < u; ++v) for (var n = 3 * e[v], l = 0; l < i; ++l) s[a] = r[n], s[a + 1] = r[n + 1], s[a + 2] = r[n + 2], s[a + 3] = 255, a += o;
      }

      function d(e, r, f, t, a, i, s) {
        var o = a.typedBuffer,
            u = a.typedBufferStride,
            v = e.length;

        if (i *= u, null == s || 1 === s) {
          if (4 === f) for (var n = 0; n < v; ++n) {
            var l = 4 * e[n];
            o[i] = r[l] * t[0], o[i + 1] = r[l + 1] * t[1], o[i + 2] = r[l + 2] * t[2], o[i + 3] = r[l + 3] * t[3], i += u;
          } else if (3 === f) for (var d = 255 * t[3], n = 0; n < v; ++n) {
            var l = 3 * e[n];
            o[i] = r[l] * t[0], o[i + 1] = r[l + 1] * t[1], o[i + 2] = r[l + 2] * t[2], o[i + 3] = d, i += u;
          }
        } else if (4 === f) for (var n = 0; n < v; ++n) for (var l = 4 * e[n], B = 0; B < s; ++B) o[i] = r[l] * t[0], o[i + 1] = r[l + 1] * t[1], o[i + 2] = r[l + 2] * t[2], o[i + 3] = r[l + 3] * t[3], i += u;else if (3 === f) for (var d = 255 * t[3], n = 0; n < v; ++n) for (var l = 3 * e[n], B = 0; B < s; ++B) o[i] = r[l] * t[0], o[i + 1] = r[l + 1] * t[1], o[i + 2] = r[l + 2] * t[2], o[i + 3] = d, i += u;
      }

      function B(e, r, i, o, u, d) {
        for (var B = 0, c = r.fieldNames; B < c.length; B++) {
          var V = c[B],
              p = e.vertexAttr[V],
              w = e.indices[V];
          if (p && w) switch (V) {
            case t.VertexAttrConstants.POSITION:
              t.assert(3 === p.size);
              var y = u.getField(V, f.BufferViewVec3f);
              y && v(w, p.data, i, y, d);
              break;

            case t.VertexAttrConstants.NORMAL:
              t.assert(3 === p.size);
              var g = u.getField(V, f.BufferViewVec3f);
              g && n(w, p.data, o, g, d);
              break;

            case t.VertexAttrConstants.UV0:
              t.assert(2 === p.size);
              var h = u.getField(V, f.BufferViewVec2f);
              h && a(w, p.data, h, d);
              break;

            case t.VertexAttrConstants.REGION:
              t.assert(4 === p.size);
              var z = u.getField(V, f.BufferViewVec4u16);
              z && s(w, p.data, z, d);
              break;

            case t.VertexAttrConstants.COLOR:
              t.assert(3 === p.size || 4 === p.size);
              var A = u.getField(V, f.BufferViewVec4u8);
              A && l(w, p.data, p.size, A, d);
              break;

            case t.VertexAttrConstants.SYMBOLCOLOR:
              t.assert(3 === p.size || 4 === p.size);
              var C = u.getField(V, f.BufferViewVec4u8);
              C && l(w, p.data, p.size, C, d);
              break;

            case t.VertexAttrConstants.TANGENT:
              t.assert(4 === p.size);
              var S = u.getField(V, f.BufferViewVec4f);
              S && s(w, p.data, S, d);
          }
        }
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      }), r.writeBufferVec2 = a, r.writeBufferVec3 = i, r.writeBufferVec4 = s, r.writeBufferMat3f = o, r.writeBufferMat4f = u, r.writePosition = v, r.writeNormal = n, r.writeColor = l, r.writeMultipliedColor = d, r.writeDefaultAttributes = B;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/waterMaterialUtils.js":
  /*!***************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/waterMaterialUtils.js ***!
    \***************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsInternalWaterMaterialUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/tsSupport/generatorHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/generatorHelper.js"), __webpack_require__(
    /*! ../../../../../core/tsSupport/awaiterHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/awaiterHelper.js"), __webpack_require__(
    /*! ../../../../../core/Logger */
    "./node_modules/arcgis-js-api/core/Logger.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/vec2f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec2f64.js"), __webpack_require__(
    /*! ../../../support/imageUtils */
    "./node_modules/arcgis-js-api/views/3d/support/imageUtils.js"), __webpack_require__(
    /*! ../../../../webgl/Texture */
    "./node_modules/arcgis-js-api/views/webgl/Texture.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, a, i, n, o, l) {
      Object.defineProperty(t, "__esModule", {
        value: !0
      });
      var u = i.getLogger("esri.views.3d.webgl-engine.materials.internal.waterMaterialUtils");
      t.waterParameterDefaultsLocal = {
        waveTexture: e.toUrl("../../../../../images/materials/water/normals.jpg"),
        perturbationTexture: e.toUrl("../../../../../images/materials/water/perturbation.jpg"),
        waveStrength: .06,
        waveTextureRepeat: 32,
        waveDirection: n.vec2f64.fromValues(1, 0),
        waveVelocity: .05,
        flowStrength: .015,
        flowOffset: -.5,
        animationSpeed: .35,
        color: [0, .35686, .4, 1],
        transparent: !1,
        writeDepth: !0,
        slicePlaneEnabled: !1,
        isDraped: !1,
        receiveShadows: !0
      }, t.wavePresets = {
        "calm-small": {
          waveStrength: .005,
          perturbationStrength: .02,
          textureRepeat: 12,
          waveVelocity: .01
        },
        "rippled-small": {
          waveStrength: .02,
          perturbationStrength: .09,
          textureRepeat: 32,
          waveVelocity: .07
        },
        "slight-small": {
          waveStrength: .05,
          perturbationStrength: .07,
          textureRepeat: 28,
          waveVelocity: .1
        },
        "moderate-small": {
          waveStrength: .075,
          perturbationStrength: .07,
          textureRepeat: 24,
          waveVelocity: .1
        },
        "calm-medium": {
          waveStrength: .003125,
          perturbationStrength: .01,
          textureRepeat: 8,
          waveVelocity: .02
        },
        "rippled-medium": {
          waveStrength: .035,
          perturbationStrength: .015,
          textureRepeat: 12,
          waveVelocity: .07
        },
        "slight-medium": {
          waveStrength: .06,
          perturbationStrength: .015,
          textureRepeat: 8,
          waveVelocity: .12
        },
        "moderate-medium": {
          waveStrength: .09,
          perturbationStrength: .03,
          textureRepeat: 4,
          waveVelocity: .12
        },
        "calm-large": {
          waveStrength: .01,
          perturbationStrength: 0,
          textureRepeat: 4,
          waveVelocity: .05
        },
        "rippled-large": {
          waveStrength: .025,
          perturbationStrength: .01,
          textureRepeat: 8,
          waveVelocity: .11
        },
        "slight-large": {
          waveStrength: .06,
          perturbationStrength: .02,
          textureRepeat: 3,
          waveVelocity: .13
        },
        "moderate-large": {
          waveStrength: .14,
          perturbationStrength: .03,
          textureRepeat: 2,
          waveVelocity: .15
        }
      };

      var p = function () {
        function e() {
          this.loadingCount = 0, this.data = [], this.loadingState = 0;
        }

        return e.prototype.loadTexture = function (e, t, i) {
          return a(this, void 0, void 0, function () {
            var a, n;
            return r(this, function (r) {
              switch (r.label) {
                case 0:
                  this.loadingCount++, r.label = 1;

                case 1:
                  return r.trys.push([1, 3,, 4]), [4, o.requestImage(i)];

                case 2:
                  return a = r.sent(), this.data[t] = new l(e, this.getTextureProps(a.width, a.height, !0), a), [3, 4];

                case 3:
                  return n = r.sent(), u.warn("Failed to load texture for water material.", n), this.data[t] = new l(e, this.getTextureProps(1, 1, !0)), [3, 4];

                case 4:
                  return this.loadingCount--, [2];
              }
            });
          });
        }, e.prototype.getTextureProps = function (e, t, r) {
          return void 0 === r && (r = !1), {
            target: 3553,
            pixelFormat: 6408,
            dataType: 5121,
            wrapMode: 10497,
            samplingMode: 9987,
            hasMipmap: r,
            maxAnisotropy: 8,
            width: e,
            height: t
          };
        }, e.prototype.ready = function () {
          return 2 === this.loadingState || 1 === this.loadingState && 0 === this.loadingCount && (this.loadingState = 2, !0);
        }, e.prototype.loading = function () {
          return 1 === this.loadingState;
        }, e.prototype.initialize = function (e, t) {
          for (var r = 0; r < t.length; r++) this.loadTexture(e, r, t[r]);

          this.loadingState = 1;
        }, e.prototype.bindRepo = function (e) {
          for (var t = 0; t < this.data.length; t++) e.bindTexture(this.data[t], t);
        }, e;
      }();

      t.waterTextureRepo = new p();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/lineStippleUtils.js":
  /*!****************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/lineStippleUtils.js ***!
    \****************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsLineStippleUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../../../webgl */
    "./node_modules/arcgis-js-api/views/webgl.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, n) {
      function i(e) {
        return e.slice();
      }

      function o(e) {
        return [e, e];
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      });

      var u = function () {
        function e() {
          this.cache = new Map();
        }

        return e.prototype.dispose = function () {
          this.cache.forEach(function (e) {
            r.isSome(e.texture) && (e.texture.dispose(), e.texture = null);
          }), this.cache.clear();
        }, e.prototype.acquire = function (e) {
          if (r.isNone(e)) return null;
          var t = this.patternId(e),
              i = this.cache.get(t);
          if (i) return i.refCount++, i.bind;
          var o = this.patternToTextureData(e, 2),
              u = o.length / 2,
              a = {
            refCount: 1,
            texture: null,
            bind: function bind(e, t) {
              return r.isNone(a.texture) && (a.texture = new n.Texture(e, {
                width: o.length,
                height: 1,
                internalFormat: 6406,
                pixelFormat: 6406,
                dataType: 5121,
                wrapMode: 33071
              }, o)), e.bindTexture(a.texture, t), u;
            }
          };
          return this.cache.set(t, a), a.bind;
        }, e.prototype.release = function (e) {
          if (!r.isNone(e)) {
            var t = this.patternId(e),
                n = this.cache.get(t);
            n && 0 === --n.refCount && (r.isSome(n.texture) && n.texture.dispose(), this.cache["delete"](t));
          }
        }, e.prototype.swap = function (e, t) {
          var r = this.acquire(t);
          return this.release(e), r;
        }, e.prototype.bind = function (e, t, n, i, o) {
          var u = r.isSome(i) ? i(e, o) * t.pixelRatio : 1;
          n.setUniform1i("stipplePatternTexture", o), n.setUniform1f("stipplePatternPixelSizeInv", 1 / u);
        }, e.prototype.patternId = function (e) {
          return e.join(",");
        }, e.prototype.patternToTextureData = function (e, t) {
          for (var r = e.reduce(function (e, t) {
            return e + t;
          }) * t, n = new Uint8Array(r), i = !0, o = 0, u = 0, a = e; u < a.length; u++) {
            for (var p = a[u], c = 0; c < p * t; c++) n[o++] = i ? 255 : 0;

            i = !i;
          }

          return n;
        }, e;
      }();

      t.StippleTextureRepository = u, t.createStipplePattern = i, t.createStipplePatternSimple = o;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/Instance.js":
  /*!******************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/Instance.js ***!
    \******************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsRenderersInstanceJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f64.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, i, a, r) {
      return function () {
        function t(t, i, n, s, o, e, m, h, l) {
          this.name = t, this.from = i, this.to = n, this.displayedIndexRange = s, this.highlightedIndexRanges = o, this.transformation = e, this.instanceParameters = m, this.idx = h, this.dataId = l, null != e && (this.transformationNormal = r.mat4f64.clone(e), a.mat4.invert(this.transformationNormal, this.transformationNormal), a.mat4.transpose(this.transformationNormal, this.transformationNormal));
        }

        return t;
      }();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/InstancedRenderer.js":
  /*!***************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/InstancedRenderer.js ***!
    \***************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsRenderersInstancedRendererJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f64.js"), __webpack_require__(
    /*! ../../../support/buffer/glUtil */
    "./node_modules/arcgis-js-api/views/3d/support/buffer/glUtil.js"), __webpack_require__(
    /*! ../../lib/DefaultVertexAttributeLocations */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js"), __webpack_require__(
    /*! ./Instance */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/Instance.js"), __webpack_require__(
    /*! ./utils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/utils.js"), __webpack_require__(
    /*! ../../../../webgl/BufferObject */
    "./node_modules/arcgis-js-api/views/webgl/BufferObject.js"), __webpack_require__(
    /*! ../../../../webgl/Util */
    "./node_modules/arcgis-js-api/views/webgl/Util.js"), __webpack_require__(
    /*! ../../../../webgl/VertexArrayObject */
    "./node_modules/arcgis-js-api/views/webgl/VertexArrayObject.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, i, n, a, o, h, g, s) {
      function u(e, t) {
        var r = new Map(),
            i = function i(e, t) {
          var i = e.origin.id,
              n = e.data.id,
              a = r.get(i);
          a || (a = {
            origin: e.origin.vec3,
            deltaByGeometry: new Map()
          }, r.set(i, a));
          var o = a.deltaByGeometry.get(n);
          o || (o = {
            renderData: e.data,
            toAdd: [],
            toRemove: []
          }, a.deltaByGeometry.set(n, o)), (t ? o.toAdd : o.toRemove).push(e);
        };

        return e.forEach(function (e) {
          i(e, !0);
        }), t.forEach(function (e) {
          i(e, !1);
        }), r;
      }

      function l(e, t, r) {
        var i = t.elementCount(e),
            n = t.allocate(i);
        t.write({}, e, n, 0), r.setData(n.buffer);
      }

      return function () {
        function e(e, t, r, i) {
          void 0 === i && (i = n.Default3D), this.type = "InstancedRenderer", this._dataByOrigin = new Map(), this._highlightCount = 0, this._rctx = e, this._vertexAttributeLocations = i, this._material = r, this._materialRep = t, this._glMaterials = o.acquireMaterials(this._material, this._materialRep), this._bufferWriter = r.createBufferWriter();
        }

        return e.prototype.dispose = function () {
          o.releaseMaterials(this._material, this._materialRep);
        }, Object.defineProperty(e.prototype, "isEmpty", {
          get: function get() {
            return 0 === this._dataByOrigin.size;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "hasHighlights", {
          get: function get() {
            return this._highlightCount > 0;
          },
          enumerable: !0,
          configurable: !0
        }), e.prototype.hasWater = function () {
          return !1;
        }, e.prototype.renderPriority = function () {
          return this._material.renderPriority;
        }, e.prototype.modify = function (e) {
          this.updateGeometries(e.toUpdate), this.addAndRemoveGeometries(e.toAdd, e.toRemove), this.updateHighlightCount();
        }, e.prototype.addAndRemoveGeometries = function (e, t) {
          var n = this,
              d = this._rctx,
              f = this._bufferWriter,
              c = this._dataByOrigin,
              y = u(e, t),
              m = f.vertexBufferLayout;
          y.forEach(function (e, t) {
            var u = c.get(t);
            u || (u = {
              origin: e.origin,
              highlightCount: 0,
              dataByGeometry: new Map()
            }, c.set(t, u)), e.deltaByGeometry.forEach(function (e, t) {
              var c = u.dataByGeometry.get(t);
              !c && e.toAdd.length > 0 && (c = {
                vao: new s(d, n._vertexAttributeLocations, {
                  geometry: i.glLayout(m)
                }, {
                  geometry: h.createVertex(d, 35044)
                }),
                vertexCount: 0,
                instances: new Map(),
                highlightCount: 0
              }, l(e.renderData, f, c.vao.vertexBuffers.geometry), c.vertexCount = g.vertexCount(c.vao, "geometry"), u.dataByGeometry.set(t, c));
              var y = c.instances;
              e.toAdd.forEach(function (e) {
                var t = r.mat4f64.create();
                o.calculateTransformRelToOrigin(e, t);
                var i = o.generateRenderGeometryVisibleIndexRanges(e),
                    n = o.generateRenderGeometryHighlightRanges(e),
                    h = new a(e.name, 0, c.vertexCount, i, n, t, e.instanceParameters, e.idx, e.data.id);
                y.set(e.uniqueName, h), u.highlightCount = null, c.highlightCount = null;
              }), e.toRemove.forEach(function (e) {
                y["delete"](e.uniqueName);
              }), 0 === y.size && (c.vao.dispose(), u.dataByGeometry["delete"](t));
            }), 0 === u.dataByGeometry.size && c["delete"](t);
          });
        }, e.prototype.updateGeometries = function (e) {
          var t = this._dataByOrigin,
              r = this._bufferWriter;
          e.forEach(function (e) {
            var i = e.updateType,
                n = e.renderGeometry,
                a = t.get(n.origin.id),
                h = a && a.dataByGeometry.get(n.data.id),
                g = h && h.instances.get(n.uniqueName);
            g && (1 & i && (g.displayedIndexRange = o.generateRenderGeometryVisibleIndexRanges(n)), 17 & i && (g.highlightedIndexRanges = o.generateRenderGeometryHighlightRanges(n), a.highlightCount = null, h.highlightCount = null), 2 & i && l(n.data, r, h.vao.vertexBuffers.geometry), 4 & i && o.calculateTransformRelToOrigin(n, g.transformation, g.transformationNormal));
          });
        }, e.prototype.updateHighlightCount = function () {
          var e = this;
          this._highlightCount = 0, this._dataByOrigin.forEach(function (t) {
            if (null == t.highlightCount) {
              var r = 0;
              t.dataByGeometry.forEach(function (e) {
                if (null == e.highlightCount) {
                  var t = 0;
                  e.instances.forEach(function (e) {
                    e.highlightedIndexRanges && ++t;
                  }), e.highlightCount = t;
                }

                r += e.highlightCount;
              }), t.highlightCount = r;
            }

            e._highlightCount += t.highlightCount;
          });
        }, e.prototype.render = function (e, t, r, i) {
          var n = this,
              a = this._rctx,
              o = this._glMaterials.get(t.pass),
              h = 4 === t.pass;

          if (!o || null != e && !o.beginSlot(e) || h && 0 === this._highlightCount) return !1;
          o.bind(a, r);
          var g = !1;
          return this._dataByOrigin.forEach(function (e) {
            h && 0 === e.highlightCount || (r.origin = e.origin, o.bindView(r), e.dataByGeometry.forEach(function (e) {
              g = h ? n.renderHighlightPass(o, e, i) || g : n.renderDefaultPass(o, e, i) || g;
            }));
          }), a.bindVAO(null), o.release(), g;
        }, e.prototype.renderDefaultPass = function (e, t, r) {
          var i = this._rctx,
              n = e.getDrawMode(),
              a = t.vao,
              h = t.vertexCount;
          e.ensureAttributeLocations(a), i.bindVAO(a);
          var g = !1;
          return t.instances.forEach(function (t) {
            var a = t.displayedIndexRange;
            a && 0 === a.length || (e.bindInstance(t), a ? o.drawArraysFaceRange(i, a, 0, n, r) : o.drawArrays(i, n, 0, h, r), g = !0);
          }), g;
        }, e.prototype.renderHighlightPass = function (e, t, r) {
          var i = this._rctx,
              n = e.getDrawMode(),
              a = t.vao,
              h = t.vertexCount;

          if (0 !== t.highlightCount) {
            e.ensureAttributeLocations(a), i.bindVAO(a);
            var g = !1;
            return t.instances.forEach(function (t) {
              var a = t.highlightedIndexRanges;

              if (a && 0 !== a.length) {
                e.bindInstance(t);

                for (var s = 0; s < a.length; s++) {
                  var u = a[s],
                      l = u.range ? u.range[0] : 0,
                      d = u.range ? u.range[1] - u.range[0] + 1 : h;
                  o.drawArrays(i, n, l, d, r), g = !0;
                }
              }
            }), g;
          }
        }, e;
      }();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/MergedRenderer.js":
  /*!************************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/MergedRenderer.js ***!
    \************************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsRenderersMergedRendererJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f64.js"), __webpack_require__(
    /*! ../../../support/buffer/glUtil */
    "./node_modules/arcgis-js-api/views/3d/support/buffer/glUtil.js"), __webpack_require__(
    /*! ../../lib/DefaultVertexAttributeLocations */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js"), __webpack_require__(
    /*! ../../lib/IntervalUtilities */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/IntervalUtilities.js"), __webpack_require__(
    /*! ../../lib/ResizableFloat32Array */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/ResizableFloat32Array.js"), __webpack_require__(
    /*! ../../lib/Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js"), __webpack_require__(
    /*! ../WaterGLMaterial */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/WaterGLMaterial.js"), __webpack_require__(
    /*! ./Instance */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/Instance.js"), __webpack_require__(
    /*! ./utils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/utils.js"), __webpack_require__(
    /*! ../../../../webgl/BufferObject */
    "./node_modules/arcgis-js-api/views/webgl/BufferObject.js"), __webpack_require__(
    /*! ../../../../webgl/Util */
    "./node_modules/arcgis-js-api/views/webgl/Util.js"), __webpack_require__(
    /*! ../../../../webgl/VertexArrayObject */
    "./node_modules/arcgis-js-api/views/webgl/VertexArrayObject.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, a, n, i, o, s, u, d, l, f, g, h, p) {
      function m(e, t, r, a) {
        for (var n = new Map(), i = t.vertexBufferLayout.stride / 4, o = function o(r, a) {
          var o = r.origin,
              s = e.get(o.id),
              u = n.get(o.id);
          null == u && (u = {
            optimalCount: null == s ? 0 : s.optimalCount,
            sparseCount: null == s ? 0 : s.buffer.size,
            toAdd: [],
            toRemove: [],
            origin: o.vec3
          }, n.set(o.id, u));
          var d = t.elementCount(r.data) * i;
          a ? (u.optimalCount += d, u.sparseCount += d, u.toAdd.push(r)) : (u.optimalCount -= d, u.toRemove.push(r));
        }, s = 0, u = r; s < u.length; s++) {
          var d = u[s];
          o(d, !0);
        }

        for (var l = 0, f = a; l < f.length; l++) {
          var d = f[l];
          o(d, !1);
        }

        return n;
      }

      var c = function () {
        function e(e, t, r, a) {
          void 0 === a && (a = i.Default3D), this.type = "MergedRenderer", this._dataByOrigin = new Map(), this._highlightCount = 0, this._rctx = e, this._vertexAttributeLocations = a, this._material = r, this._materialRep = t, this._glMaterials = f.acquireMaterials(this._material, this._materialRep), this._bufferWriter = r.createBufferWriter();
        }

        return e.prototype.dispose = function () {
          f.releaseMaterials(this._material, this._materialRep);
        }, Object.defineProperty(e.prototype, "isEmpty", {
          get: function get() {
            return 0 === this._dataByOrigin.size;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "hasHighlights", {
          get: function get() {
            return this._highlightCount > 0;
          },
          enumerable: !0,
          configurable: !0
        }), e.prototype.hasWater = function () {
          var e = !1;
          return this._glMaterials.forEach(function (t) {
            e = e || t instanceof d.WaterGLMaterial;
          }), e;
        }, e.prototype.renderPriority = function () {
          return this._material.renderPriority;
        }, e.prototype.modify = function (e) {
          var t = this,
              r = R;
          r.clear(), this.updateGeometries(e.toUpdate, r), this.addAndRemoveGeometries(e.toAdd, e.toRemove, r), this.updateHighlightCount(), r.forEach(function (e) {
            return t.updateDisplayedIndexRanges(e);
          });
        }, e.prototype.addAndRemoveGeometries = function (e, t, r) {
          var a = this,
              n = this._bufferWriter,
              i = n.vertexBufferLayout,
              o = i.stride / 4,
              s = this._dataByOrigin,
              d = m(s, n, e, t);
          d.forEach(function (e, t) {
            d["delete"](t);
            var n = e.optimalCount,
                l = e.sparseCount,
                f = s.get(t);
            if (null == f && (u.assert(n > 0), f = a.createData(i, n, e.origin), s.set(t, f)), 0 === n) return f.vao.dispose(!0), f.vao = null, void s["delete"](t);
            var g = n < e.sparseCount / 2,
                h = g ? n : l,
                p = y,
                m = f.buffer.size,
                c = f.buffer.array,
                b = f.buffer.resize(h, !1);
            g || b ? a.removeAndRebuild(f, e.toRemove, o, c, p) : e.toRemove.length > 0 ? (a.removeByErasing(f, e.toRemove, o, p), e.toAdd.length > 0 && (p.end = m)) : (p.begin = m, p.end = m);
            var x = v;
            u.setMatrixTranslation3(x, -e.origin[0], -e.origin[1], -e.origin[2]), a.append(f, e.toAdd, o, x, p);
            var R = f.vao.vertexBuffers.geometry;
            if (R.byteSize !== f.buffer.array.buffer.byteLength) R.setData(f.buffer.array);else {
              var _ = p.begin,
                  C = p.end;

              if (_ < C) {
                var I = f.buffer.array,
                    A = 4 * _,
                    w = 4 * C;
                R.setSubData(I, A, A, w);
              }
            }
            (p.updatedDisplayedIndexRange || f.displayedIndexRanges) && r.add(f);
          });
        }, e.prototype.updateGeometries = function (e, t) {
          for (var r = this._bufferWriter, a = r.vertexBufferLayout.stride / 4, n = 0, i = e; n < i.length; n++) {
            var o = i[n],
                s = o.updateType,
                d = o.renderGeometry,
                l = this._dataByOrigin.get(d.origin.id),
                g = l && l.instances.get(d.uniqueName);

            if (!g) return;

            if (1 & s && (g.displayedIndexRange = f.generateRenderGeometryVisibleIndexRanges(d), t.add(l)), 17 & s && (g.highlightedIndexRanges = f.generateRenderGeometryHighlightRanges(d), l.highlightCount = null), 6 & s) {
              var h = l.buffer.array,
                  p = l.vao;
              f.calculateTransformRelToOrigin(d, b, x), r.write({
                transformation: b,
                invTranspTransformation: x
              }, d.data, r.vertexBufferLayout.createView(h.buffer), g.from), u.assert(g.from + r.elementCount(d.data) === g.to, "material VBO layout has changed"), p.vertexBuffers.geometry.setSubData(h, g.from * a * 4, g.from * a * 4, g.to * a * 4);
            }
          }
        }, e.prototype.updateDisplayedIndexRanges = function (e) {
          e.displayedIndexRanges = [];
          var t = !0;
          e.instances.forEach(function (r) {
            r.displayedIndexRange ? (e.displayedIndexRanges.push.apply(e.displayedIndexRanges, o.offsetIntervals(r.displayedIndexRange, r.from)), t = !1) : e.displayedIndexRanges.push([r.from, r.to - 1]);
          }), e.displayedIndexRanges = t ? null : o.mergeIntervals(e.displayedIndexRanges);
        }, e.prototype.updateHighlightCount = function () {
          var e = this;
          this._highlightCount = 0, this._dataByOrigin.forEach(function (t) {
            if (null == t.highlightCount) {
              var r = 0;
              t.instances.forEach(function (e) {
                e.highlightedIndexRanges && ++r;
              }), t.highlightCount = r;
            }

            e._highlightCount += t.highlightCount;
          });
        }, e.prototype.updateLogic = function (e) {
          return this._material.update(e);
        }, e.prototype.render = function (e, t, r, n) {
          var i = this,
              o = this._rctx,
              s = this._glMaterials.get(t.pass),
              u = 4 === t.pass,
              d = e;

          if (2 === t.pass && null === d && (d = 19), !s || 1 === s.ensureResources(o) || null != d && !s.beginSlot(d) || u && 0 === this._highlightCount) return !1;
          s.bind(o, r);
          var l = s.getProgram();
          l.setUniformMatrix4fv("model", a.mat4f64.IDENTITY), l.hasUniform("modelNormal") && l.setUniformMatrix4fv("modelNormal", a.mat4f64.IDENTITY);
          var f = !1;
          return this._dataByOrigin.forEach(function (e) {
            u && 0 === e.highlightCount || (r.origin = e.origin, s.bindView(r), f = u ? i.renderHighlightPass(s, e, n) || f : i.renderDefaultPass(s, e, n) || f);
          }), s.release(), f;
        }, e.prototype.renderDefaultPass = function (e, t, r) {
          var a = this._rctx,
              n = e.getDrawMode(),
              i = t.displayedIndexRanges;
          if (i && 0 === i.length) return !1;
          if (e.ensureAttributeLocations(t.vao), a.bindVAO(t.vao), i) f.drawArraysFaceRange(a, i, 0, n, r);else {
            var o = 4 * t.buffer.size / h.getStride(t.vao.layout.geometry);
            f.drawArrays(a, n, 0, o, r);
          }
          return !0;
        }, e.prototype.renderHighlightPass = function (e, t, r) {
          var a = this._rctx,
              n = e.getDrawMode(),
              i = t.vao;
          e.ensureAttributeLocations(i), a.bindVAO(i);
          var o = !1;
          return t.instances.forEach(function (e) {
            var t = e.highlightedIndexRanges;
            if (t && 0 !== t.length) for (var i = 0; i < t.length; i++) {
              var s = t[i],
                  u = s.range ? s.range[0] + e.from : e.from,
                  d = s.range ? s.range[1] - s.range[0] + 1 : e.to - e.from;
              f.drawArrays(a, n, u, d, r), o = !0;
            }
          }), o;
        }, e.prototype.createData = function (e, t, r) {
          return {
            instances: new Map(),
            vao: new p(this._rctx, this._vertexAttributeLocations, {
              geometry: n.glLayout(e)
            }, {
              geometry: g.createVertex(this._rctx, 35044)
            }),
            buffer: new s.ResizableFloat32Array(t),
            optimalCount: 0,
            origin: r,
            highlightCount: 0
          };
        }, e.prototype.removeAndRebuild = function (e, t, r, a, n) {
          for (var i = 0, o = t; i < o.length; i++) {
            var s = o[i],
                u = s.uniqueName,
                d = e.instances.get(u);
            e.optimalCount -= (d.to - d.from) * r, e.instances["delete"](u);
          }

          var l = 0,
              f = e.buffer.array;
          n.begin = 0, n.end = 0;
          var g = -1,
              h = -1,
              p = 0;
          e.instances.forEach(function (e) {
            var t = e.from * r,
                n = e.to * r,
                i = n - t;
            g !== h && h !== t ? (f.set(a.subarray(g, h), p), p += h - g, g = t) : -1 === g && (g = t), h = n, e.from = l / r, l += i, e.to = l / r;
          }), g !== h && f.set(a.subarray(g, h), p), n.end = l;
        }, e.prototype.removeByErasing = function (e, t, r, a) {
          a.begin = 1 / 0, a.end = -1 / 0;

          for (var n = -1, i = -1, o = 0, s = t; o < s.length; o++) {
            var u = s[o],
                d = u.uniqueName,
                l = e.instances.get(d),
                f = l.from * r,
                g = l.to * r;
            n !== i && i !== f ? (e.buffer.erase(n, i), n = f) : -1 === n && (n = f), i = g, e.instances["delete"](d), e.optimalCount -= g - f, f < a.begin && (a.begin = f), g > a.end && (a.end = g);
          }

          n !== i && e.buffer.erase(n, i);
        }, e.prototype.append = function (e, t, a, n, i) {
          i.updatedDisplayedIndexRange = !1;

          for (var o = this._bufferWriter, s = 0, d = t; s < d.length; s++) {
            var g = d[s],
                h = g.data;
            r.mat4.multiply(b, n, g.transformation), r.mat4.invert(x, b), r.mat4.transpose(x, x);
            var p = i.end;
            o.write({
              transformation: b,
              invTranspTransformation: x
            }, h, o.vertexBufferLayout.createView(e.buffer.array.buffer), i.end / a);
            var m = o.elementCount(h) * a,
                c = p + m;
            u.assert(null == e.instances.get(g.uniqueName));
            var y = f.generateRenderGeometryVisibleIndexRanges(g),
                v = f.generateRenderGeometryHighlightRanges(g);
            v && (e.highlightCount = null);
            var R = new l(g.name, p / a, c / a, y, v, void 0, void 0, g.idx);
            e.instances.set(g.uniqueName, R), y && (i.updatedDisplayedIndexRange = !0), e.optimalCount += m, i.end += m;
          }
        }, Object.defineProperty(e.prototype, "test", {
          get: function get() {
            return {
              material: this._material
            };
          },
          enumerable: !0,
          configurable: !0
        }), e;
      }(),
          y = {
        updatedDisplayedIndexRange: !1,
        begin: 0,
        end: 0
      },
          v = a.mat4f64.create(),
          b = a.mat4f64.create(),
          x = a.mat4f64.create(),
          R = new Set();

      return c;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/utils.js":
  /*!***************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/renderers/utils.js ***!
    \***************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineMaterialsRenderersUtilsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4.js"), __webpack_require__(
    /*! ../../../../../core/libs/gl-matrix-2/mat4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f64.js"), __webpack_require__(
    /*! ../../lib/ComponentUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/ComponentUtils.js"), __webpack_require__(
    /*! ../../lib/Util */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Util.js"), __webpack_require__(
    /*! ../../../../webgl/Util */
    "./node_modules/arcgis-js-api/views/webgl/Util.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, n, a, i, s) {
      function l(e) {
        if (e.instanceParameters.hidden) return [];
        var t = e.instanceParameters.componentVisibilities,
            r = e.componentOffsets;
        return a.generateVisibleIndexRanges(t, r);
      }

      function o(e) {
        if (e.instanceParameters.hidden) return null;
        var t = e.instanceParameters.componentVisibilities,
            r = e.instanceParameters.componentHighlights,
            n = e.componentOffsets;
        return a.generateHighlightedIndexRanges(t, r, n);
      }

      function c(e) {
        if (e.instanceParameters.hidden) return !1;
        var t = e.instanceParameters.componentVisibilities,
            r = e.instanceParameters.componentHighlights,
            n = e.componentOffsets;
        return a.hasHighlights(t, r, n);
      }

      function d(e) {
        if (e.instanceParameters.hidden) return !0;
        var t = e.instanceParameters.componentVisibilities,
            r = e.componentOffsets;
        return a.isAllHidden(t, r);
      }

      function m(e, t, r, n, a) {
        e.drawArrays(t, r, n), a && (a.drawCalls++, 4 === t && (a.triangles += n));
      }

      function g(e, t, r, n, a, i) {
        var l = s.getBytesPerElement(r);
        e.drawElements(t, a, r, n * l), i && (i.drawCalls++, 4 === t && (i.triangles += a));
      }

      function h(e, t, r, n, a) {
        for (var i = 0, s = 0, l = t; s < l.length; s++) {
          var o = l[s],
              c = o[0] + r,
              d = o[1] - o[0] + 1;
          i += d, e.drawArrays(n, c, d);
        }

        a && (a.drawCalls += t.length, 4 === n && (a.triangles = i / 3));
      }

      function u(e, t, r, n, a, i) {
        for (var l = s.getBytesPerElement(a), o = 0, c = 0, d = t; c < d.length; c++) {
          var m = d[c],
              g = m[0] + r,
              h = m[1] - m[0] + 1;
          o += h, e.drawElements(n, h, a, g * l);
        }

        i && (i.drawCalls += t.length, 4 === n && (i.triangles += o / 3));
      }

      function f(e, t) {
        var r = new Map();
        return r.set(0, t.acquire(e, "color")), r.set(3, t.acquire(e, "depthShadowMap")), r.set(2, t.acquire(e, "normal")), r.set(1, t.acquire(e, "depth")), r.set(4, t.acquire(e, "highlight")), r;
      }

      function p(e, t) {
        t.release(e.id, "color"), t.release(e.id, "depthShadowMap"), t.release(e.id, "normal"), t.release(e.id, "depth"), t.release(e.id, "highlight");
      }

      function v(e, t, n) {
        var a = e.origin.vec3;
        i.setMatrixTranslation3(w, -a[0], -a[1], -a[2]), r.mat4.multiply(t, w, e.transformation), n && (r.mat4.invert(n, t), r.mat4.transpose(n, n));
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.generateRenderGeometryVisibleIndexRanges = l, t.generateRenderGeometryHighlightRanges = o, t.doesRenderGeometryHaveHighlights = c, t.isRenderGeometryHidden = d, t.drawArrays = m, t.drawElements = g, t.drawArraysFaceRange = h, t.drawElementsFaceRange = u, t.acquireMaterials = f, t.releaseMaterials = p, t.calculateTransformRelToOrigin = v;
      var w = n.mat4f64.create();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js":
  /*!******************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js ***!
    \******************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineShadersDefaultMaterialGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../collections/Component/Material/shader/DecodeSymbolColor.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/collections/Component/Material/shader/DecodeSymbolColor.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/DiscardOrAdjustAlpha.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/DiscardOrAdjustAlpha.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/ForwardLinearDepth.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/Offset.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Offset.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/Slice.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/Transform.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/attributes/PositionAttribute.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/PositionAttribute.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/attributes/VertexColor.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/attributes/VertexNormal.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/attributes/VerticalOffset.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/output/OutputDepth.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/output/OutputDepth.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/ComputeNormalTexture.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/EvaluateSceneLighting.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/HighlightData.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/HighlightData.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/Normals.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/PhysicallyBasedRendering.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/ReadShadowMap.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/VisualVariables.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/util/DoublePrecision.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/DoublePrecision.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/util/MixExternalColor.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/MixExternalColor.glsl.js"), __webpack_require__(
    /*! ../core/shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js"), __webpack_require__(
    /*! ../core/shaderModules/ShaderBuilder */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (o, e, a, n, l, i, r, t, d, s, c, v, m, g, u, p, h, x, f, b, y, C, O, w, P, L, D, M) {
      function N(o) {
        var e = new M.ShaderBuilder(),
            N = e.vertex.code,
            Bo = e.fragment.code;
        return N.add(D.glsl(A || (A = a(["\n    // --- Default Material:\n    // ", "\n    // ---\n  "], ["\n    // --- Default Material:\n    // ", "\n    // ---\n  "])), JSON.stringify(o))), Bo.add(D.glsl(S || (S = a(["\n    // --- Default Material:\n    // ", "\n    // ---\n  "], ["\n    // --- Default Material:\n    // ", "\n    // ---\n  "])), JSON.stringify(o))), e.vertex.uniforms.add("proj", "mat4").add("view", "mat4").add("camPos", "vec3").add("localOrigin", "vec3"), e.include(s.PositionAttribute), e.varyings.add("vpos", "vec3"), e.include(w.VisualVariables, o), o.instanced && o.instancedDoublePrecision ? (e.attributes.add("modelOriginHi", "vec3"), e.attributes.add("modelOriginLo", "vec3"), e.attributes.add("model", "mat3"), e.attributes.add("modelNormal", "mat3")) : (e.vertex.uniforms.add("model", "mat4"), e.vertex.uniforms.add("modelNormal", "mat4")), o.instancedDoublePrecision ? (e.include(P.DoublePrecision, o), e.vertex.uniforms.add("viewOriginHi", "vec3"), e.vertex.uniforms.add("viewOriginLo", "vec3"), N.add(D.glsl(F || (F = a(["\n    vec3 calculateVPos() {\n      return model * localPosition().xyz;\n    }\n    "], ["\n    vec3 calculateVPos() {\n      return model * localPosition().xyz;\n    }\n    "]))))) : N.add(D.glsl(T || (T = a(["\n    vec3 calculateVPos() {\n      return (model * localPosition()).xyz;\n    }\n    "], ["\n    vec3 calculateVPos() {\n      return (model * localPosition()).xyz;\n    }\n    "])))), e.include(g.VerticalOffset, o), 0 === o.output && (e.include(d.Transform, {
          linearDepth: !1
        }), 0 === o.normalType && o.offsetBackfaces && e.include(r.Offset), e.include(p.ComputeNormalTexture, o), e.include(m.VertexNormal, o), o.instancedColor && e.attributes.add("instanceColor", "vec4"), e.varyings.add("localvpos", "vec3"), e.include(c.TextureCoordinateAttribute, o), e.include(i.ForwardLinearDepth, o), o.symbolColor ? (e.include(n.DecodeSymbolColor), e.attributes.add("symbolColor", "vec4"), e.varyings.add("colorMixMode", "mediump float")) : e.fragment.uniforms.add("colorMixMode", "int"), e.include(v.VertexColor, o), e.vertex.uniforms.add("externalColor", "vec4"), e.varyings.add("vcolorExt", "vec4"), e.vertex.defines.addFloat("SYMBOL_ALPHA_CUTOFF", .001), N.add(D.glsl(_ || (_ = a(["\n      void main(void) {\n        forwardNormalizedVertexColor();\n        vcolorExt = externalColor;\n        ", "\n        vcolorExt *= vvColor();\n    "], ["\n      void main(void) {\n        forwardNormalizedVertexColor();\n        vcolorExt = externalColor;\n        ", "\n        vcolorExt *= vvColor();\n    "])), o.instancedColor ? "vcolorExt *= instanceColor;" : "")), o.symbolColor && N.add(D.glsl(V || (V = a(["\n        int symbolColorMixMode;\n        vcolorExt *= decodeSymbolColor(symbolColor, symbolColorMixMode) * 0.003921568627451; // = 1/255;\n        colorMixMode = float(symbolColorMixMode) + 0.5; // add 0.5 to avoid interpolation artifacts\n      "], ["\n        int symbolColorMixMode;\n        vcolorExt *= decodeSymbolColor(symbolColor, symbolColorMixMode) * 0.003921568627451; // = 1/255;\n        colorMixMode = float(symbolColorMixMode) + 0.5; // add 0.5 to avoid interpolation artifacts\n      "])))), N.add(D.glsl(z || (z = a(["\n        if (vcolorExt.a < SYMBOL_ALPHA_CUTOFF) {\n          gl_Position = vec4(1e38, 1e38, 1e38, 1.0);\n        }\n        else {\n          vpos = calculateVPos();\n          localvpos = vpos - view[3].xyz;\n    "], ["\n        if (vcolorExt.a < SYMBOL_ALPHA_CUTOFF) {\n          gl_Position = vec4(1e38, 1e38, 1e38, 1.0);\n        }\n        else {\n          vpos = calculateVPos();\n          localvpos = vpos - view[3].xyz;\n    "])))), o.instancedDoublePrecision ? (0 === o.normalType && N.add(D.glsl(E || (E = a(["\n          vNormalWorld = normalize(modelNormal * vvLocalNormal(normalModel()).xyz);\n        "], ["\n          vNormalWorld = normalize(modelNormal * vvLocalNormal(normalModel()).xyz);\n        "])))), N.add(D.glsl(B || (B = a(["\n          vec3 originDelta = dpAdd(viewOriginHi, viewOriginLo, -modelOriginHi, -modelOriginLo);\n          vpos -= originDelta;\n      "], ["\n          vec3 originDelta = dpAdd(viewOriginHi, viewOriginLo, -modelOriginHi, -modelOriginLo);\n          vpos -= originDelta;\n      "]))))) : 0 === o.normalType && N.add(D.glsl(H || (H = a(["\n          vNormalWorld = normalize((modelNormal * vvLocalNormal(normalModel())).xyz);\n        "], ["\n          vNormalWorld = normalize((modelNormal * vvLocalNormal(normalModel())).xyz);\n        "])))), N.add(D.glsl(j || (j = a(["\n          ", "\n          ", "\n          gl_Position = transformPosition(proj, view, vpos);\n          ", "\n        }\n        forwardLinearDepth();\n        forwardTextureCoordinates();\n      }\n    "], ["\n          ", "\n          ", "\n          gl_Position = transformPosition(proj, view, vpos);\n          ", "\n        }\n        forwardLinearDepth();\n        forwardTextureCoordinates();\n      }\n    "])), o.verticalOffsetEnabled ? "vpos += calculateVerticalOffset(vpos, localOrigin);" : "", o.vertexTangets ? "transformVertexTangent(mat3(modelNormal));" : "", 0 === o.normalType && o.offsetBackfaces ? "gl_Position = offsetBackfacingClipPosition(gl_Position, vpos, vNormalWorld, camPos);" : "")), e.include(t.Slice, o), e.include(x.EvaluateSceneLighting, o), e.include(h.EvaluateAmbientOcclusion, o), e.include(l.DiscardOrAdjustAlpha, o), o.receiveShadows && e.include(O.ReadShadowMap, o), e.fragment.uniforms.add("camPos", "vec3").add("localOrigin", "vec3").add("ambient", "vec3").add("diffuse", "vec3").add("specular", "vec3").add("opacity", "float").add("layerOpacity", "float"), o.treeRendering && e.fragment.uniforms.add("view", "mat4"), o.hasColorTexture && e.fragment.uniforms.add("tex", "sampler2D"), 3 === o.normalType && e.extensions.add("GL_OES_standard_derivatives"), e.include(C.PhysicallyBasedRenderingParameters, o), e.include(y.PhysicallyBasedRendering, o), e.include(L.MixExternalColor, {
          stages: 1
        }), e.include(b.Normals, o), Bo.add(D.glsl(R || (R = a(["\n        void main() {\n          discardBySlice(vpos);\n    "], ["\n        void main() {\n          discardBySlice(vpos);\n    "])))), o.hasColorTexture ? (Bo.add(D.glsl(W || (W = a(["\n          vec4 texColor = texture2D(tex, vuv0);\n      "], ["\n          vec4 texColor = texture2D(tex, vuv0);\n      "])))), o.textureAlphaPremultiplied && Bo.add(D.glsl(I || (I = a(["\n            texColor.rgb /= texColor.a;\n        "], ["\n            texColor.rgb /= texColor.a;\n        "])))), Bo.add(D.glsl(k || (k = a(["\n            discardOrAdjustAlpha(texColor);\n      "], ["\n            discardOrAdjustAlpha(texColor);\n      "]))))) : Bo.add(D.glsl(G || (G = a(["\n            vec4 texColor = vec4(1.0);\n      "], ["\n            vec4 texColor = vec4(1.0);\n      "])))), Bo.add(D.glsl(U || (U = a(["\n            shadingParams.viewDirection = normalize(vpos - camPos);\n    "], ["\n            shadingParams.viewDirection = normalize(vpos - camPos);\n    "])))), 3 === o.normalType ? Bo.add(D.glsl(Y || (Y = a(["\n        vec3 normal = normalize(cross(dFdx(localvpos),dFdy(localvpos)));\n      "], ["\n        vec3 normal = normalize(cross(dFdx(localvpos),dFdy(localvpos)));\n      "])))) : Bo.add(D.glsl(J || (J = a(["\n        shadingParams.normalView = vNormalWorld;\n        vec3 normal = shadingNormal(shadingParams);\n      "], ["\n        shadingParams.normalView = vNormalWorld;\n        vec3 normal = shadingNormal(shadingParams);\n      "])))), o.usePBR && Bo.add(D.glsl(q || (q = a(["applyPBRFactors();"], ["applyPBRFactors();"])))), Bo.add(D.glsl(K || (K = a(["\n        float ssao = evaluateAmbientOcclusionInverse();\n        ssao *= getBakedOcclusion();\n\n        float additionalAmbientScale = _oldHeuristicLighting(vpos + localOrigin);\n        vec3 additionalLight = ssao * lightingMainIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;\n    "], ["\n        float ssao = evaluateAmbientOcclusionInverse();\n        ssao *= getBakedOcclusion();\n\n        float additionalAmbientScale = _oldHeuristicLighting(vpos + localOrigin);\n        vec3 additionalLight = ssao * lightingMainIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;\n    "])))), o.receiveShadows ? e.fragment.code.add(D.glsl(Q || (Q = a(["\n        float shadow = readShadowMap(vpos, linearDepth);\n      "], ["\n        float shadow = readShadowMap(vpos, linearDepth);\n      "])))) : 0 === o.viewingMode ? e.fragment.code.add(D.glsl(X || (X = a(["\n        float shadow = lightingGlobalFactor * (1.0 - additionalAmbientScale);\n      "], ["\n        float shadow = lightingGlobalFactor * (1.0 - additionalAmbientScale);\n      "])))) : e.fragment.code.add(D.glsl(Z || (Z = a(["\n        float shadow = 0.0;\n      "], ["\n        float shadow = 0.0;\n      "])))), Bo.add(D.glsl($ || ($ = a(["\n        vec3 matColor = max(ambient, diffuse);\n    "], ["\n        vec3 matColor = max(ambient, diffuse);\n    "])))), o.attributeColor ? Bo.add(D.glsl(oo || (oo = a(["\n        vec3 albedo_ = mixExternalColor(vColor.rgb * matColor, texColor.rgb, vcolorExt.rgb, int(colorMixMode));\n        float opacity_ = layerOpacity * mixExternalOpacity(vColor.a * opacity, texColor.a, vcolorExt.a, int(colorMixMode));\n      "], ["\n        vec3 albedo_ = mixExternalColor(vColor.rgb * matColor, texColor.rgb, vcolorExt.rgb, int(colorMixMode));\n        float opacity_ = layerOpacity * mixExternalOpacity(vColor.a * opacity, texColor.a, vcolorExt.a, int(colorMixMode));\n      "])))) : (Bo.add(D.glsl(eo || (eo = a(["\n        vec3 albedo_ = mixExternalColor(matColor, texColor.rgb, vcolorExt.rgb, int(colorMixMode));\n        float opacity_ = layerOpacity * mixExternalOpacity(opacity, texColor.a, vcolorExt.a, int(colorMixMode));\n      "], ["\n        vec3 albedo_ = mixExternalColor(matColor, texColor.rgb, vcolorExt.rgb, int(colorMixMode));\n        float opacity_ = layerOpacity * mixExternalOpacity(opacity, texColor.a, vcolorExt.a, int(colorMixMode));\n      "])))), o.usePBR && Bo.add(D.glsl(ao || (ao = a(["\n          if (int(colorMixMode) == 3 /* replace */) {\n            reflectance = 0.2;\n            roughness = 0.6;\n            metalness = 0.0;\n          }\n        "], ["\n          if (int(colorMixMode) == 3 /* replace */) {\n            reflectance = 0.2;\n            roughness = 0.6;\n            metalness = 0.0;\n          }\n        "]))))), o.hasNormalTexture ? (o.vertexTangets ? Bo.add(D.glsl(no || (no = a(["\n        mat3 tangentSpace = computeTangentSpace(normal);\n        "], ["\n        mat3 tangentSpace = computeTangentSpace(normal);\n        "])))) : Bo.add(D.glsl(lo || (lo = a(["\n        mat3 tangentSpace = computeTangentSpace(normal, vpos, vuv0);\n        "], ["\n        mat3 tangentSpace = computeTangentSpace(normal, vpos, vuv0);\n        "])))), Bo.add(D.glsl(io || (io = a(["\n        vec3 shadedNormal = computeTextureNormal(tangentSpace, vuv0);\n      "], ["\n        vec3 shadedNormal = computeTextureNormal(tangentSpace, vuv0);\n      "]))))) : Bo.add(D.glsl(ro || (ro = a(["\n        vec3 shadedNormal = normal;\n      "], ["\n        vec3 shadedNormal = normal;\n      "])))), o.treeRendering && Bo.add(D.glsl(to || (to = a(["\n        shadedNormal = normalize(vNormalWorld);\n        albedo_ *= 1.2;\n        vec3 viewForward = - vec3(view[0][2], view[1][2], view[2][2]);\n        float alignmentLightView = clamp(dot(-viewForward, lightingMainDirection), 0.0, 1.0);\n\n        float transmittance = 1.0 - clamp(dot(-viewForward, shadedNormal), 0.0, 1.0);\n        float treeRadialFalloff = vColor.r;\n        float backLightFactor = 0.5 * treeRadialFalloff * alignmentLightView * transmittance * (1.0 - shadow);\n        additionalLight += backLightFactor * lightingMainIntensity;\n    "], ["\n        shadedNormal = normalize(vNormalWorld);\n        albedo_ *= 1.2;\n        vec3 viewForward = - vec3(view[0][2], view[1][2], view[2][2]);\n        float alignmentLightView = clamp(dot(-viewForward, lightingMainDirection), 0.0, 1.0);\n\n        float transmittance = 1.0 - clamp(dot(-viewForward, shadedNormal), 0.0, 1.0);\n        float treeRadialFalloff = vColor.r;\n        float backLightFactor = 0.5 * treeRadialFalloff * alignmentLightView * transmittance * (1.0 - shadow);\n        additionalLight += backLightFactor * lightingMainIntensity;\n    "])))), o.usePBR ? Bo.add(D.glsl(so || (so = a(["\n        float additionalAmbientIrradiance = additionalAmbientIrradianceFactor * lightingMainIntensity[2];\n        vec3 normalGround = normalize(vpos + localOrigin);\n        vec3 shadedColor = evaluateSceneLightingPBR(shadedNormal, albedo_, shadow, 1.0 - ssao, additionalLight, shadingParams.viewDirection, normalGround, roughness, metalness, emission, reflectance, additionalAmbientIrradiance);\n      "], ["\n        float additionalAmbientIrradiance = additionalAmbientIrradianceFactor * lightingMainIntensity[2];\n        vec3 normalGround = normalize(vpos + localOrigin);\n        vec3 shadedColor = evaluateSceneLightingPBR(shadedNormal, albedo_, shadow, 1.0 - ssao, additionalLight, shadingParams.viewDirection, normalGround, roughness, metalness, emission, reflectance, additionalAmbientIrradiance);\n      "])))) : Bo.add(D.glsl(co || (co = a(["\n        vec3 shadedColor = evaluateSceneLighting(shadedNormal, albedo_, shadow, 1.0 - ssao, additionalLight);\n      "], ["\n        vec3 shadedColor = evaluateSceneLighting(shadedNormal, albedo_, shadow, 1.0 - ssao, additionalLight);\n      "])))), Bo.add(D.glsl(vo || (vo = a(["\n        gl_FragColor = highlightSlice(vec4(shadedColor, opacity_), vpos);\n      }\n    "], ["\n        gl_FragColor = highlightSlice(vec4(shadedColor, opacity_), vpos);\n      }\n    "]))))), 1 !== o.output && 3 !== o.output || (e.include(d.Transform, {
          linearDepth: !0
        }), e.include(c.TextureCoordinateAttribute, o), e.include(w.VisualVariables, o), e.include(u.OutputDepth, o), e.include(t.Slice, o), e.vertex.uniforms.add("nearFar", "vec2"), e.varyings.add("depth", "float"), o.hasColorTexture && e.fragment.uniforms.add("tex", "sampler2D"), N.add(D.glsl(mo || (mo = a(["\n      void main(void) {\n        vpos = calculateVPos();\n    "], ["\n      void main(void) {\n        vpos = calculateVPos();\n    "])))), o.instancedDoublePrecision && N.add(D.glsl(go || (go = a(["\n        vec3 originDelta = dpAdd(viewOriginHi, viewOriginLo, -modelOriginHi, -modelOriginLo);\n        vpos -= originDelta;\n      "], ["\n        vec3 originDelta = dpAdd(viewOriginHi, viewOriginLo, -modelOriginHi, -modelOriginLo);\n        vpos -= originDelta;\n      "])))), o.verticalOffsetEnabled && N.add(D.glsl(uo || (uo = a(["\n        vpos += calculateVerticalOffset(vpos, localOrigin);\n      "], ["\n        vpos += calculateVerticalOffset(vpos, localOrigin);\n      "])))), N.add(D.glsl(po || (po = a(["\n        gl_Position = transformPositionWithDepth(proj, view, vpos, nearFar, depth);\n        forwardTextureCoordinates();\n      }\n    "], ["\n        gl_Position = transformPositionWithDepth(proj, view, vpos, nearFar, depth);\n        forwardTextureCoordinates();\n      }\n    "])))), e.include(l.DiscardOrAdjustAlpha, o), Bo.add(D.glsl(ho || (ho = a(["\n      void main(void) {\n        discardBySlice(vpos);\n    "], ["\n      void main(void) {\n        discardBySlice(vpos);\n    "])))), o.hasColorTexture && Bo.add(D.glsl(xo || (xo = a(["\n        vec4 texColor = texture2D(tex, vuv0);\n        discardOrAdjustAlpha(texColor);\n      "], ["\n        vec4 texColor = texture2D(tex, vuv0);\n        discardOrAdjustAlpha(texColor);\n      "])))), Bo.add(D.glsl(fo || (fo = a(["\n        outputDepth(depth);\n      }\n    "], ["\n        outputDepth(depth);\n      }\n    "]))))), 2 === o.output && (3 === o.normalType && e.extensions.add("GL_OES_standard_derivatives"), e.include(d.Transform, {
          linearDepth: !1
        }), e.include(m.VertexNormal, o), e.include(c.TextureCoordinateAttribute, o), e.include(w.VisualVariables, o), o.hasColorTexture && e.fragment.uniforms.add("tex", "sampler2D"), e.vertex.uniforms.add("viewNormal", "mat4"), e.varyings.add("vPositionView", "vec3"), N.add(D.glsl(bo || (bo = a(["\n      void main(void) {\n        vpos = calculateVPos();\n    "], ["\n      void main(void) {\n        vpos = calculateVPos();\n    "])))), o.instancedDoublePrecision ? (0 === o.normalType && N.add(D.glsl(yo || (yo = a(["\n        vNormalWorld = normalize((viewNormal * vec4(modelNormal * vvLocalNormal(normalModel()).xyz, 1.0)).xyz);\n        "], ["\n        vNormalWorld = normalize((viewNormal * vec4(modelNormal * vvLocalNormal(normalModel()).xyz, 1.0)).xyz);\n        "])))), N.add(D.glsl(Co || (Co = a(["\n        vec3 originDelta = dpAdd(viewOriginHi, viewOriginLo, -modelOriginHi, -modelOriginLo);\n        vpos -= originDelta;\n      "], ["\n        vec3 originDelta = dpAdd(viewOriginHi, viewOriginLo, -modelOriginHi, -modelOriginLo);\n        vpos -= originDelta;\n      "]))))) : 0 === o.normalType && N.add(D.glsl(Oo || (Oo = a(["\n        vNormalWorld = normalize((viewNormal * modelNormal * vvLocalNormal(normalModel())).xyz);\n        "], ["\n        vNormalWorld = normalize((viewNormal * modelNormal * vvLocalNormal(normalModel())).xyz);\n        "])))), o.verticalOffsetEnabled && N.add(D.glsl(wo || (wo = a(["\n        vpos += calculateVerticalOffset(vpos, localOrigin);\n      "], ["\n        vpos += calculateVerticalOffset(vpos, localOrigin);\n      "])))), N.add(D.glsl(Po || (Po = a(["\n        gl_Position = transformPosition(proj, view, vpos);\n        forwardTextureCoordinates();\n      }\n    "], ["\n        gl_Position = transformPosition(proj, view, vpos);\n        forwardTextureCoordinates();\n      }\n    "])))), e.include(t.Slice, o), e.include(l.DiscardOrAdjustAlpha, o), Bo.add(D.glsl(Lo || (Lo = a(["\n      void main() {\n        discardBySlice(vpos);\n    "], ["\n      void main() {\n        discardBySlice(vpos);\n    "])))), o.hasColorTexture && Bo.add(D.glsl(Do || (Do = a(["\n          vec4 texColor = texture2D(tex, vuv0);\n          discardOrAdjustAlpha(texColor);\n      "], ["\n          vec4 texColor = texture2D(tex, vuv0);\n          discardOrAdjustAlpha(texColor);\n      "])))), 3 === o.normalType ? Bo.add(D.glsl(Mo || (Mo = a(["\n        vec3 normal = normalize(cross(dFdx(vPositionView),dFdy(vPositionView)));\n      "], ["\n        vec3 normal = normalize(cross(dFdx(vPositionView),dFdy(vPositionView)));\n      "])))) : Bo.add(D.glsl(No || (No = a(["\n        vec3 normal = normalize(vNormalWorld);\n        if (gl_FrontFacing == false) normal = -normal;\n      "], ["\n        vec3 normal = normalize(vNormalWorld);\n        if (gl_FrontFacing == false) normal = -normal;\n      "])))), Bo.add(D.glsl(Ao || (Ao = a(["\n        gl_FragColor = vec4(vec3(0.5) + 0.5 * normal, 1.0);\n      }\n    "], ["\n        gl_FragColor = vec4(vec3(0.5) + 0.5 * normal, 1.0);\n      }\n    "]))))), 4 === o.output && (e.include(d.Transform, {
          linearDepth: !1
        }), e.include(c.TextureCoordinateAttribute, o), e.include(w.VisualVariables, o), o.hasColorTexture && e.fragment.uniforms.add("tex", "sampler2D"), N.add(D.glsl(So || (So = a(["\n      void main(void) {\n        vpos = calculateVPos();\n    "], ["\n      void main(void) {\n        vpos = calculateVPos();\n    "])))), o.instancedDoublePrecision && N.add(D.glsl(Fo || (Fo = a(["\n        vec3 originDelta = dpAdd(viewOriginHi, viewOriginLo, -modelOriginHi, -modelOriginLo);\n        vpos -= originDelta;\n      "], ["\n        vec3 originDelta = dpAdd(viewOriginHi, viewOriginLo, -modelOriginHi, -modelOriginLo);\n        vpos -= originDelta;\n      "])))), o.verticalOffsetEnabled && N.add(D.glsl(To || (To = a(["\n        vpos += calculateVerticalOffset(vpos, localOrigin);\n      "], ["\n        vpos += calculateVerticalOffset(vpos, localOrigin);\n      "])))), N.add(D.glsl(_o || (_o = a(["\n        gl_Position = transformPosition(proj, view, vpos);\n        forwardTextureCoordinates();\n      }\n    "], ["\n        gl_Position = transformPosition(proj, view, vpos);\n        forwardTextureCoordinates();\n      }\n    "])))), e.include(t.Slice, o), e.include(l.DiscardOrAdjustAlpha, o), e.include(f.HighlightData), e.fragment.uniforms.add("depthTex", "sampler2D"), e.fragment.uniforms.add("highlightViewportPixelSz", "vec4"), Bo.add(D.glsl(Vo || (Vo = a(["\n      void main() {\n        discardBySlice(vpos);\n    "], ["\n      void main() {\n        discardBySlice(vpos);\n    "])))), o.hasColorTexture && Bo.add(D.glsl(zo || (zo = a(["\n        vec4 texColor = texture2D(tex, vuv0);\n        discardOrAdjustAlpha(texColor);\n      "], ["\n        vec4 texColor = texture2D(tex, vuv0);\n        discardOrAdjustAlpha(texColor);\n      "])))), Bo.add(D.glsl(Eo || (Eo = a(["\n        gl_FragColor = highlightData(gl_FragCoord, depthTex, highlightViewportPixelSz);\n      }\n    "], ["\n        gl_FragColor = highlightData(gl_FragCoord, depthTex, highlightViewportPixelSz);\n      }\n    "]))))), e;
      }

      Object.defineProperty(e, "__esModule", {
        value: !0
      }), e.build = N;

      var A, S, F, T, _, V, z, E, B, H, j, R, W, I, k, G, U, Y, J, q, K, Q, X, Z, $, oo, eo, ao, no, lo, io, ro, to, so, co, vo, mo, go, uo, po, ho, xo, fo, bo, yo, Co, Oo, wo, Po, Lo, Do, Mo, No, Ao, So, Fo, To, _o, Vo, zo, Eo;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js":
  /*!**********************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js ***!
    \**********************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineShadersDefaultMaterialTechniqueJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/extendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/extendsHelper.js"), __webpack_require__(
    /*! ../../../../core/tsSupport/decorateHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/decorateHelper.js"), __webpack_require__(
    /*! ../core/shaderLibrary/output/OutputHighlight.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/VisualVariables.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/util/DoublePrecision.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/util/DoublePrecision.glsl.js"), __webpack_require__(
    /*! ../core/shaderTechnique/ReloadableShaderModule */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ReloadableShaderModule.js"), __webpack_require__(
    /*! ../core/shaderTechnique/ShaderTechnique */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechnique.js"), __webpack_require__(
    /*! ../core/shaderTechnique/ShaderTechniqueConfiguration */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueConfiguration.js"), __webpack_require__(
    /*! ../lib/DefaultVertexAttributeLocations */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js"), __webpack_require__(
    /*! ../materials/internal/MaterialUtil */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/materials/internal/MaterialUtil.js"), __webpack_require__(
    /*! ./DefaultMaterial.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js"), __webpack_require__(
    /*! ../../../webgl/Program */
    "./node_modules/arcgis-js-api/views/webgl/Program.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r, t, o, a, i, s, n, l, u, p, d, c, h, m) {
      Object.defineProperty(r, "__esModule", {
        value: !0
      });

      var v = function (r) {
        function o() {
          return null !== r && r.apply(this, arguments) || this;
        }

        return t(o, r), o.prototype.initializeProgram = function (e) {
          var r = o.shader.get(),
              t = this.configuration,
              a = r.build({
            output: t.output,
            viewingMode: e.viewingMode,
            receiveShadows: t.receiveShadows,
            slicePlaneEnabled: t.slice,
            sliceHighlightDisabled: t.sliceHighlightDisabled,
            symbolColor: t.symbolColors,
            vvSize: t.vvSize,
            vvColor: t.vvColor,
            instanced: t.instanced,
            instancedColor: t.instancedColor,
            instancedDoublePrecision: t.instancedDoublePrecision,
            useOldSceneLightInterface: !1,
            usePBR: t.usePBR,
            hasMetalnessAndRoughnessTexture: t.hasMetalnessAndRoughnessTexture,
            hasEmissionTexture: t.hasEmissionTexture,
            hasOcclusionTexture: t.hasOcclusionTexture,
            hasNormalTexture: t.hasNormalTexture,
            hasColorTexture: t.hasColorTexture,
            receiveAmbientOcclusion: t.receiveAmbientOcclusion,
            usePBRforWater: !1,
            useCustomDTRExponentForWater: !1,
            normalType: t.normalsTypeDerivate ? 3 : 0,
            doubleSidedMode: t.doubleSidedMode,
            vertexTangets: t.vertexTangents,
            attributeTextureCoordinates: t.hasMetalnessAndRoughnessTexture || t.hasEmissionTexture || t.hasOcclusionTexture || t.hasNormalTexture || t.hasColorTexture ? 1 : 0,
            textureAlphaPremultiplied: t.textureAlphaPremultiplied,
            attributeColor: t.vertexColors,
            screenSizePerspectiveEnabled: t.screenSizePerspective,
            verticalOffsetEnabled: t.verticalOffset,
            offsetBackfaces: t.offsetBackfaces,
            doublePrecisionRequiresObfuscation: n.doublePrecisionRequiresObfuscation(e.rctx),
            alphaDiscardMode: t.alphaDiscardMode,
            treeRendering: t.treeRendering,
            supportsTextureAtlas: !1
          });
          return new m(e.rctx, a.generateSource("vertex"), a.generateSource("fragment"), d.Default3D);
        }, o.prototype.bindPass = function (e, r, t) {
          var o = this.configuration.output;
          0 === o ? (this.program.setUniform3fv("ambient", r.ambient), this.program.setUniform3fv("diffuse", r.diffuse), this.program.setUniform3fv("specular", r.specular), this.program.setUniform4fv("externalColor", r.externalColor), this.program.setUniform1i("colorMixMode", c.colorMixModes[r.colorMixMode]), this.program.setUniform1f("opacity", r.opacity), this.program.setUniform1f("layerOpacity", r.layerOpacity), this.configuration.usePBR && i.PhysicallyBasedRenderingParameters.bindUniforms(this.program, r)) : 1 === o || 3 === o ? this.program.setUniform2fv("nearFar", t.nearFar) : 4 === o && a.OutputHighlight.bindOutputHighlight(e, this.program, t), s.VisualVariables.bindUniformsForSymbols(this.program, r), "mask" !== r.textureAlphaMode && "maskBlend" !== r.textureAlphaMode || this.program.setUniform1f("textureAlphaCutoff", r.textureAlphaCutoff);
        }, o.prototype.initializePipeline = function () {
          return null;
        }, o.shader = new l.ReloadableShaderModule(h, "./DefaultMaterial.glsl", e), o;
      }(u.ShaderTechnique);

      r.DefaultMaterialTechnique = v;

      var f = function (e) {
        function r() {
          var r = null !== e && e.apply(this, arguments) || this;
          return r.output = 0, r.alphaDiscardMode = 1, r.doubleSidedMode = 0, r.vertexColors = !1, r.offsetBackfaces = !1, r.symbolColors = !1, r.vvSize = !1, r.vvColor = !1, r.verticalOffset = !1, r.receiveShadows = !1, r.slice = !1, r.sliceHighlightDisabled = !1, r.receiveAmbientOcclusion = !1, r.screenSizePerspective = !1, r.textureAlphaPremultiplied = !1, r.treeRendering = !1, r.hasColorTexture = !1, r.usePBR = !1, r.hasMetalnessAndRoughnessTexture = !1, r.hasEmissionTexture = !1, r.hasOcclusionTexture = !1, r.hasNormalTexture = !1, r.instanced = !1, r.instancedColor = !1, r.instancedDoublePrecision = !1, r.vertexTangents = !1, r.normalsTypeDerivate = !1, r;
        }

        return t(r, e), o([p.parameter({
          count: 6
        })], r.prototype, "output", void 0), o([p.parameter({
          count: 4
        })], r.prototype, "alphaDiscardMode", void 0), o([p.parameter({
          count: 3
        })], r.prototype, "doubleSidedMode", void 0), o([p.parameter()], r.prototype, "vertexColors", void 0), o([p.parameter()], r.prototype, "offsetBackfaces", void 0), o([p.parameter()], r.prototype, "symbolColors", void 0), o([p.parameter()], r.prototype, "vvSize", void 0), o([p.parameter()], r.prototype, "vvColor", void 0), o([p.parameter()], r.prototype, "verticalOffset", void 0), o([p.parameter()], r.prototype, "receiveShadows", void 0), o([p.parameter()], r.prototype, "slice", void 0), o([p.parameter()], r.prototype, "sliceHighlightDisabled", void 0), o([p.parameter()], r.prototype, "receiveAmbientOcclusion", void 0), o([p.parameter()], r.prototype, "screenSizePerspective", void 0), o([p.parameter()], r.prototype, "textureAlphaPremultiplied", void 0), o([p.parameter()], r.prototype, "treeRendering", void 0), o([p.parameter()], r.prototype, "hasColorTexture", void 0), o([p.parameter()], r.prototype, "usePBR", void 0), o([p.parameter()], r.prototype, "hasMetalnessAndRoughnessTexture", void 0), o([p.parameter()], r.prototype, "hasEmissionTexture", void 0), o([p.parameter()], r.prototype, "hasOcclusionTexture", void 0), o([p.parameter()], r.prototype, "hasNormalTexture", void 0), o([p.parameter()], r.prototype, "instanced", void 0), o([p.parameter()], r.prototype, "instancedColor", void 0), o([p.parameter()], r.prototype, "instancedDoublePrecision", void 0), o([p.parameter()], r.prototype, "vertexTangents", void 0), o([p.parameter()], r.prototype, "normalsTypeDerivate", void 0), r;
      }(p.ShaderTechniqueConfiguration);

      r.DefaultMaterialTechniqueConfiguration = f;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/LaserLinePrograms.js":
  /*!***************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/LaserLinePrograms.js ***!
    \***************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineShadersLaserLineProgramsJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../lib/DefaultVertexAttributeLocations */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js"), __webpack_require__(
    /*! ./sources/resolver */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/sources/resolver.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r, t, a) {
      Object.defineProperty(r, "__esModule", {
        value: !0
      }), r.program = {
        name: "laserline",
        shaders: {
          vertexShader: a.resolveIncludes("util/quad.vert"),
          fragmentShader: a.resolveIncludes("renderer/laserLine/laserLine.frag")
        },
        attributes: t.Default3D
      };
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/RibbonLine.glsl.js":
  /*!*************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/RibbonLine.glsl.js ***!
    \*************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineShadersRibbonLineGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../core/shaderLibrary/Slice.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/attributes/RibbonVertexPosition.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/LineStipple.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/PiUtils.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js"), __webpack_require__(
    /*! ../core/shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js"), __webpack_require__(
    /*! ../core/shaderModules/ShaderBuilder */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n, t, i, o, r, s, l, a) {
      function p(e) {
        var n = new a.ShaderBuilder();
        return n.extensions.add("GL_OES_standard_derivatives"), n.include(s.PiUtils), n.include(o.RibbonVertexPosition, e), n.include(r.LineStipple, e), n.vertex.uniforms.add("proj", "mat4").add("view", "mat4").add("model", "mat4").add("nearPlane", "float").add("pixelRatio", "float").add("miterLimit", "float").add("screenSize", "vec2"), n.attributes.add("position", "vec3"), n.attributes.add("subdivisionFactor", "float"), n.attributes.add("uv0", "vec2"), n.attributes.add("auxpos1", "vec3"), n.attributes.add("auxpos2", "vec3"), n.varyings.add("vColor", "vec4"), n.varyings.add("vpos", "vec3"), n.vertex.code.add(l.glsl(c || (c = t(["\n\t\t#define PERPENDICULAR(v) vec2(v.y, -v.x);\n\t\t#define ISOUTSIDE (left.x * right.y - left.y * right.x)*uv0.y > 0.0\n\n\t\tfloat interp(float ncp, vec4 a, vec4 b) {\n\t\t\treturn (-ncp - a.z) / (b.z - a.z);\n\t\t}\n\n\t\tvec2 rotate(vec2 v, float a) {\n\t\t\tfloat s = sin(a);\n\t\t\tfloat c = cos(a);\n\t\t\tmat2 m = mat2(c, -s, s, c);\n\t\t\treturn m * v;\n\t\t}\n"], ["\n\t\t#define PERPENDICULAR(v) vec2(v.y, -v.x);\n\t\t#define ISOUTSIDE (left.x * right.y - left.y * right.x)*uv0.y > 0.0\n\n\t\tfloat interp(float ncp, vec4 a, vec4 b) {\n\t\t\treturn (-ncp - a.z) / (b.z - a.z);\n\t\t}\n\n\t\tvec2 rotate(vec2 v, float a) {\n\t\t\tfloat s = sin(a);\n\t\t\tfloat c = cos(a);\n\t\t\tmat2 m = mat2(c, -s, s, c);\n\t\t\treturn m * v;\n\t\t}\n"])))), n.vertex.code.add(l.glsl(d || (d = t(["\n    vec4 projectAndScale(vec4 pos) {\n      vec4 posNdc = proj * pos;\n\n      // Note that posNdc is in -1:1, scaling by screenSize converts this to a coordinate system\n      // that is twice scaled (going from -size:size).\n      posNdc.xy *= screenSize / posNdc.w;\n      return posNdc;\n    }\n"], ["\n    vec4 projectAndScale(vec4 pos) {\n      vec4 posNdc = proj * pos;\n\n      // Note that posNdc is in -1:1, scaling by screenSize converts this to a coordinate system\n      // that is twice scaled (going from -size:size).\n      posNdc.xy *= screenSize / posNdc.w;\n      return posNdc;\n    }\n"])))), n.vertex.code.add(l.glsl(v || (v = t(["\n    void clipAndTransform(inout vec4 pos, inout vec4 prev, inout vec4 next, in bool isStartVertex) {\n      float vnp = nearPlane*0.99;\n\n      //current pos behind ncp --\x3e we need to clip\n      if(pos.z > -nearPlane) {\n        if (!isStartVertex) {\n          //previous in front of ncp\n          if(prev.z < -nearPlane) {\n            pos = mix(prev, pos, interp(vnp, prev, pos));\n            next = pos;\n          } else {\n            pos = vec4(0.0, 0.0, 0.0, 1.0);\n          }\n        }\n        //next in front of ncp\n        if(isStartVertex) {\n          if(next.z < -nearPlane) {\n            pos = mix(pos, next, interp(vnp, pos, next));\n            prev = pos;\n          } else {\n            pos = vec4(0.0, 0.0, 0.0, 1.0);\n          }\n        }\n      } else {\n        //current position visible\n        //previous behind ncp\n        if (prev.z > -nearPlane) {\n          prev = mix(pos, prev, interp(vnp, pos, prev));\n        }\n        //next behind ncp\n        if (next.z > -nearPlane) {\n          next = mix(next, pos, interp(vnp, next, pos));\n        }\n      }\n\n      pos = projectAndScale(pos);\n      next = projectAndScale(next);\n      prev = projectAndScale(prev);\n    }\n"], ["\n    void clipAndTransform(inout vec4 pos, inout vec4 prev, inout vec4 next, in bool isStartVertex) {\n      float vnp = nearPlane*0.99;\n\n      //current pos behind ncp --\x3e we need to clip\n      if(pos.z > -nearPlane) {\n        if (!isStartVertex) {\n          //previous in front of ncp\n          if(prev.z < -nearPlane) {\n            pos = mix(prev, pos, interp(vnp, prev, pos));\n            next = pos;\n          } else {\n            pos = vec4(0.0, 0.0, 0.0, 1.0);\n          }\n        }\n        //next in front of ncp\n        if(isStartVertex) {\n          if(next.z < -nearPlane) {\n            pos = mix(pos, next, interp(vnp, pos, next));\n            prev = pos;\n          } else {\n            pos = vec4(0.0, 0.0, 0.0, 1.0);\n          }\n        }\n      } else {\n        //current position visible\n        //previous behind ncp\n        if (prev.z > -nearPlane) {\n          prev = mix(pos, prev, interp(vnp, pos, prev));\n        }\n        //next behind ncp\n        if (next.z > -nearPlane) {\n          next = mix(next, pos, interp(vnp, next, pos));\n        }\n      }\n\n      pos = projectAndScale(pos);\n      next = projectAndScale(next);\n      prev = projectAndScale(prev);\n    }\n"])))), n.vertex.code.add(l.glsl(m || (m = t(["\n  void main(void) {\n    float coverage = 1.0;\n    vpos = (model * vec4(position, 1.0)).xyz;\n\n    // Check for special value of uv0.y which is used by the Renderer when graphics\n    // are removed before the VBO is recompacted. If this is the case, then we just\n    // project outside of clip space.\n    if (uv0.y == 0.0) {\n      // Project out of clip space\n      gl_Position = vec4(1e038, 1e038, 1e038, 1.0);\n    }\n    else {\n      bool isStartVertex = abs(abs(uv0.y)-3.0) == 1.0;\n      bool isJoin = abs(uv0.y)-3.0 < 0.0;\n\n      float lineWidth = getSize() * pixelRatio;\n\n      // convert sub-pixel coverage to alpha\n      if( lineWidth<1.0 ){\n        coverage = lineWidth;\n        lineWidth = 1.0;\n      }\n\n      vec4 pos  = view * vec4((model * vec4(position.xyz, 1.0)).xyz, 1.0);\n      vec4 prev = view * vec4((model * vec4(auxpos1.xyz, 1.0)).xyz, 1.0);\n      vec4 next = view * vec4((model * vec4(auxpos2.xyz, 1.0)).xyz, 1.0);\n\n      clipAndTransform(pos, prev, next, isStartVertex);\n\n      vec2 left = (pos.xy - prev.xy);\n      vec2 right = (next.xy - pos.xy);\n\n      float leftLen = length(left);\n      float rightLen = length(right);\n  "], ["\n  void main(void) {\n    float coverage = 1.0;\n    vpos = (model * vec4(position, 1.0)).xyz;\n\n    // Check for special value of uv0.y which is used by the Renderer when graphics\n    // are removed before the VBO is recompacted. If this is the case, then we just\n    // project outside of clip space.\n    if (uv0.y == 0.0) {\n      // Project out of clip space\n      gl_Position = vec4(1e038, 1e038, 1e038, 1.0);\n    }\n    else {\n      bool isStartVertex = abs(abs(uv0.y)-3.0) == 1.0;\n      bool isJoin = abs(uv0.y)-3.0 < 0.0;\n\n      float lineWidth = getSize() * pixelRatio;\n\n      // convert sub-pixel coverage to alpha\n      if( lineWidth<1.0 ){\n        coverage = lineWidth;\n        lineWidth = 1.0;\n      }\n\n      vec4 pos  = view * vec4((model * vec4(position.xyz, 1.0)).xyz, 1.0);\n      vec4 prev = view * vec4((model * vec4(auxpos1.xyz, 1.0)).xyz, 1.0);\n      vec4 next = view * vec4((model * vec4(auxpos2.xyz, 1.0)).xyz, 1.0);\n\n      clipAndTransform(pos, prev, next, isStartVertex);\n\n      vec2 left = (pos.xy - prev.xy);\n      vec2 right = (next.xy - pos.xy);\n\n      float leftLen = length(left);\n      float rightLen = length(right);\n  "])))), e.stippleEnabled && n.vertex.code.add(l.glsl(f || (f = t(["\n      // uv0.x is either 0 or 1, depending on whether this is considered the start of a line segment\n      // or the end. If start, then use pos->next, otherwise use prev->pos to define the line segment\n      // vector\n      vec4 stippleSegmentInfo = mix(vec4(pos.xy, right), vec4(prev.xy, left), uv0.x);\n      vec2 stippleSegmentOrigin = stippleSegmentInfo.xy;\n\n      // Scale s.t. it's in units of stipple pattern size.\n      vec2 stippleSegmentDirection = stippleSegmentInfo.zw;\n    "], ["\n      // uv0.x is either 0 or 1, depending on whether this is considered the start of a line segment\n      // or the end. If start, then use pos->next, otherwise use prev->pos to define the line segment\n      // vector\n      vec4 stippleSegmentInfo = mix(vec4(pos.xy, right), vec4(prev.xy, left), uv0.x);\n      vec2 stippleSegmentOrigin = stippleSegmentInfo.xy;\n\n      // Scale s.t. it's in units of stipple pattern size.\n      vec2 stippleSegmentDirection = stippleSegmentInfo.zw;\n    "])))), n.vertex.code.add(l.glsl(h || (h = t(['\n    left = (leftLen > 0.001) ? left/leftLen : vec2(0.0, 0.0);\n    right = (rightLen > 0.001) ? right/rightLen : vec2(0.0, 0.0);\n\n    vec2 capDisplacementDir = vec2(0, 0);\n    vec2 joinDisplacementDir = vec2(0, 0);\n    float displacementLen = lineWidth;\n\n    if (isJoin) {\n\n      // JOIN handling ---------------------------------------------------\n      // determine if vertex is on the "outside or "inside" of the join\n      bool isOutside = ISOUTSIDE;\n\n      // compute miter join position first\n      joinDisplacementDir = normalize(left + right);\n      joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);\n\n      // computer miter stretch\n      if (leftLen > 0.001 && rightLen > 0.001) {\n        float nDotSeg = dot(joinDisplacementDir, left);\n        displacementLen /= length(nDotSeg*left - joinDisplacementDir);\n\n        // limit displacement of inner vertices\n        if (!isOutside) {\n          displacementLen = min(displacementLen, min(leftLen, rightLen)/abs(nDotSeg));\n        }\n      }\n\n      if (isOutside && (displacementLen > miterLimit*lineWidth)) {\n    '], ['\n    left = (leftLen > 0.001) ? left/leftLen : vec2(0.0, 0.0);\n    right = (rightLen > 0.001) ? right/rightLen : vec2(0.0, 0.0);\n\n    vec2 capDisplacementDir = vec2(0, 0);\n    vec2 joinDisplacementDir = vec2(0, 0);\n    float displacementLen = lineWidth;\n\n    if (isJoin) {\n\n      // JOIN handling ---------------------------------------------------\n      // determine if vertex is on the "outside or "inside" of the join\n      bool isOutside = ISOUTSIDE;\n\n      // compute miter join position first\n      joinDisplacementDir = normalize(left + right);\n      joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);\n\n      // computer miter stretch\n      if (leftLen > 0.001 && rightLen > 0.001) {\n        float nDotSeg = dot(joinDisplacementDir, left);\n        displacementLen /= length(nDotSeg*left - joinDisplacementDir);\n\n        // limit displacement of inner vertices\n        if (!isOutside) {\n          displacementLen = min(displacementLen, min(leftLen, rightLen)/abs(nDotSeg));\n        }\n      }\n\n      if (isOutside && (displacementLen > miterLimit*lineWidth)) {\n    '])))), e.roundJoins ? n.vertex.code.add(l.glsl(g || (g = t(["\n        vec2 startDir;\n        vec2 endDir;\n\n        if (leftLen < 0.001) {\n          startDir = right;\n        }\n        else{\n          startDir = left;\n        }\n        startDir = normalize(startDir);\n        startDir = PERPENDICULAR(startDir);\n\n        if (rightLen < 0.001) {\n          endDir = left;\n        }\n        else{\n          endDir = right;\n        }\n        endDir = normalize(endDir);\n        endDir = PERPENDICULAR(endDir);\n\n        float rotationAngle = acos(clamp(dot(startDir, endDir), -1.0, 1.0));\n        joinDisplacementDir = rotate(startDir, -sign(uv0.y) * subdivisionFactor * rotationAngle);\n      "], ["\n        vec2 startDir;\n        vec2 endDir;\n\n        if (leftLen < 0.001) {\n          startDir = right;\n        }\n        else{\n          startDir = left;\n        }\n        startDir = normalize(startDir);\n        startDir = PERPENDICULAR(startDir);\n\n        if (rightLen < 0.001) {\n          endDir = left;\n        }\n        else{\n          endDir = right;\n        }\n        endDir = normalize(endDir);\n        endDir = PERPENDICULAR(endDir);\n\n        float rotationAngle = acos(clamp(dot(startDir, endDir), -1.0, 1.0));\n        joinDisplacementDir = rotate(startDir, -sign(uv0.y) * subdivisionFactor * rotationAngle);\n      "])))) : n.vertex.code.add(l.glsl(D || (D = t(["\n        // convert to bevel join if miterLimit is exceeded\n        if (leftLen < 0.001) {\n          joinDisplacementDir = right;\n        }\n        else if (rightLen < 0.001) {\n          joinDisplacementDir = left;\n        }\n        else {\n          joinDisplacementDir = isStartVertex ? right : left;\n        }\n        joinDisplacementDir = normalize(joinDisplacementDir);\n        joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);\n  "], ["\n        // convert to bevel join if miterLimit is exceeded\n        if (leftLen < 0.001) {\n          joinDisplacementDir = right;\n        }\n        else if (rightLen < 0.001) {\n          joinDisplacementDir = left;\n        }\n        else {\n          joinDisplacementDir = isStartVertex ? right : left;\n        }\n        joinDisplacementDir = normalize(joinDisplacementDir);\n        joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);\n  "])))), n.vertex.code.add(l.glsl(x || (x = t(["\n        displacementLen = lineWidth;\n      }\n    } else {\n    // CAP handling ---------------------------------------------------\n    if (leftLen < 0.001) {\n      joinDisplacementDir = right;\n    }\n    else if (rightLen < 0.001) {\n      joinDisplacementDir = left;\n    }\n    else {\n      joinDisplacementDir = isStartVertex ? right : left;\n    }\n    joinDisplacementDir = normalize(joinDisplacementDir);\n    joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);\n    displacementLen = lineWidth;\n\n    capDisplacementDir = isStartVertex ? -right : left;\n  "], ["\n        displacementLen = lineWidth;\n      }\n    } else {\n    // CAP handling ---------------------------------------------------\n    if (leftLen < 0.001) {\n      joinDisplacementDir = right;\n    }\n    else if (rightLen < 0.001) {\n      joinDisplacementDir = left;\n    }\n    else {\n      joinDisplacementDir = isStartVertex ? right : left;\n    }\n    joinDisplacementDir = normalize(joinDisplacementDir);\n    joinDisplacementDir = PERPENDICULAR(joinDisplacementDir);\n    displacementLen = lineWidth;\n\n    capDisplacementDir = isStartVertex ? -right : left;\n  "])))), e.roundCaps ? n.vertex.code.add(l.glsl(u || (u = t(["\n    float angle = subdivisionFactor*PI*0.5;\n    joinDisplacementDir *= cos(angle);\n    capDisplacementDir *= sin(angle);\n    "], ["\n    float angle = subdivisionFactor*PI*0.5;\n    joinDisplacementDir *= cos(angle);\n    capDisplacementDir *= sin(angle);\n    "])))) : n.vertex.code.add(l.glsl(S || (S = t(["\n    capDisplacementDir *= subdivisionFactor;\n    "], ["\n    capDisplacementDir *= subdivisionFactor;\n    "])))), n.vertex.code.add(l.glsl(L || (L = t(["\n  }\n\n  pos.xy += joinDisplacementDir * sign(uv0.y) * displacementLen;\n  pos.xy += capDisplacementDir * displacementLen;\n  "], ["\n  }\n\n  pos.xy += joinDisplacementDir * sign(uv0.y) * displacementLen;\n  pos.xy += capDisplacementDir * displacementLen;\n  "])))), e.stippleEnabled && (n.vertex.code.add(l.glsl(b || (b = t(["\n    {\n      // Compute the stipple pattern UV coordinate from the actual position, based on the origin\n      // and direction of the line segment on which the stipple pattern is based.\n\n      // Project the vector from the origin of the segment to the vertex onto the line segment.\n      // Note the 0.5 factor due to projected positions being at twice the screen size scale (see projectAndScale)\n      vec2 posVec = pos.xy - stippleSegmentOrigin;\n\n      float stippleSegmentDirectionLength = length(stippleSegmentDirection);\n    "], ["\n    {\n      // Compute the stipple pattern UV coordinate from the actual position, based on the origin\n      // and direction of the line segment on which the stipple pattern is based.\n\n      // Project the vector from the origin of the segment to the vertex onto the line segment.\n      // Note the 0.5 factor due to projected positions being at twice the screen size scale (see projectAndScale)\n      vec2 posVec = pos.xy - stippleSegmentOrigin;\n\n      float stippleSegmentDirectionLength = length(stippleSegmentDirection);\n    "])))), e.stippleIntegerRepeatsEnabled && n.vertex.code.add(l.glsl(P || (P = t(["\n      float numberOfPatternRepeats = stippleSegmentDirectionLength * 0.5 * stipplePatternPixelSizeInv;\n      float roundedNumberOfPatternRepeats = max(1.0, floor(numberOfPatternRepeats + 0.5));\n      stipplePatternUvMax = roundedNumberOfPatternRepeats;\n      "], ["\n      float numberOfPatternRepeats = stippleSegmentDirectionLength * 0.5 * stipplePatternPixelSizeInv;\n      float roundedNumberOfPatternRepeats = max(1.0, floor(numberOfPatternRepeats + 0.5));\n      stipplePatternUvMax = roundedNumberOfPatternRepeats;\n      "])))), n.vertex.code.add(l.glsl(y || (y = t(["\n      if (stippleSegmentDirectionLength >= 0.001) {\n        // Project the vertex position onto the line segment.\n        float projectedLength = dot(stippleSegmentDirection, posVec) / stippleSegmentDirectionLength * 0.5;\n     ", "\n        stipplePatternUv = projectedLength * wholeNumberOfRepeatsScale * stipplePatternPixelSizeInv * pos.w;\n        } else {\n          stipplePatternUv = 1.0;\n        }\n      }\n    "], ["\n      if (stippleSegmentDirectionLength >= 0.001) {\n        // Project the vertex position onto the line segment.\n        float projectedLength = dot(stippleSegmentDirection, posVec) / stippleSegmentDirectionLength * 0.5;\n     ", "\n        stipplePatternUv = projectedLength * wholeNumberOfRepeatsScale * stipplePatternPixelSizeInv * pos.w;\n        } else {\n          stipplePatternUv = 1.0;\n        }\n      }\n    "])), e.stippleIntegerRepeatsEnabled ? "float wholeNumberOfRepeatsScale = roundedNumberOfPatternRepeats / numberOfPatternRepeats;" : "float wholeNumberOfRepeatsScale = 1.0;"))), n.vertex.code.add(l.glsl(j || (j = t(["\n      // Convert back into NDC\n      pos.xy = pos.xy / screenSize * pos.w;\n\n      vColor = getColor();\n      vColor.a *= coverage;\n\n      gl_Position = pos;\n    }\n  }\n  "], ["\n      // Convert back into NDC\n      pos.xy = pos.xy / screenSize * pos.w;\n\n      vColor = getColor();\n      vColor.a *= coverage;\n\n      gl_Position = pos;\n    }\n  }\n  "])))), n.include(i.Slice, e), 0 === e.output && (n.fragment.uniforms.add("symbolColor", "vec4"), n.fragment.code.add(l.glsl(z || (z = t(["\n    void main() {\n      discardBySlice(vpos);\n      float stippleAlpha = getStippleAlpha();\n      discardByStippleAlpha(stippleAlpha, STIPPLE_ALPHA_COLOR_DISCARD);\n      vec4 color = symbolColor * vColor;\n      gl_FragColor = highlightSlice(blendStipple(color, stippleAlpha), vpos);\n    }\n    "], ["\n    void main() {\n      discardBySlice(vpos);\n      float stippleAlpha = getStippleAlpha();\n      discardByStippleAlpha(stippleAlpha, STIPPLE_ALPHA_COLOR_DISCARD);\n      vec4 color = symbolColor * vColor;\n      gl_FragColor = highlightSlice(blendStipple(color, stippleAlpha), vpos);\n    }\n    "]))))), 4 === e.output && n.fragment.code.add(l.glsl(A || (A = t(["\n      void main() {\n        discardBySlice(vpos);\n        discardByStippleAlpha(getStippleAlpha(), STIPPLE_ALPHA_HIGHLIGHT_DISCARD);\n        gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n      }\n    "], ["\n      void main() {\n        discardBySlice(vpos);\n        discardByStippleAlpha(getStippleAlpha(), STIPPLE_ALPHA_HIGHLIGHT_DISCARD);\n        gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n      }\n    "])))), n;
      }

      Object.defineProperty(n, "__esModule", {
        value: !0
      }), n.build = p;
      var c, d, v, m, f, h, g, D, x, u, S, L, b, P, y, j, z, A;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/RibbonLineTechnique.js":
  /*!*****************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/RibbonLineTechnique.js ***!
    \*****************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineShadersRibbonLineTechniqueJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/extendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/extendsHelper.js"), __webpack_require__(
    /*! ../../../../core/tsSupport/decorateHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/decorateHelper.js"), __webpack_require__(
    /*! ../../../../core/tsSupport/assignHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/assignHelper.js"), __webpack_require__(
    /*! ../../../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../../../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../core/shaderLibrary/Slice.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/Transform.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/output/OutputHighlight.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/VisualVariables.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js"), __webpack_require__(
    /*! ../core/shaderTechnique/ReloadableShaderModule */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ReloadableShaderModule.js"), __webpack_require__(
    /*! ../core/shaderTechnique/ShaderTechnique */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechnique.js"), __webpack_require__(
    /*! ../core/shaderTechnique/ShaderTechniqueConfiguration */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueConfiguration.js"), __webpack_require__(
    /*! ./RibbonLine.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/RibbonLine.glsl.js"), __webpack_require__(
    /*! ../../../webgl/Program */
    "./node_modules/arcgis-js-api/views/webgl/Program.js"), __webpack_require__(
    /*! ../../../webgl/renderState */
    "./node_modules/arcgis-js-api/views/webgl/renderState.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, i, r, o, p, a, n, s, l, u, d, h, f, c, b, g) {
      Object.defineProperty(t, "__esModule", {
        value: !0
      }), t.RibbonVertexAttributeConstants = {
        POSITION: "position",
        SUBDIVISIONFACTOR: "subdivisionFactor",
        UV0: "uv0",
        AUXPOS1: "auxpos1",
        AUXPOS2: "auxpos2",
        SUBDIVISIONS: "subdivisions",
        COLOR: "color",
        COLORFEATUREATTRIBUTE: "colorFeatureAttribute",
        SIZE: "size",
        SIZEFEATUREATTRIBUTE: "sizeFeatureAttribute",
        OPACITYFEATUREATTRIBUTE: "opacityFeatureAttribute"
      }, t.ribbonVertexAttributeLocations = {
        position: 0,
        subdivisionFactor: 1,
        uv0: 2,
        auxpos1: 3,
        auxpos2: 4,
        size: 6,
        sizeFeatureAttribute: 6,
        color: 5,
        colorFeatureAttribute: 5,
        opacityFeatureAttribute: 7
      };

      var m = function (r) {
        function o(e, t) {
          var i = r.call(this, e, t) || this;
          return i.stipplePattern = null, i.stippleTextureBind = null, i.stippleTextureRepository = e.stippleTextureRepository, i;
        }

        return i(o, r), o.prototype.initializeProgram = function (e) {
          var i = o.shader.get(),
              r = this.configuration,
              p = i.build({
            output: r.output,
            slicePlaneEnabled: r.slicePlaneEnabled,
            sliceHighlightDisabled: r.sliceHighlightDisabled,
            stippleEnabled: r.stippleEnabled,
            stippleOffColorEnabled: r.stippleOffColorEnabled,
            stippleUVMaxEnabled: r.stippleIntegerRepeatsEnabled,
            stippleIntegerRepeatsEnabled: r.stippleIntegerRepeatsEnabled,
            roundCaps: r.roundCaps,
            roundJoins: r.roundJoins,
            vvColor: r.vvColor,
            vvSize: r.vvSize,
            vvOpacity: r.vvOpacity
          });
          return new b(e.rctx, p.generateSource("vertex"), p.generateSource("fragment"), t.ribbonVertexAttributeLocations);
        }, o.prototype.dispose = function () {
          r.prototype.dispose.call(this), this.stippleTextureRepository.release(this.stipplePattern), this.stipplePattern = null, this.stippleTextureBind = null;
        }, o.prototype.bindPass = function (e, t, i) {
          if (4 === this.configuration.output && l.OutputHighlight.bindOutputHighlight(e, this.program, i), this.program.setUniform1f("symbolLineWidth", t.width), this.program.setUniform4fv("symbolColor", t.color), this.program.setUniform1f("miterLimit", "miter" !== t.join ? 0 : t.miterLimit), this.program.setUniform1f("nearPlane", i.nearFar[0]), this.program.setUniform1f("pixelRatio", i.pixelRatio), this.program.setUniform2fv("screenSize", [i.viewport[2], i.viewport[3]]), u.VisualVariables.bindUniformsWithOpacity(this.program, t), this.stipplePattern !== t.stipplePattern) {
            var r = t.stipplePattern;
            this.stippleTextureBind = this.stippleTextureRepository.swap(this.stipplePattern, r), this.stipplePattern = r;
          }

          if (this.configuration.stippleEnabled) {
            var o = a.isSome(this.stippleTextureBind) ? this.stippleTextureBind(e, 0) * i.pixelRatio : 1;

            if (this.program.setUniform1i("stipplePatternTexture", 0), this.program.setUniform1f("stipplePatternPixelSizeInv", 1 / o), this.configuration.stippleOffColorEnabled) {
              var n = p.expect(t.stippleOffColor);
              this.program.setUniform4f("stippleOffColor", n[0], n[1], n[2], n.length > 3 ? n[3] : 1);
            }
          }
        }, o.prototype.bindDraw = function (e) {
          s.Transform.bindUniforms(this.program, e), n.Slice.bindUniformsWithOrigin(this.program, this.configuration, e);
        }, o.prototype.bindInstance = function (e) {
          this.program.setUniformMatrix4fv("model", e.transformation);
        }, o.prototype.initializePipeline = function () {
          var e = this.configuration;
          return 0 === e.output ? g.makePipelineState({
            blending: g.separateBlendingParams(770, 1, 771, 771),
            polygonOffset: e.polygonOffset && v,
            depthTest: {
              func: 513
            },
            depthWrite: !e.transparent && e.writeDepth && g.defaultDepthWriteParams,
            colorWrite: g.defaultColorWriteParams
          }) : g.makePipelineState({
            polygonOffset: e.polygonOffset && v,
            depthTest: {
              func: 513
            },
            depthWrite: !e.transparent && e.writeDepth && g.defaultDepthWriteParams,
            colorWrite: g.defaultColorWriteParams
          });
        }, o.prototype.bindPipelineState = function (e) {
          e.setPipelineState(this.pipeline);
        }, o.shader = new d.ReloadableShaderModule(c, "./RibbonLine.glsl", e), o;
      }(h.ShaderTechnique);

      t.RibbonLineTechnique = m;

      var v = {
        factor: 0,
        units: -4
      },
          y = function (e) {
        function t() {
          var t = null !== e && e.apply(this, arguments) || this;
          return t.output = 0, t.slicePlaneEnabled = !1, t.sliceHighlightDisabled = !1, t.vertexColors = !1, t.transparent = !1, t.polygonOffset = !1, t.writeDepth = !1, t.stippleEnabled = !1, t.stippleOffColorEnabled = !1, t.stippleIntegerRepeatsEnabled = !1, t.roundCaps = !1, t.roundJoins = !1, t.vvSize = !1, t.vvColor = !1, t.vvOpacity = !1, t;
        }

        return i(t, e), r([f.parameter({
          count: 6
        })], t.prototype, "output", void 0), r([f.parameter()], t.prototype, "slicePlaneEnabled", void 0), r([f.parameter()], t.prototype, "sliceHighlightDisabled", void 0), r([f.parameter()], t.prototype, "vertexColors", void 0), r([f.parameter()], t.prototype, "transparent", void 0), r([f.parameter()], t.prototype, "polygonOffset", void 0), r([f.parameter()], t.prototype, "writeDepth", void 0), r([f.parameter()], t.prototype, "stippleEnabled", void 0), r([f.parameter()], t.prototype, "stippleOffColorEnabled", void 0), r([f.parameter()], t.prototype, "stippleIntegerRepeatsEnabled", void 0), r([f.parameter()], t.prototype, "roundCaps", void 0), r([f.parameter()], t.prototype, "roundJoins", void 0), r([f.parameter()], t.prototype, "vvSize", void 0), r([f.parameter()], t.prototype, "vvColor", void 0), r([f.parameter()], t.prototype, "vvOpacity", void 0), t;
      }(f.ShaderTechniqueConfiguration);

      t.RibbonLineTechniqueConfiguration = y;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/WaterSurface.glsl.js":
  /*!***************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/WaterSurface.glsl.js ***!
    \***************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineShadersWaterSurfaceGlslJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../../../core/tsSupport/makeTemplateObjectHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/makeTemplateObjectHelper.js"), __webpack_require__(
    /*! ../core/shaderLibrary/ForwardLinearDepth.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/Slice.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/Transform.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/NormalUtils.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/ReadShadowMap.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/Water.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/Water.glsl.js"), __webpack_require__(
    /*! ../core/shaderLibrary/shading/WaterDistortion.glsl */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderLibrary/shading/WaterDistortion.glsl.js"), __webpack_require__(
    /*! ../core/shaderModules/interfaces */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/interfaces.js"), __webpack_require__(
    /*! ../core/shaderModules/ShaderBuilder */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (n, a, e, o, r, i, t, l, d, v, s, c) {
      function g(n) {
        var a = new c.ShaderBuilder();
        return a.include(i.Transform, {
          linearDepth: !1
        }), a.attributes.add("position", "vec3"), a.attributes.add("uv0", "vec2"), a.vertex.uniforms.add("proj", "mat4").add("view", "mat4").add("model", "mat4").add("localOrigin", "vec3"), 0 === n.output && (a.include(t.NormalUtils, n), a.include(o.ForwardLinearDepth, n), a.varyings.add("vuv", "vec2"), a.varyings.add("vpos", "vec3"), a.varyings.add("vnormal", "vec3"), a.varyings.add("vtbnMatrix", "mat3"), a.vertex.code.add(s.glsl(m || (m = e(["\n      void main(void) {\n        vuv = uv0;\n        vpos = (model * vec4(position, 1.0)).xyz;\n\n        vnormal = getLocalUp(vpos, localOrigin);\n        vtbnMatrix = getTBNMatrix(vnormal);\n\n        gl_Position = transformPosition(proj, view, vpos);\n        forwardLinearDepth();\n      }\n    "], ["\n      void main(void) {\n        vuv = uv0;\n        vpos = (model * vec4(position, 1.0)).xyz;\n\n        vnormal = getLocalUp(vpos, localOrigin);\n        vtbnMatrix = getTBNMatrix(vnormal);\n\n        gl_Position = transformPosition(proj, view, vpos);\n        forwardLinearDepth();\n      }\n    "])))), a.include(v.WaterDistortion, n), a.include(r.Slice, n), n.receiveShadows && a.include(l.ReadShadowMap, n), a.include(d.Water, n), a.fragment.uniforms.add("waterColor", "vec4").add("lightingMainDirection", "vec3").add("lightingMainIntensity", "vec3").add("camPos", "vec3").add("timeElapsed", "float"), a.fragment.code.add(s.glsl(p || (p = e(["\n      void main() {\n        discardBySlice(vpos);\n        vec3 localUp = vnormal;\n        // the created normal is in tangent space\n        vec3 tangentNormal = getSurfaceNormal(vuv, timeElapsed);\n\n        // we rotate the normal according to the tangent-bitangent-normal-Matrix\n        vec3 n = normalize(vtbnMatrix * tangentNormal);\n        vec3 v = -normalize(vpos - camPos);\n        vec3 l = normalize(-lightingMainDirection);\n        "], ["\n      void main() {\n        discardBySlice(vpos);\n        vec3 localUp = vnormal;\n        // the created normal is in tangent space\n        vec3 tangentNormal = getSurfaceNormal(vuv, timeElapsed);\n\n        // we rotate the normal according to the tangent-bitangent-normal-Matrix\n        vec3 n = normalize(vtbnMatrix * tangentNormal);\n        vec3 v = -normalize(vpos - camPos);\n        vec3 l = normalize(-lightingMainDirection);\n        "])))), n.receiveShadows ? a.fragment.code.add(s.glsl(h || (h = e(["\n        float shadow = 1.0 - readShadowMap(vpos, linearDepth);\n      "], ["\n        float shadow = 1.0 - readShadowMap(vpos, linearDepth);\n      "])))) : a.fragment.code.add(s.glsl(u || (u = e(["\n        float shadow = 1.0;\n      "], ["\n        float shadow = 1.0;\n      "])))), a.fragment.code.add(s.glsl(f || (f = e(["\n        vec4 final = vec4(getSeaColor(n, v, l, waterColor.rgb, lightingMainIntensity, localUp, shadow), waterColor.w);\n\n        // gamma correction\n        gl_FragColor = delinearizeGamma(final);\n        gl_FragColor = highlightSlice(gl_FragColor, vpos);\n      }\n    "], ["\n        vec4 final = vec4(getSeaColor(n, v, l, waterColor.rgb, lightingMainIntensity, localUp, shadow), waterColor.w);\n\n        // gamma correction\n        gl_FragColor = delinearizeGamma(final);\n        gl_FragColor = highlightSlice(gl_FragColor, vpos);\n      }\n    "]))))), 2 === n.output && (a.include(t.NormalUtils, n), a.include(v.WaterDistortion, n), a.include(r.Slice, n), a.varyings.add("vpos", "vec3"), a.varyings.add("vuv", "vec2"), a.vertex.code.add(s.glsl(w || (w = e(["\n        void main(void) {\n          vuv = uv0;\n          vpos = (model * vec4(position, 1.0)).xyz;\n          gl_Position = transformPosition(proj, view, vpos);\n        }\n    "], ["\n        void main(void) {\n          vuv = uv0;\n          vpos = (model * vec4(position, 1.0)).xyz;\n          gl_Position = transformPosition(proj, view, vpos);\n        }\n    "])))), a.fragment.uniforms.add("timeElapsed", "float"), a.fragment.code.add(s.glsl(y || (y = e(["\n        void main() {\n          discardBySlice(vpos);\n          // the created normal is in tangent space\n          vec3 tangentNormal = getSurfaceNormal(vuv, timeElapsed);\n          tangentNormal = normalize(tangentNormal);\n          gl_FragColor = vec4((tangentNormal + vec3(1.0)) * 0.5, 0.0);\n        }\n    "], ["\n        void main() {\n          discardBySlice(vpos);\n          // the created normal is in tangent space\n          vec3 tangentNormal = getSurfaceNormal(vuv, timeElapsed);\n          tangentNormal = normalize(tangentNormal);\n          gl_FragColor = vec4((tangentNormal + vec3(1.0)) * 0.5, 0.0);\n        }\n    "]))))), 5 === n.output && (a.include(t.NormalUtils, n), a.varyings.add("vpos", "vec3"), a.vertex.code.add(s.glsl(S || (S = e(["\n        void main(void) {\n          vpos = (model * vec4(position, 1.0)).xyz;\n          gl_Position = transformPosition(proj, view, vpos);\n        }\n    "], ["\n        void main(void) {\n          vpos = (model * vec4(position, 1.0)).xyz;\n          gl_Position = transformPosition(proj, view, vpos);\n        }\n    "])))), a.fragment.uniforms.add("waterColor", "vec4"), a.fragment.code.add(s.glsl(M || (M = e(["\n        void main() {\n          gl_FragColor = waterColor;\n        }\n    "], ["\n        void main() {\n          gl_FragColor = waterColor;\n        }\n    "]))))), a;
      }

      Object.defineProperty(a, "__esModule", {
        value: !0
      }), a.build = g;
      var m, p, h, u, f, w, y, S, M;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/sources/resolver.js":
  /*!**************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/sources/resolver.js ***!
    \**************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineShadersSourcesResolverJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ./shaderRepository */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/sources/shaderRepository.js"), __webpack_require__(
    /*! ../../../../webgl/ShaderCompiler */
    "./node_modules/arcgis-js-api/views/webgl/ShaderCompiler.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, r, n, o) {
      function t(e) {
        var r = n;
        return e.split("/").forEach(function (e) {
          r && (r = r[e]);
        }), r;
      }

      function u(e) {
        return i.resolveIncludes(e);
      }

      Object.defineProperty(r, "__esModule", {
        value: !0
      });
      var i = new o(t);
      r.resolveIncludes = u;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/sources/shaderRepository.js":
  /*!**********************************************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/3d/webgl-engine/shaders/sources/shaderRepository.js ***!
    \**********************************************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViews3dWebglEngineShadersSourcesShaderRepositoryJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, n) {
      return {
        environment: {
          "realisticAtmosphere.frag": "#include <util/fsPrecision.glsl>\n#include <util/encoding.glsl>\n#include <util/color.glsl>\nuniform vec3 lightingMainDirection;\nuniform vec3 invWavelength;\nuniform vec3 invWavelengthScaled;\nconst float krESun = 0.075;\nconst float kmESun = 0.015;\nuniform vec2 radii;\n#define innerRadius radii[0]\n#define outerRadius radii[1]\nuniform vec4 atmosParams1;\nuniform vec4 atmosParams2;\n#define shellScale atmosParams1.x\n#define shellDepth vec2(atmosParams1.y, atmosParams2.y)\n#define scaleOverScaleDepth vec2(atmosParams1.z, atmosParams2.z)\n#define oneOverScaleDepth vec2(atmosParams1.w, atmosParams2.w)\n#ifndef HAZE\nuniform vec3 atmosParams3;\nuniform float innerFadeDistance;\nuniform float altitudeFade;\n#define g atmosParams2.x\n#define gSq atmosParams3.x\n#define miePhaseCoefficients atmosParams3.y\n#define lowerAlphaBlendBound atmosParams3.z\n#endif\nuniform vec3 cameraPosition;\nuniform vec2 nearFar;\nuniform vec4 sphereComp;\n#define cameraHeight sphereComp[0]\n#define cameraHeightSq sphereComp[1]\n#define C sphereComp[2]\n#define CSur sphereComp[3]\n#ifdef HAZE\nconst float exposure = 1.5;\n#else\nconst float exposure = 2.0;\n#endif\n#ifdef HAZE\nuniform sampler2D depthTex;\n#endif\nvarying vec3 eyeDir;\nvarying vec3 worldRay;\nvarying vec2 vtc;\nconst float samples = 5.0;\nconst int maxSamples = 5;\n#ifdef HAZE\n  const vec3 oneOverGamma = vec3(1.0);\n#else\n  const vec3 oneOverGamma = vec3(0.454545);\n#endif\nvec3 expTM(vec3 inputColor,float _exposure) {\n    return pow(1.0 - exp(inputColor * -_exposure), oneOverGamma);\n}\n#ifndef HAZE\nvec3 reinhardTM(vec3 inputColor, float _exposure) {\n  vec3 intermediate = inputColor * _exposure;\n  intermediate /= ( 1.0 + intermediate );\n  return pow(intermediate, oneOverGamma);\n}\n#endif\nfloat scale(float _cos) {\n  float x = 1.0 - _cos;\n  return exp( -0.00287 + x * ( 0.459 + x * ( 3.83 + x * (-6.80 + x * 5.25 ))));\n}\nvoid main() {\n  vec3 worldSpaceRay = normalize(worldRay);\n  float B = 2.0 * dot(cameraPosition, worldSpaceRay);\n  float det = B * B - 4.0 * C;\n  float detSur = B * B - 4.0 * CSur;\n  float minRayStart = 0.0;\n#ifndef HAZE\n  float surfaceBlend = 0.0;\n  vec4 surfaceColor = vec4(0.0);\n  if (detSur >= 0.0) {\n    float nearSurface = max(0.0, 0.5 *(-B - sqrt(detSur)));\n    float farSurface = max(0.0, 0.5 *(-B + sqrt(detSur)));\n    if (nearSurface == 0.0) {\n      minRayStart = farSurface;\n    }\n    vec3 vPos = cameraPosition + worldSpaceRay * nearSurface;\n    float lightAngle = dot(-lightingMainDirection, normalize(vPos));\n    float brightness = max(0.0, (smoothstep(-1.0, 0.8, 2.0 * lightAngle)));\n    surfaceColor = vec4(brightness, brightness, brightness, 1.0 - altitudeFade);\n    float relDist = (farSurface - nearSurface) / innerFadeDistance;\n    if (relDist > 1.0) {\n      gl_FragColor = surfaceColor;\n      return;\n    }\n    surfaceBlend = smoothstep(0.0, 1.0, relDist * relDist);\n  }\n#endif\n  if (det >= 0.0) {\n#ifdef HAZE\n    float depthSample = texture2D(depthTex, vtc).r;\n    float zNear = nearFar[0];\n    float zFar = nearFar[1];\n    float zNorm = 2.0 * depthSample - 1.0;\n    float linDepth = 2.0 * zNear * zFar /\n      (zFar + zNear - zNorm * (zFar - zNear));\n    float rayEnd;\n    float altitudeAlpha = 1.0;\n    if (depthSample < 1.0 && depthSample > 0.0) {\n      vec3 cameraSpaceRay = normalize(eyeDir);\n      cameraSpaceRay /= cameraSpaceRay.z;\n      cameraSpaceRay *= linDepth;\n      float cameraSpaceRayLength = length(cameraSpaceRay);\n      vec3 world = cameraPosition + worldSpaceRay * cameraSpaceRayLength;\n      float worldRadiusSq = dot(world, world);\n      float transitionStart = innerRadius + 20000.0;\n      float transitionHeight = 25000.0;\n      float transitionEnd = transitionStart + transitionHeight;\n      float edge0 = transitionStart * transitionStart;\n      float edge1 = transitionEnd * transitionEnd;\n      altitudeAlpha = 1.0 - clamp((worldRadiusSq - edge0) / (edge1 - edge0), 0.0, 1.0);\n      rayEnd = cameraSpaceRayLength;\n      if (altitudeAlpha > 0.0 && detSur > 0.0) {\n        float nearSurface = 0.5 * ( -B - sqrt(detSur) );\n        float interp = clamp(((cameraHeight - innerRadius) - 2000000.0) / 6000000.0, 0.0, 1.0);\n        rayEnd = mix(cameraSpaceRayLength, nearSurface, interp);\n      }\n    }\n#endif\n    float rayStart = 0.5 *(-B - sqrt(det));\n#ifdef HAZE\n    float near = abs(rayStart);\n    float far = abs(rayEnd);\n#else\n    float rayEnd = 0.5 *(-B + sqrt(det));\n#endif\n    float scatterDistance;\n    if (rayStart < minRayStart)\n    {\n      rayStart = minRayStart;\n#ifndef HAZE\n      scatterDistance = shellScale * min(0.0, innerRadius - cameraHeight);\n#endif\n    }\n#ifndef HAZE\n    else\n    {\n      scatterDistance = -1.0;\n    }\n#endif\n    vec3 start = cameraPosition + worldSpaceRay * rayStart;\n#ifdef HAZE\n    vec3 end = cameraPosition + worldSpaceRay * rayEnd;\n    float endLength = length(end);\n    float altitudeEnd = endLength - innerRadius;\n    float altitudeStart = length(start) - innerRadius;\n    if (altitudeStart < 0.0) {\n      altitudeStart = -altitudeStart;\n      altitudeEnd = -altitudeEnd;\n    }\n    float lightAngle = dot(-lightingMainDirection, end) / endLength;\n    if (near > far)\n    {\n      if (altitudeStart < altitudeEnd)\n      {\n        end = cameraPosition + worldSpaceRay * rayStart;\n        start = cameraPosition + worldSpaceRay * rayEnd;\n        worldSpaceRay *= -1.0;\n        float tmp = altitudeStart;\n        altitudeStart = altitudeEnd;\n        altitudeEnd = tmp;\n      }\n      else if (altitudeStart == altitudeEnd)\n      {\n        altitudeStart += 1.0;\n      }\n    }\n    if (altitudeStart > outerRadius - innerRadius)\n    {\n      scatterDistance = innerRadius - outerRadius;\n    } else\n    {\n      scatterDistance = altitudeEnd - altitudeStart;\n    }\n#endif\n    vec2 opticalStartDepth = exp(scatterDistance * oneOverScaleDepth);\n    float rayLength = rayEnd - rayStart;\n    float sampleLength = rayLength / samples;\n    float scaledLength = sampleLength * shellScale;\n    vec3 sampleRay = worldSpaceRay * sampleLength;\n    vec3 samplePoint = start + sampleRay * 0.5;\n#ifdef HAZE\n    float cameraAngle = dot(-worldSpaceRay, end) / length(end);\n    float scaleCameraAngle = scale(cameraAngle);\n    vec2 cameraOffset = scaleCameraAngle * opticalStartDepth;\n    float scaledValues = scale(lightAngle) + scaleCameraAngle;\n    vec2 scaledValuesDepth = scaledValues * shellDepth;\n#else\n    float cameraAngle = dot(worldSpaceRay, start / length(start));\n    float angleMultiplier = cameraAngle > 0.0 ? cameraAngle : 0.0;\n    float scaleCameraAngle = scale(cameraAngle);\n    vec2 cameraOffset = scaleCameraAngle * opticalStartDepth * shellDepth;\n#endif\n    vec3 frontColor = vec3(0.0);\n    vec3 frontColorBlue = vec3(0.0);\n    vec3 attenuate = vec3(0.0);\n    vec3 attenuateBlue = vec3(0.0);\n    for(int i=0; i<maxSamples; i++) {\n      float height = length(samplePoint);\n      float altitude = abs(height - innerRadius);\n      vec2 depth = exp(-altitude * scaleOverScaleDepth);\n#ifdef HAZE\n      vec2 scatter = depth * scaledValuesDepth - cameraOffset;\n#else\n      float lightAngle = dot(-lightingMainDirection, samplePoint) / height;\n      float cameraAngle = dot(worldSpaceRay, samplePoint) / height;\n      float tmpScaledValues = scale(lightAngle) - scale(cameraAngle);\n      vec2 scatter = cameraOffset + tmpScaledValues * depth * shellDepth;\n#endif\n      attenuate = exp(-scatter.x * invWavelengthScaled);\n      attenuateBlue = exp(-scatter.y * invWavelengthScaled);\n      frontColor += attenuate * depth.x;\n      frontColorBlue += attenuateBlue * depth.y;\n      samplePoint += sampleRay;\n    }\n    float LdotR = clamp(dot(-lightingMainDirection, -worldSpaceRay ),-0.9999999,1.0);\n    float LdotRSq = LdotR * LdotR + 1.0;\n#ifdef HAZE\n    vec3 colorCoefficients = (scaledLength * 0.75 * LdotRSq) * (krESun * invWavelength + kmESun );\n    vec3 color = colorCoefficients * frontColor;\n    vec3 colorBlue = colorCoefficients * frontColorBlue;\n#else\n    vec3 rayleighCoefficients = (scaledLength * 0.75 * LdotRSq * krESun) * invWavelength;\n    float mieCoefficients = scaledLength * kmESun * miePhaseCoefficients * LdotRSq / pow(1.0 + gSq - 2.0 * g * LdotR, 1.5);\n    vec3 color = rayleighCoefficients * frontColor + mieCoefficients * frontColor;\n    vec3 colorBlue = rayleighCoefficients * frontColorBlue + mieCoefficients * frontColorBlue;\n#endif\n    vec3 ldrBlue = expTM(colorBlue, 2.0 * exposure);\n    vec3 ldrRed = expTM(color, exposure);\n    vec3 LDR = mix(ldrBlue, ldrRed, 0.2);\n#ifdef HAZE\n    LDR *= (1.0 - cameraAngle);\n    vec3 hsv = rgb2hsv(LDR);\n    hsv.y = clamp(hsv.y * 1.5, 0.0, 1.0);\n    LDR = hsv2rgb(hsv);\n    vec3 finalColor = LDR;\n#else\n    vec3 ldrReinhard = reinhardTM(color, exposure);\n    LDR += angleMultiplier * ldrReinhard;\n    float side = (rayEnd + rayStart) * 0.5;\n    float atmoHeight = sqrt(cameraHeightSq - side * side);\n    float h2 = clamp(1.0 - ( atmoHeight - lowerAlphaBlendBound ) / ( outerRadius - lowerAlphaBlendBound ), 0.0, 1.0);\n    vec3 finalColor = LDR * h2;\n    vec3 hsv = rgb2hsv(finalColor);\n    hsv.y = clamp(hsv.y * 1.5, 0.0, 1.0);\n    finalColor = hsv2rgb(hsv);\n#endif\n#ifndef HAZE\n    float atmosStrength = clamp((length(ldrRed) - 0.05) * 1.05, 0.0, 1.0);\n    gl_FragColor = vec4(finalColor, atmosStrength * clamp(1.0 - ( atmoHeight - innerRadius ) / (outerRadius - innerRadius), 0.0, 1.0));\n    if (surfaceBlend > 0.0) {\n      gl_FragColor = mix(gl_FragColor, surfaceColor, surfaceBlend);\n    }\n#else\n    gl_FragColor = vec4(finalColor, 1.0) * altitudeAlpha;\n#endif\n  } else {\n    gl_FragColor = vec4(0.0);\n  }\n}",
          "realisticAtmosphere.vert": "#include <util/vsPrecision.glsl>\nuniform vec2 halfSizeNearPlane;\nuniform vec3 cameraUp;\nuniform vec3 cameraRight;\nuniform vec3 cameraDir;\nuniform vec2 cameraCenterOffset;\nattribute vec3 position;\nattribute vec2 uv0;\nvarying vec3 worldRay;\nvarying vec2 vtc;\n#ifdef HAZE\nvarying vec3 eyeDir;\n#endif\nvoid main(void) {\n  vec3 v3Pos = position;\n  vtc = uv0;\n  vec2 rayvtc = uv0 - cameraCenterOffset;\n#ifdef HAZE\n  eyeDir = vec3((2.0 * halfSizeNearPlane * rayvtc) - halfSizeNearPlane, -1.0);\n#else\n  vec3 eyeDir = vec3((2.0 * halfSizeNearPlane * rayvtc) - halfSizeNearPlane, -1.0);\n#endif\n  worldRay = eyeDir.z * cameraDir + eyeDir.y * cameraUp + eyeDir.x * cameraRight;\n  gl_Position = vec4(v3Pos, 1.0);\n}",
          "simpleAtmosphere.frag": "#include <util/fsPrecision.glsl>\nuniform sampler2D tex;\nvarying vec2 vtc;\nvarying float falloff;\n#ifndef PANORAMIC\nuniform float altitudeFade;\nvarying float innerFactor;\n#endif\nvoid main() {\n  vec4 texColor = texture2D(tex, vtc);\n#ifdef PANORAMIC\n  gl_FragColor = texColor * falloff;\n#else\n  vec4 atmosphereColor = texColor * falloff;\n  vec4 innerColor = vec4(texColor.rgb * falloff, 1.0 - altitudeFade);\n  gl_FragColor = mix(atmosphereColor, innerColor, smoothstep(0.0, 1.0, innerFactor));\n#endif\n}",
          "simpleAtmosphere.vert": "#include <util/vsPrecision.glsl>\n#include <util/transform.glsl>\nuniform mat4 proj;\nuniform mat4 view;\n#ifndef PANORAMIC\nconst float TWICEPI = 2.0*3.14159265;\nconst float ATMOSPHERE_RIM_SEGMENTS = 128.0;\nuniform vec3 silCircleCenter;\nuniform vec3 silCircleV1;\nuniform vec3 silCircleV2;\nuniform vec2 texV;\nuniform float innerScale;\nvarying float innerFactor;\n#endif\nuniform vec3 lightingMainDirection;\nattribute vec3 position;\nvarying vec2 vtc;\nvarying float falloff;\nvoid main(void) {\n  vec3 lightDirection = -lightingMainDirection;\n#ifdef PANORAMIC\n  vec3 pos = position;\n  float ndotl = lightDirection.z;\n  vtc = vec2(0.0, position.z+0.05);\n#else\n  innerFactor = clamp(-position.z, 0.0, 1.0);\n  float scale = position.y * (1.0 + innerFactor * innerScale);\n  float phi = position.x * (TWICEPI / ATMOSPHERE_RIM_SEGMENTS) + 1.0;\n  vec3 pos =  (silCircleCenter + sin(phi) * silCircleV1 + cos(phi) * silCircleV2) * scale;\n  float ndotl = dot(normalize(position.y > 0.0 ? pos: silCircleCenter), lightDirection);\n  vtc.x = position.x / ATMOSPHERE_RIM_SEGMENTS;\n  vtc.y = texV.x * (1.0 - position.z) + texV.y * position.z;\n#endif\n  falloff = max(0.0, smoothstep(-1.0, 0.8, 2.0 * ndotl));\n  gl_Position = transformPosition(proj, view, pos);\n  gl_Position.z = gl_Position.w;\n}",
          "simpleAtmosphereFade.frag": "#include <util/fsPrecision.glsl>\nvarying vec4 color;\nvoid main() {\n  gl_FragColor = color;\n}",
          "simpleAtmosphereFade.vert": "#include <util/vsPrecision.glsl>\nattribute vec2 position;\nuniform vec3 lightingMainDirection;\nuniform vec3 cameraPosition;\nuniform float undergroundFadeAlpha;\nvarying vec4 color;\nvoid main(void) {\n  float ndotl = dot(normalize(cameraPosition), -lightingMainDirection);\n  float lighting = max(0.0, smoothstep(-1.0, 0.8, 2.0 * ndotl));\n  color = vec4(vec3(lighting), undergroundFadeAlpha);\n  gl_Position = vec4(position.xy, 1.0, 1.0);\n}",
          "stars.frag": "#include <util/fsPrecision.glsl>\nvarying vec4 vcolor;\nvarying float vsize;\nvoid main() {\n  float cap = 0.7;\n  float scale = 1.0/cap;\n  float helper = clamp(length(abs(gl_PointCoord-vec2(0.5))),0.0,cap);\n  float alpha = clamp((cap-helper)*scale,0.0,1.0);\n  float intensity = alpha*alpha*alpha;\n  if (vsize < 3.0)\n    intensity *= 0.5;\n  gl_FragColor = vec4(1.0,1.0,1.0,intensity);\n  gl_FragColor.xyz *= vcolor.xyz;\n}",
          "stars.vert": "#include <util/vsPrecision.glsl>\n#include <util/alignPixel.glsl>\nuniform mat4 proj;\nuniform mat4 view;\nuniform mat4 model;\nuniform vec4 viewport;\nuniform float pixelRatio;\nattribute vec3 position;\nattribute vec4 color;\nattribute float size;\nvarying vec4 vcolor;\nvarying float vsize;\nvoid main(void) {\n  vec4 posProj = proj * view * model*vec4(position*1.0e25,1.0);\n  gl_Position = alignToPixelCenter(posProj, viewport.zw);\n  gl_Position.z = gl_Position.w;\n  vcolor = color / 1.2;\n  vsize = size * 5.0 * pixelRatio;\n  gl_PointSize = vsize;\n}"
        },
        materials: {
          hud: {
            "colorPass.frag": "#include <materials/hud/hudHeader.glsl>\nvoid main() {\n#include <materials/hud/hudMain.glsl>\n}",
            "highlightPass.frag": "#include <materials/hud/hudHeader.glsl>\n#include <util/highlight.glsl>\nuniform sampler2D depthTex;\nuniform vec4 highlightViewportPixelSz;\nvoid main() {\n#include <materials/hud/hudMain.glsl>\n#ifdef BINARY_HIGHLIGHT_OCCLUSION\n  if (voccluded == 1.0) {\n    gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);\n  } else {\n    gl_FragColor = vec4(1.0, 0.0, 1.0, 1.0);\n  }\n#else\n  gl_FragColor = highlightData(gl_FragCoord, depthTex, highlightViewportPixelSz);\n#endif\n}",
            "hud.vert": "#include <util/vsPrecision.glsl>\n#include <util/alignPixel.glsl>\n#include <util/hud.glsl>\n#include <util/visualVariables.glsl>\n#include <util/slice.glsl>\nuniform vec2 screenOffset;\nuniform vec2 anchorPos;\nuniform vec2 textureCoordinateScaleFactor;\n#ifdef SCREEN_SIZE_PERSPECTIVE\nuniform vec4 screenSizePerspective;\n#endif\n#ifdef DEBUG_DRAW_BORDER\nvarying vec4 debugBorderCoords;\n#endif\nattribute vec2 uv0;\nattribute vec4 color;\nattribute vec2 size;\nattribute vec4 auxpos2;\nvarying vec4 vcolor;\nvarying vec2 vtc;\nvarying vec2 vsize;\n#ifdef BINARY_HIGHLIGHT_OCCLUSION\nvarying float voccluded;\n#endif\nvoid main(void) {\n  ProjectHUDAux projectAux;\n  vec4 posProj = projectPositionHUD(projectAux);\n  if (rejectBySlice(projectAux.posModel)) {\n    gl_Position = vec4(1e038, 1e038, 1e038, 1.0);\n    return;\n  }\n  vec2 inputSize;\n#ifdef SCREEN_SIZE_PERSPECTIVE\n  inputSize = screenSizePerspectiveScaleVec2(size, projectAux.absCosAngle, projectAux.distanceToCamera, screenSizePerspective);\n  vec2 screenOffsetScaled = screenSizePerspectiveScaleVec2(screenOffset, projectAux.absCosAngle, projectAux.distanceToCamera, screenSizePerspectiveAlignment);\n#else\n  inputSize = size;\n  vec2 screenOffsetScaled = screenOffset;\n#endif\n#ifdef VV_SIZE\n  inputSize *= vvGetScale(auxpos2).xx;\n#endif\n  vec2 combinedSize = inputSize * pixelRatio;\n  vec4 quadOffset = vec4(0.0);\n#if defined(OCCL_TEST) || defined(BINARY_HIGHLIGHT_OCCLUSION)\n  bool visible = testVisibilityHUD(posProj);\n#endif\n#ifdef BINARY_HIGHLIGHT_OCCLUSION\nvoccluded = visible ? 0.0 : 1.0;\n#endif\n#ifdef OCCL_TEST\n  if (visible) {\n#endif\n    vec2 uv01 = floor(uv0);\n    vec2 uv = uv0 - uv01;\n    quadOffset.xy = ((uv01 - anchorPos) * 2.0 * combinedSize + screenOffsetScaled) / viewport.zw * posProj.w;\n#ifdef SIGNED_DISTANCE_FIELD\n    posProj = alignToPixelOrigin(posProj, viewport.zw) + quadOffset;\n#else\n    posProj += quadOffset;\n    if (inputSize.x == size.x) {\n      posProj = alignToPixelOrigin(posProj, viewport.zw);\n    }\n#endif\n    gl_Position = posProj;\n    vtc = uv * textureCoordinateScaleFactor;\n#ifdef DEBUG_DRAW_BORDER\n    debugBorderCoords = vec4(uv01, 1.5 / combinedSize);\n#endif\n    vsize = inputSize;\n#ifdef OCCL_TEST\n  } else {\n    vtc = vec2(.0);\n#ifdef DEBUG_DRAW_BORDER\n    debugBorderCoords = vec4(0.5, 0.5, 1.5 / combinedSize);\n#endif\n  }\n#endif\n  gl_Position = posProj;\n#ifdef VV_COLOR\n  vcolor = vvGetColor(auxpos2, vvColorValues, vvColorColors);\n#else\n  vcolor = color / 255.0;\n#endif\n}",
            "hudHeader.glsl": "#include <util/enableExtensions.glsl>\n#include <util/fsPrecision.glsl>\n#include <util/encoding.glsl>\n#include <util/color.glsl>\nuniform sampler2D tex;\nuniform vec4 overrideColor;\nuniform vec4 outlineColor;\nuniform float outlineSize;\nvarying vec4 vcolor;\nvarying vec2 vtc;\nvarying vec2 vsize;\n#ifdef BINARY_HIGHLIGHT_OCCLUSION\nvarying float voccluded;\n#endif\n#ifdef DEBUG_DRAW_BORDER\nvarying vec4 debugBorderCoords;\n#endif",
            "hudMain.glsl": "#ifdef SIGNED_DISTANCE_FIELD\n  vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\n  vec4 fillPixelColor = overrideColor * vcolor;\n  const float txSize = 128.0;\n  const float texelSize = 1.0 / txSize;\n  vec2 scaleFactor = (vsize - txSize) * texelSize;\n  vec2 samplePos = vtc + (vec2(1.0, -1.0) * texelSize) * scaleFactor;\n  float d = rgba2float(texture2D(tex, samplePos)) - 0.5;\n  float dist = d * vsize.x;\n  fillPixelColor.a *= clamp(0.5 - dist, 0.0, 1.0);\n  if (outlineSize > 0.25) {\n    vec4 outlinePixelColor = outlineColor;\n    float clampedOutlineSize = min(outlineSize, 0.5*vsize.x);\n    outlinePixelColor.a *= clamp(0.5 - (abs(dist) - 0.5*clampedOutlineSize), 0.0, 1.0);\n    float compositeAlpha = outlinePixelColor.a + fillPixelColor.a * (1.0 - outlinePixelColor.a);\n    vec3 compositeColor = vec3(outlinePixelColor) * outlinePixelColor.a +\n      vec3(fillPixelColor) * fillPixelColor.a * (1.0 - outlinePixelColor.a);\n    gl_FragColor = vec4(compositeColor, compositeAlpha);\n  }\n  else {\n    gl_FragColor = premultiplyAlpha(fillPixelColor);\n  }\n#else\n  gl_FragColor = texture2D(tex, vtc, -0.5) * premultiplyAlpha(overrideColor * vcolor);\n#endif\n#ifdef DEBUG_DRAW_BORDER\n   float isBorder = float(any(lessThan(debugBorderCoords.xy, debugBorderCoords.zw)) || any(greaterThan(debugBorderCoords.xy, 1.0 - debugBorderCoords.zw)));\n   gl_FragColor = mix(gl_FragColor, vec4(1.0, 0.0, 1.0, 1.0), isBorder);\n#endif\n  if (gl_FragColor.a < 0.1) {\n    discard;\n  }",
            "occlusionTest.frag": "#include <util/fsPrecision.glsl>\nuniform vec4 color;\nvoid main() {\n  gl_FragColor = color;\n}",
            "occlusionTest.vert": "#include <util/vsPrecision.glsl>\n#include <util/alignPixel.glsl>\n#include <util/hud.glsl>\n#include <util/slice.glsl>\nvoid main(void) {\n  vec4 posProjCenter;\n  if (dot(position, position) > 0.0) {\n    ProjectHUDAux projectAux;\n    vec4 posProj = projectPositionHUD(projectAux);\n    posProjCenter = alignToPixelCenter(posProj, viewport.zw);\n    vec3 vpos = projectAux.posModel;\n    if (rejectBySlice(vpos)) {\n      posProjCenter = vec4(1e038, 1e038, 1e038, 1.0);\n    }\n  }\n  else {\n    posProjCenter = vec4(1e038, 1e038, 1e038, 1.0);\n  }\n  gl_Position = posProjCenter;\n  gl_PointSize = 1.0;\n}"
          },
          lineCallout: {
            "lineCallout.frag": "#include <util/fsPrecision.glsl>\nuniform vec4 color;\nuniform vec4 borderColor;\nvarying vec4 coverageSampling;\nvarying vec2 lineSizes;\nvoid main() {\n  vec2 coverage = min(1.0 - clamp(abs(coverageSampling.xy) - coverageSampling.zw, 0.0, 1.0), lineSizes);\n  float borderAlpha = color.a * borderColor.a * coverage.y;\n  float colorAlpha = color.a * coverage.x;\n  float finalAlpha = mix(borderAlpha, 1.0, colorAlpha);\n#ifdef DEPTH_HUD\n  if (finalAlpha < 0.01) {\n    discard;\n  }\n#else\n  vec3 finalRgb = mix(borderColor.rgb * borderAlpha, color.rgb, colorAlpha);\n  gl_FragColor = vec4(finalRgb, finalAlpha);\n#endif\n}",
            "lineCallout.vert": "#include <util/vsPrecision.glsl>\n#include <util/alignPixel.glsl>\n#include <util/hud.glsl>\n#include <util/slice.glsl>\nattribute vec2 uv0;\nuniform float lineSize;\nuniform vec2 pixelToNDC;\nuniform float borderSize;\nuniform vec2 screenOffset;\nvarying vec4 coverageSampling;\nvarying vec2 lineSizes;\nvoid main(void) {\n  ProjectHUDAux projectAux;\n  vec4 endPoint = projectPositionHUD(projectAux);\n  vec3 vpos = projectAux.posModel;\n  if (rejectBySlice(vpos)) {\n    gl_Position = vec4(1e38, 1e38, 1e38, 1.0);\n    return;\n  }\n#ifdef OCCL_TEST\n  if (!testVisibilityHUD(endPoint)) {\n    gl_Position = vec4(1e38, 1e38, 1e38, 1.0);\n    return;\n  }\n#endif\n#ifdef SCREEN_SIZE_PERSPECTIVE\n  vec4 perspectiveFactor = screenSizePerspectiveScaleFactor(projectAux.absCosAngle, projectAux.distanceToCamera, screenSizePerspectiveAlignment);\n  vec2 screenOffsetScaled = applyScreenSizePerspectiveScaleFactorVec2(screenOffset, perspectiveFactor);\n#else\n  vec2 screenOffsetScaled = screenOffset;\n#endif\n  vec3 posView = (view * (model * vec4(position, 1.0))).xyz;\n  applyHUDViewDependentPolygonOffset(auxpos1.w, projectAux.absCosAngle, posView);\n  vec4 startPoint = proj * vec4(posView, 1.0);\n  vec2 screenOffsetNorm = screenOffsetScaled * 2.0 / viewport.zw;\n  startPoint.xy += screenOffsetNorm * startPoint.w;\n  endPoint.xy += screenOffsetNorm * endPoint.w;\n  vec4 startAligned = alignToPixelOrigin(startPoint, viewport.zw);\n  vec4 endAligned = alignToPixelOrigin(endPoint, viewport.zw);\n#ifdef DEPTH_HUD\n#ifdef DEPTH_HUD_ALIGN_START\n  endAligned = vec4(endAligned.xy / endAligned.w * startAligned.w, startAligned.zw);\n#else\n  startAligned = vec4(startAligned.xy / startAligned.w * endAligned.w, endAligned.zw);\n#endif\n#endif\n  vec4 projectedPosition = mix(startAligned, endAligned, uv0.y);\n  vec2 screenSpaceDirection = normalize(endAligned.xy / endAligned.w - startAligned.xy / startAligned.w);\n  vec2 perpendicularScreenSpaceDirection = vec2(screenSpaceDirection.y, -screenSpaceDirection.x);\n#ifdef SCREEN_SIZE_PERSPECTIVE\n  float lineSizeScaled = applyScreenSizePerspectiveScaleFactorFloat(lineSize, perspectiveFactor);\n  float borderSizeScaled = applyScreenSizePerspectiveScaleFactorFloat(borderSize, perspectiveFactor);\n#else\n  float lineSizeScaled = lineSize;\n  float borderSizeScaled = borderSize;\n#endif\n  float halfPixelSize = lineSizeScaled * 0.5;\n  float halfWholePixelSize = floor(lineSizeScaled) * 0.5;\n  float halfPixelSizeInt = floor(halfWholePixelSize);\n  float subpixelOffset = -fract(lineSizeScaled) * float(halfWholePixelSize > 0.0);\n  float pixelOffset = -halfPixelSizeInt + subpixelOffset;\n  float padding = 1.0 + borderSizeScaled;\n  vec2 ndcOffset = (pixelOffset - padding + uv0.x * (lineSizeScaled + padding + padding)) * pixelToNDC;\n  projectedPosition.xy += perpendicularScreenSpaceDirection * ndcOffset * projectedPosition.w;\n  float edgeDirection = (uv0.x * 2.0 - 1.0);\n  float halfBorderSize = 0.5 * borderSizeScaled;\n  float halfPixelSizeAndBorder = halfPixelSize + halfBorderSize;\n  float outerEdgeCoverageSampler = edgeDirection * (halfPixelSizeAndBorder + halfBorderSize + 1.0);\n  float isOneSided = float(lineSizeScaled < 2.0 && borderSize < 2.0);\n  coverageSampling = vec4(\n    outerEdgeCoverageSampler,\n    outerEdgeCoverageSampler - halfPixelSizeAndBorder * isOneSided,\n    halfPixelSize - 0.5,\n    halfBorderSize - 0.5 + halfPixelSizeAndBorder * (1.0 - isOneSided)\n  );\n  lineSizes = vec2(lineSizeScaled, borderSizeScaled);\n  gl_Position = projectedPosition;\n}"
          },
          measurementArrow: {
            "measurementArrow.frag": "#include <util/fsPrecision.glsl>\nuniform float outlineSize;\nuniform vec4 outlineColor;\nuniform float stripeLength;\nuniform vec4 stripeEvenColor;\nuniform vec4 stripeOddColor;\nvarying vec2 vtc;\nvarying float vlength;\nvarying float vradius;\n#define INV_SQRT2 (1.0 / sqrt(2.0))\nvec4 arrowColor(vec2 tc, float len) {\n  float d = INV_SQRT2 * (tc.x - abs(tc.y));\n  d = min(d, INV_SQRT2 * (len - tc.x - abs(tc.y)));\n  d = min(d, 1.0 - abs(tc.y));\n  if (d < 0.0) {\n    return vec4(0.0);\n  } else if (d < outlineSize) {\n    return outlineColor;\n  } else {\n    return fract(0.5 / stripeLength * tc.x * vradius) >= 0.5 ? stripeOddColor : stripeEvenColor;\n  }\n}\nvoid main(void) {\n  vec2 ntc = vec2(vtc.x / vradius, vtc.y);\n  vec4 color = arrowColor(ntc, vlength / vradius);\n  if (color.a == 0.0) {\n    discard;\n  }\n  gl_FragColor = color;\n}",
            "measurementArrow.vert": "#include <util/vsPrecision.glsl>\nuniform mat4 proj;\nuniform mat4 view;\nuniform mat4 model;\nuniform float width;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv0;\nattribute float auxpos1;\nvarying vec2 vtc;\nvarying float vlength;\nvarying float vradius;\nvoid main(void) {\n  vec3 bitangent = normal;\n  vtc = uv0;\n  vlength = auxpos1;\n  vradius = 0.5 * width;\n  vec4 pos = view * vec4((model * vec4(position + vradius * bitangent * uv0.y, 1.0)).xyz, 1.0);\n  gl_Position = proj * pos;\n}"
          },
          slicePlane: {
            "slicePlane.frag": "#include <util/enableExtensions.glsl>\n#include <util/fsPrecision.glsl>\nuniform vec4 backgroundColor;\nuniform vec4 gridColor;\nuniform float ratio;\nuniform float gridWidth;\nvarying vec2 vUV;\nvoid main() {\n  const float LINE_WIDTH = 1.0;\n  vec2 uvScaled = vUV * gridWidth;\n  vec2 gridUV = (fract(uvScaled + 0.5) - 0.5) / (LINE_WIDTH * fwidth(uvScaled));\n  vec2 grid = (1.0 - step(0.5, gridUV)) * step(-0.5, gridUV);\n  grid.x *= step(0.5, uvScaled.x) * step(uvScaled.x, gridWidth - 0.5);\n  grid.y *= step(0.5, uvScaled.y) * step(uvScaled.y, gridWidth - 0.5);\n  float gridFade = max(grid.x, grid.y);\n  float gridAlpha = gridColor.a * gridFade;\n  gl_FragColor =\n    vec4(backgroundColor.rgb * backgroundColor.a, backgroundColor.a) * (1.0 - gridAlpha) +\n    vec4(gridColor.rgb, 1.0) * gridAlpha;\n}",
            "slicePlane.vert": "#include <util/vsPrecision.glsl>\nuniform mat4 proj;\nuniform mat4 view;\nuniform mat4 model;\nattribute vec3 position;\nattribute vec2 uv0;\nvarying vec2 vUV;\nvoid main(void) {\n  vUV = uv0;\n  gl_Position = proj * view * vec4((model * vec4(position, 1.0)).xyz, 1.0);\n}"
          }
        },
        pointRenderer: {
          "pointRenderer.frag": "#include <util/fsPrecision.glsl>\n#include <util/encoding.glsl>\n#ifdef HIGHLIGHT_PASS\n#include <util/highlight.glsl>\nuniform sampler2D depthTex;\nuniform vec4 highlightViewportPixelSz;\n#endif\n#ifdef DEPTH_PASS\nvarying float depth;\n#elif defined(HIGHLIGHT_PASS)\n#else\nvarying vec3 vColor;\n#endif\nvoid main(void) {\n  vec2 vOffset = gl_PointCoord - vec2(0.5, 0.5);\n  float r2 = dot(vOffset, vOffset);\n  if (r2 > 0.25) {\n    discard;\n  }\n#ifdef DEPTH_PASS\n  gl_FragColor = float2rgba(depth);\n#elif defined(HIGHLIGHT_PASS)\n  gl_FragColor = highlightData(gl_FragCoord, depthTex, highlightViewportPixelSz);\n#else\n  gl_FragColor = vec4(vColor, 1.0);\n#endif\n}",
          "pointRenderer.vert": "#include <util/slice.glsl>\n#include <util/vsPrecision.glsl>\nattribute vec3 aPosition;\nattribute vec3 aColor;\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform vec2 uScreenMinMaxSize;\nuniform vec2 uPointScale;\nuniform vec3 uClipMin;\nuniform vec3 uClipMax;\n#ifdef DEPTH_PASS\nuniform vec2 nearFar;\nvarying float depth;\n#else\nvarying vec3 vColor;\n#endif\nvoid main(void) {\n  if (aPosition.x < uClipMin.x || aPosition.y < uClipMin.y || aPosition.z < uClipMin.z ||\n      aPosition.x > uClipMax.x || aPosition.y > uClipMax.y || aPosition.z > uClipMax.z) {\n    gl_Position = vec4(0.0,0.0,0.0,2.0);\n    gl_PointSize = 0.0;\n    return;\n  }\n  if (rejectBySlice(aPosition)) {\n    gl_Position = vec4(0.0,0.0,0.0,2.0);\n    gl_PointSize = 0.0;\n    return;\n  }\n  vec4 camera = uModelViewMatrix * vec4(aPosition, 1.0);\n  float pointSize = uPointScale.x;\n  vec4 position = uProjectionMatrix * camera;\n#ifdef DRAW_SCREEN_SIZE\n    float clampedScreenSize = pointSize;\n#else\n    float pointRadius = 0.5 * pointSize;\n    vec4 cameraOffset = camera + vec4(0.0, pointRadius, 0.0, 0.0);\n    vec4 positionOffset = uProjectionMatrix * cameraOffset;\n    float radius = abs(positionOffset.y - position.y);\n    float viewHeight = uPointScale.y;\n    float screenPointSize = (radius / position.w) * viewHeight;\n    float clampedScreenSize = clamp(screenPointSize, uScreenMinMaxSize.x, uScreenMinMaxSize.y);\n    camera.xyz -= normalize(camera.xyz) * pointRadius * clampedScreenSize / screenPointSize;\n    position = uProjectionMatrix * camera;\n#endif\n  gl_PointSize = clampedScreenSize;\n  gl_Position = position;\n#ifdef DEPTH_PASS\n  depth = (-camera.z - nearFar[0]) / (nearFar[1] - nearFar[0]);\n#else\n  vColor = aColor;\n#endif\n}"
        },
        renderer: {
          highlight: {
            "apply.frag": "#include <util/fsPrecision.glsl>\nuniform sampler2D tex;\nuniform sampler2D origin;\nuniform vec4 color;\nuniform vec4 haloColor;\nuniform float outlineSize;\nuniform float blurSize;\nuniform vec4 opacities;\nvarying vec2 uv;\nvoid main() {\n  #if defined(GRID_OPTIMIZATION) && defined(GRID_DEBUG)\n    gl_FragColor = vec4(uv, 0.0, 1.0);\n  #else\n    vec4 blurredHighlightValue = texture2D(tex, uv);\n    float highlightIntensity = blurredHighlightValue.a;\n    if (highlightIntensity == 0.0) {\n      discard;\n    }\n    vec4 origin_color = texture2D(origin, uv);\n    float outlineIntensity;\n    float fillIntensity;\n    if (blurredHighlightValue.g > blurredHighlightValue.b) {\n      outlineIntensity = haloColor.w * opacities[1];\n      fillIntensity = color.w * opacities[3];\n    }\n    else {\n      outlineIntensity = haloColor.w * opacities[0];\n      fillIntensity = color.w * opacities[2];\n    }\n    float inner = 1.0 - outlineSize / 9.0;\n    float outer = 1.0 - (outlineSize + blurSize) / 9.0;\n    float outlineFactor = smoothstep(outer, inner, highlightIntensity);\n    float fillFactor = any(notEqual(origin_color, vec4(0.0, 0.0, 0.0, 0.0))) ? 1.0 : 0.0;\n    float intensity = outlineIntensity * outlineFactor * (1.0 - fillFactor) + fillIntensity * fillFactor;\n    gl_FragColor = vec4(mix(haloColor.rgb, color.rgb, fillFactor), intensity);\n  #endif\n}",
            "apply.vert": "#include <util/vsPrecision.glsl>\nattribute vec2 position;\nvarying vec2 uv;\n#ifdef GRID_OPTIMIZATION\n  attribute vec2 uv0;\n  uniform sampler2D coverageTex;\n#endif\nvoid main() {\n  #ifdef GRID_OPTIMIZATION\n    #ifdef GRID_DEBUG\n      vec4 cov = texture2D(coverageTex, uv0);\n      if (cov.r == 0.0 || cov.g == 1.0 || cov.b == 1.0) {\n        gl_Position = vec4(0.0);\n        return;\n      }\n      gl_Position = vec4(position, .0, 1.0);\n      uv = uv0;\n      return;\n    #else\n      vec4 cov = texture2D(coverageTex, uv0);\n      if (cov.r == 0.0) {\n        gl_Position = vec4(0.0);\n        return;\n      }\n    #endif\n  #endif\n  gl_Position = vec4(position, .0, 1.0);\n  uv = position.xy * .5 + vec2(.5);\n}",
            "blur.frag": "#include <util/fsPrecision.glsl>\nuniform sampler2D tex;\n#ifdef GRID_OPTIMIZATION\n  uniform vec2 blurSize;\n  varying vec3 blurCoordinate;\n#else\n  varying vec2 blurCoordinates[GAUSSIAN_SAMPLES];\n#endif\nvoid main() {\n  #ifdef GRID_OPTIMIZATION\n    vec2 uv = blurCoordinate.xy;\n    vec4 center = texture2D(tex, uv);\n    if (blurCoordinate.z == 1.0) {\n      gl_FragColor = center;\n    }\n    else {\n      vec4 sum = vec4(0.0);\n      #if GAUSSIAN_SAMPLES == 3\n        sum += center * 0.204164;\n        sum += texture2D(tex, uv + blurSize * 1.407333) * 0.304005;\n        sum += texture2D(tex, uv - blurSize * 1.407333) * 0.304005;\n      #elif GAUSSIAN_SAMPLES == 5\n        sum += center * 0.204164;\n        sum += texture2D(tex, uv + blurSize * 1.407333) * 0.304005;\n        sum += texture2D(tex, uv - blurSize * 1.407333) * 0.304005;\n        sum += texture2D(tex, uv + blurSize * 3.294215) * 0.093913;\n        sum += texture2D(tex, uv - blurSize * 3.294215) * 0.093913;\n      #elif GAUSSIAN_SAMPLES == 7\n        sum += center * 0.204164;\n        sum += texture2D(tex, uv + blurSize * 1.407333) * 0.304005;\n        sum += texture2D(tex, uv - blurSize * 1.407333) * 0.304005;\n        sum += texture2D(tex, uv + blurSize * 3.294215) * 0.093913;\n        sum += texture2D(tex, uv - blurSize * 3.294215) * 0.093913;\n        sum += texture2D(tex, uv + blurSize * 5.1) * 0.03;\n        sum += texture2D(tex, uv - blurSize * 5.1) * 0.03;\n      #elif GAUSSIAN_SAMPLES == 9\n        sum += center * 0.154164;\n        sum += texture2D(tex, uv + blurSize * 1.5) * 0.204005;\n        sum += texture2D(tex, uv - blurSize * 1.5) * 0.204005;\n        sum += texture2D(tex, uv + blurSize * 3.5) * 0.123913;\n        sum += texture2D(tex, uv - blurSize * 3.5) * 0.123913;\n        sum += texture2D(tex, uv + blurSize * 5.5) * 0.123913;\n        sum += texture2D(tex, uv - blurSize * 5.5) * 0.123913;\n        sum += texture2D(tex, uv + blurSize * 7.5) * 0.05;\n        sum += texture2D(tex, uv - blurSize * 7.5) * 0.05;\n      #endif\n      gl_FragColor = sum;\n    }\n  #else\n    vec4 sum = vec4(0.0);\n    #if GAUSSIAN_SAMPLES == 3\n      sum += texture2D(tex, blurCoordinates[0]) * 0.204164;\n      sum += texture2D(tex, blurCoordinates[1]) * 0.304005;\n      sum += texture2D(tex, blurCoordinates[2]) * 0.304005;\n    #elif GAUSSIAN_SAMPLES == 5\n      sum += texture2D(tex, blurCoordinates[0]) * 0.204164;\n      sum += texture2D(tex, blurCoordinates[1]) * 0.304005;\n      sum += texture2D(tex, blurCoordinates[2]) * 0.304005;\n      sum += texture2D(tex, blurCoordinates[3]) * 0.093913;\n      sum += texture2D(tex, blurCoordinates[4]) * 0.093913;\n    #elif GAUSSIAN_SAMPLES == 7\n      sum += texture2D(tex, blurCoordinates[0]) * 0.204164;\n      sum += texture2D(tex, blurCoordinates[1]) * 0.304005;\n      sum += texture2D(tex, blurCoordinates[2]) * 0.304005;\n      sum += texture2D(tex, blurCoordinates[3]) * 0.093913;\n      sum += texture2D(tex, blurCoordinates[4]) * 0.093913;\n      sum += texture2D(tex, blurCoordinates[5]) * 0.03;\n      sum += texture2D(tex, blurCoordinates[6]) * 0.03;\n    #elif GAUSSIAN_SAMPLES == 9\n      sum += texture2D(tex, blurCoordinates[0]) * 0.154164;\n      sum += texture2D(tex, blurCoordinates[1]) * 0.204005;\n      sum += texture2D(tex, blurCoordinates[2]) * 0.204005;\n      sum += texture2D(tex, blurCoordinates[3]) * 0.123913;\n      sum += texture2D(tex, blurCoordinates[4]) * 0.123913;\n      sum += texture2D(tex, blurCoordinates[5]) * 0.09;\n      sum += texture2D(tex, blurCoordinates[6]) * 0.09;\n      sum += texture2D(tex, blurCoordinates[7]) * 0.05;\n      sum += texture2D(tex, blurCoordinates[8]) * 0.05;\n    #endif\n    gl_FragColor = sum;\n  #endif\n}",
            "blur.vert": "#include <util/vsPrecision.glsl>\nattribute vec2 position;\nattribute vec2 uv0;\n#ifdef GRID_OPTIMIZATION\n  uniform sampler2D coverageTex;\n  varying vec3 blurCoordinate;\n#else\n  uniform vec2 blurSize;\n  varying vec2 blurCoordinates[GAUSSIAN_SAMPLES];\n#endif\nvoid main() {\n  gl_Position = vec4(position, 0.0, 1.0);\n  #ifdef GRID_OPTIMIZATION\n    vec4 cov = texture2D(coverageTex, uv0);\n    if (cov.r == 0.0) {\n      gl_Position = vec4(0.0);\n    }\n    blurCoordinate = vec3(gl_Position.xy * .5 + vec2(.5), max(cov.g, cov.b));\n  #else\n    vec2 uv = position.xy * .5 + vec2(.5);\n    #if GAUSSIAN_SAMPLES == 3\n      blurCoordinates[0] = uv;\n      blurCoordinates[1] = uv + blurSize * 1.407333;\n      blurCoordinates[2] = uv - blurSize * 1.407333;\n    #elif GAUSSIAN_SAMPLES == 5\n      blurCoordinates[0] = uv;\n      blurCoordinates[1] = uv + blurSize * 1.407333;\n      blurCoordinates[2] = uv - blurSize * 1.407333;\n      blurCoordinates[3] = uv + blurSize * 3.294215;\n      blurCoordinates[4] = uv - blurSize * 3.294215;\n    #elif GAUSSIAN_SAMPLES == 7\n      blurCoordinates[0] = uv;\n      blurCoordinates[1] = uv + blurSize * 1.407333;\n      blurCoordinates[2] = uv - blurSize * 1.407333;\n      blurCoordinates[3] = uv + blurSize * 3.294215;\n      blurCoordinates[4] = uv - blurSize * 3.294215;\n      blurCoordinates[5] = uv + blurSize * 5.1;\n      blurCoordinates[6] = uv - blurSize * 5.1;\n    #elif GAUSSIAN_SAMPLES == 9\n      blurCoordinates[0] = uv;\n      blurCoordinates[1] = uv + blurSize * 1.407333;\n      blurCoordinates[2] = uv - blurSize * 1.407333;\n      blurCoordinates[3] = uv + blurSize * 3.294215;\n      blurCoordinates[4] = uv - blurSize * 3.294215;\n      blurCoordinates[5] = uv + blurSize * 5.1;\n      blurCoordinates[6] = uv - blurSize * 5.1;\n      blurCoordinates[7] = uv + blurSize * 7.1;\n      blurCoordinates[8] = uv - blurSize * 7.1;\n    #endif\n  #endif\n}",
            "downsample.frag": "#include <util/fsPrecision.glsl>\nuniform sampler2D tex;\nuniform vec2 invFramebufferDim;\nvoid main() {\n  vec2 coord = gl_FragCoord.xy * invFramebufferDim;\n  vec4 value = texture2D(tex, coord);\n  float mx = floor(max(value.g, value.b));\n  gl_FragColor = vec4(ceil(value.r), mx, mx, 1.0);\n}",
            "downsample.vert": "#include <util/vsPrecision.glsl>\nattribute vec2 position;\nvoid main() {\n  gl_Position = vec4(vec2(1.0) - position * 2.0, .0, 1.0);\n}"
          },
          laserLine: {
            "laserLine.frag": "#include <util/enableExtensions.glsl>\n#include <util/fsPrecision.glsl>\n#include <util/depth.glsl>\nuniform sampler2D depthMap;\nuniform vec2 nearFar;\nuniform vec4 projInfo;\nuniform vec2 zScale;\nuniform float maxPixelDistance;\nuniform vec4 focusPlane;\nuniform vec4 focusSphere;\nuniform vec4 segmentPlane;\nuniform vec3 segmentStart;\nuniform vec3 segmentEnd;\nuniform vec3 glowColor;\nuniform float glowWidth;\nuniform vec3 innerColor;\nuniform float innerWidth;\nuniform float globalAlpha;\nvarying vec2 uv;\n#define INFINITY 100000.0\nvec3 reconstructPosition(vec2 fragCoord, float depth) {\n  return vec3((fragCoord * projInfo.xy + projInfo.zw) * (zScale.x * depth + zScale.y), depth);\n}\nfloat planeDistancePixels(vec4 plane, vec3 pos) {\n  float dist = dot(plane.xyz, pos) + plane.w;\n  float width = fwidth(dist);\n  dist /= min(width, maxPixelDistance);\n  return abs(dist);\n}\nfloat sphereDistancePixels(vec4 sphere, vec3 pos) {\n  float dist = distance(sphere.xyz, pos) - sphere.w;\n  float width = fwidth(dist);\n  dist /= min(width, maxPixelDistance);\n  return abs(dist);\n}\nvec4 blendPremultiplied(vec4 source, vec4 dest) {\n  float oneMinusSourceAlpha = 1.0 - source.a;\n  return vec4(\n    source.rgb + dest.rgb * oneMinusSourceAlpha,\n    source.a + dest.a * oneMinusSourceAlpha\n  );\n}\nvec4 premultipliedColor(vec3 rgb, float alpha) {\n  return vec4(rgb * alpha, alpha);\n}\nvec4 laserLineProfile(float dist) {\n  if (dist > glowWidth) {\n    return vec4(0.0);\n  }\n  float innerAlpha = (1.0 - smoothstep(0.0, innerWidth, dist));\n  float glowAlpha = pow(max(0.0, 1.0 - dist / glowWidth), 8.0);\n  return blendPremultiplied(\n    premultipliedColor(innerColor, innerAlpha),\n    premultipliedColor(glowColor, glowAlpha)\n  );\n}\nvoid main() {\n  float depth = linearDepth(depthMap, uv, nearFar);\n  if (-depth == nearFar[0]) {\n    discard;\n  }\n  vec3 pos = reconstructPosition(gl_FragCoord.xy, depth);\n  float ddepth = fwidth(depth);\n  float depthDiscontinuityAlpha = 1.0 - smoothstep(0.0, 0.01, -ddepth / depth);\n  vec3 normal = normalize(cross(dFdx(pos), dFdy(pos)));\n  float focusPlaneDistance = planeDistancePixels(focusPlane, pos);\n  float focusSphereDistance = sphereDistancePixels(focusSphere, pos);\n  float segmentDistance = INFINITY;\n  float segmentLength = length(segmentEnd - segmentStart);\n  vec3 segmentDir = (segmentEnd - segmentStart) / segmentLength;\n  float t = dot(segmentDir, pos - segmentStart);\n  if (segmentLength > 0.0 && t >= 0.0 && t <= segmentLength) {\n    segmentDistance = planeDistancePixels(segmentPlane, pos);\n  }\n  vec4 focusPlaneColor = laserLineProfile(focusPlaneDistance);\n  vec4 focusSphereColor = laserLineProfile(focusSphereDistance);\n  vec4 segmentColor = laserLineProfile(segmentDistance);\n  float focusPlaneAlpha = 1.0 - smoothstep(0.995, 0.999, abs(dot(normal, focusPlane.xyz)));\n  float focusSphereAlpha = 1.0 - smoothstep(0.995, 0.999, abs(dot(normal, normalize(pos - focusSphere.xyz))));\n  float segmentAlpha = 1.0 - smoothstep(0.995, 0.999, abs(dot(normal, segmentPlane.xyz)));\n  vec4 color = max(\n    focusPlaneColor * focusPlaneAlpha,\n    max(\n      focusSphereColor * focusSphereAlpha,\n      segmentColor * segmentAlpha\n    )\n  );\n  gl_FragColor = color * globalAlpha * depthDiscontinuityAlpha;\n}"
          },
          offscreen: {
            "composite.frag": "#include <util/fsPrecision.glsl>\nuniform sampler2D tex;\nvarying vec2 vtc;\nvoid main() {\n  gl_FragColor = texture2D(tex, vtc);\n}",
            "compositeOccluded.frag": "#include <util/fsPrecision.glsl>\nuniform sampler2D occludedColorMap;\nuniform float opacity;\nvarying vec2 vtc;\nvoid main() {\n  vec4 occludedColor = texture2D(occludedColorMap, vtc);\n  gl_FragColor = occludedColor * opacity;\n}",
            "compositeTransparentToHUDVisibility.frag": "#include <util/fsPrecision.glsl>\nuniform sampler2D tex;\nvarying vec2 vtc;\nvoid main() {\n  gl_FragColor = vec4(1.0 - texture2D(tex, vtc).a);\n}",
            "offscreen.vert": "#include <util/vsPrecision.glsl>\nattribute vec2 position;\nvarying vec2 vtc;\nvoid main(void) {\n  gl_Position = vec4(position.xy, 0.0, 1.0);\n  vtc = position.xy * 0.5 + 0.5;\n}"
          }
        },
        util: {
          "alignPixel.glsl": "vec4 alignToPixelCenter(vec4 clipCoord, vec2 widthHeight) {\n  vec2 xy = vec2(.500123) + .5 * clipCoord.xy / clipCoord.w;\n  vec2 pixelSz = vec2(1.0) / widthHeight;\n  vec2 ij = (floor(xy * widthHeight) + vec2(0.5)) * pixelSz;\n  vec2 result = (ij * 2.0 - vec2(1.0)) * clipCoord.w;\n  return vec4(result, clipCoord.zw);\n}\nvec4 alignToPixelOrigin(vec4 clipCoord, vec2 widthHeight) {\n  vec2 xy = vec2(.5) + .5 * clipCoord.xy / clipCoord.w;\n  vec2 pixelSz = vec2(1.0) / widthHeight;\n  vec2 ij = floor((xy + .5 * pixelSz) * widthHeight) * pixelSz;\n  vec2 result = (ij * 2.0 - vec2(1.0)) * clipCoord.w;\n  return vec4(result, clipCoord.zw);\n}",
          "color.glsl": "vec4 premultiplyAlpha(vec4 v) {\n  return vec4(v.rgb * v.a, v.a);\n}\nvec3 rgb2hsv(vec3 c) {\n  vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n  vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);\n  vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);\n  float d = q.x - min(q.w, q.y);\n  float e = 1.0e-10;\n  return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), min(d / (q.x + e), 1.0), q.x);\n}\nvec3 hsv2rgb(vec3 c) {\n  vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n  vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n  return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\nfloat rgb2v(vec3 c) {\n  return max(c.x, max(c.y, c.z));\n}",
          "depth.glsl": "#include <util/encoding.glsl>\nfloat linearDepth(sampler2D depthTex, vec2 uv, vec2 nearFar) {\n  return -(rgba2float(texture2D(depthTex, uv)) * (nearFar[1] - nearFar[0]) + nearFar[0]);\n}\nfloat calcFragDepth(const in float depth) {\n  const float SLOPE_SCALE = 2.0;\n  const float BIAS = 2.0 * .000015259;\n  float m = max(abs(dFdx(depth)), abs(dFdy(depth)));\n  float result = depth + SLOPE_SCALE * m + BIAS;\n  return clamp(result, .0, .999999);\n}",
          "doublePrecision.glsl": "#ifdef DOUBLE_PRECISION_REQUIRES_OBFUSCATION\nvec3 dpPlusFrc(vec3 a, vec3 b) {\n  return mix(a, a + b, vec3(notEqual(b, vec3(0))));\n}\nvec3 dpMinusFrc(vec3 a, vec3 b) {\n  return mix(vec3(0), a - b, vec3(notEqual(a, b)));\n}\nvec3 dpAdd(vec3 hiA, vec3 loA, vec3 hiB, vec3 loB) {\n  vec3 t1 = dpPlusFrc(hiA, hiB);\n  vec3 e = dpMinusFrc(t1, hiA);\n  vec3 t2 = dpMinusFrc(hiB, e) + dpMinusFrc(hiA, dpMinusFrc(t1, e)) + loA + loB;\n  return t1 + t2;\n}\n#else\nvec3 dpAdd(vec3 hiA, vec3 loA, vec3 hiB, vec3 loB) {\n  vec3 t1 = hiA + hiB;\n  vec3 e = t1 - hiA;\n  vec3 t2 = ((hiB - e) + (hiA - (t1 - e))) + loA + loB;\n  return t1 + t2;\n}\n#endif",
          "enableExtensions.glsl": "#define EXTENSIONS_ENABLED\n#extension GL_OES_standard_derivatives : enable\n#extension GL_EXT_shader_texture_lod : enable",
          "encoding.glsl": "const float MAX_RGBA_FLOAT =\n  255.0 / 256.0 +\n  255.0 / 256.0 / 256.0 +\n  255.0 / 256.0 / 256.0 / 256.0 +\n  255.0 / 256.0 / 256.0 / 256.0 / 256.0;\nconst vec4 fixedPointFactors = vec4(1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0);\nvec4 float2rgba(const float value) {\n  float valueInValidDomain = clamp(value, 0.0, MAX_RGBA_FLOAT);\n  vec4 fixedPointU8 = floor(fract(valueInValidDomain * fixedPointFactors) * 256.0);\n  const float toU8AsFloat = 1.0 / 255.0;\n  return fixedPointU8 * toU8AsFloat;\n}\nconst vec4 rgba2float_factors = vec4(\n  255.0 / (256.0),\n  255.0 / (256.0 * 256.0),\n  255.0 / (256.0 * 256.0 * 256.0),\n  255.0 / (256.0 * 256.0 * 256.0 * 256.0)\n);\nfloat rgba2float(vec4 rgba) {\n  return dot(rgba, rgba2float_factors);\n}",
          "fsPrecision.glsl": "#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\nprecision highp sampler2D;\n#else\nprecision mediump float;\nprecision mediump sampler2D;\n#endif",
          "highlight.glsl": "vec4 highlightData(vec4 fragCoord, sampler2D depthTex, vec4 viewportPixelSize) {\n  float sceneDepth = texture2D(depthTex, (fragCoord.xy - viewportPixelSize.xy) * viewportPixelSize.zw).r;\n  if (fragCoord.z > sceneDepth + 5e-7) {\n    return vec4(1.0, 1.0, 0.0, 1.0);\n  }\n  else {\n    return vec4(1.0, 0.0, 1.0, 1.0);\n  }\n}",
          "hud.glsl": "#include <util/screenSizePerspective.glsl>\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec4 auxpos1;\nuniform mat4 proj;\nuniform mat4 view;\nuniform mat4 viewNormal;\nuniform mat4 model;\nuniform mat4 modelNormal;\nuniform vec4 viewport;\nuniform vec3 camPos;\nuniform float polygonOffset;\nuniform float cameraGroundRelative;\nuniform float pixelRatio;\nuniform float perDistancePixelRatio;\n#ifdef VERTICAL_OFFSET\nuniform vec4 verticalOffset;\n#endif\n#ifdef SCREEN_SIZE_PERSPECTIVE\nuniform vec4 screenSizePerspectiveAlignment;\n#endif\nuniform sampler2D hudVisibilityTexture;\nconst float SMALL_OFFSET_ANGLE = 0.984807753012208;\nstruct ProjectHUDAux {\n  vec3 posModel;\n  vec3 posView;\n  vec3 vnormal;\n  float distanceToCamera;\n  float absCosAngle;\n};\nfloat applyHUDViewDependentPolygonOffset(float pointGroundDistance, float absCosAngle, inout vec3 posView) {\n  float pointGroundSign = sign(pointGroundDistance);\n  if (pointGroundSign == 0.0) {\n    pointGroundSign = cameraGroundRelative;\n  }\n  float groundRelative = cameraGroundRelative * pointGroundSign;\n  if (polygonOffset > .0) {\n    float cosAlpha = clamp(absCosAngle, 0.01, 1.0);\n    float tanAlpha = sqrt(1.0 - cosAlpha * cosAlpha) / cosAlpha;\n    float factor = (1.0 - tanAlpha / viewport[2]);\n    if (groundRelative > 0.0) {\n      posView *= factor;\n    }\n    else {\n      posView /= factor;\n    }\n  }\n  return groundRelative;\n}\nvoid applyHUDVerticalGroundOffset(vec3 normalModel, inout vec3 posModel, inout vec3 posView) {\n  float distanceToCamera = length(posView);\n  float pixelOffset = distanceToCamera * perDistancePixelRatio * 0.5;\n  vec3 modelOffset = normalModel * cameraGroundRelative * pixelOffset;\n  vec3 viewOffset = (viewNormal * vec4(modelOffset, 1.0)).xyz;\n  posModel += modelOffset;\n  posView += viewOffset;\n}\nvec4 projectPositionHUD(out ProjectHUDAux aux) {\n  vec3 centerOffset = auxpos1.xyz;\n  float pointGroundDistance = auxpos1.w;\n  aux.posModel = (model * vec4(position, 1.0)).xyz;\n  aux.posView = (view * vec4(aux.posModel, 1.0)).xyz;\n  aux.vnormal = (modelNormal * vec4(normal, 1.0)).xyz;\n  applyHUDVerticalGroundOffset(aux.vnormal, aux.posModel, aux.posView);\n  aux.distanceToCamera = length(aux.posView);\n  vec3 viewDirObjSpace = normalize(camPos - aux.posModel);\n  float cosAngle = dot(aux.vnormal, viewDirObjSpace);\n  aux.absCosAngle = abs(cosAngle);\n#ifdef SCREEN_SIZE_PERSPECTIVE\n#if defined(VERTICAL_OFFSET) || defined(CENTER_OFFSET_UNITS_SCREEN)\n  vec4 perspectiveFactor = screenSizePerspectiveScaleFactor(aux.absCosAngle, aux.distanceToCamera, screenSizePerspectiveAlignment);\n#endif\n#endif\n#ifdef VERTICAL_OFFSET\n#ifdef SCREEN_SIZE_PERSPECTIVE\n  float verticalOffsetScreenHeight = applyScreenSizePerspectiveScaleFactorFloat(verticalOffset.x, perspectiveFactor);\n#else\n  float verticalOffsetScreenHeight = verticalOffset.x;\n#endif\n  float worldOffset = clamp(verticalOffsetScreenHeight * verticalOffset.y * aux.distanceToCamera, verticalOffset.z, verticalOffset.w);\n  vec3 modelOffset = aux.vnormal * worldOffset;\n  aux.posModel += modelOffset;\n  vec3 viewOffset = (viewNormal * vec4(modelOffset, 1.0)).xyz;\n  aux.posView += viewOffset;\n  pointGroundDistance += worldOffset;\n#endif\n  float groundRelative = applyHUDViewDependentPolygonOffset(pointGroundDistance, aux.absCosAngle, aux.posView);\n#ifndef CENTER_OFFSET_UNITS_SCREEN\n  aux.posView += vec3(centerOffset.x, centerOffset.y, 0.0);\n  if (centerOffset.z != 0.0) {\n    aux.posView -= normalize(aux.posView) * centerOffset.z;\n  }\n#endif\n  vec4 posProj = proj * vec4(aux.posView, 1.0);\n#ifdef CENTER_OFFSET_UNITS_SCREEN\n#ifdef SCREEN_SIZE_PERSPECTIVE\n  float centerOffsetY = applyScreenSizePerspectiveScaleFactorFloat(centerOffset.y, perspectiveFactor);\n#else\n  float centerOffsetY = centerOffset.y;\n#endif\n  posProj.xy += vec2(centerOffset.x, centerOffsetY) * pixelRatio * 2.0 / viewport.zw * posProj.w;\n#endif\n  posProj.z -= groundRelative * polygonOffset * posProj.w;\n  return posProj;\n}\nuniform float uRenderTransparentlyOccludedHUD;\nbool testVisibilityHUD(vec4 posProj) {\n  vec4 posProjCenter = alignToPixelCenter(posProj, viewport.zw);\n  vec4 occlusionPixel = texture2D(hudVisibilityTexture, .5 + .5 * posProjCenter.xy / posProjCenter.w);\n  if (uRenderTransparentlyOccludedHUD > 0.5) {\n    return occlusionPixel.r * occlusionPixel.g > 0.0 && occlusionPixel.g * uRenderTransparentlyOccludedHUD < 1.0;\n  }\n  return occlusionPixel.r * occlusionPixel.g > 0.0 && occlusionPixel.g == 1.0;\n}",
          "quad.vert": "#include <util/vsPrecision.glsl>\nattribute vec2 position;\nvarying vec2 uv;\nvoid main(void) {\n  gl_Position = vec4(position.x, position.y, .0, 1.0);\n  uv = position * .5 + vec2(.5);\n}",
          "screenSizePerspective.glsl": "float screenSizePerspectiveMinSize(float size, vec4 factor) {\n  float nonZeroSize = 1.0 - step(size, 0.0);\n  return (\n    factor.z * (\n      1.0 +\n      nonZeroSize *\n      2.0 * factor.w / (\n        size + (1.0 - nonZeroSize)\n      )\n    )\n  );\n}\nfloat screenSizePerspectiveViewAngleDependentFactor(float absCosAngle) {\n  return absCosAngle * absCosAngle * absCosAngle;\n}\nvec4 screenSizePerspectiveScaleFactor(float absCosAngle, float distanceToCamera, vec4 params) {\n  return vec4(min(params.x / (distanceToCamera - params.y), 1.0), screenSizePerspectiveViewAngleDependentFactor(absCosAngle), params.z, params.w);\n}\nfloat applyScreenSizePerspectiveScaleFactorFloat(float size, vec4 factor) {\n  return max(mix(size * factor.x, size, factor.y), screenSizePerspectiveMinSize(size, factor));\n}\nfloat screenSizePerspectiveScaleFloat(float size, float absCosAngle, float distanceToCamera, vec4 params) {\n  return applyScreenSizePerspectiveScaleFactorFloat(size, screenSizePerspectiveScaleFactor(absCosAngle, distanceToCamera, params));\n}\nvec2 applyScreenSizePerspectiveScaleFactorVec2(vec2 size, vec4 factor) {\n  return mix(size * clamp(factor.x, screenSizePerspectiveMinSize(size.y, factor) / size.y, 1.0), size, factor.y);\n}\nvec2 screenSizePerspectiveScaleVec2(vec2 size, float absCosAngle, float distanceToCamera, vec4 params) {\n  return applyScreenSizePerspectiveScaleFactorVec2(size, screenSizePerspectiveScaleFactor(absCosAngle, distanceToCamera, params));\n}",
          "slice.glsl": "#ifdef SLICE\nuniform vec3 slicePlaneOrigin;\nuniform vec3 slicePlaneBasis1;\nuniform vec3 slicePlaneBasis2;\nstruct SliceFactors {\n  float front;\n  float side0;\n  float side1;\n  float side2;\n  float side3;\n};\nSliceFactors calculateSliceFactors(vec3 pos) {\n  vec3 rel = pos - slicePlaneOrigin;\n  vec3 slicePlaneNormal = -cross(slicePlaneBasis1, slicePlaneBasis2);\n  float slicePlaneW = -dot(slicePlaneNormal, slicePlaneOrigin);\n  float basis1Len2 = dot(slicePlaneBasis1, slicePlaneBasis1);\n  float basis2Len2 = dot(slicePlaneBasis2, slicePlaneBasis2);\n  float basis1Dot = dot(slicePlaneBasis1, rel);\n  float basis2Dot = dot(slicePlaneBasis2, rel);\n  return SliceFactors(\n    dot(slicePlaneNormal, pos) + slicePlaneW,\n    -basis1Dot - basis1Len2,\n    basis1Dot - basis1Len2,\n    -basis2Dot - basis2Len2,\n    basis2Dot - basis2Len2\n  );\n}\nbool sliceByFactors(SliceFactors factors) {\n  return factors.front < 0.0\n    && factors.side0 < 0.0\n    && factors.side1 < 0.0\n    && factors.side2 < 0.0\n    && factors.side3 < 0.0;\n}\nbool sliceByPlane(vec3 pos) {\n  return sliceByFactors(calculateSliceFactors(pos));\n}\n#ifdef EXTENSIONS_ENABLED\nvec4 applySliceHighlight(vec4 color, vec3 pos) {\n  SliceFactors factors = calculateSliceFactors(pos);\n  if (sliceByFactors(factors)) {\n    return color;\n  }\n  const float HIGHLIGHT_WIDTH = 1.0;\n  const vec4 HIGHLIGHT_COLOR = vec4(0.0, 0.0, 0.0, 0.3);\n  factors.front /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.front);\n  factors.side0 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side0);\n  factors.side1 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side1);\n  factors.side2 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side2);\n  factors.side3 /= (2.0 * HIGHLIGHT_WIDTH) * fwidth(factors.side3);\n  float highlightFactor = (1.0 - step(0.5, factors.front))\n    * (1.0 - step(0.5, factors.side0))\n    * (1.0 - step(0.5, factors.side1))\n    * (1.0 - step(0.5, factors.side2))\n    * (1.0 - step(0.5, factors.side3));\n  return mix(color, vec4(HIGHLIGHT_COLOR.rgb, color.a), highlightFactor * HIGHLIGHT_COLOR.a);\n}\n#else\n#endif\n#define rejectBySlice(_pos_) sliceByPlane(_pos_)\n#define discardBySlice(_pos_) { if (sliceByPlane(_pos_)) discard; }\n#ifdef SLICE_HIGHLIGHT_DISABLED\n#define highlightSlice(_color_, _pos_) (_color_)\n#else\n#define highlightSlice(_color_, _pos_) applySliceHighlight(_color_, _pos_)\n#endif\n#else\n#define rejectBySlice(_pos_) false\n#define discardBySlice(_pos_) {}\n#define highlightSlice(_color_, _pos_) (_color_)\n#endif",
          "transform.glsl": "vec4 transformPosition(mat4 proj, mat4 view, vec3 pos) {\n  return proj * (view * vec4(pos, 1.0));\n}\nvec4 transformPositionWithDepth(mat4 proj, mat4 view, vec3 pos, vec2 nearFar, out float depth) {\n  vec4 eye = view * vec4(pos, 1.0);\n  depth = (-eye.z - nearFar[0]) / (nearFar[1] - nearFar[0]) ;\n  return proj * eye;\n}",
          "visualVariables.glsl": "#ifdef VV_COLOR\n  #define VV_COLOR_N 8\n  uniform float vvColorValues[VV_COLOR_N];\n  uniform vec4 vvColorColors[VV_COLOR_N];\n#endif\n#ifdef VV_SIZE\n  uniform vec3 vvSizeMinSize;\n  uniform vec3 vvSizeMaxSize;\n  uniform vec3 vvSizeOffset;\n  uniform vec3 vvSizeFactor;\n  uniform mat3 vvSymbolRotationMatrix;\n  uniform vec3 vvSymbolAnchor;\n  vec3 vvGetScale(vec4 featureAttribute) {\n    return clamp(vvSizeOffset + featureAttribute.x * vvSizeFactor, vvSizeMinSize, vvSizeMaxSize);\n  }\n  vec4 vvTransformPosition(vec3 position, vec4 featureAttribute) {\n    return vec4(vvSymbolRotationMatrix * (vvGetScale(featureAttribute) * (position + vvSymbolAnchor)), 1.0);\n  }\n  vec4 vvTransformNormal(vec3 normal, vec4 featureAttribute) {\n    return vec4(vvSymbolRotationMatrix * normal / vvGetScale(featureAttribute), 1.0);\n  }\n#endif\n#ifdef VV_COLOR\n  vec4 vvGetColor(vec4 featureAttribute, float values[VV_COLOR_N], vec4 colors[VV_COLOR_N]) {\n    float value = featureAttribute.y;\n    if (value <= values[0]) {\n      return colors[0];\n    }\n    for (int i = 1; i < VV_COLOR_N; ++i) {\n      if (values[i] >= value) {\n        float f = (value - values[i-1]) / (values[i] - values[i-1]);\n        return mix(colors[i-1], colors[i], f);\n      }\n    }\n    return colors[VV_COLOR_N - 1];\n  }\n#endif",
          "vsPrecision.glsl": "precision highp float;\nprecision highp sampler2D;"
        }
      };
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/interactive/Manipulator3D.js":
  /*!***********************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/interactive/Manipulator3D.js ***!
    \***********************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViewsInteractiveManipulator3DJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../core/tsSupport/decorateHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/decorateHelper.js"), __webpack_require__(
    /*! ../../core/tsSupport/declareExtendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/declareExtendsHelper.js"), __webpack_require__(
    /*! ../../core/tsSupport/assignHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/assignHelper.js"), __webpack_require__(
    /*! ../../core/Accessor */
    "./node_modules/arcgis-js-api/core/Accessor.js"), __webpack_require__(
    /*! ../../core/compilerUtils */
    "./node_modules/arcgis-js-api/core/compilerUtils.js"), __webpack_require__(
    /*! ../../core/Evented */
    "./node_modules/arcgis-js-api/core/Evented.js"), __webpack_require__(
    /*! ../../core/maybe */
    "./node_modules/arcgis-js-api/core/maybe.js"), __webpack_require__(
    /*! ../../core/screenUtils */
    "./node_modules/arcgis-js-api/core/screenUtils.js"), __webpack_require__(
    /*! ../../core/accessorSupport/decorators */
    "./node_modules/arcgis-js-api/core/accessorSupport/decorators.js"), __webpack_require__(
    /*! ../../core/accessorSupport/ensureType */
    "./node_modules/arcgis-js-api/core/accessorSupport/ensureType.js"), __webpack_require__(
    /*! ../../core/libs/gl-matrix-2/mat3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat3.js"), __webpack_require__(
    /*! ../../core/libs/gl-matrix-2/mat3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat3f64.js"), __webpack_require__(
    /*! ../../core/libs/gl-matrix-2/mat4 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4.js"), __webpack_require__(
    /*! ../../core/libs/gl-matrix-2/mat4f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/mat4f64.js"), __webpack_require__(
    /*! ../../core/libs/gl-matrix-2/vec2 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec2.js"), __webpack_require__(
    /*! ../../core/libs/gl-matrix-2/vec2f32 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec2f32.js"), __webpack_require__(
    /*! ../../core/libs/gl-matrix-2/vec3 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3.js"), __webpack_require__(
    /*! ../../core/libs/gl-matrix-2/vec3f64 */
    "./node_modules/arcgis-js-api/core/libs/gl-matrix-2/vec3f64.js"), __webpack_require__(
    /*! ../../geometry/support/aaBoundingRect */
    "./node_modules/arcgis-js-api/geometry/support/aaBoundingRect.js"), __webpack_require__(
    /*! ../../layers/graphics/dehydratedFeatures */
    "./node_modules/arcgis-js-api/layers/graphics/dehydratedFeatures.js"), __webpack_require__(
    /*! ../3d/support/geometryUtils */
    "./node_modules/arcgis-js-api/views/3d/support/geometryUtils.js"), __webpack_require__(
    /*! ../3d/support/projectionUtils */
    "./node_modules/arcgis-js-api/views/3d/support/projectionUtils.js"), __webpack_require__(
    /*! ../3d/support/stack */
    "./node_modules/arcgis-js-api/views/3d/support/stack.js"), __webpack_require__(
    /*! ../3d/webgl-engine/lib/Intersector */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Intersector.js"), __webpack_require__(
    /*! ../3d/webgl-engine/lib/intersectorUtils */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/intersectorUtils.js"), __webpack_require__(
    /*! ../3d/webgl-engine/lib/Layer */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Layer.js"), __webpack_require__(
    /*! ../3d/webgl-engine/lib/Object3D */
    "./node_modules/arcgis-js-api/views/3d/webgl-engine/lib/Object3D.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (e, t, r, i, n, o, s, a, c, l, p, u, d, h, f, g, _, y, b, m, v, P, S, O, j, R, T, A, w) {
      function M(e) {
        return 0 !== e[12] || 0 !== e[13] || 0 !== e[14];
      }

      Object.defineProperty(t, "__esModule", {
        value: !0
      });

      var E = function (e) {
        function t(t) {
          var r = e.call(this, t) || this;
          return r.hideOnGrab = !1, r.moveOnDrag = !0, r.snapToPointer = !0, r.collisionType = {
            type: "point"
          }, r.collisionPriority = 0, r.renderObjects = [], r.autoScaleRenderObjects = !0, r._radius = 10, r._worldSized = !1, r._focusMultiplier = 2, r._touchMultiplier = 2.5, r.interactive = !0, r.selectable = !1, r.cursor = null, r.dragging = !1, r._areAnyEngineObjectsVisible = !1, r.events = new a({
            target: r
          }), r._position = m.vec3f64.create(), r._modelTransform = g.mat4f64.create(), r._dragOffset = null, r._dirtyScreenPoint = l.createScreenPoint(), r._dirtyScreenPointArray = l.createScreenPointArray(), r._dirtyRenderScreenPointArray = l.createRenderScreenPointArray3(), r._dirtyOriginScreenPointArray = l.createScreenPointArray(), r._dirtyScreenPixelSize = 1, r._screenPositionDirty = !0, r._engineResourcesAddedToStage = !1, r._engineResources = null, r._attached = !1, r._engineLayerId = null, r._materialIdReferences = null, r._hitResult = {
            onSurface: !1,
            surfaceType: "ground"
          }, r;
        }

        return i(t, e), t.prototype.initialize = function () {
          var e = this;
          this._intersector = new R(this.view.viewingMode), this._mapPoint = P.makeDehydratedPoint(0, 0, 0, this.view.spatialReference), this.events.on("drag", function (t) {
            return e.drag(t);
          });
        }, t.prototype.destroy = function () {
          this._removeResourcesFromStage(), this._engineResources = null, this._set("view", null), this._camera = null;
        }, Object.defineProperty(t.prototype, "alignment", {
          get: function get() {
            return this._get("alignment");
          },
          set: function set(e) {
            this._set("alignment", e), this.constructed && this._refreshMapPoint();
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "visible", {
          set: function set(e) {
            e !== this._get("visible") && (this._set("visible", e), this._updateEngineObject());
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "radius", {
          get: function get() {
            return this._radius;
          },
          set: function set(e) {
            e !== this._radius && (this._radius = e, this._updateEngineObject());
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "worldSized", {
          get: function get() {
            return this._worldSized;
          },
          set: function set(e) {
            e !== this._worldSized && (this._worldSized = e, this._updateEngineObject());
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "focusMultiplier", {
          get: function get() {
            return this._focusMultiplier;
          },
          set: function set(e) {
            this._focusMultiplier = e;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "touchMultiplier", {
          get: function get() {
            return this._touchMultiplier;
          },
          set: function set(e) {
            this._touchMultiplier = e;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "modelTransform", {
          get: function get() {
            return this._modelTransform;
          },
          set: function set(e) {
            M(e) && (this._screenPositionDirty = !0), f.mat4.copy(this._modelTransform, e), this._updateEngineObject();
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "position", {
          get: function get() {
            return this._position;
          },
          set: function set(e) {
            this.view.renderCoordsHelper.fromRenderCoords(e, this._mapPoint, this._mapPoint.spatialReference), this._refreshMapPoint();
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "mapPoint", {
          get: function get() {
            return this._mapPoint;
          },
          set: function set(e) {
            P.clonePoint(e, this._mapPoint), this._refreshMapPoint();
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "grabbing", {
          set: function set(e) {
            e !== this._get("grabbing") && (this._set("grabbing", e), this._updateEngineObject()), e || (this._dragOffset = null);
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "hovering", {
          set: function set(e) {
            e !== this._get("hovering") && (this._set("hovering", e), this._updateEngineObject());
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "selected", {
          set: function set(e) {
            e !== this._get("selected") && (this._set("selected", e), this._updateEngineObject());
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "state", {
          set: function set(e) {
            e !== this._get("state") && (this._set("state", e), this._updateEngineObject());
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "areAnyEngineObjectsVisible", {
          get: function get() {
            return this._areAnyEngineObjectsVisible;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "surfaceType", {
          get: function get() {
            return this._hitResult.onSurface ? this._hitResult.surfaceType : null;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "focused", {
          get: function get() {
            return this._focused;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "_focused", {
          get: function get() {
            return this._get("hovering") || this._get("grabbing");
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "screenPoint", {
          get: function get() {
            return this._updateScreenSpaceProperties(), this._dirtyScreenPoint;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "_screenPointArray", {
          get: function get() {
            return this._updateScreenSpaceProperties(), this._dirtyScreenPointArray;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "_renderScreenPointArray", {
          get: function get() {
            return this._updateScreenSpaceProperties(), this._dirtyRenderScreenPointArray;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "_originScreenPointArray", {
          get: function get() {
            return this._updateScreenSpaceProperties(), this._dirtyOriginScreenPointArray;
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(t.prototype, "_screenPixelSize", {
          get: function get() {
            return this._updateScreenSpaceProperties(), this._dirtyScreenPixelSize;
          },
          enumerable: !0,
          configurable: !0
        }), t.prototype._updateScreenSpaceProperties = function () {
          if (this._screenPositionDirty) {
            this._screenPositionDirty = !1, this._dirtyScreenPixelSize = this._camera.computeScreenPixelSizeAt(this._position);
            var e,
                t = M(this._modelTransform);

            if (t) {
              var r = this._calculateModelTransformOffset(U);

              e = b.vec3.add(r, r, this._position);
            } else e = this._position;

            this._camera.projectPoint(e, this._dirtyRenderScreenPointArray), this._camera.renderToScreen(this._dirtyRenderScreenPointArray, this._dirtyScreenPointArray), l.screenPointArrayToObject(this._dirtyScreenPointArray, this._dirtyScreenPoint), t ? (this._camera.projectPoint(this._position, D), this._camera.renderToScreen(D, this._dirtyOriginScreenPointArray)) : _.vec2.copy(this._dirtyOriginScreenPointArray, this._dirtyScreenPointArray);
          }
        }, t.prototype.intersectionDistance = function (e, t) {
          if (!this._get("visible")) return null;

          var r = l.screenPointObjectToArray(e, x),
              i = this._getCollisionRadius(t),
              n = -1 * this._get("collisionPriority");

          switch (this.collisionType.type) {
            case "point":
              if (_.vec2.squaredDistance(this._screenPointArray, r) < i * i) return this._renderScreenPointArray[2] + n;
              break;

            case "line":
              for (var o = this.collisionType.paths, a = this._getWorldToScreenObjectScale(), c = this._calculateObjectTransform(a, N), p = i * this._screenPixelSize, u = S.ray.fromScreen(this._camera, r, C), h = 0, f = o; h < f.length; h++) {
                var g = f[h];
                if (0 !== g.length) for (var y = b.vec3.transformMat4(H, g[0], c), m = 1; m < g.length; m++) {
                  var v = b.vec3.transformMat4(V, g[m], c),
                      P = S.lineSegment.closestRayDistance2(S.lineSegment.fromPoints(y, v, z), u);

                  if (null != P && P < p * p) {
                    var O = b.vec3.add(j.sv3d.get(), y, v);
                    b.vec3.scale(O, O, .5);
                    var R = l.castRenderScreenPointArray(j.sv3d.get());
                    return this._camera.projectPoint(O, R), R[2] + n;
                  }

                  b.vec3.copy(y, v);
                }
              }

              break;

            case "disc":
              var T = this.collisionType.direction,
                  a = this._getWorldToScreenObjectScale(),
                  c = this._calculateObjectTransform(a, N),
                  p = i * this._screenPixelSize,
                  u = S.ray.fromScreen(this._camera, r, C),
                  A = d.mat3.fromMat4(k, c),
                  w = b.vec3.transformMat3(B, T, A),
                  M = this._calculateModelTransformPosition(G);

              S.plane.fromPositionAndNormal(M, w, F);
              var E = W;
              if (S.plane.intersectRay(F, u, E) && b.vec3.squaredDistance(E, M) < p * p) return this._renderScreenPointArray[2] + n;
              break;

            case "ribbon":
              var I = this.collisionType,
                  o = I.paths,
                  T = I.direction,
                  a = this._getWorldToScreenObjectScale(),
                  c = this._calculateObjectTransform(a, N),
                  p = i * this._camera.computeScreenPixelSizeAt(this._position),
                  u = S.ray.fromScreen(this._camera, r, C),
                  A = d.mat3.fromMat4(k, c),
                  w = b.vec3.transformMat3(B, T, A),
                  M = this._calculateModelTransformPosition(G);

              S.plane.fromPositionAndNormal(M, w, F);
              var E = W;
              if (!S.plane.intersectRay(F, u, E)) break;

              for (var D = 0, L = o; D < L.length; D++) {
                var g = L[D];
                if (0 !== g.length) for (var y = b.vec3.transformMat4(H, g[0], c), m = 1; m < g.length; m++) {
                  var v = b.vec3.transformMat4(V, g[m], c),
                      P = S.lineSegment.distance2(S.lineSegment.fromPoints(y, v, z), E);

                  if (null != P && P < p * p) {
                    var O = b.vec3.add(j.sv3d.get(), y, v);
                    b.vec3.scale(O, O, .5);
                    var R = l.castRenderScreenPointArray(j.sv3d.get());
                    return this._camera.projectPoint(O, R), R[2] + n;
                  }

                  b.vec3.copy(y, v);
                }
              }

              break;

            default:
              s.neverReached(this.collisionType);
          }

          return null;
        }, t.prototype.drag = function (e) {
          if (this.moveOnDrag) {
            var t = l.screenPointObjectToArray(e.screenPoint, x);
            c.isNone(this._dragOffset) && this.grabbing && !this.snapToPointer && (this._dragOffset = _.vec2.subtract(y.vec2f32.create(), t, this._originScreenPointArray)), c.isSome(this._dragOffset) && _.vec2.subtract(t, t, this._dragOffset), this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(t, this._intersector, "on-the-ground" === this.alignment ? I : null);
            var r = this._intersector.results.min,
                i = W;
            r.getIntersectionPoint(i) ? (this.position = i, this._hitResult.onSurface = !0, this._hitResult.surfaceType = "TerrainRenderer" === r.intersector ? "ground" : "feature") : this._hitResult.onSurface = !1;
          }
        }, t.prototype.attach = function (e) {
          if (void 0 === e && (e = {
            manipulator3D: {}
          }), this.view._stage) {
            var t = e.manipulator3D;

            if (this._engineLayerId = t.engineLayerId, c.isNone(this._engineLayerId)) {
              var r = new A("manipulator-3d", {
                isPickable: !1
              });
              this.view._stage.add(0, r), this.view._stage.addToViewContent([r.id]), this._engineLayerId = r.id, t.engineLayerId = r.id;
            }

            t.engineLayerReferences = (t.engineLayerReferences || 0) + 1, this._materialIdReferences = t.materialIdReferences, c.isNone(this._materialIdReferences) && (this._materialIdReferences = new Map(), t.materialIdReferences = this._materialIdReferences), this._camera = this.view.state.camera, this._attached = !0, this._updateEngineObject(), O.canProject(this._mapPoint.spatialReference, this.view.spatialReference) || (this.mapPoint = P.makeDehydratedPoint(0, 0, 0, this.view.spatialReference));
          }
        }, t.prototype.detach = function (e) {
          void 0 === e && (e = {
            manipulator3D: {}
          });
          var t = e.manipulator3D;
          t.engineLayerReferences--;
          var r = 0 === t.engineLayerReferences;
          r && (t.engineLayerId = null), this._removeResourcesFromStage(r), this._engineResources = null, this._engineLayerId = null, this._materialIdReferences = null, this._camera = null, this._attached = !1;
        }, t.prototype.onViewChange = function () {
          this._camera = this.view.state.camera, this._screenPositionDirty = !0, this._updateEngineObject();
        }, t.prototype.onElevationChange = function (e) {
          this.view.renderCoordsHelper.fromRenderCoords(this.position, q, e.spatialReference) && v.containsPoint(e.extent, q) && this._refreshMapPoint(!0);
        }, t.prototype._refreshMapPoint = function (e) {
          switch (void 0 === e && (e = !1), this.alignment) {
            case "none":
              break;

            case "on-the-ground":
              var t = this.view.elevationProvider.getElevation(this.mapPoint, "ground");
              if (!(t !== this._mapPoint.z || !e)) return;
              this._mapPoint.z = t;
              break;

            default:
              s.neverReached(this.alignment);
          }

          this._screenPositionDirty = !0, this._hitResult.onSurface = !1, this.view.renderCoordsHelper.toRenderCoords(this._mapPoint, this._position), this._updateEngineObject();
        }, t.prototype._updateEngineObject = function () {
          if (this._areAnyEngineObjectsVisible = !1, this._attached) {
            if (!1 === this._get("visible")) return void this._removeResourcesFromStage();

            var e = this._getWorldToScreenObjectScale(),
                t = N;

            if (!0 === this._get("autoScaleRenderObjects")) {
              var r = this._getFocusedSize(this._radius, this._focused) * e;

              this._calculateObjectTransform(r, t);
            } else this._calculateObjectTransform(e, t);

            for (var i = this._ensureEngineResources().objectsByState, n = (this._focused ? 2 : 1) | (this._get("selected") ? 8 : 4), o = this._get("hideOnGrab") && this._get("grabbing"), s = 0, a = i; s < a.length; s++) {
              var c = a[s],
                  l = c.stateMask,
                  p = c.objects;
              if (o) for (var u = 0, d = p; u < d.length; u++) {
                var h = d[u];
                h.hideAllComponents();
              } else {
                var f = 0 != (15 & l),
                    g = 0 != (65520 & l),
                    _ = !f || (n & l) == (15 & l),
                    y = !g || (this._get("state") & l) == (65520 & l);

                if (_ && y) for (var b = 0, m = p; b < m.length; b++) {
                  var h = m[b];
                  h.unhideAllComponents(), h.objectTransformation = t, this._areAnyEngineObjectsVisible = !0;
                } else for (var v = 0, P = p; v < P.length; v++) {
                  var h = P[v];
                  h.hideAllComponents();
                }
              }
            }
          }
        }, t.prototype._ensureEngineResources = function () {
          if (c.isNone(this._engineResources)) {
            var e = this.view._stage.getContent(0, c.expect(this._engineLayerId)),
                t = [],
                r = new Set();

            this.renderObjects.forEach(function (e) {
              var i = e.material;
              r.has(i) || (t.push(i), r.add(i));
            });

            var i = function i(e, t) {
              var r = t.geometry,
                  i = t.material,
                  n = t.transform;
              Array.isArray(r) ? r.forEach(function (t) {
                return e.addGeometry(t, i, n);
              }) : e.addGeometry(r, i, n);
            },
                n = new Map();

            this.renderObjects.forEach(function (e) {
              var t = new w({
                idHint: "manipulator"
              });
              i(t, e);
              var r = e.stateMask || 0,
                  o = n.get(r) || [];
              o.push(t), n.set(r, o);
            });
            var o = [];
            n.forEach(function (e, t) {
              o.push({
                stateMask: t,
                objects: e
              });
            }), this._engineResources = {
              objectsByState: o,
              layer: e,
              materials: t
            };
          }

          return this._addResourcesToStage(), this._engineResources;
        }, t.prototype._addResourcesToStage = function () {
          var e = this;

          if (!this._engineResourcesAddedToStage && !c.isNone(this._engineResources)) {
            var t = this._engineResources,
                r = t.objectsByState,
                i = t.layer;
            t.materials.forEach(function (t) {
              var r = c.expect(e._materialIdReferences),
                  i = r.get(t.id) || 0;
              0 === i && e.view._stage.add(3, t), r.set(t.id, i + 1);
            }), r.forEach(function (t) {
              t.objects.forEach(function (t) {
                i.addObject(t), e.view._stage.add(1, t);
              });
            }), this._engineResourcesAddedToStage = !0;
          }
        }, t.prototype._removeResourcesFromStage = function (e) {
          var t = this;

          if (void 0 === e && (e = !1), this._engineResourcesAddedToStage && !c.isNone(this._engineResources)) {
            var r = this._engineResources,
                i = r.objectsByState,
                n = r.layer,
                o = r.materials;
            i.forEach(function (e) {
              e.objects.forEach(function (e) {
                n.removeObject(e), t.view._stage.remove(1, e.id);
              });
            }), o.forEach(function (e) {
              var r = c.expect(t._materialIdReferences),
                  i = r.get(e.id);
              1 === i ? (t.view._stage.remove(3, e.id), r["delete"](e.id)) : r.set(e.id, i - 1);
            }), e && this.view._stage.remove(0, n.id), this._engineResourcesAddedToStage = !1;
          }
        }, t.prototype._getCollisionRadius = function (e) {
          return this._getFocusedSize(this._radius, !0) * ("touch" === e ? this._touchMultiplier : 1);
        }, t.prototype._getFocusedSize = function (e, t) {
          return e * (t ? this._focusMultiplier : 1);
        }, t.prototype._getWorldToScreenObjectScale = function () {
          return this._worldSized ? 1 : this._screenPixelSize;
        }, t.prototype._calculateModelTransformPosition = function (e) {
          var t = this._getWorldToScreenObjectScale(),
              r = this._calculateObjectTransform(t, L);

          return b.vec3.set(e, r[12], r[13], r[14]);
        }, t.prototype._calculateModelTransformOffset = function (e) {
          var t = this._calculateModelTransformPosition(e);

          return b.vec3.subtract(e, t, this._position);
        }, t.prototype._calculateObjectTransform = function (e, t) {
          return f.mat4.set(t, e, 0, 0, 0, 0, e, 0, 0, 0, 0, e, 0, 0, 0, 0, 1), f.mat4.multiply(t, t, this._modelTransform), t[12] += this._position[0], t[13] += this._position[1], t[14] += this._position[2], t[15] = 1, t;
        }, r([p.property({
          constructOnly: !0,
          nonNullable: !0
        })], t.prototype, "view", void 0), r([p.property({
          value: "none",
          nonNullable: !0
        })], t.prototype, "alignment", null), r([p.property()], t.prototype, "hideOnGrab", void 0), r([p.property()], t.prototype, "moveOnDrag", void 0), r([p.property()], t.prototype, "snapToPointer", void 0), r([p.property()], t.prototype, "collisionType", void 0), r([p.property({
          type: u.Integer
        })], t.prototype, "collisionPriority", void 0), r([p.property({
          constructOnly: !0
        })], t.prototype, "renderObjects", void 0), r([p.property()], t.prototype, "autoScaleRenderObjects", void 0), r([p.property({
          value: !0
        })], t.prototype, "visible", null), r([p.property()], t.prototype, "radius", null), r([p.property()], t.prototype, "worldSized", null), r([p.property()], t.prototype, "focusMultiplier", null), r([p.property()], t.prototype, "touchMultiplier", null), r([p.property()], t.prototype, "interactive", void 0), r([p.property()], t.prototype, "selectable", void 0), r([p.property()], t.prototype, "cursor", void 0), r([p.property({
          value: !1
        })], t.prototype, "grabbing", null), r([p.property()], t.prototype, "dragging", void 0), r([p.property({
          value: !1
        })], t.prototype, "hovering", null), r([p.property({
          value: !1
        })], t.prototype, "selected", null), r([p.property({
          value: 0
        })], t.prototype, "state", null), r([p.property({
          dependsOn: ["hovering", "grabbing"]
        })], t.prototype, "focused", null), t = r([p.subclass("esri.views.interactive.Manipulator3D")], t);
      }(p.declared(o));

      t.Manipulator3D = E;
      var I = {
        include: new Set()
      };
      I.include.add(T.TERRAIN_ID);
      var x = l.createScreenPointArray(),
          D = l.createRenderScreenPointArray3(),
          z = S.lineSegment.create(),
          C = S.ray.create(),
          k = h.mat3f64.create(),
          L = g.mat4f64.create(),
          N = g.mat4f64.create(),
          F = S.plane.create(),
          H = m.vec3f64.create(),
          V = m.vec3f64.create(),
          W = m.vec3f64.create(),
          B = m.vec3f64.create(),
          G = m.vec3f64.create(),
          U = m.vec3f64.create(),
          q = m.vec3f64.create();
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/overlay/LineOverlayItem.js":
  /*!*********************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/overlay/LineOverlayItem.js ***!
    \*********************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViewsOverlayLineOverlayItemJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../core/tsSupport/declareExtendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/declareExtendsHelper.js"), __webpack_require__(
    /*! ../../core/tsSupport/decorateHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/decorateHelper.js"), __webpack_require__(
    /*! ../../core/Accessor */
    "./node_modules/arcgis-js-api/core/Accessor.js"), __webpack_require__(
    /*! ../../core/accessorSupport/decorators */
    "./node_modules/arcgis-js-api/core/accessorSupport/decorators.js"), __webpack_require__(
    /*! ../../libs/maquette/index */
    "./node_modules/arcgis-js-api/libs/maquette/index.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, r, i, o, s, n) {
      var p = function (t) {
        function e(e) {
          var r = t.call(this, e) || this;
          return r.startX = 0, r.startY = 0, r.endX = 0, r.endY = 0, r.width = 1, r.color = [0, 0, 0, .5], r.visible = !0, r;
        }

        return r(e, t), Object.defineProperty(e.prototype, "startPosition", {
          get: function get() {
            return [this.startX, this.startY];
          },
          set: function set(t) {
            this._set("startX", t[0]), this._set("startY", t[1]);
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "endPosition", {
          get: function get() {
            return [this.endX, this.endY];
          },
          set: function set(t) {
            this._set("endX", t[0]), this._set("endY", t[1]);
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "strokeStyle", {
          get: function get() {
            var t = this.color;
            return "rgba(" + t[0] + ", " + t[1] + ", " + t[2] + ", " + t[3] + ")";
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "lineCap", {
          get: function get() {
            return "round";
          },
          enumerable: !0,
          configurable: !0
        }), e.prototype.render = function () {
          var t = this.calculateCoordinates(a),
              e = t.height,
              r = t.left,
              i = t.top,
              o = t.width,
              s = t.x1,
              p = t.x2,
              h = t.y1,
              d = t.y2,
              l = "stroke: " + this.strokeStyle + "; stroke-width: " + this.width + "; stroke-linecap: " + this.lineCap + ";";
          return n.h("div", {
            classes: {
              "esri-line-overlay-item": !0
            },
            styles: {
              left: r + "px",
              top: i + "px",
              width: o + "px",
              height: e + "px",
              visibility: this.visible ? "visible" : "hidden"
            }
          }, [n.h("svg", {
            width: o,
            height: e
          }, [n.h("line", {
            x1: s,
            y1: h,
            x2: p,
            y2: d,
            style: l
          })])]);
        }, e.prototype.renderCanvas = function (t) {
          if (this.visible) {
            t.strokeStyle = this.strokeStyle, t.lineWidth = this.width, t.lineCap = this.lineCap;
            var e = this.calculateCoordinates(a);
            t.beginPath(), t.moveTo(e.left + e.x1, e.top + e.y1), t.lineTo(e.left + e.x2, e.top + e.y2), t.stroke();
          }
        }, e.prototype.calculateCoordinates = function (t) {
          var e = Math.min(this.startX, this.endX),
              r = Math.max(this.startX, this.endX),
              i = Math.min(this.startY, this.endY),
              o = Math.max(this.startY, this.endY),
              s = this.width;
          return t.left = e - s, t.top = i - s, t.width = r - e + 2 * s, t.height = Math.max(20, o - i + 2 * s), t.x1 = this.startX - e + s, t.y1 = this.startY - i + s, t.x2 = this.endX - e + s, t.y2 = this.endY - i + s, t;
        }, i([s.property()], e.prototype, "startX", void 0), i([s.property()], e.prototype, "startY", void 0), i([s.property()], e.prototype, "endX", void 0), i([s.property()], e.prototype, "endY", void 0), i([s.property({
          dependsOn: ["startX", "startY"]
        })], e.prototype, "startPosition", null), i([s.property({
          dependsOn: ["endX", "endY"]
        })], e.prototype, "endPosition", null), i([s.property()], e.prototype, "width", void 0), i([s.property()], e.prototype, "color", void 0), i([s.property()], e.prototype, "visible", void 0), i([s.property({
          readOnly: !0,
          dependsOn: ["color"]
        })], e.prototype, "strokeStyle", null), e = i([s.subclass("esri.views.overlay.LineOverlayItem")], e);
      }(s.declared(o)),
          a = {
        left: 0,
        top: 0,
        width: 0,
        height: 0,
        x1: 0,
        y1: 0,
        x2: 0,
        y2: 0
      };

      return p;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  },

  /***/
  "./node_modules/arcgis-js-api/views/overlay/TextOverlayItem.js":
  /*!*********************************************************************!*\
    !*** ./node_modules/arcgis-js-api/views/overlay/TextOverlayItem.js ***!
    \*********************************************************************/

  /*! no static exports found */

  /***/
  function node_modulesArcgisJsApiViewsOverlayTextOverlayItemJs(module, exports, __webpack_require__) {
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; // COPYRIGHT © 2019 Esri
    //
    // All rights reserved under the copyright laws of the United States
    // and applicable international laws, treaties, and conventions.
    //
    // This material is licensed for use under the Esri Master License
    // Agreement (MLA), and is bound by the terms of that agreement.
    // You may redistribute and use this code without modification,
    // provided you adhere to the terms of the MLA and include this
    // copyright notice.
    //
    // See use restrictions at http://www.esri.com/legal/pdfs/mla_e204_e300/english
    //
    // For additional information, contact:
    // Environmental Systems Research Institute, Inc.
    // Attn: Contracts and Legal Services Department
    // 380 New York Street
    // Redlands, California, USA 92373
    // USA
    //
    // email: contracts@esri.com
    //
    // See http://js.arcgis.com/4.14/esri/copyright.txt for details.


    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__.dj.c(module.i), exports, __webpack_require__(
    /*! ../../core/tsSupport/declareExtendsHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/declareExtendsHelper.js"), __webpack_require__(
    /*! ../../core/tsSupport/decorateHelper */
    "./node_modules/arcgis-js-api/core/tsSupport/decorateHelper.js"), __webpack_require__(
    /*! ../../core/Accessor */
    "./node_modules/arcgis-js-api/core/Accessor.js"), __webpack_require__(
    /*! ../../core/accessorSupport/decorators */
    "./node_modules/arcgis-js-api/core/accessorSupport/decorators.js"), __webpack_require__(
    /*! ../../libs/maquette/index */
    "./node_modules/arcgis-js-api/libs/maquette/index.js")], __WEBPACK_AMD_DEFINE_RESULT__ = function (t, e, o, r, i, n, l) {
      for (var s = {
        bottom: "esri-text-overlay-item-anchor-bottom",
        "bottom-right": "esri-text-overlay-item-anchor-bottom-right",
        "bottom-left": "esri-text-overlay-item-anchor-bottom-left",
        top: "esri-text-overlay-item-anchor-top",
        "top-right": "esri-text-overlay-item-anchor-top-right",
        "top-left": "esri-text-overlay-item-anchor-top-left",
        center: "esri-text-overlay-item-anchor-center",
        right: "esri-text-overlay-item-anchor-right",
        left: "esri-text-overlay-item-anchor-left"
      }, a = function (t) {
        function e(e) {
          var o = t.call(this, e) || this;
          return o.x = 0, o.y = 0, o.text = "-", o.fontSize = 14, o.anchor = "center", o.visible = !0, o.backgroundColor = "rgba(0, 0, 0, 0.6)", o.textColor = "white", o.textShadowColor = [0, 0, 0], o.textShadowSize = 1, o;
        }

        return o(e, t), Object.defineProperty(e.prototype, "position", {
          get: function get() {
            return [this.x, this.y];
          },
          set: function set(t) {
            this._set("x", t[0]), this._set("y", t[1]);
          },
          enumerable: !0,
          configurable: !0
        }), Object.defineProperty(e.prototype, "padding", {
          get: function get() {
            return .5 * this.fontSize;
          },
          enumerable: !0,
          configurable: !0
        }), e.prototype.render = function () {
          return l.h("div", {
            classes: this._cssClasses(),
            styles: {
              left: Math.floor(this.x) + "px",
              top: Math.floor(this.y) + "px",
              visibility: this.visible ? "visible" : "hidden",
              fontSize: this.fontSize + "px",
              backgroundColor: this.backgroundColor,
              color: this.textColor,
              padding: this.padding + "px",
              borderRadius: this.padding + "px",
              textShadow: "0 0 " + this.textShadowSize + "px rgb(" + this.textShadowColor[0] + ", " + this.textShadowColor[1] + ", " + this.textShadowColor[2] + ")"
            }
          }, [this.text]);
        }, e.prototype.renderCanvas = function (t) {
          if (this.visible) {
            var e = t.font.replace(/^(.*?)px/, "");
            t.font = this.fontSize + "px " + e;
            var o = this.padding,
                r = this.padding,
                i = t.measureText(this.text).width,
                n = this.fontSize,
                l = h[this.anchor];
            t.textAlign = "center", t.textBaseline = "middle";
            var s = i + 2 * o,
                a = n + 2 * o,
                p = this.x + l.x * s,
                x = this.y + l.y * a;
            this.roundedRect(t, p, x, s, a, r), t.fillStyle = this.backgroundColor, t.fill();
            var d = this.x + (l.x + .5) * s,
                c = this.y + (l.y + .5) * a;
            this._renderTextShadow(t, this.text, d, c), t.fillStyle = this.textColor, t.fillText(this.text, d, c);
          }
        }, e.prototype._renderTextShadow = function (t, e, o, r) {
          t.lineJoin = "miter", t.fillStyle = "rgba(" + this.textShadowColor[0] + ", " + this.textShadowColor[1] + ", " + this.textShadowColor[2] + ", " + 1 / p.length + ")";

          for (var i = this.textShadowSize, n = 0, l = p; n < l.length; n++) {
            var s = l[n],
                a = s[0],
                h = s[1];
            t.fillText(e, o + i * a, r + i * h);
          }
        }, e.prototype.roundedRect = function (t, e, o, r, i, n) {
          t.beginPath(), t.moveTo(e, o + n), t.arcTo(e, o, e + n, o, n), t.lineTo(e + r - n, o), t.arcTo(e + r, o, e + r, o + n, n), t.lineTo(e + r, o + i - n), t.arcTo(e + r, o + i, e + r - n, o + i, n), t.lineTo(e + n, o + i), t.arcTo(e, o + i, e, o + i - n, n), t.closePath();
        }, e.prototype._cssClasses = function () {
          var t = {
            "esri-text-overlay-item": !0
          };

          for (var e in s) t[s[e]] = this.anchor === e;

          return t;
        }, r([n.property()], e.prototype, "x", void 0), r([n.property()], e.prototype, "y", void 0), r([n.property({
          dependsOn: ["x", "y"]
        })], e.prototype, "position", null), r([n.property()], e.prototype, "text", void 0), r([n.property()], e.prototype, "fontSize", void 0), r([n.property()], e.prototype, "anchor", void 0), r([n.property()], e.prototype, "visible", void 0), r([n.property({
          dependsOn: ["fontSize"]
        })], e.prototype, "padding", null), e = r([n.subclass("esri.views.overlay.TextOverlayItem")], e);
      }(n.declared(i)), h = {
        bottom: {
          x: -.5,
          y: -1,
          textAlign: "center",
          textBaseline: "bottom"
        },
        "bottom-left": {
          x: 0,
          y: -1,
          textAlign: "left",
          textBaseline: "bottom"
        },
        "bottom-right": {
          x: -1,
          y: -1,
          textAlign: "right",
          textBaseline: "bottom"
        },
        center: {
          x: -.5,
          y: -.5,
          textAlign: "center",
          textBaseline: "middle"
        },
        left: {
          x: 0,
          y: -.5,
          textAlign: "left",
          textBaseline: "middle"
        },
        right: {
          x: -1,
          y: -.5,
          textAlign: "right",
          textBaseline: "middle"
        },
        top: {
          x: -.5,
          y: 0,
          textAlign: "center",
          textBaseline: "top"
        },
        "top-left": {
          x: 0,
          y: 0,
          textAlign: "left",
          textBaseline: "top"
        },
        "top-right": {
          x: -1,
          y: 0,
          textAlign: "right",
          textBaseline: "top"
        }
      }, p = [], x = 0; x < 360; x += 22.5) p.push([Math.cos(Math.PI * x / 180), Math.sin(Math.PI * x / 180)]);

      return a;
    }.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
    /***/
  }
}]);
//# sourceMappingURL=27-es5.js.map