(function (config) {
  var aa = navigator.userAgent.toLowerCase(),
    ba = window,
    da = document,
    ga = da.documentElement;

  function ha(a) {
    return -1 !== aa.indexOf(a)
  }
  var ma = /([a-z0-9]*\d+[a-z0-9]*)/;

  function na() {
    var a = oa;
    if (!a) return null;
    var a = a.toLowerCase(),
      b = null;
    if (b = a.match(/angle \((.*)\)/)) a = b[1], a = a.replace(/\s*direct3d.*$/, "");
    a = a.replace(/\s*\([^\)]*wddm[^\)]*\)/, "");
    if (0 <= a.indexOf("intel")) {
      b = ["Intel"];
      0 <= a.indexOf("mobile") && b.push("Mobile");
      (0 <= a.indexOf("gma") || 0 <= a.indexOf("graphics media accelerator")) && b.push("GMA");
      if (0 <= a.indexOf("haswell")) b.push("Haswell");
      else if (0 <= a.indexOf("ivy")) b.push("HD 4000");
      else if (0 <= a.indexOf("sandy")) b.push("HD 3000");
      else if (0 <= a.indexOf("ironlake")) b.push("HD");
      else {
        0 <= a.indexOf("hd") && b.push("HD");
        var c = a.match(ma);
        c && b.push(c[1].toUpperCase())
      }
      return b = b.join(" ")
    }
    return 0 <= a.indexOf("nvidia") || 0 <= a.indexOf("quadro") || 0 <= a.indexOf("geforce") || 0 <= a.indexOf("nvs") ? (b = ["nVidia"], 0 <= a.indexOf("geforce") && b.push("geForce"), 0 <= a.indexOf("quadro") && b.push("Quadro"), 0 <= a.indexOf("nvs") && b.push("NVS"), a.match(/\bion\b/) && b.push("ION"), a.match(/gtx\b/) ? b.push("GTX") : a.match(/gts\b/) ? b.push("GTS") : a.match(/gt\b/) ? b.push("GT") : a.match(/gs\b/) ? b.push("GS") : a.match(/ge\b/) ? b.push("GE") : a.match(/fx\b/) && b.push("FX"), (c = a.match(ma)) && b.push(c[1].toUpperCase().replace("GS", "")), 0 <= a.indexOf("titan") ? b.push("TITAN") : 0 <= a.indexOf("ti") && b.push("Ti"), b = b.join(" ")) : 0 <= a.indexOf("amd") || 0 <= a.indexOf("ati") || 0 <= a.indexOf("radeon") || 0 <= a.indexOf("firegl") || 0 <= a.indexOf("firepro") ? (b = ["AMD"], 0 <= a.indexOf("mobil") && b.push("Mobility"), c = a.indexOf("radeon"), 0 <= c && b.push("Radeon"), 0 <= a.indexOf("firepro") ? b.push("FirePro") : 0 <= a.indexOf("firegl") && b.push("FireGL"), 0 <= a.indexOf("hd") && b.push("HD"), 0 <= c && (a = a.substring(c)), (c = a.match(ma)) && b.push(c[1].toUpperCase().replace("HD", "")), b = b.join(" ")) : a.substring(0, 100)
  }
  var qa = "microsoft basic render driver;vmware svga 3d;Intel 965GM;Intel B43;Intel G41;Intel G45;Intel G965;Intel GMA 3600;Intel Mobile 4;Intel Mobile 45;Intel Mobile 965".split(";"),
    ra = "ActiveXObject" in ba,
    sa = "devicePixelRatio" in ba && 1 < ba.devicePixelRatio || ra && "matchMedia" in ba && ba.matchMedia("(min-resolution:144dpi)") && ba.matchMedia("(min-resolution:144dpi)").matches,
    va = ha("windows nt"),
    wa = -1 !== aa.search(/windows nt [1-5]\./),
    ya = -1 !== aa.search(/windows nt 5\.[12]/),
    za = wa && !ya;
  ha("windows nt 10");
  var Aa = ha("windows phone"),
    Ba = ha("macintosh"),
    Ca = ha("Mb2345Browser"),
    Da = ha("ipad;") || ha("ipad "),
    Ea = Da && sa,
    Fa = ha("ipod touch;"),
    Ga = ha("iphone;") || ha("iphone "),
    Ha = Ga || Da || Fa,
    Ia = Ha && -1 !== aa.search(/ os [456]_/);
  Ha && aa.search(/ os [4-8]_/);
  Ha && aa.search(/ os [78]_/);
  Ha && ha("os 8_");
  var Ja = Ha && ha("os 10_"),
    Ma = ha("android"),
    Na = -1 !== aa.search(/android [123]/);
  ha("android 4");
  Ma && -1 === aa.search(/android [1-4]/) || aa.search(/android 4.4/);
  var Oa = Ma ? "android" : Ha ? "ios" : va ? "windows" : Ba ? "mac" : "other",
    Pa = ra && !ba.XMLHttpRequest,
    Qa = ra && !da.querySelector,
    Ra = ra && !da.addEventListener,
    Sa = ra && ha("ie 9"),
    Ta = ra && ha("msie 10"),
    Ua = ra && ha("rv:11"),
    Va = ha("edge"),
    Wa = ha("qtweb"),
    Xa = ha("ucbrowser"),
    Ya = ha("alipay") || Ma && Xa,
    Za = ha("miuibrowser"),
    $a = ha("micromessenger"),
    ab = ha("mqqbrowser"),
    bb = ha("baidubrowser"),
    chrome = (ha("chrome") || ha("crios")) && !$a && !bb && !ab && !Va && !Za,
    cb = chrome && ha("chromium"),
    db = chrome && !cb && 30 < parseInt(aa.split("chrome/")[1]),
    eb = ha("firefox"),
    fb = eb && 27 < parseInt(aa.split("firefox/")[1]),
    gb = (Ba || Ha) && ha("safari") && ha("version/"),
    hb = Ba && gb && 7 < parseInt(aa.split("version/")[1]),
    ib = Ha && ha("aliapp"),
    jb = Ha && (!ab && !Xa && !$a && !chrome && !eb && !gb || ib && !Xa),
    kb = Ma || Ha || Aa || ha("mobile"),
    lb = ba.navigator && ba.navigator.msPointerEnabled && !!ba.navigator.msMaxTouchPoints,
    mb = ba.navigator && ba.navigator.pointerEnabled && !!ba.navigator.maxTouchPoints,
    nb = mb || lb,
    ob = "ontouchstart" in da || nb,
    pb = function () {
      if (!kb) return ba.devicePixelRatio || 1;
      var a = document.getElementsByTagName("meta");
      if (window.parent && window.parent !== window) try {
        if (window.parent.location.origin === window.location.origin) a = window.parent.document.getElementsByTagName("meta");
        else return 1
      } catch (b) {
        return 1
      }
      for (var c = a.length - 1; 0 <= c; c -= 1) if ("viewport" === a[c].name) {
        var c = a[c].content,
          d; - 1 !== c.indexOf("initial-scale") && (d = parseFloat(c.split("initial-scale=")[1]));
        a = -1 !== c.indexOf("minimum-scale") ? parseFloat(c.split("minimum-scale=")[1]) : 0;
        c = -1 !== c.indexOf("maximum-scale") ? parseFloat(c.split("maximum-scale=")[1]) : Infinity;
        if (d) {
          if (c >= a) return d > c ? c : d < a ? a : d
        } else if (c >= a) return 1 <= a ? 1 : Math.min(c, 1);
        console && console.log && console.log("viewport\u53c2\u6570\u4e0d\u5408\u6cd5");
        return null
      }
    }(),
    qb = sa && (!kb || !!pb && 1 <= pb),
    rb = ra && "transition" in ga.style,
    sb = !!da.createElementNS && !!da.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect,
    tb = da.createElement("canvas"),
    ub = !(!tb || !tb.getContext),
    vb = window.URL || window.webkitURL,
    yb = !ra && !(Xa && Ma) && window.Worker && vb && vb.createObjectURL && window.Blob,
    zb = "",
    oa = "",
    Ab = 0,
    Bb = {
      alpha: !0,
      antialias: !0,
      depth: !0,
      failIfMajorPerformanceCaveat: !0,
      preserveDrawingBuffer: !0,
      stencil: !1
    },
    Cb = function () {
      if (!window.forceWebGL && (!ub || !yb || jb && ib && !Xa)) return !1;
      for (var a = ["webgl", "experimental-webgl", "moz-webgl"], b = null, c = 0; c < a.length; c += 1) {
        try {
          b = tb.getContext(a[c], window.forceWebGL ? {
            alpha: !1,
            antialias: !0,
            depth: !0
          } : Bb)
        } catch (d) { }
        if (b) {
          if (b.drawingBufferWidth !== tb.width || b.drawingBufferHeight !== tb.height) break;
          if (window.forceWebGL) return zb = a[c], Ab = Infinity, !0;
          if (!b.getShaderPrecisionFormat || !b.getParameter || !b.getExtension) break;
          Ab = b.getParameter(b.MAX_RENDERBUFFER_SIZE);
          var e = b.getParameter(b.MAX_VIEWPORT_DIMS);
          if (!e) break;
          Ab = Math.min(Ab, e[0], e[1]);
          gb && "mac" === Oa && (Ab = Math.min(Ab, 4096));
          e = Math.max(screen.width, screen.height);
          qb && (e *= Math.min(2, window.devicePixelRatio || 1));
          if (e > Ab) break;
          if (23 > b.getShaderPrecisionFormat(35632, 36338).precision || 23 > b.getShaderPrecisionFormat(35633, 36338).precision) break;
          oa = b.getExtension("WEBGL_debug_renderer_info") ? b.getParameter(37446) : null;
          if ((b = na()) && -1 !== qa.indexOf(b)) break;
          zb = a[c];
          return !0
        }
      }
      return !1
    }(),
    Db = Cb && (db || fb || hb) && ("mac" === Oa || "windows" === Oa) && !kb,
    Eb = !ub || Wa || Aa || kb && eb || Sa || Ia || Ea || Fa || Na || ha("gt-n710") || za,
    Fb = !Eb && !Db,
    Gb = Db ? "vw" : Eb ? "d" : Fb ? "dv" : "v",
    Hb = ha("webkit"),
    Ib = "WebKitCSSMatrix" in ba && "m11" in new window.WebKitCSSMatrix,
    Jb = "MozPerspective" in ga.style,
    Kb = "OTransition" in ga.style,
    Lb = rb || Ib || Jb || Kb,
    Mb = void 0 !== config[8] ? config[8] : !0,
    Nb = void 0 !== config[9] ? config[9] : !0,
    Ob = void 0 !== config[10] ? config[10] : !0,
    Pb = void 0 !== config[11] ? config[11] : !0,
    Qb = void 0 !== config[12] ? config[12] : null,
    Rb = !sb && kb && ub,
    Sb = !0;
  try {
    if ("undefined" === typeof ba.localStorage) Sb = !1;
    else {
      var Tb = (new Date).getTime() + "";
      ba.localStorage.setItem("_test", Tb);
      ba.localStorage.getItem("_test") !== Tb && (Sb = !1);
      ba.localStorage.removeItem("_test")
    }
  } catch (Ub) {
    Sb = !1
  }
  var Vb = parseInt(aa.split("chrome/")[1]);
  config.l = {
    xca: Da,
    yca: Ga,
    size: Ga ? 100 : Ma ? 200 : 500,
    ky: Ba,
    Oia: va,
    XC: Ha,
    Mla: Ja,
    yj: Ma,
    H9: Na,
    LU: Ya,
    wr: Oa,
    PB: bb,
    Efa: ab,
    dM: gb,
    SZ: $a,
    Lo: ra,
    Dh: Pa,
    cr: Qa,
    Eca: Sa,
    OV: Ta,
    ne: Ra,
    Bca: Ua,
    Xaa: Va,
    Fca: ra && !Ua,
    Rda: Ca,
    Si: Sb,
    ef: Sb && Pb && !kb && chrome,
    Vd: Qb,
    geolocation: kb || ra && !Ra || Va,
    hia: Xa,
    pE: Xa && !chrome,
    chrome: chrome,
    kJ: sa && chrome,
    zJ: eb,
    Z: kb,
    Yda: kb && Hb,
    RW: kb && Ib,
    Xda: kb && ba.opera,
    cd: sa,
    yE: pb,
    ja: qb,
    Me: ob,
    TW: lb,
    FL: mb,
    EX: nb,
    z$: chrome && 57 <= Vb,
    A$: !kb && chrome && 64 <= Vb,
    QZ: Hb,
    Cca: rb,
    RZ: Ib,
    vba: Jb,
    Nea: Kb,
    NB: Lb,
    Ol: sb,
    Ll: ub,
    hr: yb,
    $u: Ob,
    He: Db,
    NZ: zb,
    OZ: Bb,
    eK: oa,
    Pda: Ab,
    dja: !1,
    xU: Mb,
    hx: Mb && !Eb,
    X9: Mb ? Gb : "d",
    MT: Mb ? Cb : !1,
    Uy: Mb && ub,
    bm: Mb && Cb,
    Qla: Mb && (!Eb || Cb),
    en: Nb && !!ba.WebSocket && !bb,
    qma: Rb,
    Qea: ub || Rb ? "c" : "d"
  };
  var Wb = config;
  config = void 0;
  var Xb = {
    overlay: ["style"],
    "AMap.IndoorMap": ["AMap.CustomLayer", "cvector"],
    "AMap.IndoorMap3D": ["Map3D"],
    "AMap.MarkerList": ["AMap.TplUtils"],
    Map3D: ["vectorlayer", "wgl", "AMap.CustomLayer"],
    "AMap.Heatmap": ["AMap.CustomLayer"]
  };
  window.AMap ? (window.AMap.version = "1524740698502", window.AMap.uE = {
    kF: function (a) {
      a(Wb)
    }
  }) : window.AMap = {
    version: "1524740698502",
    uE: {
      kF: function (a) {
        a(Wb)
      }
    }
  };
  Wb.Jh = "1524740698502";
  Wb.Eq = Xb;
  Wb.mD = "raster";
  for (var Yb = document.head || document.getElementsByTagName("head")[0],
    Zb = ".vml{behavior:url(#default#VML);display:inline-block;position:absolute}.amap-custom{top:0;left:0;position:absolute}.amap-container img{max-width:none!important;max-height:none!important}.amap-container{touch-action:none;position:relative;overflow:hidden;background:#fcf9f2 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AgMAAAC2uDcZAAAADFBMVEX////////////////1pQ5zAAAABHRSTlMAgP/AWuZC2AAAAVhJREFUeAFiYGAQYGDEQjAB2rcDC4BiGIqiU7abdKlO2QkeIClyPsDHweMKtOPHIJ1Op6/w7Y4fdqfT6VpndzqdrnV2p9PpWmd3Oj3qWndSoKp+2J1Op7vr7E6n07XO7nQ6XevsTqfTtc7udPo4/f787E6n0911dqfT6VpndzqdrnV2p9PpWmd3Ot27Ce8m6HS6u85dR6fTtU7r6HS61mkdnU7XOrvT6XTvJuxOp9PddXan0+laZ3c6na51dDpd67SOTqd7N+HdBJ1Od9e56+h0utZpHZ1O1zq70+l0rbM7nU73bsLudDrdXWd3Ol3rtI5Op2ud1tHpdK3TOjqd7t2EdxN0Ot1dZ3c6na51dqfT6VpndzqdrnV2p9Pp3k3Q6XR3nbuOTqdrndbR6XSt0zo6na51Wken072bsDudTnfX2Z1Op2ud3el0utbZnU7XOq2j0+t0uncTD1gO4zoT5doZAAAAAElFTkSuQmCC);-ms-touch-action:none}.amap-drags,.amap-layers{width:100%;height:100%;position:absolute;overflow:hidden}.amap-layer img{pointer-events:none}.amap-e,.amap-maps{width:100%;height:100%}.amap-maps,.amap-e,.amap-layers,.amap-tile,.amap-tile-container{position:absolute;left:0;top:0;overflow:hidden}.amap-context{position:absolute;left:0;top:0}.amap-overlays,.amap-markers,.amap-marker{position:absolute;left:0;top:0}.amap-layers{z-index:0}.amap-overlays{z-index:110;cursor:default}.amap-markers{z-index:120}.amap-controls{z-index:150}.amap-copyright{position:absolute;display:block!important;left:70px;height:16px;bottom:0;font-size:11px;line-height:16px;font-family:Arial,sans-serif;z-index:160}.amap-logo{position:absolute;bottom:0;left:0;z-index:160;height:17px;line-height:16px;margin:0 1px}.amap-logo img{width:67px!important;height:16px!important;border:0;vertical-align:baseline!important}.amap-icon{position:relative;z-index:1;overflow:hidden}.amap-icon img{position:absolute;z-index:-1}.amap-marker-label{position:absolute;z-index:2;border:1px solid blue;background-color:white;white-space:nowrap;cursor:default;padding:3px;font-size:12px;line-height:14px}.amap-info{position:absolute;left:0;z-index:140;width:320px}.amap-menu{position:absolute;z-index:140;_width:100px}.amap-info-close{position:absolute;right:5px;_right:12px;+right:11px;top:5px;_top:2px;+top:2px;color:#c3c3c3;text-decoration:none;font:bold 16px/14px Tahoma,Verdana,sans-serif;width:14px;height:14px}.amap-info-outer,.amap-menu-outer{box-shadow:0 3px 14px rgba(0,0,100,0.6);background:none repeat scroll 0 0 white;border-radius:2px;padding:1px;text-align:left;border:#c0c0c0 solid 1px}.amap-info-outer:hover,.amap-menu-outer:hover{box-shadow:0 3px 14px rgba(0,0,0,0.75)}.amap-info-content{background:#fff;border:1px solid #ccc;padding:10px 18px 10px 10px;+margin:0 10px;+padding:10px 0;line-height:1.4;overflow:auto}.amap-marker-content{position:relative}.amap-info{_width:320px}.amap-menu{_width:100px}.amap-info-sharp{height:23px;margin:0 auto;overflow:hidden;position:relative;top:-1px;width:30px;background-image:url(../../amap/theme/v1.3/sharp.png);_background-image:url(../../amap/theme/v1.3/sharp.gif)}.amap-menu-outer{margin:0;padding:0;list-style-type:none}ul.amap-menu-outer li{cursor:pointer;height:35px;line-height:35px;word-break:break-all;padding:0 10px;font-size:12px;white-space:nowrap}ul.amap-menu-outer li a{text-decoration:none;font-size:13px;margin:0 5px;color:#000;padding:5px 5px}ul.amap-menu-outer li:hover{background-color:#f3f3ee}.amap-overlay-text-container{display:block;width:auto;word-break:keep-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#fff;padding:2px 3px;border:1px solid #ccc;border-radius:3px}.amap-overlay-text-container.amap-overlay-text-empty{display:none}"
      .replace(/url\((['"]?)(?:\.\.\/)+/g,
        "url($1" + Wb[2].split(",")[0] + "/"),
    $b = null, ac = 0, bc = Yb.childNodes.length; ac < bc; ac++)
    if (1 === Yb.childNodes[ac].nodeType) {
      $b = Yb.childNodes[ac];
      break
    }
  if (Zb) if (Yb) {
    var cc = document.createElement("style");
    cc.setAttribute("type", "text/css");
    cc.setAttribute("class", "AMap.style");
    cc.styleSheet ? cc.styleSheet.cssText = Zb : cc.innerHTML = Zb;
    $b ? Yb.insertBefore(cc, $b) : Yb.appendChild(cc)
  } else document.write("<style type='text/css'>" + Zb + "</style>");
  var f = f || {
    Ba: {
      be: 0,
      zp: []
    }
  },
    w = {
      w: {},
      control: {},
      D: {}
    };
  f.dba = function (a) {
    var b = Function;
    return function () {
      return (new b("return " + a))()
    }
  }();
  f.CLASS_NAME = "AMap";
  f.e = f.BuryPoint = {
    OW: {},
    ZK: {},
    options: {},
    qL: {},
    OQ: {},
    PQ: {},
    PR: {},
    QR: {}
  };
  f.e.qg = f.BuryPoint.dic = {
    "AMap.event": {
      c: "ev",
      m: {
        addDomListener: "a",
        addListener: "b",
        addListenerOnce: "c",
        removeListener: "d",
        trigger: "e"
      }
    },
    AMap: {
      c: "aa",
      m: {
        convertFrom: "a"
      }
    },
    "AMap.Map": {
      c: "m",
      o: {
        view: "a",
        layers: "b",
        level: "c",
        center: "d",
        zooms: "e",
        lang: "f",
        cursor: "g",
        crs: "h",
        animateEnable: "i",
        isHotspot: "j",
        defaultLayer: "k",
        rotateEnable: "l",
        resizeEnable: "m",
        dragEnable: "n",
        zoomEnable: "o",
        doubleClickZoom: "p",
        keyboardEnable: "q",
        jogEnable: "r",
        scrollWheel: "s",
        touchZoom: "t",
        mapStyle: "u",
        "features ": "v",
        zoom: "w"
      },
      m: {
        setMapStyle: "a",
        getMapStyle: "b",
        getFeatures: "c",
        setFeatures: "d",
        setLang: "e",
        getLang: "f",
        setCity: "g",
        getCity: "h",
        getAdcode: "i",
        setLimitBounds: "j",
        clearLimitBounds: "k",
        getLimitBounds: "l",
        setZoom: "m",
        getZoom: "n",
        getCenter: "o",
        setCenter: "p",
        setRotation: "q",
        getBounds: "r",
        getStatus: "s",
        setStatus: "t",
        getResolution: "u",
        getScale: "v",
        getDefaultCursor: "w",
        setDefaultCursor: "x",
        zoomIn: "y",
        zoomOut: "z",
        setZoomAndCenter: "0",
        setBounds: "1",
        clearMap: "2",
        destroy: "3",
        addControl: "4",
        removeControl: "5",
        clearControl: "6",
        clearInfoWindow: "7",
        remove: "8",
        add: "9",
        getAllOverlays: "a1",
        getSize: "a2",
        getContainer: "a3",
        panTo: "a4",
        panBy: "a5",
        setFitView: "a6",
        setLayers: "a7",
        getLayers: "a8",
        getDefaultLayer: "a9",
        setDefaultLayer: "a0",
        pixelToLngLat: "b0",
        lnglatToPixel: "b1",
        drawPolyline: "b2",
        drawPolygon: "b3",
        drawCircle: "b4"
      }
    },
    "AMap.View2D": {
      c: "v",
      o: {
        center: "a",
        rotation: "b",
        zoom: "c",
        crs: "d"
      }
    },
    "AMap.Buildings": {
      p: "AMap.Layer",
      c: "b"
    },
    "AMap.CustomLayer": {
      p: "AMap.Layer",
      c: "c",
      o: {
        map: "a",
        zIndex: "b",
        opacity: "c",
        zooms: "d"
      },
      m: {
        setOpacity: "2a",
        getContainer: "2b",
        show: "2c",
        hide: "2d",
        setzIndex: "2e"
      }
    },
    "AMap.ImageLayer": {
      p: "AMap.Layer",
      c: "i",
      o: {
        bounds: "a",
        url: "b",
        map: "c",
        opacity: "d",
        visible: "e",
        zIndex: "f",
        zooms: "g"
      },
      m: {
        getMap: "4a",
        show: "4b",
        getOpacity: "4c",
        setOpacity: "4d",
        getBounds: "4e",
        setBounds: "4f",
        getImageUrl: "4g",
        setImageUrl: "4h",
        hide: "4i",
        setOptions: "4j",
        getOptions: "4k"
      }
    },
    "AMap.Layer": {
      c: "l",
      m: {
        getZooms: "a",
        setOpacity: "b",
        show: "c",
        hide: "d",
        setMap: "e",
        getMap: "f",
        setzIndex: "g"
      }
    },
    "AMap.MassMarks": {
      p: "AMap.Layer",
      c: "ma",
      o: {
        zIndex: "a",
        opacity: "b",
        zooms: "c",
        anchor: "d",
        url: "e",
        size: "f",
        cursor: "g",
        alwaysRender: "h"
      },
      m: {
        setData: "0a",
        getData: "0b",
        getStyle: "0c",
        setStyle: "0d",
        setMap: "0e"
      }
    },
    "AMap.TileLayer": {
      p: "AMap.Layer",
      c: "tl",
      o: {
        map: "a",
        tileSize: "b",
        tileUrl: "c",
        errorUrl: "d",
        getTileUrl: "e",
        zIndex: "f",
        opacity: "g",
        zooms: "h",
        detectRetina: "i"
      },
      m: {
        setTextIndex: "3a",
        getTiles: "3b",
        setTileUrl: "3d",
        getTileUrl: "3e",
        getZooms: "3f",
        stopRefresh: "3g",
        startRefresh: "3h",
        reload: "3i"
      }
    },
    "AMap.TileLayer.Satellite": {
      p: "AMap.TileLayer",
      c: "s",
      o: {
        map: "a",
        zIndex: "b",
        opacity: "c",
        zooms: "d",
        detectRetina: "e"
      }
    },
    "AMap.TileLayer.RoadNet": {
      p: "AMap.TileLayer",
      c: "r",
      o: {
        map: "a",
        zIndex: "b",
        opacity: "c",
        zooms: "d",
        detectRetina: "e"
      }
    },
    "AMap.TileLayer.Traffic": {
      p: "AMap.TileLayer",
      c: "t",
      o: {
        map: "a",
        zIndex: "b",
        opacity: "c",
        zooms: "d",
        detectRetina: "e",
        autoRefresh: "f",
        interval: "g"
      }
    },
    "AMap.LayerGroup": {
      p: "AMap.Overlay",
      c: "LayerGroup",
      o: {}
    },
    "AMap.OverlayGroup": {
      p: "AMap.Overlay",
      c: "OverlayGroup",
      o: {}
    },
    "AMap.Vector": {
      p: "AMap.Overlay",
      c: "v",
      m: {
        show: "4a",
        hide: "4b",
        getVisible: "4c",
        getOptions: "4d",
        setOptions: "4e",
        setDraggable: "4f"
      }
    },
    "AMap.VectorTile": {
      p: "AMap.Layer",
      c: "vt"
    },
    "AMap.CircleMarker": {
      p: "AMap.Circle",
      c: "CircleMarker"
    },
    "AMap.Circle": {
      p: "AMap.Vector",
      c: "ci",
      o: {
        map: "a",
        zIndex: "b",
        center: "c",
        radius: "d",
        strokeColor: "e",
        strokeOpacity: "f",
        strokeWeight: "g",
        fillColor: "h",
        fillOpacity: "i",
        strokeStyle: "j",
        extData: "k",
        strokeDasharray: "l"
      },
      m: {
        setCenter: "8a",
        getCenter: "8b",
        setRadius: "8c",
        getRadius: "8d",
        contains: "8e"
      }
    },
    "AMap.Ellipse": {
      p: "AMap.Vector",
      c: "ei",
      o: {
        map: "a",
        zIndex: "b",
        center: "c",
        radius: "d",
        strokeColor: "e",
        strokeOpacity: "f",
        strokeWeight: "g",
        fillColor: "h",
        fillOpacity: "i",
        strokeStyle: "j",
        extData: "k",
        strokeDasharray: "l"
      },
      m: {
        setCenter: "8a",
        getCenter: "8b",
        setRadius: "8c",
        getRadius: "8d",
        contains: "8e"
      }
    },
    "AMap.Rectangle": {
      p: "AMap.Vector",
      c: "ra",
      o: {
        map: "a",
        zIndex: "b",
        center: "c",
        radius: "d",
        strokeColor: "e",
        strokeOpacity: "f",
        strokeWeight: "g",
        fillColor: "h",
        fillOpacity: "i",
        strokeStyle: "j",
        extData: "k",
        strokeDasharray: "l"
      },
      m: {
        setCenter: "8a",
        getCenter: "8b",
        setRadius: "8c",
        getRadius: "8d",
        contains: "8e"
      }
    },
    "AMap.ContextMenu": {
      p: "AMap.Overlay",
      c: "cm",
      o: {
        position: "a",
        content: "b",
        width: "c"
      },
      m: {
        addItem: "2a",
        removeItem: "2b",
        open: "2c",
        close: "2d"
      }
    },
    "AMap.GroundImage": {
      p: "AMap.ImageLayer",
      c: "g",
      o: {
        map: "a",
        clickable: "b",
        opacity: "c"
      },
      m: {
        setMap: "8a"
      }
    },
    "AMap.Icon": {
      c: "ic",
      o: {
        size: "a",
        imageOffset: "b",
        image: "c",
        imageSize: "c"
      },
      m: {
        setImageSize: "a",
        getImageSize: "b"
      }
    },
    "AMap.ImageMarker": {
      p: "AMap.Overlay",
      c: "im",
      m: {
        setPosition: "3a",
        getBounds: "3b",
        getPosition: "3c",
        hide: "3d",
        show: "3e",
        setCursor: "3f",
        setRotation: "3g",
        setzIndex: "3h"
      }
    },
    "AMap.InfoWindow": {
      p: "AMap.Overlay",
      c: "iw",
      o: {
        isCustom: "a",
        autoMove: "b",
        closeWhenClickMap: "c",
        content: "d",
        size: "e",
        offset: "f",
        position: "g",
        showShadow: "h"
      },
      m: {
        open: "1a",
        close: "1b",
        setContent: "1c",
        getContentU: "1d",
        getContent: "1e",
        setPosition: "1f",
        setOffset: "1g",
        getPosition: "1h",
        setSize: "1i",
        getSize: "1j",
        getIsOpen: "1k"
      }
    },
    "AMap.Marker": {
      p: "AMap.Overlay",
      c: "mk",
      o: {
        map: "a",
        position: "b",
        offset: "c",
        icon: "d",
        content: "e",
        topWhenClick: "f",
        topWhenMouseOver: "g",
        draggable: "h",
        raiseOnDrag: "j",
        cursor: "k",
        visible: "l",
        zIndex: "m",
        angle: "n",
        autoRotation: "o",
        animation: "p",
        shadow: "q",
        title: "r",
        clickable: "s",
        shape: "t",
        extData: "u"
      },
      m: {
        setRaiseOnDrag: "9a",
        setPosition: "9b",
        getPosition: "9c",
        setIcon: "9d",
        getIcon: "9e",
        setContent: "9f",
        getContent: "9g",
        hide: "9h",
        show: "9i",
        setCursor: "9j",
        setRotation: "9k",
        setAngle: "9l",
        getAngle: "9m",
        setOffset: "9n",
        getOffset: "9o",
        setzIndex: "9p",
        setOpacity: "9q",
        setDraggable: "9r",
        getDraggable: "9s",
        moveTo: "9t",
        moveAlong: "9u",
        stopMove: "9v",
        setShadow: "9w",
        getShadow: "9x",
        setClickable: "9y",
        getClickable: "9z",
        setTitle: "90",
        getTitle: "91",
        setLabel: "92",
        getLabel: "93",
        setTop: "94",
        getTop: "95",
        setShape: "96",
        getShape: "97",
        setAnimation: "98",
        getAnimation: "99",
        getMap: "9a1"
      }
    },
    "AMap.MarkerShape": {
      c: "ms",
      o: {
        coords: "a",
        type: "b"
      }
    },
    "AMap.Overlay": {
      c: "o",
      m: {
        show: "a",
        hide: "b",
        setMap: "c",
        getMap: "d",
        setExtData: "e",
        getExtData: "f"
      }
    },
    "AMap.Poly": {
      p: "AMap.Vector",
      c: "ly",
      m: {
        setPath: "5a",
        getPath: "5b"
      }
    },
    "AMap.Polygon": {
      p: "AMap.Poly",
      c: "gn",
      o: {
        map: "a",
        zIndex: "b",
        path: "c",
        strokeColor: "d",
        strokeOpacity: "e",
        strokeWeight: "f",
        fillColor: "g",
        fillOpacity: "h",
        extData: "i",
        strokeStyle: "j",
        strokeDasharray: "k"
      },
      m: {
        getArea: "6a",
        toString: "6b",
        contains: "6c"
      }
    },
    "AMap.Polyline": {
      p: "AMap.Poly",
      c: "le",
      o: {
        map: "a",
        zIndex: "b",
        geodesic: "c",
        isOutline: "d",
        outlineColor: "e",
        path: "f",
        strokeColor: "g",
        strokeOpacity: "h",
        strokeWeight: "i",
        strokeStyle: "j",
        strokeDasharray: "k",
        extData: "l"
      },
      m: {
        getLength: "7a"
      }
    },
    "AMap.Text": {
      p: "AMap.Overlay"
    },
    "AMap.Panorama": {
      c: "aa"
    },
    "AMap.PanoramaMarker": {
      c: "ar"
    },
    "AMap.PanoramaService": {
      c: "ae"
    },
    "AMap.AdvancedInfoWindow": {
      p: "AMap.InfoWindow",
      c: "pa",
      o: {
        autoMove: "a",
        closeWhenClickMap: "b",
        content: "c",
        offset: "d",
        position: "e",
        panel: "f",
        searchRadius: "g",
        placeSearch: "h",
        driving: "i",
        walking: "j",
        transit: "k",
        asOrigin: "l",
        asDestination: "m"
      },
      m: {
        clear: "aa",
        searchPoiByKeyWord: "ab"
      }
    },
    "AMap.AntiCrabFrame": {
      c: "pb",
      m: {
        setMapStyle: "a"
      }
    },
    "AMap.ArrivalRange": {
      c: "pc",
      m: {
        search: "a"
      }
    },
    "AMap.Autocomplete": {
      c: "pd",
      o: {
        type: "a",
        city: "b",
        input: "c"
      },
      m: {
        setType: "a",
        setCity: "b",
        search: "c"
      }
    },
    "AMap.AutoPanby": {
      c: "pe"
    },
    "AMap.CircleEditor": {
      c: "pf",
      m: {
        open: "a",
        close: "b"
      }
    },
    "AMap.EllipseEditor": {
      c: "pfa",
      m: {
        open: "a",
        close: "b"
      }
    },
    "AMap.RectangleEditor": {
      c: "pfb",
      m: {
        open: "a",
        close: "b"
      }
    },
    "AMap.CitySearch": {
      c: "pg",
      m: {
        getLocalCity: "a",
        getCityByIp: "b"
      }
    },
    "AMap.CloudDataLayer": {
      c: "ph",
      o: {
        map: "a",
        query: "b",
        clickable: "c"
      },
      m: {
        reload: "a",
        setMap: "b",
        getMap: "c",
        setOptions: "d",
        wrapUrl: "e"
      }
    },
    "AMap.CloudDataSearch": {
      c: "pi",
      o: {
        keywords: "a",
        filter: "b",
        orderBy: "c",
        pageSize: "d",
        pageIndex: "e"
      },
      m: {
        setOptions: "a",
        clear: "b",
        setPageIndex: "c",
        setPageSize: "d",
        searchNearBy: "e",
        searchById: "f",
        searchByDistrict: "g",
        searchInPolygon: "h"
      }
    },
    "AMap.CloudDataSearchRender": {
      c: "pj"
    },
    "AMap.DistrictSearch": {
      c: "pk",
      o: {
        level: "a",
        extensions: "b",
        subdistrict: "c"
      },
      m: {
        setLevel: "a",
        setExtensions: "b",
        setSubdistrict: "c",
        search: "d"
      }
    },
    "AMap.DragRoute": {
      c: "pl",
      o: {
        polyOptions: "a",
        startMarkerOptions: "b",
        midMarkerOptions: "c",
        endMarkerOptions: "d",
        showTraffic: "e"
      },
      m: {
        setAvoidPolygons: "a",
        clearAvoidPolygons: "b",
        getAvoidPolygons: "c",
        setAvoidRoad: "d",
        clearAvoidRoad: "e",
        getAvoidRoad: "f",
        search: "g",
        setPolicy: "h",
        showRoute: "i",
        close: "j",
        open: "k",
        getWays: "l",
        getRoute: "m",
        destroy: "n",
        getPolyline: "o",
        getStart: "p",
        getEnd: "q",
        getPoint: "r",
        getRoutes: "s"
      }
    },
    "AMap.Driving": {
      c: "pm",
      o: {
        policy: "a",
        extensions: "b",
        map: "c",
        panel: "d",
        hideMarkers: "e"
      },
      m: {
        clear: "a",
        search: "b",
        setAvoidPolygons: "c",
        clearAvoidPolygons: "d",
        getAvoidPolygons: "e",
        setAvoidRoad: "f",
        clearAvoidRoad: "g",
        getAvoidRoad: "h",
        setPolicy: "i",
        setLocation: "j",
        close: "k",
        open: "l"
      }
    },
    "AMap.DrivingRender": {
      c: "pp"
    },
    "AMap.Geocoder": {
      c: "pq",
      o: {
        city: "a",
        radius: "b",
        extensions: "c"
      },
      m: {
        getLocation: "a",
        setCity: "b",
        getAddress: "c"
      }
    },
    "AMap.Geolocation": {
      c: "pr",
      o: {
        enableHighAccuracy: "a",
        timeout: "b",
        maximumAge: "c",
        convert: "d",
        showButton: "e",
        buttonDom: "f",
        buttonPosition: "g",
        buttonOffset: "h",
        showMarker: "i",
        markerOptions: "j",
        showCircle: "k",
        circleOptions: "l",
        panToLocation: "m",
        zoomToAccuracy: "n",
        useNative: "o"
      },
      m: {
        isSupported: "a",
        getCurrentPosition: "b",
        watchPosition: "c",
        clearWatch: "d"
      }
    },
    "AMap.GetLL": {
      c: "ps"
    },
    "AMap.Heatmap": {
      c: "pt",
      o: {
        radius: "a",
        gradient: "b",
        opacity: "c",
        zooms: "d"
      },
      m: {
        setOptions: "a",
        getOptions: "b",
        setDataSet: "c",
        getDataSet: "d",
        addDataPoint: "e",
        setMap: "f",
        hide: "g",
        show: "h",
        getMap: "i",
        setzIndex: "j",
        getzIndex: "k"
      }
    },
    "AMap.HotSpot": {
      c: "pu",
      m: {
        setMap: "a"
      }
    },
    "AMap.LineSearch": {
      c: "pv",
      o: {
        pageIndex: "a",
        pageSize: "b",
        city: "c",
        extensions: "d"
      },
      m: {
        setPageIndex: "a",
        setPageSize: "b",
        setCity: "c",
        searchById: "d",
        search: "e"
      }
    },
    "AMap.MapType": {
      c: "pw",
      m: {
        hide: "a",
        show: "b"
      }
    },
    "AMap.Cluster": {
      c: "px"
    },
    "AMap.MarkerClusterer": {
      c: "py",
      o: {
        gridSize: "a",
        minClusterSize: "b",
        maxZoom: "c",
        averageCenter: "d",
        styles: "e",
        zoomOnClick: "f"
      },
      m: {
        disperse: "a",
        addMarker: "b",
        addMarkers: "c",
        removeMarker: "d",
        removeMarkers: "e",
        clearMarkers: "f",
        getClustersCount: "g",
        getMap: "h",
        setMap: "i",
        getMarkers: "j",
        setMarkers: "k",
        getGridSize: "l",
        setGridSize: "m",
        getMinClusterSize: "n",
        setMinClusterSize: "o",
        getMaxZoom: "p",
        setMaxZoom: "q",
        isAverageCenter: "r",
        setAverageCenter: "s",
        getStyles: "t",
        setStyles: "u"
      }
    },
    "AMap.MouseTool": {
      c: "pz",
      m: {
        marker: "a",
        polyline: "b",
        polygon: "c",
        rectangle: "d",
        circle: "e",
        rule: "f",
        measureArea: "g",
        rectZoomIn: "h",
        rectZoomOut: "i",
        close: "j"
      }
    },
    "AMap.WebGLTool": {
      c: "pz",
      m: {
        parse: "a"
      }
    },
    "AMap.OverView": {
      c: "p0",
      o: {
        tileLayer: "a",
        isOpen: "b",
        visible: "c"
      },
      m: {
        open: "a",
        close: "b",
        getTileLayer: "c",
        setTileLayer: "d",
        show: "e",
        hide: "f"
      }
    },
    "AMap.PlaceSearch": {
      c: "p1",
      o: {
        city: "a",
        type: "b",
        lang: "c",
        pageSize: "d",
        pageIndex: "e",
        extensions: "f",
        map: "g",
        panel: "h"
      },
      m: {
        clear: "a",
        setLang: "b",
        searchInBounds: "c",
        searchNearBy: "d",
        getDetails: "e",
        setType: "f",
        setPageIndex: "g",
        setPageSize: "h",
        setCity: "i",
        close: "j",
        open: "k"
      }
    },
    "AMap.PlaceSearchLayer": {
      c: "p2",
      o: {
        map: "a",
        keywords: "b"
      },
      m: {
        setMap: "a",
        setKeywords: "b"
      }
    },
    "AMap.PlaceSearchRender": {
      c: "p3"
    },
    "AMap.PolyEditor": {
      c: "p4",
      m: {
        open: "a",
        close: "b"
      }
    },
    "AMap.RangingTool": {
      c: "p5",
      o: {
        startMarkerOptions: "a",
        midMarkerOptions: "b",
        endMarkerOptions: "c",
        lineOptions: "d",
        tmpLineOptions: "e",
        startLabelText: "f",
        midLabelText: "g",
        endLabelText: "h",
        startLabelOffset: "i",
        midLabelOffset: "j",
        endLabelOffset: "k"
      },
      m: {
        turnOn: "a",
        turnOff: "b"
      }
    },
    "AMap.RoadInfoSearch": {
      c: "p6",
      o: {
        pageIndex: "a",
        pageSize: "b",
        city: "c"
      },
      m: {
        setPageIndex: "a",
        setPageSize: "b",
        setCity: "c",
        roadInfoSearchByRoadId: "d",
        roadInfoSearchByRoadName: "e",
        crossInfoSearchByCrossId: "f",
        crossInfoSearchByRoadName: "g"
      }
    },
    "AMap.Scale": {
      c: "p7",
      m: {
        show: "a",
        hide: "b"
      }
    },
    "AMap.StationSearch": {
      c: "p8",
      o: {
        pageIndex: "a",
        pageSize: "b",
        city: "c"
      },
      m: {
        setPageIndex: "a",
        setPageSize: "b",
        setCity: "c",
        searchById: "d",
        search: "e"
      }
    },
    "AMap.ControlBar": {},
    "AMap.ToolBar": {
      c: "p9",
      o: {
        offset: "a",
        ruler: "b",
        direction: "c",
        autoPosition: "d",
        locationMarker: "e",
        useNative: "f"
      },
      m: {
        getOffset: "a",
        setOffset: "b",
        hideRuler: "c",
        showRuler: "d",
        hideDirection: "e",
        showDirection: "f",
        hideLocation: "g",
        showLocation: "h",
        hide: "i",
        show: "j",
        doLocation: "k",
        getLocation: "l"
      }
    },
    "AMap.Transfer": {
      c: "1",
      o: {
        city: "a",
        policy: "b",
        nightflag: "c",
        cityd: "d",
        extensions: "e",
        map: "f",
        panel: "g",
        hideMarkers: "h"
      },
      m: {
        clear: "a",
        search: "b",
        leaveAt: "c",
        setPolicy: "d",
        setCity: "e",
        setCityd: "f",
        close: "g",
        open: "h"
      }
    },
    "AMap.TransferRender": {
      c: "2"
    },
    "AMap.UTFGrid": {
      c: "3",
      m: {
        setMap: "a"
      }
    },
    "AMap.Walking": {
      c: "4",
      o: {
        map: "a",
        panel: "b",
        hideMarkers: "c"
      },
      m: {
        clear: "a",
        search: "b",
        close: "c",
        open: "d"
      }
    },
    "AMap.WalkingRender": {
      c: "5"
    },
    "AMap.Weather": {
      c: "6",
      m: {
        getLive: "a",
        getForecast: "b"
      }
    },
    "AMap.IndoorMap": {
      p: "AMap.CustomLayer",
      c: "7",
      o: {
        alwaysShow: "9a"
      },
      m: {
        showIndoorMap: "9a",
        showFloor: "9b",
        showFloorBar: "9c",
        hideFloorBar: "9d",
        hideLabels: "9e",
        showLabels: "9f",
        getSelectedBuildingId: "9g",
        getSelectedBuilding: "9h",
        setSelectedBuildingId: "9i",
        getVisibleBuildingIds: "9j"
      }
    },
    "AMap.Riding": {
      c: "prd",
      o: {
        map: "a",
        panel: "b",
        policy: "c"
      },
      m: {
        clear: "a",
        search: "b",
        close: "c",
        open: "d",
        setPolicy: "e"
      }
    },
    "AMap.RidingRender": {
      c: "prdr"
    },
    "AMap.BezierCurve": {
      p: "AMap.Polyline",
      c: "AMap.BezierCurve",
      o: {
        tolerance: "tolerance",
        interpolateNumLimit: "interpolateNumLimit"
      }
    },
    "AMap.BezierCurveEditor": {
      c: "AMap.BezierCurveEditor",
      o: {
        getMarkerOptions: "getMarkerOptions",
        getCtrlLineOptions: "getCtrlLineOptions"
      }
    },
    "AMap.GeometryUtil": {
      c: "AMap.GeometryUtil"
    },
    "AMap.GeoJSON": {
      c: "AMap.GeoJSON"
    }
  };
  f.e.dca = f.BuryPoint.getMethodName = function (a, b) {
    if (!this.qg[a]) return b;
    var c;
    for (c = this.qg[a].m && this.qg[a].m[b]; !c && this.qg[a].p;) {
      var d = this.qg[a].p;
      c = this.qg[d].m && this.qg[d].m[b];
      a = d
    }
    c || (c = b);
    return c
  };
  f.e.add = f.BuryPoint.add = function (a, b, c) {
    var d;
    if (d = this.qg[a] ? this.qg[a].c : a) {
      if (b) {
        a = this.dca(a, b);
        if (!a) return;
        d += "," + a
      }
      this.OW[d] = 1;
      c && (this.ZK[d] = c)
    }
  };
  f.e.cb = f.BuryPoint.addOptions = function (a, b) {
    var c = "",
      c = this.qg[a] ? this.qg[a].c : a,
      d, e;
    for (e in b) if (b.hasOwnProperty(e)) {
      var g;
      this.qg[a] && this.qg[a].o && (g = this.qg[a].o[e]);
      g || (g = e);
      d = c + "," + g;
      this.options[d] = 1
    }
    "AMap.Map" === a && this.N0(a, b, ["mapStyle", "lang", "renderer", "zoom"])
  };
  f.e.N0 = f.BuryPoint._addOptionsValue = function (a, b, c) {
    for (var d = 0, e, g; d < c.length; d++) e = c[d], b && b[e] && (g = {}, g[e] = b[e], this.B9(a, g))
  };
  f.e.B9 = f.BuryPoint.addOptionsValue = function (a, b) {
    var c = this.qg[a].c,
      d, e;
    for (e in b) b.hasOwnProperty(e) && ((d = this.qg[a].o && this.qg[a].o[e]) || (d = e), d = c + "," + d, this.qL[d] = b[e])
  };
  f.e.send = f.BuryPoint.send = function () {
    var a = [],
      b = [],
      c = [],
      d = [],
      e = f.e,
      g;
    for (g in e.OW) 1 !== e.OQ[g] && a.push(g);
    for (g in e.ZK) 1 !== e.PQ[g] && b.push(g + "=" + e.ZK[g]);
    for (g in e.options) 1 !== e.PR[g] && c.push(g);
    for (g in e.qL) 1 !== e.QR[g] && d.push(g + "=" + e.qL[g]);
    if (0 < a.length || 0 < b.length || 0 < c.length || 0 < d.length) g = ["type=f", "k=" + f.A.key, "u=" + f.A.jo, "m=" + (f.l.Z ? 1 : 0), "pf=" + f.l.wr, "methods=" + a.join("@"), "methodsParams=" + b.join("@"), "options=" + c.join("@"), "optionsValue=" + d.join("@")], new f.Sa.bb(f.A.Qb + "://10.56.28.228/webapi.amap.com/count?" + g.join("&")), e.clear(a, b, c, d);
    window.setTimeout(e.send, 1E4)
  };
  f.e.clear = f.BuryPoint.clear = function (a, b, c, d) {
    for (var e = 0; e < a.length; e++) this.OQ[a[e]] = 1;
    for (e = 0; e < b.length; e++) this.PQ[b[e].split("=")[0]] = 1;
    for (e = 0; e < c.length; e++) this.PR[c[e]] = 1;
    for (e = 0; e < d.length; e++) this.QR[d[e].split("=")[0]] = 1
  };
  window.setTimeout(f.e.send, 1E4);
  f.ba = function () { };
  f.ba.extend = f.ba.extend = function (a) {
    function b() { }
    function c() {
      var a = this.initialize || this.B;
      a && (a.apply(this, arguments), this.CLASS_NAME && f.e.add(this.CLASS_NAME));
      if (!d && this.ah) {
        a = document.createElement("style");
        a.setAttribute("type", "text/css");
        this.CLASS_NAME && a.setAttribute("class", this.CLASS_NAME);
        this.ah = this.ah.replace(/url\((['"]?)(?:\.\.\/)*/g, "url($1" + f.A.qb + "/");
        a.styleSheet ? a.styleSheet.cssText = this.ah : a.innerHTML = this.ah;
        for (var b = document.head || document.getElementsByTagName("head")[0], c = null, e = 0, g = b.childNodes.length; e < g; e++) if (1 === b.childNodes[e].nodeType) {
          c = b.childNodes[e];
          break
        }
        c ? b.insertBefore(a, c) : b.appendChild(a)
      }
      d = !0
    }
    var d = !1;
    b.prototype = this.prototype;
    var e = new b;
    e.constructor = c;
    c.prototype = e;
    c.prototype.Zk = c.prototype["super"] = function (a) {
      a.callee.oa.apply(this, a)
    };
    for (var g in this) this.hasOwnProperty(g) && "prototype" !== g && (c[g] = this[g]);
    a.WY && (f.extend(c, a.WY), a.WY = null);
    a.ga && (f.extend.apply(null, [e].concat(a.ga)), a.ga = null);
    a.F && e.F && (a.F = f.extend({}, e.F, a.F));
    var h = e.constructor.Sca,
      k = {};
    if (void 0 !== h) for (g in h) h.hasOwnProperty(g) && (k[h[g]] = g);
    for (g in a) if (Object.prototype.hasOwnProperty.call(a, g)) {
      var l = g,
        m = g;
      h && k[g] && (m = k[g]);
      "function" === typeof a[l] && "function" === typeof e[m] && (a[l].oa = e[m])
    }
    f.extend(e, a);
    a.toString && (e.toString = a.toString);
    c.qc = this.prototype;
    return c
  };
  f.ba.ob = f.ba.include = function (a) {
    f.extend(this.prototype, a)
  };
  f.extend = function (a) {
    var b = Array.prototype.slice.call(arguments, 1),
      c, d, e, g;
    d = 0;
    for (e = b.length; d < e; d += 1) for (c in g = b[d] || {}, g) Object.prototype.hasOwnProperty.call(g, c) && (a[c] = g[c]);
    return a
  };
  f.ba.Fk = function (a) {
    for (var b in a) if (a.hasOwnProperty(b)) {
      var c = a[b];
      if ("string" === typeof c) this.prototype[b] && (this.prototype[c] = this.prototype[b]);
      else for (var d = 0, e = c.length; d < e; d++) this.prototype[b] && (this.prototype[c[d]] = this.prototype[b])
    }
  };
  f.ka = {
    g: function (a, b, c, d, e) {
      if (this.Od(a, b, c || this)) return this;
      var g = this.ue = this.ue || {};
      g[a] = g[a] || [];
      e ? g[a].unshift({
        ib: b,
        je: c || this,
        Rj: d
      }) : g[a].push({
        ib: b,
        je: c || this,
        Rj: d
      });
      "complete" === a && this.wa && this.r(a);
      return this
    },
    Od: function (a, b, c) {
      var d = this.ue;
      if (b && c) {
        if (d && a in d && d[a]) for (var e = 0; e < d[a].length; e += 1) if (d[a][e].ib === b && d[a][e].je === c) return !0;
        return !1
      }
      return d && a in d && d[a] && 0 < d[a].length
    },
    I: function (a, b, c) {
      if (!this.Od(a)) return this;
      var d = this.ue;
      if (d && d[a]) for (var e = 0; e < d[a].length; e += 1) if (!(d[a][e].ib !== b && "mv" !== b || c && d[a][e].je !== c)) {
        d[a].splice(e, 1);
        d[a].length || (d[a] = null);
        break
      }
      return this
    },
    oD: function (a, b) {
      if (!this.Od(a)) return this;
      var c = this.ue;
      if (c && c[a]) for (var d = 0; d < c[a].length; d += 1) if (!b || c[a][d].je === b) {
        c[a].splice(d, 1);
        c[a].length || (c[a] = null);
        break
      }
      return this
    },
    r: function (a, b) {
      if (!this.Od(a)) return this;
      var c = {
        type: a
      };
      b || "string" !== typeof b && "number" !== typeof b && "boolean" !== typeof b ? f.a.$C(b) ? c.value = b : c = f.extend(c, b) : c.value = b;
      for (var d = [].concat(this.ue[a]), e = 0; e < d.length; e += 1) d[e].ib && (d[e].ib.call(d[e].je || this, c), d[e] && d[e].Rj && this.ue[a] && this.ue[a].splice(e, 1));
      return this
    },
    Uh: function (a) {
      a ? this.ue && this.ue[a] && (this.ue[a] = null) : this.ue = null;
      return this
    }
  };
  f.ka.on || (f.ka.on = f.ka.g);
  f.ka.off || (f.ka.off = f.ka.I);
  f.ka.emit || (f.ka.emit = f.ka.r);
  f.se = {
    set: function (a, b, c) {
      var d = this.hj;
      if (d && d[a]) {
        var d = d[a],
          e = "set" + this.wV(a);
        d[e] ? (d[e](b, c), c || this.HD(a, b)) : d.set(a, b, c)
      } else (this.Nh = this.Nh || {})[a] = b, c || this.HD(a, b)
    },
    wV: function (a) {
      return a.charAt(0).toUpperCase() + a.substr(1)
    },
    get: function (a, b, c) {
      var d, e = this.hj;
      d = "get" + this.wV(a);
      if (e && e[a]) return c = e[a], c[d] ? c[d](b) : c.get(a, b);
      if (this[d] && !c) return this[d](b);
      if (this.Nh && this.Nh.hasOwnProperty(a)) return this.Nh[a]
    },
    X: function (a, b, c) {
      this.hj || (this.hj = {});
      this.hj[a] !== b && (b.g(a, function (b) {
        this.HD(a, b)
      }, this), this.hj[a] = b, c || this.HD(a))
    },
    he: function (a, b, c) {
      for (var d = 0; d < a.length; d += 1) this.X(a[d], b, !c)
    },
    cj: function (a) {
      this.hj && this.hj[a] && (this.hj[a].I(a, "mv", this), this.hj[a] = void 0)
    },
    vp: function () {
      if (this.hj) for (var a in this.hj) this.hj.hasOwnProperty(a) && this.cj(a)
    },
    HD: function (a, b) {
      if (this[a + "Changed"]) this[a + "Changed"](b);
      else this.PT && this.PT();
      this.r(a, b)
    },
    Sla: function (a, b, c) {
      var d = new (f.ba.extend({
        ga: [f.ka, f.se]
      }));
      d.PT = function () {
        for (var b = !0, e = 0; e < a.length; e += 1) d.get(a[e]) || (b = !1);
        b && (d.vp(), c())
      };
      for (var e = 0; e < a.length; e += 1) d.X(a[e], b)
    },
    zg: function (a, b) {
      var c, d;
      for (c in a) a.hasOwnProperty(c) && (d = a[c], this.set(c, d, b))
    }
  };
  f.A = {
    localStorage: !0,
    MB: 500,
    od: !0,
    qd: {
      dark: "#202020",
      blue_night: "#090d20",
      test: "#033447",
      mapv: "#000001",
      techblue: "#000b11",
      insight: "#19212a",
      "default": "#fcf9f2"
    },
    pma: "dark light blue darkblue fresh grey midblue".split(" "),
    key: "8afbcd8006fcd36a22136ef20a12456a",
    Qb: "http",
    td: [115.423412, 39.442759, 117.514625, 41.060816, 116.405285, 39.904989],
    ud: "http://10.56.28.228/restapi.amap.com",
    //		qb: "http://webapi.amap.com",
    //TODO
    qb: offlineMap.baseUrl,
    zD: "http://gaode.com",
    mr: "http://m.amap.com",
    ly: "http://10.56.28.228/webrd0{1,2,3,4}.is.autonavi.com/appmaptile?lang=[lang]&size=1&scale=1&style=8&x=[x]&y=[y]&z=[z]",
    hD: "http://10.56.28.228/wprd0{1,2,3,4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x=[x]&y=[y]&z=[z]&scl=1&ltype=3",
    eM: "http://10.56.28.228/webst0{1,2,3,4}.is.autonavi.com/appmaptile?style=6&x=[x]&y=[y]&z=[z]",
    QD: "http://10.56.28.228/webst0{1,2,3,4}.is.autonavi.com/appmaptile?x=[x]&y=[y]&z=[z]&lang=zh_cn&size=1&scale=1&style=8",
    RD: "http://10.56.28.228/wprd0{1,2,3,4}.is.autonavi.com/appmaptile?x=[x]&y=[y]&z=[z]&lang=zh_cn&size=1&scl=1&style=8&ltype=11",
    Zy: "http://10.56.28.228/wprd0{1,2,3,4}.is.autonavi.com/appmaptile?lang=[lang]&size=1&style=7&x=[x]&y=[y]&z=[z]",
    wE: "http://10.56.28.228/vector.amap.com",
    //		av: "vdata.amap.com",
    //TODO
    av: offlineMap.baseUrl,
    lN: "ws"
  };

  function dc(a) {
    f.ba.Eq = a.Eq;
    f.l = a.l;
    f.mD = a.mD;
    f.pfa = a[7];
    a.l = null;
    f.A.qb = a[2].split(",")[0];
    f.A.Jh = a.Jh;
    f.A.iy = a.iy;
    var b = f.A.Qb = f.A.qb.split(":")[0];
    //TODO 设置成http协议
    b = f.A.Qb = 'http';
    "https" === b && (f.A.lN = "wss", f.A.ud = f.A.ud.replace("http", "https"), f.A.ly = f.A.ly.replace("http", "https"), f.A.hD = f.A.hD.replace("http", "https"), f.A.eM = f.A.eM.replace("http", "https"), f.A.QD = f.A.QD.replace("http", "https"), f.A.RD = f.A.RD.replace("http", "https"), f.A.Zy = f.A.Zy.replace("http", "https"), f.A.wE = f.A.wE.replace("http", "https"));
    var c = window.location.href;
    0 !== c.indexOf("http") && window.parent && window.parent !== window && (c = window.parent.location.href);
    f.A.tba = c;
    c = encodeURIComponent(c);
    f.A.jo = c;
    f.A.Xg = f.A.qb + "extra/amap/theme/v1.3/markers/" + (f.l.cd ? "b" : "n");
    var d = document.createElement("style");
    d.type = "text/css";

    //		f.A.qaa = "url(" + b + "://webapi.amap.com/theme/v1.3/openhand.cur),default";
    //TODO
    f.A.qaa = "url(" + offlineMap.baseUrl + "extra/amap/theme/v1.3/openhand.cur),default";

    //		var e = ".amap-container{cursor:" + f.A.qaa + ";}.amap-drag{cursor:url(" + b + "://webapi.amap.com/theme/v1.3/closedhand.cur),default;}";
    //TODO
    var e = ".amap-container{cursor:" + f.A.qaa + ";}.amap-drag{cursor:url(" + offlineMap.baseUrl + "extra/amap/theme/v1.3/closedhand.cur),default;}";
    d.styleSheet ? (b = function () {
      try {
        d.styleSheet.cssText = e
      } catch (a) { }
    }, d.styleSheet.disabled ? setTimeout(b, 10) : b()) : d.appendChild(document.createTextNode(e));
    (document.head || document.getElementsByTagName("head")[0]).appendChild(d);
    f.A.mode = Number(a[3]);
    f.A.td = a[1];
    f.A.key = a[0];
    f.A.lt = a[4];
    f.A.yc = a[5];
    f.A.r9 = a[6]
  }
  window.AMap && window.AMap.uE && window.AMap.uE.kF && window.AMap.uE.kF(dc);
  f.gk = {
    Cq: Math.PI / 180,
    Ffa: 180 / Math.PI,
    oJ: 6378137
  };
  (function () {
    function a(a) {
      return "undefined" === typeof a ? "" : a
    }
    f.Cg = {
      gca: function (b) {
        b.name = a(b.name);
        var c = [b.y, b.x, b.name];
        if (f.l.Z) {
          var d = [f.A.mr + "/callAPP?", "src=jsapi_q"];
          d.push("&ios=" + encodeURIComponent("viewMap?sourceApplication=jsapi_q&dev=0&poiname=" + b.name + "&lat=" + b.y + "&lon=" + b.x));
          d.push("&android=" + encodeURIComponent("androidamap?action=shorturl&q=" + c.join(",") + "&sourceApplication=jsapi_q"));
          d.push("&wp=" + encodeURIComponent("viewMap?sourceApplication=jsapi_q&dev=0&poiname=" + b.name + "&lat=" + b.y + "&lon=" + b.x));
          d.push("&mo=" + encodeURIComponent(f.A.mr + "?q=" + c.join(",") + "&callapp=0&sourceApplication=jsapi_q"));
          return d.join("")
        }
        return f.A.zD + "?q=" + c.join(",") + "&src=jsapi_q"
      },
      mV: function (b) {
        b.name = a(b.name);
        b.address = a(b.address);
        b.x = a(b.x);
        b.y = a(b.y);
        var c = [b.id, b.y, b.x, b.name, b.address];
        if (f.l.Z) {
          var d = [f.A.mr + "/callAPP?", "src=jsapi_p"];
          d.push("&ios=" + encodeURIComponent("multiPointShow?sourceApplication=jsapi_p&dev=0&q=" + [b.y, b.x, b.name, b.address, b.id].join() + "&title=" + b.name));
          d.push("&android=" + encodeURIComponent("androidamap?action=shorturl&p=" + c.join(",") + "&sourceApplication=jsapi_p"));
          d.push("&wp=" + encodeURIComponent("multiPointShow?sourceApplication=jsapi_p&dev=0&q=" + [b.y, b.x, b.name, b.address, b.id].join() + "&title=" + b.name));
          return d.join("")
        }
        return f.A.zD + "?p=" + c.join(",") + "&src=jsapi_p"
      },
      kV: function (b) {
        if (f.l.Z) {
          var c = [f.A.mr + "/callAPP?", "src=jsapi_detail"];
          c.push("&ios=" + encodeURIComponent("viewPOIDetail?sourceApplication=jsapi_detail&poiid=" + b.id));
          b.name = a(b.name);
          b.x = a(b.x);
          b.y = a(b.y);
          c.push("&android=" + encodeURIComponent("androidamap?action=openFeature&featureName=PoiDetail&poiid=" + b.id + "&poiname=" + b.name + "&x=" + b.x + "&y=" + b.y + "&sourceApplication=jsapi_detail"));
          c.push("&wp=" + encodeURIComponent("viewPOIDetail?sourceApplication=jsapi_detail&poiid=" + b.id));
          c.push("&mo=" + encodeURIComponent(f.A.mr + "/detail/index/poiid=" + b.id + "&sourceApplication=jsapi_detail"));
          return c.join("")
        }
        return f.A.zD + "/detail/" + b.id + "?src=jsapi_detail"
      },
      aK: function (b) {
        b.sname = a(b.sname);
        "" === b.sname && (b.sname = "\u8d77\u70b9");
        b.dname = a(b.dname);
        "" === b.dname && (b.dname = "\u7ec8\u70b9");
        b.mcount = a(b.mcount);
        b.my = a(b.my);
        b.mx = a(b.mx);
        b.mname = a(b.mname);
        var c = [b.sy, b.sx, b.sname, b.dy, b.dx, b.dname, b.m, b.t, b.mcount, b.my, b.mx, b.mname];
        if (f.l.Z) {
          var d = [f.A.mr + "/callAPP?", "src=jsapi_r_" + b.t];
          d.push("&ios=" + encodeURIComponent("path?sourceApplication=jsapi_r_" + b.t + "&dev=0&slat=" + b.sy + "&slon=" + b.sx + "&sname=" + b.sname + "&dlat=" + b.dy + "&dlon=" + b.dx + "&dname=" + b.dname + "&m=" + b.m + "&t=" + b.t + "&vian=0&vialons=&vialats=&vianames="));
          var e = b.t;
          0 === b.t ? e = 2 : 2 === b.t && (e = 4);
          d.push("&android=" + encodeURIComponent("androidamap://route?sourceApplication=jsapi_r_" + b.t + "&slat=" + b.sy + "&slon=" + b.sx + "&sname=" + b.sname + "&dlat=" + b.dy + "&dlon=" + b.dx + "&dname=" + b.dname + "&dev=0&" + b.m + "&t=" + e));
          d.push("&wp=" + encodeURIComponent("path?sourceApplication=jsapi_r_" + b.t + "&dev=0&slat=" + b.sy + "&slon=" + b.sx + "&sname=" + b.sname + "&dlat=" + b.dy + "&dlon=" + b.dx + "&dname=" + b.dname + "&m=" + b.m + "&t=" + b.t + "&vian=0&vialons=&vialats=&vianames="));
          d.push("&mo=" + encodeURIComponent(f.A.mr + "/?r=" + c.join(",") + "&callapp=0&sourceApplication=jsapi_r_" + b.t));
          return d.join("")
        }
        return f.A.zD + "?r=" + c.join(",") + "src=jsapi_r_" + b.t
      },
      qp: function (a) {
        f.l.Z ? window.location.href = a : window.open(a)
      }
    }
  })();
  "function" !== typeof Object.keys && (Object.keys = function (a) {
    var b = [],
      c;
    for (c in a) a.hasOwnProperty(c) && b.push(c);
    return b
  });
  f.a = {
    eE: [],
    fb: 268435456,
    Tk: [215440491, 106744817],
    Fx: {
      start: function (a) {
        a.startTime = new Date;
        a.rZ = [];
        var b = (new Date).getTime();
        a.id = requestAnimationFrame(function d() {
          var e = (new Date).getTime();
          a.rZ.push(e - b);
          b = e;
          a.id = requestAnimationFrame(d)
        })
      },
      cancel: function (a) {
        a.id && cancelAnimationFrame(a.id)
      },
      stop: function (a) {
        a.eaa = new Date - a.startTime;
        this.cancel(a);
        a.Fx = Math.round(1E3 / (a.eaa / (a.rZ.length + 1)))
      }
    },
    SJ: function (a) {
      var b = {};
      if (f.a.Kl(a, "object")) for (var c in a) a.hasOwnProperty(c) && (b[a[c]] = c);
      return b
    },
    create: "function" === typeof Object.create ? Object.create : function (a, b) {
      function c() { }
      c.prototype = a;
      var d = new c,
        e;
      for (e in b) b.hasOwnProperty(e) && (d[e] = b[e]);
      return d
    },
    Ab: function (a) {
      if ("object" === typeof a && null !== a) {
        if (a.pr || this.Kl(a, "Float32Array") || this.Kl(a, "Uint16Array")) return a;
        var b = this.isArray(a) ? [] : {},
          c;
        for (c in a) a.hasOwnProperty(c) && (b[c] = f.a.Ab(a[c]));
        return b
      }
      return a
    },
    eW: function (a) {
      return (a | 0) === a
    },
    Wga: "function" === typeof Object.setPrototypeOf ? Object.setPrototypeOf : function (a, b) {
      for (var c in b) a[c] = b[c]
    },
    Ml: function (a) {
      return "function" === typeof a
    },
    bp: function () { },
    keys: function (a) {
      if ("function" === typeof Object.keys) return Object.keys(a);
      var b = [],
        c;
      for (c in a) a.hasOwnProperty(c) && b.push(c);
      return b
    },
    map: function (a, b) {
      var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null,
        d = [];
      if (a && a.length) f.a.Ib(a, function () {
        for (var e = arguments.length, g = Array(e), h = 0; h < e; h++) g[h] = arguments[h];
        d[g[1]] = b.apply(c || a, g)
      });
      else return a;
      return d
    },
    Ib: function (a, b) {
      var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;
      if (a && a.length)
        for (var d = 0, e = a.length; d < e && !1 !== b.call(c, a[d], d, a); d++);
    },
    find: function (a, b) {
      for (var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null, d = 0, e = a.length; d < e; d++) if ("function" === typeof b) {
        if (b.call(c, a[d], d, a)) return a[d]
      } else if (a[d] === b) return a[d];
      return null
    },
    $C: function (a) {
      return "object" === typeof HTMLElement ? a instanceof HTMLElement : a && "object" === typeof a && 1 === a.nodeType && "string" === typeof a.nodeName
    },
    Ur: function (a, b) {
      var c = "ASDFGHJKLQWERTYUIO!sdfghjkleiu3~yr5-P&mq9`%zCN*b=8@^xpVM",
        d, e;
      "v5" < (b || "v5") ? (d = c.length, e = 512) : (d = 27, c = c.substr(0, 27), e = 333);
      var g, h, k, l, m;
      h = [];
      k = NaN;
      l = 0;
      for (m = a.length; l < m; l++) g = a[l], g = c.indexOf(g), isNaN(k) ? k = g * d : (h.push(k + g - e), k = NaN);
      return h
    },
    Fga: function (a, b) {
      for (var c = 1, c = 512 < b.length ? Math.round(Math.pow(b.length, 0.5)) : b.length, d = Math.ceil(b.length / c), e = 0; e < d; e += 1) {
        var g = c * e,
          h = g + c;
        h > b.length && (h = b.length);
        for (; g < h; g += 1) a(b[g])
      }
    },
    S$: function (a) {
      if (/^rgba\(/.test(a)) return this.Dr(a);
      var b = a = this.dC(a);
      "#" === a[0] && (a = a.substring(1), 3 === a.length && (a = a.replace(/./g, function (a) {
        return a + a
      })), b = this.Vf(8 === a.length ? a : "ff" + a));
      return this.Dr(b)
    },
    dC: function (a) {
      var b = {
        aliceblue: "#f0f8ff",
        antiquewhite: "#faebd7",
        aqua: "#00ffff",
        aquamarine: "#7fffd4",
        azure: "#f0ffff",
        beige: "#f5f5dc",
        bisque: "#ffe4c4",
        black: "#000000",
        blanchedalmond: "#ffebcd",
        blue: "#0000ff",
        blueviolet: "#8a2be2",
        brown: "#a52a2a",
        burlywood: "#deb887",
        cadetblue: "#5f9ea0",
        chartreuse: "#7fff00",
        chocolate: "#d2691e",
        coral: "#ff7f50",
        cornflowerblue: "#6495ed",
        cornsilk: "#fff8dc",
        crimson: "#dc143c",
        cyan: "#00ffff",
        darkblue: "#00008b",
        darkcyan: "#008b8b",
        darkgoldenrod: "#b8860b",
        darkgray: "#a9a9a9",
        darkgreen: "#006400",
        darkkhaki: "#bdb76b",
        darkmagenta: "#8b008b",
        darkolivegreen: "#556b2f",
        darkorange: "#ff8c00",
        darkorchid: "#9932cc",
        darkred: "#8b0000",
        darksalmon: "#e9967a",
        darkseagreen: "#8fbc8f",
        darkslateblue: "#483d8b",
        darkslategray: "#2f4f4f",
        darkturquoise: "#00ced1",
        darkviolet: "#9400d3",
        deeppink: "#ff1493",
        deepskyblue: "#00bfff",
        dimgray: "#696969",
        dodgerblue: "#1e90ff",
        firebrick: "#b22222",
        floralwhite: "#fffaf0",
        forestgreen: "#228b22",
        fuchsia: "#ff00ff",
        gainsboro: "#dcdcdc",
        ghostwhite: "#f8f8ff",
        gold: "#ffd700",
        goldenrod: "#daa520",
        gray: "#808080",
        green: "#008000",
        greenyellow: "#adff2f",
        honeydew: "#f0fff0",
        hotpink: "#ff69b4",
        indianred: "#cd5c5c",
        indigo: "#4b0082",
        ivory: "#fffff0",
        khaki: "#f0e68c",
        lavender: "#e6e6fa",
        lavenderblush: "#fff0f5",
        lawngreen: "#7cfc00",
        lemonchiffon: "#fffacd",
        lightblue: "#add8e6",
        lightcoral: "#f08080",
        lightcyan: "#e0ffff",
        lightgoldenrodyellow: "#fafad2",
        lightgrey: "#d3d3d3",
        lightgreen: "#90ee90",
        lightpink: "#ffb6c1",
        lightsalmon: "#ffa07a",
        lightseagreen: "#20b2aa",
        lightskyblue: "#87cefa",
        lightslategray: "#778899",
        lightsteelblue: "#b0c4de",
        lightyellow: "#ffffe0",
        lime: "#00ff00",
        limegreen: "#32cd32",
        linen: "#faf0e6",
        magenta: "#ff00ff",
        maroon: "#800000",
        mediumaquamarine: "#66cdaa",
        mediumblue: "#0000cd",
        mediumorchid: "#ba55d3",
        mediumpurple: "#9370d8",
        mediumseagreen: "#3cb371",
        mediumslateblue: "#7b68ee",
        mediumspringgreen: "#00fa9a",
        mediumturquoise: "#48d1cc",
        mediumvioletred: "#c71585",
        midnightblue: "#191970",
        mintcream: "#f5fffa",
        mistyrose: "#ffe4e1",
        moccasin: "#ffe4b5",
        navajowhite: "#ffdead",
        navy: "#000080",
        oldlace: "#fdf5e6",
        olive: "#808000",
        olivedrab: "#6b8e23",
        orange: "#ffa500",
        orangered: "#ff4500",
        orchid: "#da70d6",
        palegoldenrod: "#eee8aa",
        palegreen: "#98fb98",
        paleturquoise: "#afeeee",
        palevioletred: "#d87093",
        papayawhip: "#ffefd5",
        peachpuff: "#ffdab9",
        peru: "#cd853f",
        pink: "#ffc0cb",
        plum: "#dda0dd",
        powderblue: "#b0e0e6",
        purple: "#800080",
        rebeccapurple: "#663399",
        red: "#ff0000",
        rosybrown: "#bc8f8f",
        royalblue: "#4169e1",
        saddlebrown: "#8b4513",
        salmon: "#fa8072",
        sandybrown: "#f4a460",
        seagreen: "#2e8b57",
        seashell: "#fff5ee",
        sienna: "#a0522d",
        silver: "#c0c0c0",
        skyblue: "#87ceeb",
        slateblue: "#6a5acd",
        slategray: "#708090",
        snow: "#fffafa",
        springgreen: "#00ff7f",
        steelblue: "#4682b4",
        tan: "#d2b48c",
        teal: "#008080",
        thistle: "#d8bfd8",
        tomato: "#ff6347",
        turquoise: "#40e0d0",
        violet: "#ee82ee",
        wheat: "#f5deb3",
        white: "#ffffff",
        whitesmoke: "#f5f5f5",
        yellow: "#ffff00",
        yellowgreen: "#9acd32"
      };
      return "string" === typeof a ? b[a.toLowerCase()] ? b[a.toLowerCase()] : a : a
    },
    tC: function (a, b, c) {
      var d, e;
      d = Math.floor(c / 2);
      e = c - d;
      d = (1 << d) - 1 << e;
      e = (1 << e) - 1;
      return [c, a & d | b & e, b & d | a & e]
    },
    uC: function (a) {
      return a ? encodeURIComponent(a) : ""
    },
    me: function (a, b, c, d) {
      c = a[b].i[c];
      if ("undefined" === typeof c) return null;
      a = a[b].s;
      if ("number" === typeof c) return a[c];
      for (;
        "undefined" === typeof c[d.toString()] && !(d -= 1, 3 > d););
      d = c[d.toString()];
      return "number" === typeof d ? a[d] : null
    },
    Dr: function (a) {
      a = a.split(",");
      a[0] = parseFloat(a[0].split("rgba(")[1]) / 255;
      a[1] = parseFloat(a[1]) / 255;
      a[2] = parseFloat(a[2]) / 255;
      a[3] = parseFloat(a[3]);
      return a
    },
    uga: function (a) {
      a = a.split(",");
      a[0] = parseFloat(a[0].split("rgb(")[1]) / 255;
      a[1] = parseFloat(a[1]) / 255;
      a[2] = parseFloat(a[2]) / 255;
      return a
    },
    cC: function (a) {
      if (a instanceof Array) return 3 == a.length && a.push(1), a;
      a = this.dC(a);
      if (0 == a.indexOf("#")) {
        if (7 == a.length) return this.Cr(a.substr(1));
        if (9 == a.length) return a = a.substr(1), this.rq(a.substr(6) + a.substr(0, 6))
      } else {
        if (0 == a.indexOf("rgb(")) return this.uga(a);
        if (0 == a.indexOf("rgba(")) return this.Dr(a)
      }
    },
    mY: function (a) {
      return f.a.Vf("ff" + a)
    },
    Vf: function (a) {
      for (var b = [], c = 0, d = a.length; c < d; c += 2) b.push(parseInt(a.substr(c, 2), 16));
      b.push((b.shift() / 255).toFixed(2));
      return "rgba(" + b.join(",") + ")"
    },
    Cr: function (a) {
      return f.a.rq("ff" + a)
    },
    rq: function (a) {
      for (var b = [], c = 0, d = a.length; c < d; c += 2) b.push(parseInt(a.substr(c, 2), 16) / 255);
      b.push(b.shift());
      return b
    },
    Oo: function (a) {
      for (var b in a) if (a.hasOwnProperty(b)) return !1;
      return !0
    },
    zl: function (a, b) {
      0 <= b && a.splice(b, 1);
      return a
    },
    Dt: function (a, b) {
      var c = f.a.indexOf(a, b);
      return f.a.zl(a, c)
    },
    filter: function (a, b) {
      var c = [];
      f.a.Ib(a, function (a, e) {
        b(a, e) && c.push(a)
      });
      return c
    },
    indexOf: function (a, b) {
      if (!a || !a.length) return -1;
      if (a.indexOf) return a.indexOf(b);
      for (var c = 0; c < a.length; c += 1) if (a[c] === b) return c;
      return -1
    },
    bind: function () {
      var a = !1;
      Function.prototype.bind && (a = !0);
      return function (b, c) {
        var d = 2 < arguments.length ? Array.prototype.slice.call(arguments, 2) : null;
        return a ? d ? (d.unshift(c), b.bind.apply(b, d)) : b.bind(c) : function () {
          return b.apply(c, d || arguments)
        }
      }
    }(),
    Bb: function (a, b) {
      b = b || {};
      a.F = f.extend({}, a.F, b);
      return a.F
    },
    DU: function () {
      return !1
    },
    join: function (a, b) {
      if (a.join) return a.join(b);
      var c = [],
        d;
      for (d in a) a.hasOwnProperty(d) && c.push(d + "=" + (a[d] || ""));
      return c.join(b)
    },
    $U: function (a, b) {
      return (a || "") + Math.round(Math.random() * Math.pow(10, b || 6))
    },
    Lb: function () {
      var a = 0;
      return function (b) {
        b._amap_id || (a += 1, b._amap_id = a);
        return b._amap_id
      }
    }(),
    aba: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",
    Jj: Date.now ?
      function () {
        return Date.now()
      } : function () {
        return (new Date).getTime()
      },
    Xla: function (a, b, c, d) {
      var e;
      if (d) {
        var g = 0,
          h, k = this.Jj;
        e = function () {
          h = k();
          if (h - g < b) return !1;
          g = h;
          a.apply(c, arguments)
        }
      } else {
        var l, m, n;
        n = function () {
          l = !1;
          m && (e.apply(c, m), m = !1)
        };
        e = function () {
          l ? m = arguments : (l = !0, a.apply(c, arguments), setTimeout(n, b))
        }
      }
      return e
    },
    Pc: function (a, b) {
      return Number(Number(a).toFixed(b || 0))
    },
    isArray: function (a) {
      return Array.isArray ? Array.isArray(a) : "[object Array]" === Object.prototype.toString.call(a)
    },
    Kl: function (a, b) {
      return Object.prototype.toString.call(a).split(" ")[1].slice(0, -1).toLowerCase() === b.toLowerCase()
    },
    ga: function (a, b) {
      return -1 !== this.indexOf(a, b)
    },
    $Y: function (a) {
      var b = 0;
      if (0 === a.length) return b;
      for (var c, d = 0, e = a.length; d < e; d += 1) c = a.charCodeAt(d), b = (b << 5) - b + c, b &= b;
      return b
    },
    Pka: function (a, b) {
      b = b ? Math.ceil(parseInt(b.substr(6)) / 24) : 1;
      for (var c = "", d = 0, e = a.length; d < e; d++) c += String.fromCharCode((a.charCodeAt(d) - 256 - b + 65535) % 65535);
      return c
    },
    taa: function (a, b) {
      var c = (a + "").slice(-2),
        d = (b + "").slice(-2);
      a = a.slice(0, -2);
      b = b.slice(0, -2);
      var e = parseInt((d + c).slice(1)),
        d = parseInt("1" + d) / 3E3;
      a -= parseInt("1" + c) / 3E3 * (Math.ceil(e / 250) % 2 ? 1 : -1);
      b -= d * (1 < e / 500 ? 1 : -1);
      return new f.V(parseFloat(a).toFixed(5), parseFloat(b).toFixed(5))
    },
    ZW: function (a) {
      return "undefined" !== typeof JSON && JSON.stringify ? f.a.$Y(JSON.stringify(a)) : null
    },
    yna: function (a, b) {
      if (b || !a.hasOwnProperty("_amap_hash")) {
        var c = f.a.ZW(a);
        c && (a._amap_hash = c)
      }
      return a._amap_hash
    },
    iepngFix: function (a) {
      function b() {
        for (var a; c.length;) a = c.shift(), window.DD_belatedPNG.fixPng(a);
        d.CK = !0
      }
      this.DX || (this.DX = [], this.CK = !1);
      var c = this.DX,
        d = this;
      if ("img" === a.tagName.toLowerCase()) c.push(a);
      else {
        a = a.getElementsByTagName("*");
        for (var e = 0; e < a.length; e += 1) c.push(a[e])
      }
      window.DD_belatedPNG && this.CK ? setTimeout(function () {
        b()
      }, 100) : this.CK || f.gb.load("AMap.FixPng", b)
    },
    za: function (a) {
      if (f.a.isArray(a)) if (f.a.isArray(a[0])) for (var b = 0; b < a.length; b += 1) a[b] = f.a.za(a[b]);
      else if (b = typeof a[0], "string" === b || "number" === b) return new f.V(a[0], a[1]);
      return a
    },
    mn: function (a) {
      return f.a.isArray(a) ? new f.Uc(a[0], a[1]) : a
    }
  };
  (function () {
    function a(a) {
      window.clearTimeout(a)
    }
    function b(a) {
      var b, c, d = ["webkit", "moz", "o", "ms"];
      for (b = 0; b < d.length && !c; b += 1) c = window[d[b] + a];
      return c
    }
    function c(a) {
      var b = +new Date,
        c = Math.max(0, (f.l.yj ? 50 : 20) - (b - d));
      d = b + c;
      return window.setTimeout(a, c)
    }
    var d = 0,
      e = window.requestAnimationFrame || b("RequestAnimationFrame") || c,
      g = window.cancelAnimationFrame || b("CancelAnimationFrame") || b("CancelRequestAnimationFrame") || a;
    f.a.nc = function (a, b, c, d) {
      a = f.a.bind(a, b);
      if (c) a();
      else return e.call(window, a, d)
    };
    f.a.Sg = function (a) {
      a && g.call(window, a)
    }
  })();
  f.a.Ly = window.requestIdleCallback ? window.requestIdleCallback.bind(window) : function (a) {
    var b = Date.now();
    return setTimeout(function () {
      a({
        didTimeout: !1,
        timeRemaining: function () {
          return Math.max(0, 70 - (Date.now() - b))
        }
      })
    }, (1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}).timeout || 0)
  };
  f.a.EI = window.cancelIdleCallback ? window.cancelIdleCallback.bind(window) : function (a) {
    clearTimeout(a)
  };
  (function (a) {
    var b = 1,
      c = {};
    a.a.Tga = function (a, b) {
      if (c[a]) {
        var g = c[a];
        g.Sy = 1;
        g.result = b;
        if (g.Ck) {
          for (var h = g.Ck, k = 0, l = h.length; k < l; k++) h[k].call(null, b);
          g.Ck = null
        }
      }
    };
    a.a.H$ = function (a) {
      c[a] = null
    };
    a.a.Gia = function (a, b) {
      if (c[a]) {
        var g = c[a];
        0 < g.Sy ? b(null, g.result) : (g.Ck || (g.Ck = []), g.Ck.push(b))
      } else b(null, a)
    };
    a.a.UJ = function (d, e) {
      var g = navigator.geolocation;
      if (!a.l.XC || "https:" === document.location.protocol) return d(null, g);
      var h;
      e && e.Hia && (h = "f" + b++, c[h] = {
        Sy: 0
      });
      var k = null,
        l = !1;
      e && e.timeout && (k = setTimeout(function () {
        k = void 0;
        d({
          code: 3,
          info: "TIME_OUT",
          message: "Get geolocation time out."
        });
        l = !0
      }, e.timeout));
      g.getCurrentPosition(function () {
        l || (clearTimeout(k), k = void 0, d(null, g))
      }, function (b) {
        l || (clearTimeout(k), k = void 0, 2 === b.code && 0 < b.message.indexOf("permission") ? a.gb.load("AMap.GeoRemoteLoc", function () {
          d(null, a.p_, h)
        }) : d(null, g))
      }, {
        timeout: 1E3
      });
      return h
    }
  })(f);
  (function (a) {
    var b = a.ba.extend({
      ga: [a.ka],
      B: function () { }
    });
    a.Gn = new b
  })(f);
  (function (a) {
    var b = a.ba.extend({
      ga: [a.ka],
      B: function () {
        this.n4()
      },
      n4: function () {
        a.Gn && a.Gn.g("vecTileParsed.buildings", this.S3, this)
      },
      dW: function (a) {
        return a.map.sQ
      },
      bV: function (a) {
        return this.dW(a) ? a.map.wG : null
      },
      Qga: function (a, b) {
        if (b) {
          var e = b.map;
          e && (e.wG ? e.wG.toString() : "") !== (a ? a.toString() : "") && (e.wG = a || [], e.set("display", 0))
        }
      },
      DY: function (a, b) {
        if (b) {
          var e = b.map;
          e && e.sQ !== a && (e.sQ = a, e.set("display", 0))
        }
      },
      Hja: function () { },
      nQ: function (a, b) {
        if (a) for (var e = 0, g = a.length; e < g; e++) a[e] && 0 > b.indexOf(a[e]) && b.push(a[e])
      },
      GU: function (b) {
        if (!b) return null;
        b = b.map.Ya;
        for (var d = 0, e = b.length; d < e; d++) if (a.w.ik && b[d] instanceof a.w.ik && b[d].ta && b[d].ta.length && (-1 !== b[d].ta.indexOf("building") || -1 !== b[d].ta.indexOf("poilabel"))) return b[d];
        return null
      },
      yba: function (a) {
        if (a = this.GU(a)) {
          if (a = a.ia.get("tiles", null, !0)) a = a[0];
          else return null;
          if (!a || !a.length) return null;
          for (var b = [], e = 0, g = a.length; e < g; e++) {
            var h = a[e];
            h.wf && h.wf.xe && this.nQ(h.wf.xe, b)
          }
          return b
        }
      },
      S3: function (a) {
        if (a.Mr && a.Mr.wf) {
          var b = a.Mr.wf.xe;
          if (b) {
            var e = [];
            this.nQ(b, e);
            this.r("vecTileParsed.builds.found", {
              KT: e,
              Mr: a.Mr
            })
          }
        }
      }
    });
    a.hh = new b
  })(f);
  (function (a) {
    function b() {
      return {
        checkup: function () {
          var a = Array.prototype.slice.call(arguments, 0);
          a.pop()(null, a)
        }
      }
    }
    function c(a) {
      return {
        injectCode: function (b, c) {
          var d = null,
            e = null;
          try {
            d = (new Function("self", b))(a)
          } catch (g) {
            console.error("error", e), e = g.toString()
          }
          c(e, d)
        }
      }
    }
    function d(a) {
      function b(c, d) {
        function e(a, b, c) {
          a = {
            Su: Date.now(),
            Hu: h,
            error: a,
            result: b,
            qr: !1,
            Sm: !1
          };
          if (c) for (var g in c) c.hasOwnProperty(g) && (a[g] = c[g]);
          d(a)
        }
        var g = c.nK,
          h = c.Hu,
          l = c.OI,
          m = c.ix,
          n = c.O9 || [],
          p = a._wkHandlers[g];
        p ? p[l] ? m ? p[l].apply(p, n.concat(e)) : e(null, p[l].apply(p, n)) : e("Unknown cmd: " + l) : e("Can not find handler for: " + g)
      }
      var c = [],
        d = null,
        e = null;
      for (d in this._wkHandlers) - 1 !== d.indexOf("_def_") && (e = this._wkHandlers.lma = d);
      "function" === typeof this._wkHandlers[e].B && this._wkHandlers[e].B.call(this._wkHandlers[e]);
      a.$w = function (a) {
        c.push.apply(c, a)
      };
      a.addEventListener("message", function (d) {
        function e(b) {
          if (t) {
            t.push(b);
            var d = !!b.qr;
            d || n++;
            b = n >= h || b.Sm;
            if (d || b) {
              d = 1 < t.length ? {
                qga: t
              } : t[0];
              d.Su = Date.now();
              d.mna = p;
              if (c.length) {
                try {
                  a.postMessage(d, c)
                } catch (g) {
                  a.postMessage(d), console.error(g)
                }
                c.length = 0
              } else a.postMessage(d);
              t.length = 0;
              b && (e = t = null)
            }
          } else console.error("Seemed callback already sent!!", b, b.result.xc)
        }
        var g = d.data;
        d = g.oga || [g];
        for (var h = d.length, n = 0, p = Date.now() - g.Su, t = [], g = 0; g < h; g++) b(d[g], e)
      }, !1)
    }
    function e(d, h) {
      this.F = a.extend({
        batchSend: !0,
        lazy: !1,
        libPolyfills: null
      }, h);
      this.jt = [];
      this.Lv = this.F.clientId || "w" + g++;
      this.F.onReady && this.lL(this.F.onReady);
      this.gA = this.f3();
      if ("function" === typeof d) {
        var m = {};
        m[this.gA] = d;
        d = m
      }
      d[e.dK] = c;
      d[this.BP()] = b;
      this.uA = d;
      this.Bw(null);
      this.F.lazy || this.gx();
      a.MC || !1 === this.F.hostWorker || (a.MC = this)
    }
    var g = 1,
      h = 1;
    a.extend(e, {
      dK: "_g_",
      dha: function (a) {
        if (!a.I0) {
          var b = [];
          a.addEventListener("message", function (a) {
            a = a.data;
            a = a.qga || [a];
            for (var c = 0, d = a.length; c < d; c++) {
              var e = a[c],
                g;
              a: {
                g = e.Hu;
                for (var h = !e.Sm, k = 0, v = b.length; k < v; k++) {
                  var x = b[k];
                  if (g === x.Hu) {
                    h || b.splice(k, 1);
                    g = x;
                    break a
                  }
                }
                g = void 0
              }
              g ? g.ix.call(null, e.error, e.result, !0) : console.warn("Receive worker msg: ", e)
            }
          }, !1);
          a.w0 = b;
          a.I0 = !0
        }
      }
    });
    a.extend(e.prototype, {
      f3: function () {
        return "_def_" + this.Lv
      },
      BP: function () {
        return "_cln_" + this.Lv
      },
      X7: function () {
        var a = Array.prototype.slice.call(arguments, 0);
        this.fS = a;
        if (this.et) {
          for (var b = 0, c = this.et.length; b < c; b++) this.et[b].apply(null, a);
          this.et.length = 0
        }
      },
      $w: function (a) {
        this.P7 && this.jt.push.apply(this.jt, a)
      },
      lL: function (a) {
        this.fS ? a.apply(null, this.fS) : (this.et || (this.et = []), this.et.push(a))
      },
      gx: function (b) {
        var c = this;
        if (!c.HO) {
          c.HO = !0;
          var d = function (d, e) {
            d && a.l.hr && console.warn(d);
            c.X7.call(c, d, e);
            b && b(d, e)
          };
          a.l.hr ? this.O7(function (a, b) {
            b ? this.t4(b, function (a, c) {
              a ? d(a) : (this.Bw(c), this.fI = c, this.jt.length = 0, this.HA = null, d(null, {
                Y9: b,
                Pia: c
              }))
            }) : d("Worker start failed!")
          }) : d("Worker not supported!")
        }
      },
      Mj: function (b, c) {
        var d = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : a.a.bp,
          g = this;
        b = b || g.gA;
        var h = {};
        g.oO(b, c, h);
        g.Bw(null, h);
        g.lL(function (a) {
          a ? d(a) : g.fI ? (a = g.IP(c, g.kG(g.Lv, b), !0), g.fI.sendMessage(e.dK + ":injectCode", a, function (a, b) {
            a || g.Bw(g.fI, h);
            d(a, b)
          })) : d("Worker msger missing!!")
        })
      },
      kG: function (a, b) {
        if (!a || !b) throw Error("clientId or ns missing!!");
        return a + "_" + b
      },
      x3: function (a, b, c) {
        function d() {
          var b = Array.prototype.slice.call(arguments, 0);
          c.sendMessage.apply(c, [a].concat(b))
        }
        var e = this;
        if (!c) return function () {
          e.HO || "untilCall" === e.F.lazy && e.gx();
          b.apply(this.HA, arguments)
        };
        d._proxy2Worker = !0;
        return d
      },
      y1: function (a) {
        var b = {},
          c;
        for (c in a) a.hasOwnProperty(c) && this.oO(c, a[c], b);
        return b
      },
      oO: function (a, b, c) {
        b = b.call(null, !1);
        for (var d in b) b.hasOwnProperty(d) && (c[a + ":" + d] = b[d], a === this.gA && (c[d] = b[d]))
      },
      Bw: function (a, b) {
        b || (this.HA || (this.HA = this.y1(this.uA)), b = this.HA);
        for (var c in b) if (b.hasOwnProperty(c)) {
          var d = b[c];
          "function" === typeof d && (this[c] = this.x3(c, d, a))
        }
        this.P7 = !!a
      },
      IP: function (a, b) {
        var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : !1,
          d = a.toString(),
          e, d = d.replace(/^function([^\(]*)\(/, function () {
            e = "_prep_h" + h++;
            return "function " + e + "("
          });
        return e ? "\n\t\t\t\t" + d + "\n\t\t\t\tif (self._wkHandlers['" + b + "'] && " + !c + ") {\n\t\t\t\t\tthrow new Error('" + b + " already exists!')\n\t\t\t\t} else {\n\t\t\t\t\tif (" + c + " && self._wkHandlers['" + b + "']) {\n\t\t\t\t\t\tvar handlerFunObj = " + e + ".call(null, self) || {}\n\n\t\t\t\t\t\tif (typeof Object.assign === 'function') {\n\t\t\t\t\t\t\tObject.assign(self._wkHandlers['" + b + "'], handlerFunObj)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (var key in handlerFunObj) {\n\t\t\t\t\t\t\t\tif (handlerFunObj.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\t\tself._wkHandlers['" + b + "'][key] = handlerFunObj[key]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself._wkHandlers['" + b + "'] = " + e + ".call(null, self) || {}\t\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t" + e + " = null;\n\t\t\t" : (console.error("No function match!!"), !1)
      },
      O7: function (a) {
        var b = this.Lv,
          c = [],
          d;
        for (d in this.uA) if (this.uA.hasOwnProperty(d)) {
          var g = this.IP(this.uA[d], this.kG(b, d));
          g && c.push(g)
        }
        b = this.F.libPolyfills || [];
        d = 0;
        for (g = b.length; d < g; d++) b[d] = "(" + b[d].toString() + ")(self);";
        var h = b.join(";\n") + ";\n" + c.join(";\n"),
          c = this.F.hostWorker,
          r = this;
        c && c !== r ? c.lL(function (b, c) {
          b ? a.call(r, b) : c.Pia.sendMessage(e.dK + ":injectCode", h, function (b) {
            b ? a.call(r, b) : a.call(r, null, c.Y9)
          })
        }) : a.call(r, null, r.W8(h))
      },
      W8: function (a) {
        var b = {
          type: "text/javascript; charset=utf-8"
        };
        a = ["self._wkHandlers={};", a, "(" + d.toString() + ")(self)"].join("");
        var c;
        try {
          var e = window.URL || window.webkitURL,
            g = e.createObjectURL(new Blob([a], b));
          c = new Worker(g);
          setTimeout(function () {
            e.revokeObjectURL(g);
            g = null
          }, 3E3)
        } catch (h) {
          console.error(h);
          return
        }
        return c
      },
      m2: function (b) {
        var c = 1,
          d = b.w0,
          e = this,
          g = !!e.F.batchSend;
        return function (h) {
          var r = Array.prototype.slice.call(arguments, 1),
            s = "function" === typeof r[r.length - 1] ? r.pop() : null,
            u = e.Lv,
            v = h.split(":"),
            x = e.gA;
          1 < v.length && (h = v[1], x = v[0]);
          r = {
            Su: a.a.Jj(),
            nK: e.kG(u, x),
            ix: !!s,
            Hu: u + "_" + c++,
            OI: h,
            O9: r
          };
          s && d.push({
            OI: r.OI,
            nK: r.nK,
            Su: r.Su,
            Hu: r.Hu,
            ix: s
          });
          g ? e.a1(b, r) : e.ct(b, r)
        }
      },
      ct: function (a, b) {
        if (this.jt.length) {
          try {
            a.postMessage(b, this.jt)
          } catch (c) {
            a.postMessage(b), console.error(c)
          }
          this.jt.length = 0
        } else a.postMessage(b)
      },
      a1: function (b, c) {
        b.cH || (b.cH = []);
        b.cH.push(c);
        if (!b.aS) {
          var d = this;
          b.aS = setTimeout(function () {
            b.aS = null;
            var c = b.cH;
            c.length && (d.ct(b, 1 === c.length ? c[0] : {
              Su: a.a.Jj(),
              oga: c
            }), c.length = 0)
          }, 0)
        }
      },
      P8: function (a) {
        var b = this;
        a.addEventListener("error", function (a) {
          console.error(a);
          b.Bw(null)
        }, !1);
        e.dha(a)
      },
      t4: function (a, b) {
        var c = this;
        c.P8(a);
        var d = this.m2(a);
        if (e.V1) b.call(c, null, {
          sendMessage: d
        });
        else {
          e.V1 = !0;
          var g = [c.BP() + ":checkup", Math.random().toFixed(5) + "", Math.round(1E3 * Math.random()), !1, function (a, e) {
            var h = !0;
            if (a || !e || e.length !== g.length - 2) h = !1;
            else for (var k = 0, v = e.length; k < v; k++) if (e[k] !== g[k + 1]) {
              h = !1;
              break
            }
            h ? b.call(c, null, {
              sendMessage: d
            }) : (console.error(a), b.call(c, "Self checkup failed!!"))
          }];
          d.apply(c, g)
        }
      }
    });
    a.ts = e
  })(f);
  (function () {
    if (!f.Zd) {
      f.Zd = {
        te: {},
        Xx: {}
      };
      var a = f.Zd,
        b = f.Zd.te,
        c = f.a,
        d = f.A;
      b.start = function (b) {
        a.Xx[b.id] = {
          K: b.K,
          time: {
            VV: c.Jj()
          },
          n$: function () {
            return c.Jj() - this.time.VV
          }
        }
      };
      b.end = function (b) {
        var d = a.Xx[b.id],
          e = d.time,
          d = c.bind(d.n$, d),
          l = b.index,
          m = b.key;
        "function" !== typeof b.yc && (b.yc = function () { });
        if (void 0 === e[m]) void 0 === l ? e[m] = d() : (e[m] = [], e[m][l] = d());
        else if (void 0 !== l && void 0 === e[m][l]) e[m][l] = d();
        else return b.yc(Error("Duplicate Invoke"));
        b.yc(null)
      };
      b.push = function (b) {
        var c = a.Xx[b.id].time,
          d = b.key,
          e = b.Dn;
        "function" !== typeof b.yc && (b.yc = function () { });
        if (void 0 === c[d]) c[d] = e;
        else return b.yc(Error("Duplicate Invoke"));
        b.yc(null)
      };
      b.send = function (b) {
        var c = d.Qb + "://10.56.28.228/webapi.amap.com/count?",
          k = f.extend(e({
            K: a.Xx[b.id].K
          }), b.params || {}),
          l = f.a;
        b.params && b.params.rs && !b.params.type && (b = a.Xx[b.id].time, delete b.VV, k = f.extend(k, b));
        b = [];
        for (var m in k) l.isArray(k[m]) ? b.push([m, k[m].join("-")].join("=")) : b.push([m, k[m]].join("="));
        b.push("jl=" + (d.iy ? 1 : 0));
        if (l.Kl(window.performance, "performance") && l.Kl(window.performance.getEntriesByType, "function")) {
          var n = 0,
            p = ["webapi.amap.com", "100.69.169.127", "localhost"],
            q = ["/maps", "/css"];
          l.Ib(window.performance.getEntriesByType("resource"), function (a) {
            var b = void 0,
              c = void 0;
            a.name.match(/:\/\/([^:?#/]+)/) && (b = RegExp.$1);
            a.name.match(/[^\/](\/[^/?#:]+)/) && (c = RegExp.$1);
            b && c && l.ga(p, b) && l.ga(q, c) && (n += parseInt(a.responseEnd - a.startTime))
          });
          0 !== n && b.push("sd=" + n)
        }
        new f.Sa.bb(c + b.join("&"))
      };
      var e = function (a) {
        var b = f.l;
        a = f.j.TU(a.K);
        return {
          type: "q",
          resolution: a.width + "*" + a.height,
          k: d.key,
          u: d.jo,
          iw: b.He ? 1 : 0,
          cw: b.MT ? 1 : 0,
          gc: b.eK,
          m: b.Z ? 1 : 0,
          cv: b.hx ? 1 : 0,
          pf: b.wr,
          dpr: window.devicePixelRatio,
          screenwidth: screen.width,
          scale: b.yE || 0,
          detect: b.ja ? 1 : 0,
          v: d.lt
        }
      }
    }
  })();
  (function () {
    if (f.l.hr && !f.HE) {
      var a = f.a.SJ({
        keys: "keys",
        A: "Conf",
        extend: "extend",
        l: "Browser",
        Ur: "uncodeCoords"
      });
      f.HE = function () {
        var b = new f.ts(function () {
          return {
            B: function () {
              this.yf = {};
              this.zf = [];
              this.Am = {}
            },
            Ri: function (a, b) {
              this.zda(a, b)
            },
            zda: function (a, b) {
              function e(e, g) {
                var l = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : !1;
                if (q.yf[h.jp] || q.j4(h)) {
                  var m = e.split("|");
                  m[0] = g + m[0];
                  var n = m,
                    p = "";
                  m[m.length - 1] && (p = m[m.length - 1], n = m.splice(0, m.length - 1));
                  q.sr(q.extend({}, a, {
                    rE: n,
                    lc: k,
                    Pj: l,
                    ZV: !0
                  }), b);
                  return p
                }
              }
              var g = this,
                h = new XMLHttpRequest;
              a.Id.Nc ? this.Nc = a.Id.Nc : a.Id.Nc = this.Nc;
              var k = a.lc,
                l = a.tg,
                m = a.Bd,
                n = a.url;
              if (this.bo() && (this.Mz(), l)) {
                this.lk(m, b);
                return
              }
              var p = 0,
                q = this;
              h.pn = "";
              h.jp = [(new Date).getTime(), l ? 1 : 0].join("-");
              l ? this.zf.push(h) : this.yf[h.jp] = 1;
              h.onreadystatechange = function () {
                if (4 === h.readyState && 0 === h.status) h.Kp || (h.Kp = !0, g.lk(m, b), h.onreadystatechange = null, l ? g.Fw(h) : delete g.yf[h.jp]);
                else if (!h.Kp) {
                  if (g.bo() && (g.Mz(), l)) return;
                  if (3 === h.readyState) {
                    var k = h.responseText.substring(p);
                    h.pn = e(k, h.pn);
                    p = h.responseText.length
                  } else 4 === h.readyState && (k = h.responseText.substring(p), a.ai && (k += "|"), e(k, h.pn, !0), h.pn = "", l ? g.Fw(h) : delete g.yf[h.jp])
                }
              };
              h.onerror = function () { };
              this.lK || (this.lK = 1);
              h.open("GET", n, !0);
              h.send()
            },
            mu: function (a) {
              function b(d, p, r) {
                var s = [r, d, p].join("/");
                18 < k && !n && (s += "/" + k);
                if ((d = e.filter(function (a) {
                  return a.key === s
                })[0]) && "loaded" !== d.status && -1 !== m.indexOf(t)) if ("limg" === t) p = h[1], d.Rd = p, "string" === typeof p.b && (p.b = x.Ov(p.b)), r = "", (r = "object" === typeof p.u ? p.u.url : p.u) && (p.u = {
                  url: r,
                  Cn: "limg-" + d.key + "-" + g
                });
                  else {
                    p = {
                      li: d.ma,
                      $k: s,
                      Ca: h,
                      dd: t,
                      sI: a.uq,
                      zK: "building" === t,
                      Wg: "poilabel" === t || "roadlabel" === t || "building" === t && q
                    };
                    if ("poilabel" === t || "roadlabel" === t) p.Rd = d.Rd;
                    t === m[m.length - 1] && (d.status = "loaded");
                    l.push(p)
                  }
              }
              var e = a.Bd,
                g = a.IK,
                h = a.tx,
                k = a.lc,
                l = a.Rc,
                m = a.ta,
                n = a.He,
                p = a.gK,
                q = a.od,
                r = h[0].split("-"),
                s = parseInt(r[1]),
                u = parseInt(r[2]),
                v = parseInt(r[0]),
                x = this,
                t = r[3],
                r = Math.pow(2, v);
              10 > v && (s <= p && b(s + r, u, v), s >= r - p && b(s - r, u, v));
              b(s, u, v)
            },
            Fw: function (a) {
              for (var b = this.zf.length - 1; 0 <= b; b--) this.zf[b] === a && this.zf.splice(b, 1)
            },
            j4: function (a) {
              for (var b = 0, e = this.zf.length; b < e; b++) if (this.zf[b] === a) return !0;
              return !1
            },
            bo: function () {
              return this.keys(this.yf).length ? !0 : !1
            },
            Mz: function () {
              for (var a = this.zf.length - 1; 0 <= a; a--) {
                var b = this.zf[a];
                b.Kp || b.abort()
              }
              this.zf.splice(0, this.zf.length)
            },
            lk: function (a, b) {
              b(null, {
                Bd: a,
                jW: !0,
                disabled: this.disabled
              }, {
                Sm: !0
              })
            }
          }
        }, {
          batchSend: !1
        });
        b.Mj(null, new Function("\n     return {\n      " + a.keys + ": " + f.a.keys.toString() + ",\n      " + a.Conf + ": " + JSON.stringify(f.A) + ",\n      " + a.extend + ": " + f.extend.toString() + ",\n      " + a.Browser + ": " + JSON.stringify(f.l) + ",\n      " + a.uncodeCoords + ": " + f.a.Ur.toString() + "\n     }"));
        return b
      }
    }
  })();
  f.j = {
    get: function (a) {
      return "string" === typeof a ? document.getElementById(a) : a
    },
    Hx: function (a) {
      if (!a) return [0, 0];
      var b = a.clientWidth,
        c = a.clientHeight;
      b && c || !a.childNodes[0] || (b = b || a.childNodes[0].clientWidth, c = c || a.childNodes[0].clientHeight);
      window.opera && (b = Math.max(b, a.childNodes[0].scrollWidth), c = Math.max(c, a.childNodes[0].scrollHeight));
      return [b, c]
    },
    cma: function (a, b) {
      var c = document.head || document.getElementsByTagName("head")[0];
      if (c) {
        var d = document.createElement("link");
        d.setAttribute("rel", "stylesheet");
        d.setAttribute("type", "text/css");
        d.setAttribute("href", a);
        b ? c.appendChild(d) : c.insertBefore(d, c.firstChild)
      } else document.write("<link rel='stylesheet' href='" + a + "'/>")
    },
    me: function (a, b) {
      var c = a.style[b];
      !c && a.currentStyle && (c = a.currentStyle[b]);
      c && "auto" !== c || !document.defaultView || (c = (c = document.defaultView.getComputedStyle(a, null)) ? c[b] : null);
      c && "auto" !== c || "height" !== b || (c = a.clientHeight + "px");
      c && "auto" !== c || "width" !== b || (c = a.clientWidth + "px");
      return "auto" === c ? null : c
    },
    KC: function (a) {
      if (a) return new f.Uc(a.clientWidth || document.body.clientWidth, a.clientHeight || (f.l.Lo ? "CSS1Compat" === document.compatMode ? document.documentElement.clientHeight : document.body.clientHeight : document.body.clientHeight), !0)
    },
    TU: function (a) {
      return new f.Uc(a.clientWidth, a.clientHeight)
    },
    cK: function (a) {
      var b = 0,
        c = 0,
        d = a,
        e = document.body,
        g = document.documentElement,
        h, k = f.l.cr;
      do {
        b += d.offsetTop || 0;
        c += d.offsetLeft || 0;
        b += parseInt(f.j.me(d, "borderTopWidth"), 10) || 0;
        c += parseInt(f.j.me(d, "borderLeftWidth"), 10) || 0;
        h = f.j.me(d, "position");
        if (d.offsetParent === e && "absolute" === h) break;
        if ("fixed" === h) {
          b += e.scrollTop || g.scrollTop || 0;
          c += e.scrollLeft || g.scrollLeft || 0;
          break
        }
        d = d.offsetParent
      } while (d);
      d = a;
      do {
        if (d === e) break;
        b -= d.scrollTop || 0;
        c -= d.scrollLeft || 0;
        f.j.Iaa() || !f.l.QZ && !k || (c += d.scrollWidth - d.clientWidth, k && "hidden" !== f.j.me(d, "overflow-y") && "hidden" !== f.j.me(d, "overflow") && (c += 17));
        d = d.parentNode
      } while (d);
      return new f.G(c, b)
    },
    Iaa: function () {
      f.j.D2 || (f.j.D2 = !0, f.j.C2 = "ltr" === f.j.me(document.body, "direction"));
      return f.j.C2
    },
    create: function (a, b, c) {
      a = document.createElement(a);
      c && (a.className = c);
      b && b.appendChild(a);
      return a
    },
    nU: function () {
      document.selection && document.selection.empty && document.selection.empty();
      this.X6 || (this.X6 = document.onselectstart, document.onselectstart = f.a.DU)
    },
    wU: function () { },
    Iha: function (a, b, c) {
      c ? this.Ga(a, b) : this.Ma(a, b)
    },
    El: function (a, b) {
      if (a && b) return 0 < a.className.length && RegExp("(^|\\s)" + b + "(\\s|$)").test(a.className)
    },
    Ga: function (a, b) {
      a && b && !f.j.El(a, b) && (a.className += (a.className ? " " : "") + b)
    },
    Iga: function (a, b) {
      a && (a.className = b || "")
    },
    Ma: function (a, b) {
      function c(a, c) {
        return c === b ? "" : a
      }
      a && b && (a.className = a.className.replace(/(\S+)\s*/g, c).replace(/(^\s+|\s+$)/, ""))
    },
    gV: function (a, b) {
      return 1 === b ? "" : "opacity" in a.style ? "opacity:" + b : 8 <= document.documentMode ? "-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(opacity=" + Math.ceil(100 * b) + ")'" : "filter:alpha(opacity=" + Math.ceil(100 * b) + ")"
    },
    un: function (a, b) {
      if (a.style) if ("opacity" in a.style) a.style.opacity = b;
      else if ("filter" in a.style) {
        var c = Math.round(100 * b);
        a.style.filter = "";
        100 !== c && (a.style.filter = " progid:DXImageTransform.Microsoft.Alpha(opacity=" + c + ")")
      }
    },
    AM: function (a) {
      for (var b = document.documentElement.style, c = 0; c < a.length; c += 1) if (a[c] in b) return a[c];
      return !1
    },
    uV: function (a) {
      var b = f.l.RZ;
      return "translate" + (b ? "3d" : "") + "(" + a.x + "px," + a.y + "px" + ((b ? ",0" : "") + ")")
    },
    zla: function (a, b) {
      return f.j.uV(b.add(b.Sc(-1 * a))) + (" scale(" + a + ") ")
    },
    una: function (a, b, c) {
      a.mh = b;
      !c && f.l.NB ? (b = f.j.uV(b), c = a.style[f.j.rf].split("rotate"), 1 < c.length ? (c[0] = b, a.style[f.j.rf] = c.join("rotate")) : a.style[f.j.rf] = b, f.l.RW && (a.style.WebkitBackfaceVisibility = "hidden")) : (a.style.left = b.x + "px", a.style.top = b.y + "px")
    },
    Nd: function (a) {
      a.mh || (a.mh = a.style.left ? new f.G(parseInt(a.style.left), parseInt(a.style.top)) : new f.G(0, 0));
      return a.mh
    },
    sna: function (a, b) {
      a = a instanceof Array ? a : [a];
      for (var c = 0; c < a.length; c += 1) a[c].style.cssText = b
    },
    AY: function (a, b) {
      ";" !== b[b.length - 1] && (b += ";");
      return b.toLowerCase() !== a.style.cssText.replace(/ /g, "").toLowerCase() ? (a.style.cssText = b, !0) : !1
    },
    Ha: function (a, b) {
      a = a instanceof Array ? a : [a];
      for (var c = 0; c < a.length; c += 1) for (var d in b) b.hasOwnProperty(d) && (a[c].style[d] = b[d]);
      return this
    },
    Gy: function (a) {
      for (; a.childNodes.length;) a.removeChild(a.childNodes[0])
    },
    remove: function (a) {
      a && a.parentNode && a.parentNode.removeChild(a)
    },
    rotate: function (a, b, c) {
      var d = f.j.rf;
      c = c || {
        x: a.clientWidth / 2,
        y: a.clientHeight / 2
      };
      d ? (a.style[d] = "" + (" rotate(" + b + "deg)"), a.style[f.j.rp[d] + "-origin"] = c.x + "px " + c.y + "px") : (d = Math.cos(b * Math.PI / 180), b = Math.sin(b * Math.PI / 180), a.style.filter = "progid:DXImageTransform.Microsoft.Matrix()", 0 < a.filters.length && (a = a.filters.item(0), a.Dx = -c.x * d + c.y * b + c.x, a.Dy = -c.x * b - c.y * d + c.y, a.M11 = a.M22 = d, a.M12 = -(a.M21 = b)))
    },
    rV: function (a, b, c) {
      var d = f.j.rf;
      c = c || {
        x: a.clientWidth / 2,
        y: a.clientHeight / 2
      };
      return d ? f.j.rp[d] + ":" + ("" + (" rotate(" + b + "deg)")) + ";" + (f.j.rp[d] + "-origin:" + c.x + "px " + c.y + "px") : ""
    },
    am: function (a, b, c) {
      a.width = b;
      a.height = c
    },
    getElementsByClassName: function (a, b, c) {
      b = b || "*";
      c = c || document;
      if (c.getElementsByClassName) return c.getElementsByClassName(a);
      b = c.getElementsByTagName(b);
      a = RegExp("(^|\\s)" + a + "(\\s|$)");
      c = [];
      for (var d = 0, e; d < b.length; d++) e = b[d], a.test(e.className) && c.push(e);
      return c
    },
    fillText: function (a, b) {
      if (a) return void 0 !== a.textContent ? a.textContent = b : void 0 !== a.innerText ? a.innerText = b : a.innerHTML = b, a
    }
  };
  (function () {
    var a = f.j.AM(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]),
      b;
    f.extend(f.j, {
      nU: function () {
        f.C.g(window, "selectstart", f.C.preventDefault);
        if (a) {
          var c = document.documentElement.style;
          "none" !== c[a] && (b = c[a], c[a] = "none")
        }
      },
      wU: function () {
        f.C.I(window, "selectstart", f.C.preventDefault);
        a && "none" !== b && (document.documentElement.style[a] = b, b = "none")
      },
      Aaa: function () {
        f.C.g(window, "dragstart", f.C.preventDefault)
      },
      cba: function () {
        f.C.I(window, "dragstart", f.C.preventDefault)
      }
    })
  })();
  f.j.rf = f.j.AM(["WebkitTransform", "OTransform", "MozTransform", "msTransform", "transform"]);
  f.j.rp = {
    transform: "transform",
    WebkitTransform: "-webkit-transform",
    OTransform: "-o-transform",
    MozTransform: "-moz-transform",
    msTransform: "-ms-transform"
  };
  f.j.Hz = f.j.AM(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]);
  f.j.sja = "webkitTransition" === f.j.Hz || "OTransition" === f.j.Hz ? f.j.Hz + "End" : "transitionend";
  f.C = {
    g: function (a, b, c, d) {
      function e(b) {
        b = b || window.event;
        b.target = b.target || b.srcElement;
        return c.call(d || a, b, k)
      }
      var g = f.a.Lb(a) + "_" + f.a.Lb(c) + "_" + f.a.Lb(d || a),
        h = b + g;
      if (a[h]) return this;
      var k = b;
      f.l.zJ && "mousewheel" === b && (b = "DOMMouseScroll");
      if (f.l.Lo && ("mouseover" === b || "mouseout" === b)) {
        var l = e;
        b = "mouseover" === b ? "mouseenter" : "mouseleave";
        e = function (a) {
          l(a)
        }
      }
      if (f.l.EX && 0 === b.indexOf("touch")) return a[h] = e, this.x9(a, b, e, g);
      f.l.Me && "dblclick" === b && this.v9 && this.v9(a, e, g);
      "addEventListener" in a ? a.addEventListener(b, e, !1) : "attachEvent" in a ? a.attachEvent("on" + b, e) : a["on" + b] = e;
      a[h] = e;
      return this
    },
    Rj: function (a, b, c, d) {
      var e = this;
      this.g(a, b, function h(k) {
        e.I(a, b, h, d);
        return c.call(d || a, k || window.event, b)
      }, d)
    },
    I: function (a, b, c, d) {
      c = f.a.Lb(a) + "_" + f.a.Lb(c) + "_" + f.a.Lb(d || a);
      d = b + c;
      var e = a[d];
      f.l.zJ && "mousewheel" === b && (b = "DOMMouseScroll");
      !f.l.Lo || "mouseover" !== b && "mouseout" !== b || (b = "mouseover" === b ? "mouseenter" : "mouseleave");
      f.l.EX && -1 < b.indexOf("touch") ? this.Rfa(a, b, c) : f.l.Me && "dblclick" === b && this.Nfa ? this.Nfa(a, c) : "removeEventListener" in a ? a.removeEventListener(b, e, !1) : "detachEvent" in a && -1 === b.indexOf("touch") ? e && a.detachEvent("on" + b, e) : a["on" + b] = null;
      a[d] = null;
      return this
    },
    wna: function (a, b) {
      var c = document.createEvent("MouseEvents");
      c.initMouseEvent(a, !0, !0, window, 1, b.screenX, b.screenY, b.clientX, b.clientY, !1, !1, !1, !1, 0, null);
      b.target.dispatchEvent(c)
    },
    stopPropagation: function (a) {
      a.stopPropagation ? a.stopPropagation() : a.cancelBubble = !0;
      return this
    },
    pha: function (a) {
      var b = f.C.stopPropagation;
      f.l.Me && (f.C.g(a, "touchstart", b, this), f.C.g(a, "touchmove", b, this), f.C.g(a, "touchend", b, this));
      f.l.Z || (f.C.g(a, "mousedown", b, this), f.C.g(a, "mouseup", b, this), f.C.g(a, "mousemove", b, this));
      f.l.FL && (f.C.g(a, "pointerdown", b, this), f.C.g(a, "pointerup", b, this), f.C.g(a, "pointermove", b, this));
      f.l.TW && (f.C.g(a, "MSPointerDown", b, this), f.C.g(a, "MSPointerUp", b, this), f.C.g(a, "MSPointerMove", b, this))
    },
    preventDefault: function (a) {
      a.preventDefault ? a.preventDefault() : a.returnValue = !1;
      return this
    },
    stop: function (a) {
      return f.C.preventDefault(a).stopPropagation(a)
    },
    Hga: function (a) {
      return a && a.getBoundingClientRect ? (a.fF = a.getBoundingClientRect(), a.$N = [a.clientLeft, a.clientTop], !0) : !1
    },
    kia: function (a) {
      a.fF && (a.fF = null, a.$N = null)
    },
    gba: function (a, b) {
      var c = b.fF || b.getBoundingClientRect(),
        d = b.$N || [b.clientLeft, b.clientTop];
      return new f.G(a.clientX - c.left - d[0], a.clientY - c.top - d[1])
    },
    Gj: function (a, b) {
      if (b && b.getBoundingClientRect) return this.gba(a, b);
      var c = document.body,
        d = document.documentElement,
        c = new f.G(f.l.Me ? a.pageX : a.clientX + (c.scrollLeft || d.scrollLeft), f.l.Me ? a.pageY : a.clientY + (c.scrollTop || d.scrollTop));
      return b ? c.Va(f.j.cK(b)) : c
    },
    hW: function (a) {
      return 1 === a.which || 0 === a.button || 1 === a.button
    }
  };
  f.extend(f.C, {
    bH: [],
    SQ: !1,
    x9: function (a, b, c, d) {
      switch (b) {
        case "touchstart":
          return this.A9(a, b, c, d);
        case "touchend":
          return this.y9(a, b, c, d);
        case "touchmove":
          return this.z9(a, b, c, d)
      }
    },
    Cl: function (a) {
      if (f.l.FL) return a;
      switch (a) {
        case "pointerdown":
          return "MSPointerDown";
        case "pointerup":
          return "MSPointerUp";
        case "pointercancel":
          return "MSPointerCancel";
        case "pointermove":
          return "MSPointerMove"
      }
    },
    A9: function (a, b, c, d) {
      function e(a) {
        for (var b = !1, d = 0; d < g.length; d += 1) if (g[d].pointerId === a.pointerId) {
          b = !0;
          break
        }
        b || g.push(a);
        a.touches = g.slice();
        a.changedTouches = [a];
        c(a)
      }
      var g = this.bH;
      a["_amap_touchstart" + d] = e;
      a.addEventListener(this.Cl("pointerdown"), e, !1);
      this.SQ || (a = function (a) {
        for (var b = 0; b < g.length; b += 1) if (g[b].pointerId === a.pointerId) {
          g.splice(b, 1);
          break
        }
      }, document.documentElement.addEventListener(this.Cl("pointerup"), a, !1), document.documentElement.addEventListener(this.Cl("pointercancel"), a, !1), this.SQ = !0);
      return this
    },
    z9: function (a, b, c, d) {
      function e(a) {
        if (a.pointerType !== a.MSPOINTER_TYPE_MOUSE || 0 !== a.buttons) {
          for (var b = 0; b < g.length; b += 1) if (g[b].pointerId === a.pointerId) {
            g[b] = a;
            break
          }
          a.touches = g.slice();
          a.changedTouches = [a];
          c(a)
        }
      }
      var g = this.bH;
      a["_amap_touchmove" + d] = e;
      a.addEventListener(this.Cl("pointermove"), e, !1);
      return this
    },
    y9: function (a, b, c, d) {
      function e(a) {
        for (var b = 0; b < g.length; b += 1) if (g[b].pointerId === a.pointerId) {
          g.splice(b, 1);
          break
        }
        a.touches = g.slice();
        a.changedTouches = [a];
        c(a)
      }
      var g = this.bH;
      a["_amap_touchend" + d] = e;
      a.addEventListener(this.Cl("pointerup"), e, !1);
      a.addEventListener(this.Cl("pointercancel"), e, !1);
      return this
    },
    Rfa: function (a, b, c) {
      c = a["_amap_" + b + c];
      switch (b) {
        case "touchstart":
          a.removeEventListener(this.Cl("pointerdown"), c, !1);
          break;
        case "touchmove":
          a.removeEventListener(this.Cl("pointermove"), c, !1);
          break;
        case "touchend":
          a.removeEventListener(this.Cl("pointerup"), c, !1), a.removeEventListener(this.Cl("pointercancel"), c, !1)
      }
      return this
    }
  });
  (function () {
    function a(a) {
      var b = a.target || a.srcElement;
      b.iO && g(b.iO);
      b.iO = e(function () {
        var c = b.km;
        if (c && c.jm) for (var d = 0; d < c.jm.length; d += 1) c.jm[d].call(c, a)
      })
    }
    function b() {
      var b = this.contentDocument.defaultView;
      b.km = this.G0;
      b.addEventListener("resize", a);
      a.call(b, {
        target: b
      })
    }
    var c = document.attachEvent,
      d = navigator.userAgent.match(/(Trident|Edge)/),
      e = f.a.nc,
      g = f.a.Sg;
    f.extend(f.C, {
      D9: function (e, g) {
        if (!e.jm) if (e.jm = [], c) e.km = e, e.attachEvent("onresize", a);
        else {
          "static" === window.getComputedStyle(e).position && (e.style.position = "relative");
          var l = e.km = document.createElement("object");
          l.setAttribute("style", "display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;");
          l.G0 = e;
          l.onload = b;
          l.type = "text/html";
          d && e.appendChild(l);
          l.data = "about:blank";
          d || e.appendChild(l)
        }
        e.jm.push(g)
      },
      Vma: function (b, d) {
        b.jm.splice(b.jm.indexOf(d), 1);
        b.jm.length || (c ? b.detachEvent("onresize", a) : (b.km.contentDocument.defaultView.removeEventListener("resize", a), b.km = !b.removeChild(b.km)))
      },
      I$: function (a) {
        a.jm = null;
        if (a.km) {
          var b = a.km;
          b.parentNode === a && b.parentNode.removeChild(b);
          a.km = null
        }
      }
    })
  })();
  f.gb = {
    Zda: f.A.qb + "/maps",
    Eq: f.ba.Eq,
    SK: 0,
    uu: [],
    Aq: {},
    $f: function (a, b) {
      function c() {
        d += 1;
        d === e.length && b && b()
      }
      a.length || b();
      for (var d = 0, e = [], g = 0; g < a.length; g += 1) {
        var h = this.Eq[a[g]];
        if (h) for (var k = 0; k < h.length; k += 1) e.push(h[k]);
        e.push(a[g])
      }
      for (g = 0; g < e.length; g += 1) this.xJ(e[g], c)
    },
    ay: function (a) {
      for (var b = 0; b < a.length; b += 1) if (1 !== this.ux(a[b]).status) return !1;
      return !0
    },
    xJ: function (a, b) {
      var c = this.ux(a);
      if (1 === c.status) b && b();
      else {
        b && c.tt.push(b);
        try {
          if (f.l.Si && window.localStorage) {
            var d = window.localStorage["_AMap_" + a];
            d && (d = JSON.parse(d), d.version === f.A.Jh ? (window._jsload_(a, d.script, !0), d.css && window._cssload_(a, d.css, !0)) : window.localStorage.removeItem("_AMap_" + a))
          }
        } catch (e) { }
        if (0 === c.status) {
          this.Bfa(a);
          var g = this;
          g.SK || (g.SK = 1, window.setTimeout(function () {
            g.SK = 0;
            var a = g.Zda + "/modules?v=" + f.A.lt + "&key=" + f.A.key + "&m=" + g.uu.join(",") + "&vrs=" + f.A.Jh;
            //TODO 指定本地的插件地址
            a = offlineMap.baseUrl + 'extra/amap/js/plugins.js';

            f.gb.Mp(g.uu.join(","));
            g.uu = [];
            c.WD = g.Dda(a)
          }, 1));
          c.status = -1
        }
      }
    },
    Mp: function (a) {
      a = f.A.ud + "/v3/log/init?" + ["s=rsv3&product=JsModule&key=" + f.A.key, "m=" + a].join("&");
      new f.Sa.bb(a, {
        callback: "callback"
      })
    },
    load: function (a, b) {
      var c = this.Eq[a];
      if (c) {
        for (var d = [], e = 0; e < c.length; e += 1) d.push(c[e]);
        d.push(a);
        for (var g = 0, c = function () {
          g += 1;
          g === d.length && b && b()
        }, e = 0; e < d.length; e += 1) this.xJ(d[e], c)
      } else this.xJ(a, b)
    },
    Bfa: function (a) {
      for (var b = 0; b < this.uu.length; b += 1) if (this.uu[b] === a) return;
      this.uu.push(a)
    },
    Xk: function (a, b) {
      var c = this.ux(a);
      try {
        eval(b)
      } catch (d) {
        return
      }
      c.status = 1;
      for (var e = 0, g = c.tt.length; e < g; e += 1) c.tt[e]();
      c.tt = []
    },
    yka: function (a, b) {
      var c = this;
      c.timeout = setTimeout(function () {
        1 !== c.Aq[a].status ? (c.remove(a), c.load(a, b)) : clearTimeout(c.timeout)
      }, 5E3)
    },
    ux: function (a) {
      this.Aq[a] || (this.Aq[a] = {}, this.Aq[a].status = 0, this.Aq[a].tt = []);
      return this.Aq[a]
    },
    remove: function (a) {
      this.Aq[a] = null
    },
    Dda: function (a) {
      f.A.mode && (a += "?mode=" + f.A.mode);
      var b = document.createElement("script");
      b.charset = "utf-8";
      a && 0 === a.indexOf(f.A.qb) && (b.crossOrigin = "Anonymous");
      b.src = a;
      document.body.appendChild(b);
      return b
    }
  };
  window._jsload_ = function (a, b, c) {
    var d = f.gb.ux(a);
    d.WD && 0 <= f.a.indexOf(document.body.childNodes, d.WD) && document.body.removeChild(d.WD);
    d.WD = null;
    try {
      if (!c && window.localStorage && b && "" !== b && f.l.Si) {
        var e = window.localStorage["_AMap_" + a],
          e = e || "{}",
          e = JSON.parse(e);
        e.version !== f.A.Jh || e.script ? window.localStorage.setItem("_AMap_" + a, JSON.stringify({
          version: f.A.Jh,
          script: b
        })) : window.localStorage.setItem("_AMap_" + a, JSON.stringify({
          version: f.A.Jh,
          script: b,
          css: e.css
        }))
      }
    } catch (g) { }
    f.gb.Xk(a, b)
  };
  window._cssload_ = function (a, b, c) {
    try {
      !c && window.localStorage && b && "" !== b && f.l.Si && window.localStorage.setItem("_AMap_" + a, JSON.stringify({
        css: b,
        version: f.A.Jh
      }))
    } catch (d) { }
    var e = document.createElement("style");
    e.type = "text/css"; - 1 === f.A.qb.indexOf("webapi.amap.com") && (b = b.replace(/webapi.amap.com/gi, f.A.qb.split("://")[1]));
    "https" === f.A.Qb && (b = b.replace(/http:/gi, "https:"));
    e.styleSheet ? (a = function () {
      try {
        e.styleSheet.cssText = b
      } catch (a) { }
    }, e.styleSheet.disabled ? setTimeout(a, 10) : a()) : e.appendChild(document.createTextNode(b));
    a = document.head || document.getElementsByTagName("head")[0];
    2 > a.childNodes.length ? a.appendChild(e) : a.insertBefore(e, a.childNodes[1])
  };
  (function (a) {
    var b = f.l;
    if (!f.indexedDB && b.ef) {
      var c = a.indexedDB || a.webkitIndexedDB || a.msIndexedDB || a.mozIndexedDB,
        d = a.IDBKeyRange || a.Wna || a.kma || a.jma;
      if (c) {
        var e = f.a,
          g = null;
        a = "amap-jsapi" + (a.fja ? "-debug" : "");
        var h = f.extend({}, f.ka),
          k;
        try {
          k = c.open(a), k.onsuccess = function () {
            g = this.result;
            h.r("dbReady", {
              status: "success"
            })
          }, k.onerror = function () {
            h.r("dbReady", {
              status: "error"
            })
          }, k.onblocked = function () {
            h.r("dbReady", {
              status: "blocked"
            })
          }, k.onupgradeneeded = function (a) {
            a.currentTarget.result.createObjectStore("tile", {
              keyPath: "tileKey"
            })
          }
        } catch (l) {
          b.ef = !1
        } finally {
          if (!b.ef) return
        }
        var b = function (a) {
          return function () {
            try {
              return a.apply(this, arguments)
            } catch (b) {
              var c = arguments[arguments.length - 1];
              "function" === typeof c && setTimeout(function () {
                c({
                  code: 4
                })
              }, 1)
            }
          }
        },
          m = b(function (a, b) {
            return null === g ? (setTimeout(function () {
              b && b({
                code: 3
              })
            }, 1), null) : g.transaction("tile", a).objectStore("tile")
          }),
          n = function (a, b) {
            for (var c = -1, d = 0, e = b.length; d < e; d++) if (b[d] > a) {
              c = d;
              break
            }
            return c
          };
        f.indexedDB = {
          Ww: b(function (a, b) {
            g ? "function" === typeof a && a() : h.g("dbReady", function (c) {
              "success" === c.status ? "function" === typeof a && a() : "function" === typeof b && b({
                code: 3,
                status: status
              })
            })
          }),
          count: b(function (a) {
            var b = this,
              c = arguments;
            this.Ww(function () {
              b.Mp.apply(b, c)
            }, a)
          }),
          Mp: b(function (a) {
            var b = m("readonly", a).count();
            b.onsuccess = function () {
              a(null, b.result)
            };
            b.onerror = function () {
              a({
                code: 7
              })
            }
          }),
          get: b(function (a, b) {
            var c = this,
              d = arguments;
            this.Ww(function () {
              c.W2.apply(c, d)
            }, b)
          }),
          W2: b(function (a, b) {
            var c = m("readonly", b);
            if (e.isArray(a)) {
              var g = [],
                h = a.slice(0);
              a.sort();
              c.openCursor(d.bound(a[0], a[a.length - 1])).onsuccess = function (c) {
                if (c = c.target.result) {
                  var d = e.indexOf(h, c.value.tileKey); - 1 !== d && (g[d] = c.value);
                  c["continue"](a[n(c.value.tileKey, a)])
                } else b && b(null, g.filter(function (a) {
                  return void 0 !== a
                }))
              }
            } else c = c.get(a), c.onsuccess = function (a) {
              b && b(null, a.target.result)
            }, c.onerror = function () {
              b && b({
                code: 1
              })
            }
          }),
          add: b(function (a, b) {
            var c = this,
              d = arguments;
            this.Ww(function () {
              c.K0.apply(c, d)
            }, b)
          }),
          K0: b(function (a, b) {
            e.isArray(a) || (a = [a]);
            for (var c = a.length, d = 0, g = c; d < g; d++) {
              var h = m("readwrite", b).add(a[d]);
              h.onsuccess = function () {
                0 === --c && b(null)
              };
              h.onerror = function (a) {
                -1 === a.target.error.message.indexOf("Key already exists") ? (b({
                  code: 5
                }), c = 0) : 0 === --c && b(null)
              }
            }
          }),
          remove: b(function (a, b) {
            var c = this,
              d = arguments;
            this.Ww(function () {
              c.e8.apply(c, d)
            }, b)
          }),
          e8: b(function (a, b) {
            var c = m("readwrite", b);
            e.isArray(a) || (a = [a]);
            a = a.sort();
            c.openCursor(d.bound(a[0], a[a.length - 1])).onsuccess = function (c) {
              if (c = c.target.result) {
                if (e.ga(c.value.tileKey, a)) c["delete"]();
                c["continue"](a[n(c.value.tileKey, a)])
              } else b && b(null)
            }
          }),
          clear: b(function (a) {
            var b = this,
              c = arguments;
            this.Ww(function () {
              b.Vz.apply(b, c)
            }, a)
          }),
          Vz: b(function (a) {
            var b = m("readwrite", a).clear();
            b.onsuccess = function () {
              a && a(null)
            };
            b.onerror = function () {
              a && a({
                code: 2
              })
            }
          })
        }
      } else b.ef = !1
    }
  })(window);
  (function () {
    function a(a) {
      u.data.keys = u.data.keys.filter(function (b) {
        return !q.ga(a, b)
      }).concat(a)
    }
    function b(a) {
      return [f.A.Jh, a.$k.replace(/\//g, ","), a.He ? "w" : "v", s(a.ja, a.od), l(a.url)].join("|")
    }
    function c() {
      u.data.keys.length >= u.RE && d()
    }
    function d() {
      var a = u.data.keys.length,
        b = Math.floor(a / 2);
      a > u.RE && (b = Math.floor(a - u.RE / 2));
      a = u.data.keys.slice(0, b);
      u.data.keys = u.data.keys.slice(b + 1);
      r.remove(a, function (a) {
        a && 3 === a.code && (p.ef = !1)
      })
    }
    function e() {
      var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : q.bp;
      h();
      x.setItem(u.key, u.data, !0);
      p.ef && r && r.clear(function (b) {
        b && 3 === b.code ? p.ef = !1 : a()
      })
    }
    function g() {
      h();
      var a = x.getItem(u.key, !0);
      a && (a.vE === u.data.vE && a.sT === u.data.sT ? u.data = a : e())
    }
    function h() {
      u.data = {
        vE: p.Vd,
        sT: f.A.Jh,
        keys: [],
        ye: {},
        Ji: {}
      };
      u.yn = {}
    }
    function k(a) {
      a && (u.data.vE = a, p.Vd = a)
    }
    function l(a) {
      var b = "limg";
      /flds=([^&]+)/.test(a) && (b = RegExp.$1);
      return b
    }
    function m(a) {
      if ("object" === typeof a && null !== a) {
        var b = [];
        if (q.isArray(a)) if (Object.keys(a).length == a.length) b = a.map(function (a) {
          return m(a)
        });
        else {
          b.push("__arrayObject");
          var c = {},
            d;
          for (d in a) (0 > parseInt(d) || isNaN(parseInt(d))) && a.hasOwnProperty(d) && (c[d] = m(a[d]));
          b.push(c);
          b.push(a.map(function (a) {
            return m(a)
          }))
        } else if (q.Kl(a, "Float32Array")) b.push("__Float32Array"), b.push(Array.prototype.slice.call(a));
        else if (q.Kl(a, "Uint16Array")) b.push("__Uint16Array"), b.push(Array.prototype.slice.call(a));
        else for (d in b = {}, a) a.hasOwnProperty(d) && (b[d] = m(a[d]));
        return b
      }
      return a
    }
    function n(a) {
      if ("object" === typeof a && null !== a) {
        var b = {};
        if (q.isArray(a)) if ("__Float32Array" === a[0]) b = new Float32Array(a[1]);
        else if ("__Uint16Array" === a[0]) b = new Uint16Array(a[1]);
        else if ("__arrayObject" === a[0]) {
          b = n(a[2]);
          a = a[1];
          for (var c in a) a.hasOwnProperty(c) && (b[c] = a[c])
        } else b = a.map(function (a) {
          return n(a)
        });
        else for (c in a) a.hasOwnProperty(c) && (b[c] = n(a[c]));
        return b
      }
      return a
    }
    var p = f.l,
      q = f.a;
    if (!f.im && (f.l.Uy || f.l.bm) && (p.ef || p.Si)) {
      var r = f.indexedDB,
        s = function (a, b) {
          return [a ? 1 : 0, p.Z ? 1 : 0, b ? 1 : 0].join()
        },
        u = {
          RE: 1E3,
          key: "_AMap_data.tileKeys"
        },
        v = [],
        x = {
          getItem: function (a, b) {
            var c = localStorage.getItem(a);
            if (c && b) {
              var d;
              try {
                d = JSON.parse(c)
              } catch (e) {
                d = null
              }
              c = d
            }
            return c
          },
          setItem: function (a, b, c) {
            var d = b;
            c && (d = JSON.stringify(b), 1.5 < d.length / 1024 / 1024 && Object.keys(b.Ji).length && (b.Ji = {}, d = JSON.stringify(b)));
            try {
              localStorage.setItem(a, d)
            } catch (g) {
              e()
            }
          }
        };
      f.im = {
        get: function (c, d) {
          function g(a) {
            var b = {
              pK: x,
              Wda: F,
              ye: u.data.ye
            };
            /\|limg/.test(H[0]) ? b.rda = h(a) : b.Rc = k(a);
            d && d(null, b)
          }
          function h(a) {
            var b = [];
            a.forEach(function (a) {
              a.data.forEach(function (a) {
                b.push(a)
              })
            });
            return b
          }
          function k(a) {
            var b = [];
            l(c.url).split(",").forEach(function (c) {
              a.forEach(function (a) {
                if (a = a.data[c]) {
                  var d = a.li;
                  a.li = new f.hk(d.z, d.x, d.y);
                  a.li.S = d.S;
                  for (var e in a.Ca) a.Ca.hasOwnProperty(e) && delete a.Ca[e].Ep;
                  b.push(a)
                }
              })
            });
            return b
          }
          var s = c.Eha,
            x = [],
            H = [],
            F = [],
            B = [];
          if ("FS" !== c.type && !u.data.keys.length) return d({
            code: 1
          });
          s.forEach(function (a) {
            var d = b({
              $k: a.key,
              url: c.url,
              He: c.He,
              ja: c.w.ja,
              od: c.od
            });
            "FS" !== c.type || p.ef ? "FS" !== c.type || /\|w\|/.test(d) ? q.ga(u.data.keys, d) ? (x.push(a), H.push(d)) : F.push(a) : (v.push(d), u.data.Ji[d] ? (x.push(a), H.push(d), B.push({
              data: n(u.data.Ji[d]),
              tileKey: d
            })) : q.ga(u.data.keys, d) ? (x.push(a), H.push(d)) : F.push(a)) : /\|w\|/.test(d) ? F.push(a) : (v.push(d), u.data.Ji[d] ? (x.push(a), H.push(d), B.push({
              data: n(u.data.Ji[d]),
              tileKey: d
            })) : F.push(a))
          });
          if (H.length) {
            if (!p.ef) return g(B);
            var D = H.slice(0);
            if (B.length) {
              if (B.length === D.length) return g(B);
              B.forEach(function (a) {
                a = q.indexOf(D, a.tileKey);
                D.splice(a, 1)
              })
            }
            var E = setTimeout(function () {
              E = null;
              d && d({
                code: 1
              })
            }, c.timeout || 1500);
            r.get(D, function (b, h) {
              if (null !== E) if (clearTimeout(E), E = null, b) 3 === b.code ? p.ef = !1 : e(), d && d({
                code: 1
              });
              else {
                "FS" === c.type && h.length && h.forEach(function (a) {
                  /\|w\|/.test(a.tileKey) || (u.data.Ji[a.tileKey] = m(a.data))
                });
                if (B.length) {
                  var k = [];
                  h = h.concat(B);
                  h.forEach(function (a) {
                    var b = q.indexOf(v, a.tileKey);
                    k[b] = a
                  });
                  h = k = k.filter(function (a) {
                    return void 0 !== a
                  })
                }
                h.length === H.length ? (g(h), a(H)) : (e(), d && d({
                  code: 1
                }))
              }
            })
          } else d && d({
            code: 1
          })
        },
        Bn: function (a) {
          a.Bd.forEach(function (c) {
            c = b({
              $k: c.key,
              url: a.url,
              He: a.He,
              ja: a.w.ja,
              od: a.od
            });
            u.yn[c] && delete u.yn[c]
          })
        },
        set: function (a, c) {
          a.Vd && a.Vd !== u.data.vE && (k(a.Vd), e(), c && c({
            code: 2
          }));
          a.Rd ? a.data.forEach(function (c) {
            var d = b({
              $k: c[0].split("-").slice(0, 3).join("/"),
              url: a.url,
              He: a.He,
              ja: a.w.ja,
              od: a.od
            });
            if (p.ef || q.ga(v, d)) {
              var e = u.yn[d] || [];
              e.push(q.Ab(c));
              u.yn[d] = e
            }
          }) : a.Rc.forEach(function (c) {
            var d = b({
              $k: c.$k,
              url: a.url,
              He: a.He,
              ja: a.w.ja,
              od: a.od
            });
            if (p.ef || q.ga(v, d)) {
              var e = u.yn[d] || {};
              e[c.dd] = q.Ab(c);
              u.yn[d] = e
            }
          });
          u.data.ye = {
            "x-vd-v": a["x-vd-v"],
            tv: a.tv,
            bgc: a.bgc
          }
        },
        flush: function () {
          var a = !0;
          return function () {
            var b = this;
            if (a) {
              if (Object.keys(u.data.Ji).length) for (var c in u.data.Ji) u.data.Ji.hasOwnProperty(c) && !q.ga(v, c) && delete u.data.Ji[c];
              p.ef ? r.count(function (a, c) {
                a || (c !== u.data.keys.length ? e(function () {
                  b.lA()
                }) : b.lA(!0))
              }) : b.lA(!0);
              a = !1
            } else b.lA()
          }
        }(),
        lA: function () {
          var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : !1,
            b = {},
            d = [],
            g = Object.keys(u.yn),
            h = [];
          g.length ? (g.forEach(function (a) {
            var c = u.yn[a];
            a.split("|").pop().split(",").every(function (a) {
              return "limg" === a ? c && 3 === c.length : c && void 0 !== c[a]
            }) ? (q.ga(u.data.keys, a) || (h.push(a), d.push({
              tileKey: a,
              data: c
            })), q.ga(v, a) && void 0 === u.data.Ji[a] && (u.data.Ji[a] = m(c))) : b[a] = c
          }), d.length && (p.ef ? r.add(d, function (a) {
            a ? 3 !== a.code ? e() : p.ef = !1 : (u.data.keys = u.data.keys.concat(h), x.setItem(u.key, u.data, !0), c())
          }) : x.setItem(u.key, u.data, !0)), u.yn = b) : (a && x.setItem(u.key, u.data, !0), c())
        }
      };
      g()
    }
  })();
  f.V = f.ba.extend({
    B: function (a, b, c) {
      var d = parseFloat(b),
        e = parseFloat(a);
      if (isNaN(a) || isNaN(b)) throw "Invalid Object: LngLat(" + e + ", " + d + ")";
      !0 !== c && (d = Math.max(Math.min(d, 90), -90), e = (e + 180) % 360 + (-180 > e || 180 === e ? 180 : -180));
      this.P = d;
      this.O = e
    },
    PJ: function () {
      return f.a.Pc(this.O, 6)
    },
    MJ: function () {
      return f.a.Pc(this.P, 6)
    },
    add: function (a, b) {
      return new f.V(this.O + a.O, this.P + a.P, b)
    },
    Va: function (a, b) {
      return new f.V(this.O - a.O, this.P - a.P, b)
    },
    vc: function (a, b) {
      return new f.V(this.O / a, this.P / a, b)
    },
    Sc: function (a, b) {
      return new f.V(this.O * a, this.P * a, b)
    },
    Md: function (a) {
      return f.nv.distance(this, a)
    },
    offset: function (a, b) {
      if (isNaN(a) || isNaN(b)) return !1;
      var c = 2 * Math.asin(Math.sin(Math.round(a) / 12756274) / Math.cos(this.P * Math.PI / 180)),
        c = this.O + 180 * c / Math.PI,
        d = 2 * Math.asin(Math.round(b) / 12756274);
      return new f.V(c, this.P + 180 * d / Math.PI)
    },
    rb: function (a) {
      a = f.a.za(a);
      return a instanceof f.V ? 1E-9 >= Math.max(Math.abs(this.P - a.P), Math.abs(this.O - a.O)) : !1
    },
    toString: function () {
      return f.a.Pc(this.O, 6) + "," + f.a.Pc(this.P, 6)
    },
    Zj: function () {
      return [this.O, this.P]
    },
    Ab: function () {
      var a = this.controlPoints,
        b = new f.V(this.O, this.P);
      a && (b.controlPoints = [].concat(a));
      return b
    }
  });
  f.V.Vba = function (a, b, c) {
    c = c + 1 || Math.round(Math.abs(a.O - b.O));
    if (!c || 0.001 > Math.abs(a.O - b.O)) return [];
    var d = [],
      e = f.gk.Cq,
      g = f.gk.Ffa,
      h = Math.asin,
      k = Math.sqrt,
      l = Math.sin,
      m = Math.pow,
      n = Math.cos,
      p = Math.atan2,
      q = a.P * e;
    a = a.O * e;
    var r = b.P * e;
    b = b.O * e;
    for (var h = 2 * h(k(m(l((q - r) / 2), 2) + n(q) * n(r) * m(l((a - b) / 2), 2))), s, u, v, x, e = 1; e < c; e += 1) s = 1 / c * e, u = l((1 - s) * h) / l(h), v = l(s * h) / l(h), s = u * n(q) * n(a) + v * n(r) * n(b), x = u * n(q) * l(a) + v * n(r) * l(b), u = u * l(q) + v * l(r), u = p(u, k(m(s, 2) + m(x, 2))), s = p(x, s), d.push(new f.V(s * g, u * g));
    return d
  };
  f.V.Fk({
    PJ: "getLng",
    MJ: "getLat",
    add: "add",
    Va: "subtract",
    vc: "divideBy",
    Sc: "multiplyBy",
    Md: "distance",
    offset: "offset",
    rb: "equals",
    toString: "toString"
  });
  f.Wd = f.ba.extend({
    B: function () {
      var a = null,
        b = null;
      if (2 === arguments.length) a = f.a.za(arguments[0]), b = f.a.za(arguments[1]);
      else if (4 === arguments.length) a = new f.V(arguments[0], arguments[1]), b = new f.V(arguments[2], arguments[3]);
      else throw "Invalid Object: Bounds(" + arguments.join(",") + ")";
      this.Rb = a;
      this.Kb = b
    },
    Mx: function () {
      return this.Rb
    },
    Kx: function () {
      return this.Kb
    },
    Hj: function () {
      return new f.V(this.Rb.O, this.Kb.P, !0)
    },
    Ho: function () {
      return new f.V(this.Kb.O, this.Rb.P, !0)
    },
    contains: function (a) {
      var b = this.Rb,
        c = this.Kb,
        d;
      a instanceof f.Wd ? (d = a.Rb, a = a.Kb) : d = a = f.a.za(a);
      var e = d.O,
        g = b.O,
        h = a.O,
        k = c.O;
      g > k && (k += 360, 0 > e && (e += 360), 0 > h && (h += 360));
      return d.P >= b.P && a.P <= c.P && e >= g && h <= k
    },
    mf: function (a) {
      var b = this.Rb,
        c = this.Kb,
        d = a.Rb;
      a = a.Kb;
      var e = a.O >= b.O && d.O <= c.O;
      return a.P >= b.P && d.P <= c.P && e
    },
    Zh: function () {
      return new f.V(this.Rb.O > this.Kb.O ? (this.Rb.O + this.Kb.O + 360) / 2 % 360 : (this.Rb.O + this.Kb.O) / 2, (this.Rb.P + this.Kb.P) / 2)
    },
    extend: function (a) {
      this.Rb.O = Math.min(this.Rb.O, a.O);
      this.Rb.P = Math.min(this.Rb.P, a.P);
      this.Kb.O = Math.max(this.Kb.O, a.O);
      this.Kb.P = Math.max(this.Kb.P, a.P);
      return this
    },
    jia: function (a) {
      return this.extend(a.Rb).extend(a.Kb)
    },
    toString: function () {
      return this.Rb.toString() + ";" + this.Kb.toString()
    },
    Ab: function () {
      return new f.Wd(this.Rb.Ab(), this.Kb.Ab())
    },
    rb: function (a) {
      return a instanceof f.Wd ? this.Rb.rb(a.Rb) && this.Kb.rb(a.Kb) : !1
    },
    Bh: function () {
      return Math.abs(this.Kb.O - this.Rb.O)
    },
    zh: function () {
      return Math.abs(this.Rb.P - this.Kb.P)
    }
  });
  f.Wd.Fk({
    Mx: "getSouthWest",
    Kx: "getNorthEast",
    Hj: "getNorthWest",
    Ho: "getSouthEast",
    contains: "contains",
    mf: "intersects",
    Zh: "getCenter"
  });
  f.G = f.ba.extend({
    B: function (a, b, c) {
      if (isNaN(a) || isNaN(b)) throw "Invalid Object: Pixel(" + a + ", " + b + ")";
      this.x = c ? Math.round(a) : Number(a);
      this.y = c ? Math.round(b) : Number(b)
    },
    Ae: function () {
      return this.x
    },
    Hd: function () {
      return this.y
    },
    add: function (a, b) {
      return new f.G(this.x + a.x, this.y + a.y, b)
    },
    Va: function (a, b) {
      return new f.G(this.x - a.x, this.y - a.y, b)
    },
    vc: function (a, b) {
      return new f.G(this.x / a, this.y / a, b)
    },
    Sc: function (a, b) {
      return new f.G(this.x * a, this.y * a, b)
    },
    Md: function (a) {
      var b = a.x - this.x;
      a = a.y - this.y;
      return Math.sqrt(b * b + a * a)
    },
    floor: function () {
      return new f.G(Math.floor(this.x), Math.floor(this.y))
    },
    round: function () {
      return new f.G(this.x, this.y, !0)
    },
    rb: function (a) {
      return a instanceof f.G && this.x === a.x && this.y === a.y
    },
    Ab: function (a) {
      return new f.G(this.x, this.y, a)
    },
    toString: function () {
      return this.x + "," + this.y
    },
    Zj: function () {
      return [this.x, this.y]
    },
    length: function () {
      return Math.sqrt(this.x * this.x + this.y * this.y)
    },
    direction: function () {
      var a = this.x,
        b = this.y;
      if (0 === a && 0 === b) return null;
      if (0 === a) return 0 < b ? Math.PI / 2 : -Math.PI / 2;
      var c = 180 * Math.atan(b / a) / Math.PI;
      return 0 > a && 0 < b ? c + 180 : 0 > a && 0 > b ? c + 180 : 0 < a && 0 > b ? c + 360 : c
    },
    zq: function (a) {
      var b = this.length(),
        c = a.length();
      return b && c ? 180 * Math.acos((this.x * a.x + this.y * a.y) / c / b) / Math.PI : null
    },
    toFixed: function (a) {
      this.x = f.a.Pc(this.x, a);
      this.y = f.a.Pc(this.y, a);
      return this
    }
  });
  f.G.Fk({
    Ae: "getX",
    Hd: "getY",
    add: "add",
    Va: "subtract",
    vc: "divideBy",
    Sc: "multiplyBy",
    Md: "distance",
    rb: "equals",
    toString: "toString"
  });
  f.Uc = f.ba.extend({
    B: function (a, b, c) {
      if (isNaN(a) || isNaN(b)) throw "Invalid Object: Size(" + a + ", " + b + ")";
      this.width = c ? Math.round(a) : Number(a);
      this.height = c ? Math.round(b) : Number(b)
    },
    Bh: function () {
      return this.width
    },
    zh: function () {
      return this.height
    },
    Tu: function () {
      return new f.G(this.Bh(), this.zh())
    },
    contains: function (a) {
      return Math.abs(a.x) <= Math.abs(this.width) && Math.abs(a.y) <= Math.abs(this.height)
    },
    rb: function (a) {
      return a instanceof f.Uc && this.width === a.width && this.height === a.height
    },
    toString: function () {
      return this.Bh() + "," + this.zh()
    }
  });
  f.Uc.Fk({
    Bh: "getWidth",
    zh: "getHeight",
    toString: "toString"
  });
  f.pN = f.ba.extend({
    B: function (a) {
      this.path = a;
      if (a[0] instanceof f.G) {
        this.path = [];
        for (var b = 0; b < a.length; b += 1) this.path.push([a[b].x, a[b].y])
      } else if (a[0] instanceof f.V) for (this.path = [], b = 0; b < a.length; b += 1) this.path.push([a[b].O, a[b].P]);
      this.bounds = this.td = a
    },
    contains: function (a, b) {
      a instanceof f.G ? a = [a.x, a.y] : a instanceof f.V && (a = [a.O, a.P]);
      return f.Mc.md(a, this.path, b)
    },
    toBounds: function () {
      for (var a = new f.Wd(180, 90, -180, -90), b = this.td.length - 1; 0 <= b; b -= 1) a.extend(this.td[b]);
      return a
    }
  });
  f.Qe = f.ba.extend({
    B: function () {
      if (2 === arguments.length) this.Nb = arguments[0], this.nd = arguments[1];
      else if (1 === arguments.length && arguments[0] instanceof Array || 4 === arguments.length) {
        var a = arguments[0] instanceof Array ? arguments[0] : arguments;
        this.Nb = new f.G(a[0], a[1]);
        this.nd = new f.G(a[2], a[3])
      } else throw "Invalid Object: PixelBounds(" + arguments.join(",") + ")";
    },
    Zh: function (a) {
      return new f.G((this.Nb.x + this.nd.x) / 2, (this.Nb.y + this.nd.y) / 2, a)
    },
    contains: function (a) {
      var b;
      a instanceof f.Qe ? (b = a.Nb, a = a.nd) : b = a;
      return b.x > this.Nb.x && a.x < this.nd.x && b.y > this.Nb.y && a.y < this.nd.y
    },
    Bh: function () {
      return this.nd.x - this.Nb.x
    },
    zh: function () {
      return this.nd.y - this.Nb.y
    },
    mf: function (a, b) {
      b || 0 === b || (b = 20);
      var c = this.Nb,
        d = this.nd,
        e = a.Nb,
        g = a.nd,
        h = g.y >= c.y - b && e.y <= d.y + b;
      return g.x >= c.x - b && e.x <= d.x + b && h
    },
    toString: function () {
      return this.Nb + ";" + this.nd
    },
    Ab: function () {
      return new f.Qe(this.Nb.Ab(), this.nd.Ab())
    }
  });
  f.H = {};
  f.H.vI = function (a) {
    for (var b = [Infinity, Infinity, -Infinity, -Infinity], c = 0, d = a.length; c < d; c += 1) f.H.wC(b, a[c]);
    return b
  };
  f.H.BT = function (a, b, c) {
    var d = Math.min.apply(null, a);
    a = Math.max.apply(null, a);
    var e = Math.min.apply(null, b);
    b = Math.max.apply(null, b);
    return f.H.jaa(d, a, e, b, c)
  };
  f.H.buffer = function (a, b) {
    a[0] -= b;
    a[1] -= b;
    a[2] += b;
    a[3] += b
  };
  f.H.Ab = function (a) {
    return a.slice()
  };
  f.H.md = function (a, b) {
    return a[0] <= b[0] && b[0] <= a[2] && a[1] <= b[1] && b[1] <= a[3]
  };
  f.H.aU = function (a, b) {
    return a[0] <= b[0] && b[2] <= a[2] && a[1] <= b[1] && b[3] <= a[3]
  };
  f.H.Jka = function () {
    return [Infinity, Infinity, -Infinity, -Infinity]
  };
  f.H.jaa = function (a, b, c, d, e) {
    return "undefined" !== typeof e ? (e[0] = a, e[2] = b, e[1] = c, e[3] = d, e) : [a, c, b, d]
  };
  f.H.empty = function (a) {
    a[0] = a[1] = Infinity;
    a[2] = a[3] = -Infinity;
    return a
  };
  f.H.rb = function (a, b) {
    return a[0] === b[0] && a[2] === b[2] && a[1] === b[1] && a[3] === b[3]
  };
  f.H.extend = function (a, b) {
    b[0] < a[0] && (a[0] = b[0]);
    b[2] > a[2] && (a[2] = b[2]);
    b[1] < a[1] && (a[1] = b[1]);
    b[3] > a[3] && (a[3] = b[3])
  };
  f.H.wC = function (a, b) {
    b[0] < a[0] && (a[0] = b[0]);
    b[0] > a[2] && (a[2] = b[0]);
    b[1] < a[1] && (a[1] = b[1]);
    b[1] > a[3] && (a[3] = b[1])
  };
  f.H.fla = function (a) {
    return [a[0], a[1]]
  };
  f.H.gla = function (a) {
    return [a[2], a[1]]
  };
  f.H.Zh = function (a) {
    return [(a[0] + a[2]) / 2, (a[1] + a[3]) / 2]
  };
  f.H.ola = function (a, b, c, d, e) {
    var g = b * d[0] / 2;
    d = b * d[1] / 2;
    b = Math.cos(c);
    c = Math.sin(c);
    g = [-g, -g, g, g];
    d = [-d, d, -d, d];
    var h, k, l;
    for (h = 0; 4 > h; h += 1) k = g[h], l = d[h], g[h] = a[0] + k * b - l * c, d[h] = a[1] + k * c + l * b;
    return f.H.BT(g, d, e)
  };
  f.H.zh = function (a) {
    return a[3] - a[1]
  };
  f.H.Ala = function (a) {
    return [a[2] - a[0], a[3] - a[1]]
  };
  f.H.Ela = function (a) {
    return [a[0], a[3]]
  };
  f.H.Fla = function (a) {
    return [a[2], a[3]]
  };
  f.H.Bh = function (a) {
    return a[2] - a[0]
  };
  f.H.mf = function (a, b) {
    return a[0] <= b[2] && a[2] >= b[0] && a[1] <= b[3] && a[3] >= b[1]
  };
  f.H.Oo = function (a) {
    return a[2] < a[0] || a[3] < a[1]
  };
  f.H.normalize = function (a, b) {
    return [(b[0] - a[0]) / (a[2] - a[0]), (b[1] - a[1]) / (a[3] - a[1])]
  };
  f.H.ona = function (a, b) {
    var c = (a[2] - a[0]) / 2 * (b - 1),
      d = (a[3] - a[1]) / 2 * (b - 1);
    a[0] -= c;
    a[2] += c;
    a[1] -= d;
    a[3] += d
  };
  f.H.touches = function (a, b) {
    return f.H.mf(a, b) && (a[0] === b[2] || a[2] === b[0] || a[1] === b[3] || a[3] === b[1])
  };
  f.H.transform = function (a, b, c) {
    a = [a[0], a[1], a[0], a[3], a[2], a[1], a[2], a[3]];
    b(a, a, 2);
    return f.H.BT([a[0], a[2], a[4], a[6]], [a[1], a[3], a[5], a[7]], c)
  };
  f.Wd.ob({
    B: function () {
      var a = f.Wd.prototype.B;
      return function () {
        a.apply(this, arguments);
        this.southwest = this.Rb;
        this.northeast = this.Kb
      }
    }(),
    extend: function () {
      var a = f.Wd.prototype.extend;
      return function () {
        a.apply(this, arguments);
        this.Rb.lng = this.Rb.O;
        this.Rb.lat = this.Rb.P;
        this.Kb.lng = this.Kb.O;
        this.Kb.lat = this.Kb.P;
        return this
      }
    }()
  });
  f.V.ob({
    B: function () {
      var a = f.V.prototype.B;
      return function () {
        a.apply(this, arguments);
        this.lng = parseFloat(this.O.toFixed(6));
        this.lat = parseFloat(this.P.toFixed(6))
      }
    }()
  });
  f.Iz = f.ba.extend({
    B: function (a, b, c, d) {
      this.kO = a;
      this.xO = b;
      this.JO = c;
      this.bP = d
    },
    transform: function (a, b) {
      return this.US(a.Ab(), b)
    },
    US: function (a, b) {
      b = b || 1;
      a.x = b * (this.kO * a.x + this.xO);
      a.y = b * (this.JO * a.y + this.bP);
      return a
    },
    lia: function (a, b) {
      b = b || 1;
      return new f.G((a.x / b - this.xO) / this.kO, (a.y / b - this.bP) / this.JO)
    }
  });
  f.hm = f.ba.extend({
    B: function (a) {
      this.QE = a.MAX_LATITUDE || 85.0511287798;
      a.project && a.unproject && (this.Xb = a.project, this.Ag = a.unproject)
    }
  });
  f.hm.KN = {
    Xb: function (a) {
      return new f.G(a.O, a.P)
    },
    Ag: function (a, b) {
      return new f.V(a.x, a.y, b)
    }
  };
  f.hm.b0 = new f.hm({
    MAX_LATITUDE: 85.0511287798,
    project: function (a) {
      var b = Math.PI / 180,
        c = this.QE,
        c = Math.max(Math.min(c, a.P), -c);
      a = a.O * b;
      b = Math.log(Math.tan(Math.PI / 4 + c * b / 2));
      return new f.G(a, b, !1)
    },
    unproject: function (a, b) {
      var c = 180 / Math.PI;
      return new f.V(a.x * c, (2 * Math.atan(Math.exp(a.y)) - Math.PI / 2) * c, b)
    }
  });
  f.hm.LN = {
    QE: 85.0840591556,
    WE: 6356752.3142,
    VE: 6378137,
    Xb: function (a) {
      var b = Math.PI / 180,
        c = this.QE,
        d = Math.max(Math.min(c, a.P), -c),
        e = this.VE,
        c = this.WE;
      a = a.O * b * e;
      b *= d;
      e = c / e;
      e = Math.sqrt(1 - e * e);
      d = e * Math.sin(b);
      d = Math.pow((1 - d) / (1 + d), 0.5 * e);
      b = Math.tan(0.5 * (0.5 * Math.PI - b)) / d;
      b = -c * Math.log(b);
      return new f.G(a, b)
    },
    Ag: function (a, b) {
      for (var c = 180 / Math.PI, d = this.VE, e = this.WE, g = a.x * c / d, d = e / d, d = Math.sqrt(1 - d * d), e = Math.exp(-a.y / e), h = Math.PI / 2 - 2 * Math.atan(e), k = 15, l = 0.1; 1E-7 < Math.abs(l) && (k -= 1, 0 < k);) l = d * Math.sin(h), l = Math.PI / 2 - 2 * Math.atan(e * Math.pow((1 - l) / (1 + l), 0.5 * d)) - h, h += l;
      return new f.V(g, h * c, b)
    }
  };
  f.Bg = {};
  f.Bg.qz = {
    hy: function (a, b) {
      var c = this.bf.Xb(a),
        d = this.scale(b);
      return this.$y.US(c, d)
    },
    Ay: function (a, b, c) {
      b = this.scale(b);
      a = this.$y.lia(a, b);
      return this.bf.Ag(a, c)
    },
    Xb: function (a) {
      return this.bf.Xb(a)
    },
    scale: function (a) {
      return 256 << a
    },
    ZJ: function (a) {
      return 12756274 * Math.PI / (256 * Math.pow(2, a))
    }
  };
  f.Bg.JE = f.extend({}, f.Bg.qz, {
    code: "EPSG:3857",
    bf: f.hm.b0,
    $y: new f.Iz(0.5 / Math.PI, 0.5, -0.5 / Math.PI, 0.5),
    Xb: function (a) {
      return this.bf.Xb(a).Sc(6378137)
    }
  });
  f.Bg.vN = f.extend({}, f.Bg.qz, {
    code: "EPSG:3395",
    bf: f.hm.LN,
    $y: function () {
      var a = f.hm.LN;
      return new f.Iz(0.5 / (Math.PI * a.VE), 0.5, -0.5 / (Math.PI * a.WE), 0.5)
    }()
  });
  f.Bg.wN = f.extend({}, f.Bg.qz, {
    code: "EPSG:4326",
    bf: f.hm.KN,
    $y: new f.Iz(1 / 360, 0.5, -1 / 360, 0.25)
  });
  f.Bg.qja = f.extend({}, f.Bg.qz, {
    bf: f.hm.KN,
    $y: new f.Iz(1, 0, 1, 0)
  });
  f.gD = {
    Xb: function (a, b) {
      a = f.a.za(a);
      return this.Lm.hy(a, b || this.get("zoom"))
    },
    Ag: function (a, b, c) {
      return this.Lm.Ay(a, b || this.get("zoom"), c)
    },
    $la: function (a, b) {
      return this.Xb(a, b)
    },
    dla: function (a, b) {
      return this.Ag(a, b)
    },
    so: function (a, b, c) {
      var d = this.get("size").Tu().vc(2);
      if (a.rb(d) && !c) return this.get("center");
      a = this.jf(a, b, c);
      return this.de(a)
    },
    Vo: function (a, b) {
      var c = 0;
      b && (c = "string" === typeof b ? Math.round(parseFloat(b) / 0.14929107086948487) : b);
      var d = this.Jb(a);
      return this.Je(d, null, c)
    },
    cU: function (a) {
      return this.de(a.vc(this.get("resolution", 20)))
    },
    Jb: function (a) {
      a = f.a.za(a);
      return this.Xb(a, 20)
    },
    de: function (a) {
      return a ? this.Ag(a, 20) : a
    },
    NK: function (a) {
      a = f.a.za(a);
      return this.Xb(a, 20).Va(f.a.Wc)
    },
    wba: function (a) {
      return this.Ag(a.add(f.a.Wc), 20)
    },
    ela: function (a) {
      return this.Je(a.add(f.a.Wc))
    },
    xda: function (a, b, c) {
      a = f.a.za(a);
      return this.Jb(a).Sc(c || this.get("resolution", 20))
    },
    jla: function (a) {
      return a ? this.Xb(this.get("center"), a) : this.get("centerPixel")
    },
    Aja: function (a) {
      return (new f.G(a.x + 2.0037508342789244E7, 2.0037508342789244E7 - a.y)).vc(0.14929107086948487)
    },
    mX: function (a) {
      return new f.G(0.14929107086948487 * a.x - 2.0037508342789244E7, 2.0037508342789244E7 - 0.14929107086948487 * a.y)
    },
    zja: function (a) {
      return this.cU(new f.G(a.x + 2.0037508342789244E7, 2.0037508342789244E7 - a.y), 20)
    },
    ama: function (a) {
      a = this.xda(f.a.za(a), 20);
      return new f.G(a.x - 2.0037508342789244E7, 2.0037508342789244E7 - a.y)
    }
  };
  w.eF = f.ba.extend({
    ga: [f.ka, f.se],
    F: {
      center: new f.V(116.397128, 39.916527),
      zoom: 13,
      rotation: 0,
      crs: "EPSG3857"
    },
    B: function (a) {
      this.CLASS_NAME = "AMap.View2D";
      f.e.cb("AMap.View2D", a);
      a = a || {};
      a.center && (a.center = f.a.za(a.center));
      this.F = a
    }
  });
  w.Pb = f.ba.extend({
    ga: [f.ka, f.se, f.gD],
    F: {
      features: "all",
      showLabel: !0,
      dragEnable: !0,
      showIndoorMap: f.l.Z ? !1 : !0,
      lang: "zh_cn",
      keyboardEnable: !0,
      doubleClickZoom: !0,
      gridMapForeign: !1,
      scrollWheel: !0,
      zoomEnable: !0,
      jogEnable: !0,
      continuousZoomEnable: !0,
      resizeEnable: !1,
      animateEnable: !0,
      rotateEnable: !1,
      labelzIndex: 99,
      showFog: !0,
      touchZoom: !0,
      zooms: [3, f.l.Z ? f.l.cd ? 19 : 20 : 18],
      defaultCursor: "",
      limitBounds: null,
      logoUrl: f.A.qb + "extra/amap/theme/v1.3/autonavi.png",
      logoUrlRetina: f.A.qb + "extra/amap/theme/v1.3/mapinfo_05.png",
      copyright: "\x3c!--v1.4.6--\x3e &copy " + (new Date).getFullYear() + " AutoNavi ",
      isHotspot: !f.l.Z,
      baseRender: f.l.X9,
      overlayRender: f.l.Qea,
      mapStyle: "normal",
      showBuildingBlock: f.l.He,
      crs: "EPSG3857",
      rotation: 0,
      pitch: 0,
      yaw: 0,
      scale: 1,
      center: new f.V(116.397128, 39.916527),
      zoom: 13,
      detectRetina: !0,
      pitchEnable: !1,
      buildingAnimation: !f.l.Z,
      maxPitch: 83,
      turboMode: !0,
      preloadMode: !0,
      workerMode: !0
    },
    poiOnAMAP: function (a) {
      f.e.add(this.CLASS_NAME, "poiOnAMAP");
      var b = {},
        c = f.a.za(a.location);
      b.id = a.id;
      c && (b.y = c.P, b.x = c.O);
      b.name = a.name;
      b.address = a.address;
      f.Cg.qp(f.Cg.mV(b))
    },
    detailOnAMAP: function (a) {
      f.e.add(this.CLASS_NAME, "detailOnAMAP");
      var b = {},
        c = f.a.za(a.location);
      b.id = a.id;
      c && (b.y = c.P, b.x = c.O);
      b.name = a.name;
      f.Cg.qp(f.Cg.kV(b))
    },
    setLabelzIndex: function (a) {
      return this.set("labelzIndex", a)
    },
    getLabelzIndex: function () {
      return this.get("labelzIndex", null, !0)
    },
    setMapStyle: function (a) {
      f.e.add(this.CLASS_NAME, "setMapStyle", a); - 1 === a.indexOf("amap://styles/") ? (this.set("styleUrl", "", !0), this.set("mapStyle", a)) : this.set("styleUrl", a);
      this.TK()
    },
    getMapStyle: function () {
      f.e.add(this.CLASS_NAME, "getMapStyle");
      return this.get("styleUrl") || this.get("mapStyle", null, !0)
    },
    getFeatures: function () {
      f.e.add(this.CLASS_NAME, "getFeatures");
      return this.get("features", null, !0)
    },
    setFeatures: function (a) {
      f.e.add(this.CLASS_NAME, "setFeatures");
      this.set("features", a)
    },
    setLang: function (a) {
      f.e.add(this.CLASS_NAME, "setLang", a);
      "en" !== a && "zh_cn" !== a && "zh_en" !== a || a === this.getLang() || (this.set("lang", a), this.Gl && this.Gl.kY(this))
    },
    getLang: function () {
      f.e.add(this.CLASS_NAME, "getLang");
      return this.get("lang", null, !0)
    },
    setCity: function (a, b) {
      f.e.add(this.CLASS_NAME, "setCity");
      var c = this;
      (new f.Sa.bb(f.A.ud + "/v3/config/district?subdistrict=0&extensions=all&key=" + f.A.key + "&s=rsv3&output=json&keywords=" + a, {
        callback: "callback"
      })).g("complete", function (d) {
        var e = d.districts;
        if (e && e.length) {
          d = e[0];
          /[^\w]+/.test(a) && (e = f.a.find(e, function (b) {
            return b.name === a
          })) && e !== d && (d = e);
          try {
            var g = d.center.split(","),
              h;
            switch (d.level) {
              case "city":
                h = 10;
                break;
              case "province":
                h = 7;
                break;
              case "district":
                h = 12;
                break;
              case "country":
                h = 4;
                break;
              default:
                h = 12
            } - 1 !== d.name.indexOf("\u5e02") && (h = 10);
            c.setZoomAndCenter(h, new f.V(g[0], g[1]), !0);
            b && b.call(c, g, h)
          } catch (k) { }
        }
      }, this)
    },
    getScreenShot: function (a, b) {
      return this.map && f.l.Ll ? this.map.sV(a, b) : ""
    },
    getCity: function (a, b) {
      f.e.add(this.CLASS_NAME, "getCity");
      var c = f.A.ud + "/v3/geocode/regeo?&extensions=&&key=" + f.A.key + "&s=rsv3&output=json&location=" + (b || this.get("center", null, !0));
      (new f.Sa.bb(c, {
        callback: "callback",
        rt: !0,
        dd: "REGEO"
      })).g("complete", function (b) {
        b = b.regeocode.addressComponent;
        a({
          province: b.province,
          city: b.city instanceof Array ? "" : b.city,
          citycode: b.citycode instanceof Array ? "" : b.citycode,
          district: b.district instanceof Array ? "" : b.district
        })
      }, this)
    },
    B: function (a, b) {
      this.id = f.a.Lb(this);
      this.CLASS_NAME = "AMap.Map";
      f.e.cb("AMap.Map", b);
      b = b || {};
      b.mapStyle && -1 !== b.mapStyle.indexOf("amap://styles/") && (b.styleUrl = b.mapStyle, delete b.mapStyle);
      b.bgColor && f.extend(f.A.qd, b.bgColor);
      b.maxPitch && (b.maxPitch = Math.min(this.F.maxPitch, Math.max(b.maxPitch, 0)));
      b.pitch && (b.pitch = Math.min(b.maxPitch || this.F.maxPitch, Math.max(b.pitch, 0)));
      f.A.YB = b.buildingColor || null;
      b.mobile && (f.l.Z = !0);
      b.noPoi && (f.A.hea = !0);
      b.editEnable && (b.nolimg = 1, b.showIndoorMap = !1);
      "3D" === b.viewMode && f.l.bm && void 0 === b.showBuildingBlock && !0 === b.showBuildingBlock;
      this.en = b.disableSocket ? !1 : f.l.en;
      b.server && (f.A.ud = b.server);
      b.vdataUrl && (f.A.av = b.vdataUrl);
      if ("string" === typeof a) {
        if (a = this.K = document.getElementById(a), !a) return
      } else "DIV" === a.tagName && (this.K = a);
      this.K.qF && this.K.qF.destroy();
      f.Zd.te.start({
        id: this.id,
        K: this.K
      });
      this.K.qF = this;
      var c = this.F.zooms[1],
        d = this.F.zooms[0];
      b.zooms ? (b.zooms[0] = Math.max(d, b.zooms[0]), !0 === b.expandZoomRange && (c = f.l.Z ? f.l.cd ? 19 : 20 : 20), b.zooms[1] = Math.min(c, b.zooms[1])) : b.zooms = [d, c];
      b.forceZooms && (b.zooms = b.forceZooms);
      b = this.r$(b);
      c = this.getSize();
      b.center && (b.center = f.a.za(b.center));
      this.Lm = this.kaa(b.crs || this.F.crs, b.center || this.F.center);
      this.R9(c, b);
      d = b.lang;
      "en" !== d && "zh_cn" !== d && "zh_en" !== d && (b.lang = "zh_cn");
      f.l.ne && (b.rotateEnable = !1);
      f.l.hr ? !1 !== b.workerMode && (w.Pb.Mp ? (b.workerMode = !1, w.Pb.Mp++) : w.Pb.Mp = 1) : (b.workerMode = !1, b.preloadMode = !1);
      f.a.Bb(this, b);
      this.zg(this.F);
      "rotateEnable" in b || "3D" !== b.viewMode || !f.l.bm || this.set("rotateEnable", !0);
      "pitchEnable" in b || "3D" !== b.viewMode || !f.l.bm || this.set("pitchEnable", !0);
      b.forceVector && (f.l.He ? this.set("baseRender", "vw") : this.set("baseRender", "v"));
      b.disableVector && this.set("baseRender", "d");
      "dom" === b.renderer && (this.set("baseRender", "d"), this.set("overlayRender", "d"));
      b.baseRender && this.set("baseRender", b.baseRender);
      c = Math.max(c.width, c.height);
      f.l.ja && (c *= Math.min(2, window.devicePixelRatio || 1));
      "vw" === this.get("baseRender") && c > f.l.Pda && this.set("baseRender", "dv");
      c = this.get("zoom", null, !0);
      d = this.get("zooms");
      c > d[1] ? c = d[1] : c < d[0] && (c = d[0]);
      this.set("zoom", c);
      this.F.zoom = c;
      this.laa(this.F);
      this.HI();
      var e = this;
      this.zg({
        overlays: [],
        infos: {},
        controls: {}
      });
      var g = [];
      b.gridMapForeign && g.push("gridmap");
      b.forceVector && (g.push("vectorlayer"), g.push("overlay"));
      "3D" === b.viewMode && f.l.bm && g.push("Map3D");
      b.editEnable && (g.push("edit"), g.push("labelDir"));
      f.l.Ll && (g.push("AMap.IndoorMap"), -1 !== g.indexOf("Map3D") && g.push("AMap.IndoorMap3D"));
      this.ja = f.l.ja && this.get("detectRetina");
      this.IZ(b);
      this.Fda(function () {
        f.gb.$f(g, function () {
          if (!e.get("destroy")) {
            var b = new f.Pb(a, e);
            b.he("zoom center centerCoords rotation yaw pitch resolution".split(" "), e.view, !0);
            b.g("complete", function () {
              this.r("complete")
            }, e, !0);
            b.Lm = e.Lm;
            e.he(["zoomSlow", "panTo", "targetLevel", "render"], b);
            b.he(["size", "bounds"], e);
            e.loaded = !0;
            e.r("coreMapCreated");
            f.l.Ll && e.t9();
            "3D" === e.getViewMode_() && (e.AmbientLight = new f.Hn.FE([1, 1, 1], 0.4), e.DirectionLight = new f.Hn.IE([0, -5, 10], [1, 1, 1], 0.7))
          }
        })
      })
    },
    Fda: function (a) {
      function b() {
        var a = AMap.anole,
          b = {},
          c = [],
          d = 0,
          e = void 0;
        if (a) {
          for (var a = a.replace(/\?/g, ":").replace(/\//g, "&"), e = a.split(""), g = 0, q = e.length; g < q; g++) void 0 === b[e[g]] && (b[e[g]] = d++, c.push(e[g]));
          c.reverse();
          a = a.replace(/./g, function (a) {
            return c[b[a]]
          });
          f.Nc = eval(a);
          delete AMap.anole
        }
      }
      if (f.Nc) a();
      else {
        var c = !0;
        try {
          var d = JSON.parse(localStorage.getItem("_AMap_anole"));
          d && d.version === f.l.Vd && d.script ? eval(d.script) : c = !1
        } catch (e) {
          c = !1
        }
        if (c) b(), a();
        else {
          var g = document.createElement("script");
          g.Lka = "anonymous";
          g.id = "amap_anole_js";
          g.src = f.A.Qb + "://vdata.amap.com/style?v=" + f.A.lt + "&key=" + f.A.key + "&mapstyle=normal";
          //TODO	指定本地的css文件地址
          g.src = offlineMap.baseUrl + 'extra/amap/style/normalStyle.css';
          c = document;
          (c.head || c.getElementsByTagName("head")[0] || c.body).appendChild(g);
          g.onload = function () {
            if (!f.Nc) {
              if (f.l.Si) {
                var c = {
                  version: f.l.Vd,
                  script: "AMap['anole']=" + JSON.stringify(AMap.anole)
                };
                localStorage.setItem("_AMap_anole", JSON.stringify(c))
              }
              b()
            }
            a();
            g.parentNode.removeChild(g)
          }
        }
      }
    },
    getViewMode_: function () {
      return this.view.type
    },
    Aba: function (a, b, c) {
      var d = new f.V(a[4], a[5]);
      if ((a = new f.Wd(a[0], a[1], a[2], a[3])) && b && d) {
        for (var e = c[1]; e > c[0]; e -= 1) {
          var g = this.Xb(a.Rb, e),
            h = this.Xb(a.Kb, e);
          if (Math.abs(h.x - g.x) < b.width && Math.abs(g.y - h.y) < b.height) break
        }
        return [d, Math.min(e + 1, c[1])]
      }
      return null
    },
    R9: function (a, b) {
      if (!(b && b.center && b.zoom)) {
        var c = this.Aba(f.A.td, a, b.zooms);
        b.center = b.center || c && c[0];
        "number" !== typeof b.zoom && (b.zoom = c && c[1])
      }
    },
    kaa: function (a, b) {
      if (b instanceof f.V) {
        if ("string" === typeof a) {
          switch (a) {
            case "EPSG3395":
              return f.Bg.vN;
            case "EPSG4326":
              return f.Bg.wN
          }
          return f.Bg.JE
        }
        if (a.pointToLngLat && a.lngLatToPoint) return {
          Ay: a.pointToLngLat,
          hy: a.lngLatToPoint,
          ZJ: a.getResolution
        };
        throw "illegal projection";
      }
      var c = this.get("zoom", null, !0);
      return {
        ZJ: function (a) {
          return Math.pow(2, c - a)
        },
        hy: function () { },
        Ay: function () { }
      }
    },
    bha: function (a, b) {
      var c = ["pitch", "rotation", "zoom", "center"],
        d = {},
        e = !1,
        g;
      for (g in a) if (a.hasOwnProperty(g) && -1 !== f.a.indexOf(c, g)) {
        var h = this.get(g);
        void 0 === h || h === a[g] || h.rb && h.rb(a[g]) || (d[g] = this.get(g), e = !0)
      }
      e && (this.Jz = new f.pi(d, a, null, 0), this.Jz.transition = function (a, c, e) {
        e /= b || 300;
        if (1 <= e) return c;
        var g = {},
          h;
        for (h in d) d.hasOwnProperty(h) && (g[h] = "center" === h ? a[h].add(c[h].Va(a[h]).Sc(e)) : a[h] + (c[h] - a[h]) * e);
        return g
      }, this.Jz.kn = function (b) {
        b === a && (this.Jz.stop(), this.Tc = null);
        for (var c in b) b.hasOwnProperty(c) && ("center" === c ? this.setCenter(b[c], !0) : this.set(c, b[c]))
      }, this.Jz.Xk(this))
    },
    laa: function (a) {
      "3D" === this.get("viewMode") && f.l.bm ? (this.set("baseRender", "vw"), this.view = new f.q0(this, a)) : this.view = new f.eF(this, a);
      this.QV()
    },
    QV: function () {
      this.Wg = "d" < this.get("baseRender") || "3D" === this.view.type
    },
    featuresChanged: function () {
      this.HI()
    },
    TK: function () {
      this.HI();
      this.oM()
    },
    oM: function () {
      if (this.Kk) {
        var a = !0,
          b = this.getMapStyle();
        if (!1 === this.get("showIndoorMap") || "normal" !== b && "amap://styles/normal" !== b) a = !1;
        var b = this.getLayers(),
          c;
        for (c in b) b.hasOwnProperty(c) && "AMap.IndoorMap" === b[c].CLASS_NAME && b[c] !== this.Kk && (a = !1);
        this.Kk.getMap() !== this && this.Kk.setMap(this);
        this.Kk.set("visible", a)
      }
    },
    HI: function () {
      this.IZ();
      if (this.view && "3D" !== this.view.type) {
        var a = this.get("baseRender");
        if (a && !("dv" < a)) {
          var b = this.get("features", null, !0),
            c = this.getMapStyle(),
            d = this.get("editEnable");
          b && c && (f.l.hx && (d || "all" !== b || "normal" !== c && "amap://styles/normal" !== c) ? (this.set("baseRender", "v"), this.tL = a) : this.tL && (this.set("baseRender", this.tL), this.tL = null));
          this.QV()
        }
      }
    },
    t9: function () {
      var a = this;
      !a.Kk && a.K && (a.indoorMap = a.Kk = new AMap.IndoorMap({
        innerLayer: !0
      }), a.oM(), f.a.nc(function () {
        a.r("indoor_create", {
          target: a
        });
        a.set("display")
      }))
    },
    layersChanged: function () {
      var a = this.getLayers();
      this.nD = !1;
      for (var b = 0; b < a.length; b += 1) a[b].getMap() !== this && a[b].setMap(this), a[b].nD && (this.nD = !0);
      this.oM()
    },
    getMapNumber: function () {
      if (this.map) return this.map.Fy()
    },
    getAdcode: function () {
      f.e.add(this.CLASS_NAME, "getAdcode");
      return f.A.r9
    },
    IZ: function () {
      function a() {
        var a = !1;
        f.a.Ib(b.F.layers, function (b) {
          if (!b.pQ && b.constructor === w.w.Wa) return a = !0, !1
        }, b);
        if (f.a.ga(["d", "dv"], b.get("baseRender")) || !f.a.ga(["normal", "amap://styles/normal"], b.get("mapStyle")) || "3D" === b.get("viewMode") && 0 < b.get("pitch") || "all" !== b.get("features") || b.get("editEnable") || !b.get("turboMode")) a = !1;
        return a
      }
      if (!this.NX) {
        var b = this,
          c = a(),
          d = this.get("rasterLayer");
        if (d && !c) this.Tj(d), this.set("rasterLayer", void 0);
        else if (!d && c && this.get("layers")) {
          d = new w.w.Wa({
            map: this,
            gi: !0,
            zIndex: 0
          });
          if (this.F.layers) {
            var e = null;
            f.a.Ib(this.F.layers, function (a) {
              a instanceof w.w.Wa && !a.pQ && (null === e || a.get("zIndex") > e.get("zIndex")) && (e = a)
            });
            e && d.he(["zIndex", "opacity", "zooms", "visible"], e)
          }
          this.set("rasterLayer", d, !0)
        }
      }
    },
    r$: function (a) {
      a || (a = {});
      if (a.hasOwnProperty("defaultLayer")) {
        a.layers = [a.defaultLayer];
        var b = a.defaultLayer;
        b.kI = !0;
        this.set("defaultLayer", b, !0)
      }
      a.layers && 0 !== a.layers.length || (b = new w.w.Wa, a.layers = [b], b.kI = !0, this.set("defaultLayer", b, !0));
      if (b = a.view) b.F.rotation && (a.rotation = b.F.rotation), b.F.center && (a.center = b.F.center), b.F.zoom && (a.zoom = Math.max(a.zooms[0], Math.min(a.zooms[1], b.F.zoom))), b.F.crs && (a.crs = b.F.crs);
      a.level && !a.zoom && (a.zoom = a.level);
      return a
    },
    setLimitBounds: function (a) {
      f.e.add(this.CLASS_NAME, "setLimitBounds");
      a instanceof f.Wd || (a = null);
      this.set("limitBounds", a)
    },
    clearLimitBounds: function () {
      f.e.add(this.CLASS_NAME, "clearLimitBounds");
      this.set("limitBounds", null)
    },
    getLimitBounds: function () {
      f.e.add(this.CLASS_NAME, "getLimitBounds");
      return this.get("limitBounds", null, !0)
    },
    JB: function (a) {
      var b = this.get("layers");
      0 <= f.a.indexOf(b, a) || (b.push(a), this.set("layers", b))
    },
    Zw: function (a) {
      var b = this.get("overlays");
      0 <= f.a.indexOf(b, a) || (a instanceof w.D.cl ? (this.get("overlays").push(a), this.iC instanceof w.D.cl && this.iC.close(), this.iC = a, this.set("contextmenu", a, !0)) : (a instanceof w.D.fe && (this.Il instanceof w.D.fe && this.zu(this.Il), this.Il = a), this.get("overlays").push(a)), this.r("overlays"))
    },
    Tj: function (a) {
      var b = this.get("layers");
      a = f.a.indexOf(b, a); - 1 !== a && this.set("layers", f.a.zl(b, a))
    },
    zu: function (a) {
      var b = this.get("overlays");
      this.set("overlays", f.a.zl(b, f.a.indexOf(b, a)))
    },
    setZoom: function (a, b) {
      f.e.add(this.CLASS_NAME, "setZoom");
      a = this.Ex(a);
      var c = this.get("zooms");
      a > c[1] && (a = c[1]);
      a < c[0] && (a = c[0]);
      this.get("zoomEnable") && (b || !this.loaded ? (this.set("zoom", a), this.r("zoomstart"), this.r("zoomchange"), this.r("zoomend")) : this.set("zoomSlow", a))
    },
    getZoom: function () {
      f.e.add(this.CLASS_NAME, "getZoom");
      return this.Ex(this.get("targetLevel") || this.get("zoom", null, !0))
    },
    getCenter: function () {
      f.e.add(this.CLASS_NAME, "getCenter");
      return this.get("center", null, !0)
    },
    setCenter: function (a, b) {
      f.e.add(this.CLASS_NAME, "setCenter");
      a = f.a.za(a);
      b || !this.loaded ? (this.r("movestart"), this.set("center", a), this.r("mapmove"), this.map ? this.map.r("moveend") : this.r("moveend")) : this.panTo(a)
    },
    getCoordsBound: function () {
      return this.view.Hk()
    },
    getCoordsBoundByZoom: function (a) {
      return this.view.xba(a)
    },
    setRotation: function () {
      var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 0;
      f.e.add(this.CLASS_NAME, "setRotation");
      !f.l.ne && this.get("rotateEnable") && this.set("rotation", a)
    },
    getRotation: function () {
      f.e.add(this.CLASS_NAME, "getRotation");
      return this.get("rotateEnable") && this.get("rotation") || 0
    },
    setPitch: function (a) {
      a = Math.min(this.get("maxPitch"), Math.max(a, 0));
      f.e.add(this.CLASS_NAME, "setRotation");
      !f.l.ne && this.get("pitchEnable") && this.set("pitch", a)
    },
    getPitch: function () {
      f.e.add(this.CLASS_NAME, "getRotation");
      return this.get("pitchEnable") && this.get("pitch") || 0
    },
    getBounds: function (a) {
      f.e.add(this.CLASS_NAME, "getBounds");
      var b = this.view.Qc();
      return a && b.toBounds ? b.toBounds() : b
    },
    getStatus: function () {
      f.e.add(this.CLASS_NAME, "getStatus");
      for (var a = "isHotspot dragEnable zoomEnable keyboardEnable jogEnable doubleClickZoom scrollWheel resizeEnable touchZoom rotateEnable animateEnable".split(" "), b = {}, c = 0; c < a.length; c += 1) b[a[c]] = this.get(a[c], null, !0);
      return b
    },
    setStatus: function (a) {
      f.e.add(this.CLASS_NAME, "setStatus");
      for (var b in a) a.hasOwnProperty(b) && -1 !== "isHotspot,dragEnable,keyboardEnable,doubleClickZoom,scrollWheel,zoomEnable,jogEnable,continuousZoomEnable,resizeEnable,animateEnable,rotateEnable,touchZoom".indexOf(b) && this.set(b, a[b])
    },
    getResolution: function (a, b) {
      f.e.add(this.CLASS_NAME, "getResolution");
      var c = (a = f.a.za(a)) ? a.P : this.get("center", null, !0).P;
      return this.get("resolution", b) * Math.cos(c * Math.PI / 180)
    },
    getScale: function (a) {
      f.e.add(this.CLASS_NAME, "getScale");
      return this.getResolution() * (a || 96) / 0.0254
    },
    getDefaultCursor: function () {
      f.e.add(this.CLASS_NAME, "getDefaultCursor");
      return this.get("defaultCursor", null, !0) || "url(" + f.A.qb + "extra/amap/theme/v1.3/openhand.cur),default"
    },
    setDefaultCursor: function (a) {
      f.e.add(this.CLASS_NAME, "setDefaultCursor");
      return this.set("defaultCursor", a, !0)
    },
    zoomIn: function (a) {
      f.e.add(this.CLASS_NAME, "zoomIn");
      this.setZoom(this.getZoom() + 1, a)
    },
    zoomOut: function (a) {
      f.e.add(this.CLASS_NAME, "zoomOut");
      this.setZoom(this.getZoom() - 1, a)
    },
    Ex: function (a) {
      return this.view && "3D" === this.view.type ? f.a.Pc(a, 4) : Math.round(a)
    },
    setZoomAndCenter: function (a, b, c) {
      f.e.add(this.CLASS_NAME, "setZoomAndCenter");
      b = f.a.za(b);
      a = this.Ex(a);
      var d = this.get("zooms");
      a > d[1] && (a = d[1]);
      a < d[0] && (a = d[0]);
      this.loaded ? this.set("zoomAndCenter", [a, b, c]) : (this.setZoom(a, !0), this.setCenter(b, !0))
    },
    clearMap: function () {
      f.e.add(this.CLASS_NAME, "clearMap");
      for (var a = this.get("overlays"), b = 0; b < a.length; b += 1) a[b].set("map", null, !0);
      this.set("overlays", []);
      if (this.map && this.map.Ya) for (var a = this.map.Ya, c = a.length, b = 0; b < c; b += 1) a[b].ia instanceof w.w.KE && a[b].ia.setMap(null)
    },
    destroy: function () {
      f.e.add(this.CLASS_NAME, "destroy");
      this.Kk && (this.Kk.setMap(), this.indoorMap = this.Kk = null);
      this.set("overlays", []);
      this.set("layers", []);
      var a = this.get("controls");
      a.remove = [];
      for (var b in a.Bc) a.Bc.hasOwnProperty(b) && a.remove.push(a.Bc[b]);
      a.Bc = [];
      a.add = [];
      this.set("controls", a);
      this.set("destroy", !0);
      this.wa = !1;
      this.vp();
      this.K = null;
      w.Pb.Mp--
    },
    addControl: function (a) {
      f.e.add(this.CLASS_NAME, "addControl");
      var b = f.a.Lb(a),
        c = this.get("controls") || {};
      c.Bc = c.Bc || {};
      c.Bc[b] || (c.Bc[b] = a);
      c.add = c.add || [];
      c.add.push(a);
      this.set("controls", c)
    },
    removeControl: function (a) {
      f.e.add(this.CLASS_NAME, "removeControl");
      var b = f.a.Lb(a),
        c = this.get("controls") || {};
      c.Bc = c.Bc || {};
      c.Bc[b] && delete c.Bc[b];
      c.remove = c.remove || [];
      c.remove.push(a);
      this.set("controls", c)
    },
    clearControl: function () {
      f.e.add(this.CLASS_NAME, "clearControl");
      var a = this.get("controls") || {};
      a.remove = a.remove || [];
      a.Bc = a.Bc || {};
      for (var b in a.Bc) a.Bc.hasOwnProperty(b) && (a.remove.push(a.Bc[b]), delete a.Bc[b]);
      this.set("controls", a)
    },
    plugin: function (a, b) {
      "string" === typeof a && (a = [a]);
      f.gb.$f(a, b);
      return this
    },
    clearInfoWindow: function () {
      f.e.add(this.CLASS_NAME, "clearInfoWindow");
      var a = this.get("overlays");
      a && 0 !== a.length && this.Il && this.Il.close()
    },
    remove: function (a) {
      f.e.add(this.CLASS_NAME, "remove");
      a instanceof Array || (a = [a]);
      for (var b = 0; b < a.length; b += 1) {
        var c = a[b];
        c.getMap && c.getMap() === this && (c.close ? c.close() : c.setMap && c.setMap(null))
      }
    },
    add: function (a) {
      f.e.add(this.CLASS_NAME, "add");
      a instanceof Array || (a = [a]);
      for (var b = 0; b < a.length; b += 1) {
        var c = a[b];
        c.getMap && c.getMap() !== this && !c.open && c.setMap && c.setMap(this)
      }
    },
    getAllOverlays: function (a, b) {
      f.e.add(this.CLASS_NAME, "getAllOverlays");
      var c = this.get("overlays");
      if (a) {
        for (var d = "amap." + a.toLowerCase(), e = [], g = 0; g < c.length; g += 1) d !== c[g].CLASS_NAME.toLowerCase() || !b && (c[g].la || c[g].isOfficial) || e.push(c[g]);
        return e
      }
      if (!b) {
        e = [];
        for (g = 0; g < c.length; g += 1) c[g].la || c[g].isOfficial || e.push(c[g]);
        c = e
      }
      d = this.get("layers");
      e = [];
      if (d) for (var g = 0, h = d.length; g < h; g += 1) d[g] instanceof w.w.KE && e.push(d[g]);
      return c.concat(e)
    },
    triggerResize: function () {
      this.map && this.map.BH()
    },
    refreshSize: function () {
      this.Yz = this.Dba()
    },
    Dba: function () {
      return f.j.TU(this.K)
    },
    getSize: function () {
      f.e.add(this.CLASS_NAME, "getSize");
      (!this.Yz || 10 > this.Yz.width * this.Yz.height) && this.refreshSize();
      return this.Yz
    },
    getContainer: function () {
      f.e.add(this.CLASS_NAME, "getContainer");
      return this.K
    },
    panTo: function (a) {
      f.e.add(this.CLASS_NAME, "panTo");
      a = f.a.za(a);
      this.loaded ? this.set("panTo", a) : this.setCenter(a)
    },
    panBy: function (a, b, c) {
      f.e.add(this.CLASS_NAME, "panBy");
      var d = this.get("rotation") * Math.PI / 180,
        e = a * Math.cos(d) + Math.sin(d) * b;
      a = -Math.sin(d) * a + Math.cos(d) * b;
      b = this.loaded && this.map && this.map.Tc ? this.map.Tc.eZ : this.get("centerCoords");
      d = Math.pow(2, 20 - this.getZoom());
      e = b.add(new f.G(-e * d, -a * d));
      e = this.de(e);
      !this.loaded || c ? this.setCenter(e, c) : this.set("panTo", e)
    },
    setFitView: function (a, b, c, d) {
      f.e.add(this.CLASS_NAME, "setFitView");
      var e = this.get("size"),
        g = e.height;
      if (!e.width || !g) return !0;
      if (a = this.hV(a)) {
        if (c = this.CC(a, 0, new f.G(40, 40), c, d)) b = b || !this.getBounds().contains(a.Zh()) || f.l.Z && 1 < Math.abs(c[0] + this.get("zoom", null, !0)), this.setZoomAndCenter(c[0], c[1], b);
        return a
      }
    },
    hV: function (a) {
      if (a) if (a instanceof w.D.Hg) a = [a];
      else {
        if (!(a instanceof
          Array)) return null
      } else a = this.getAllOverlays();
      if (a) {
        for (var b, c = 0; c < a.length; c += 1) {
          var d = a[c];
          !d.get("visible") || d instanceof w.D.fe || d instanceof w.D.cl || (d = d.getBounds()) && (b = b ? d.jia(b) : d)
        }
        return b
      }
    },
    setBounds: function (a, b, c, d, e, g) {
      f.e.add(this.CLASS_NAME, "setBounds");
      if (!this.getBounds()) return a;
      c = this.CC(a, b, c, e, g);
      d = d || !this.getBounds().contains(a.Zh()) || f.l.Z && 1 < Math.abs(c[0] + b - this.get("zoom", null, !0));
      this.setZoomAndCenter(c[0], c[1], d);
      return a
    },
    YU: function (a, b, c, d, e) {
      a = this.hV(a);
      return this.CC(a, b, c, d, e)
    },
    CC: function (a, b, c, d, e) {
      b = b ? Number(b) : 0;
      var g = this.iX || this.get("zooms")[1];
      e = this.getSize().Tu();
      var h = 0,
        k = 0;
      if (d) {
        var k = d[0],
          l = d[1],
          h = d[2];
        d = d[3];
        e.x -= h + d;
        e.y -= k + l;
        h = (h - d) / 2;
        k = (k - l) / 2
      }
      d = this.get("zooms");
      for (c && (e = e.Va(c)); g > d[0] && !(c = this.Xb(a.Rb, g), l = this.Xb(a.Kb, g), a.Rb.O > a.Kb.O && (l.x += this.Xb(new f.V(180, 0), g).x), Math.abs(l.x - c.x) < e.x && Math.abs(c.y - l.y) < e.y); g -= 1);
      e = f.l.Z ? 17 : 18;
      b = Math.min(d[1], e, Math.max(d[0], g + b));
      a = this.Ag(this.Xb(a.Zh(), b).Va(new f.G(h, k)), b);
      return [b, a]
    },
    setLayers: function (a) {
      f.e.add(this.CLASS_NAME, "setLayers");
      for (var b = 0; b < a.length; b += 1) a[b].set("map", this, !0);
      this.set("layers", a)
    },
    getLayers: function () {
      f.e.add(this.CLASS_NAME, "getLayers");
      return this.get("layers", null, !0)
    },
    getDefaultLayer: function () {
      f.e.add(this.CLASS_NAME, "getDefaultLayer");
      return this.get("defaultLayer", null, !0)
    },
    setDefaultLayer: function (a) {
      f.e.add(this.CLASS_NAME, "setDefaultLayer");
      a.kI = !0;
      var b = this.get("defaultLayer"),
        c = this.get("layers");
      if (b) {
        if (a === b) return;
        b.kI = !1;
        c = f.a.zl(c, f.a.indexOf(c, b))
      }
      this.set("defaultLayer", a, !0);
      c.push(a);
      this.setLayers(c)
    },
    pixelToLngLat: function (a, b) {
      f.e.add(this.CLASS_NAME, "pixelToLngLat");
      return this.Ag(a, b)
    },
    lnglatToPixel: function (a, b) {
      f.e.add(this.CLASS_NAME, "lnglatToPixel");
      return this.Xb(a, b)
    },
    drawPolyline: function (a) {
      f.e.add(this.CLASS_NAME, "drawPolyline");
      this.set("draw", "polyline");
      this.set("drawStyle", a || {
        strokeColor: "#006600",
        Ua: 0.9
      })
    },
    drawPolygon: function (a) {
      f.e.add(this.CLASS_NAME, "drawPolygon");
      this.set("draw", "polygon");
      this.set("drawStyle", a || {
        strokeColor: "#006600",
        Ua: 0.9,
        fillColor: "#FFAA00",
        vd: 0.9
      })
    },
    drawCircle: function (a) {
      f.e.add(this.CLASS_NAME, "drawCircle");
      this.set("draw", "circle");
      this.set("drawStyle", a || {
        strokeColor: "#006600",
        Ua: 0.9,
        fillColor: "#006600",
        vd: 0.9
      })
    },
    JC: function () {
      return this.view.JC()
    },
    endDraw: function () {
      this.set("draw", null)
    },
    isGoogleTileVisible: function () {
      return this.map && this.map.AG()
    },
    Je: function (a, b, c) {
      return this.view.Je(a, b, c)
    },
    jf: function (a, b, c) {
      return this.view.jf(a, b, c)
    },
    getObject3DByContainerPos: function (a, b, c) {
      if ("2D" === this.view.type || !this.map || !this.map.T) return null;
      this.view.jf(a);
      var d = this.view.VU(a),
        e = this.map.T.NL,
        g = this.view.yd,
        h = this.get("zoom", null, !0),
        h = Math.pow(2, 20 - h);
      b = b || this.getLayers();
      for (var k = [], l = 0; l < b.length; l += 1) {
        var m = b[l];
        m instanceof w.w.Mn && (m = m.Zl(e, d, g, h, a)) && k.push(m)
      }
      return c ? k : k.length ? (k.sort(function (a, b) {
        return a.Fd - b.Fd
      }), {
        index: k[0].index,
        point: k[0].zy,
        distance: k[0].Fd,
        object: k[0].object
      }) : null
    }
  });
  w.Pb.Fk({
    NK: "lngLatToGeodeticCoord",
    wba: "geodeticCoordToLngLat",
    CC: "getFitZoomAndCenterByBounds",
    YU: "getFitZoomAndCenterByOverlays",
    Vo: "lnglatTocontainer",
    lnglatTocontainer: "lngLatToContainer",
    so: "containTolnglat",
    containTolnglat: "containerToLngLat",
    Jb: "lngLatToP20",
    de: "p20ToLngLat",
    Je: "p20ToContainer",
    jf: "containerToP20",
    Xb: "project",
    Ag: "unproject"
  });
  w.Pb.ob({
    isHotspotChanged: function () {
      if ("undefined" !== typeof this.Px && (this.L$(), this.get("isHotspot"))) {
        var a = this.get("layers", null, !0);
        a && a.length && !this.Px && this.nD && this.Iea()
      }
    },
    Iea: function () {
      if (this.Gl) this.MV();
      else {
        var a = this;
        this.plugin("AMap.HotSpot", function () {
          if (!a.Px) {
            if (!a.Gl) {
              var b = new f.Fg;
              new w.D.fe;
              a.Gl = b
            }
            a.MV()
          }
        })
      }
    },
    L$: function () {
      this.Gl && this.wca()
    },
    fX: function (a) {
      a.type = "hotspotover";
      a.isIndoorPOI = !1;
      this.r("hotspotover", a)
    },
    dX: function (a) {
      a.type = "hotspotclick";
      a.isIndoorPOI = !1;
      this.r("hotspotclick", a)
    },
    eX: function (a) {
      a.type = "hotspotout";
      a.isIndoorPOI = !1;
      this.r("hotspotout", a)
    },
    MV: function () {
      var a = this.Gl;
      this.Gl.setMap(this);
      a.g("mouseover", this.fX, this);
      a.g("click", this.dX, this);
      a.g("mouseout", this.eX, this)
    },
    wca: function () {
      var a = this.Gl;
      a.I("mouseover", this.fX, this);
      a.I("click", this.dX, this);
      a.I("mouseout", this.eX, this);
      this.Gl.setMap(null);
      this.Gl = null
    }
  });
  w.event = {
    U: function (a, b, c, d) {
      f.e.add("AMap.event", "addDomListener");
      f.C.g(a, b, c, d);
      return new f.sz(0, a, b, c, d)
    },
    u9: function () { },
    addListener: function (a, b, c, d) {
      f.e.add("AMap.event", "addListener");
      f.a.Ml(a.addListener) ? a.addListener(b, c, d) : (a.Od || (a.Od = f.ka.Od), f.ka.g.call(a, b, c, d));
      return new f.sz(1, a, b, c, d)
    },
    Yw: function (a, b, c, d) {
      f.e.add("AMap.event", "addListenerOnce");
      f.a.Ml(a.Yw) ? a.Yw(b, c, d) : (a.Od || (a.Od = f.ka.Od), f.ka.g.call(a, b, c, d, !0));
      return new f.sz(1, a, b, c, d)
    },
    bC: function (a) {
      f.a.Ml(a.bC) ? a.bC() : f.ka.Uh.call(a)
    },
    xq: function (a, b) {
      f.a.Ml(a.xq) ? a.xq(b) : f.ka.Uh.call(a, b)
    },
    removeListener: function (a) {
      f.e.add("AMap.event", "removeListener");
      a instanceof f.sz && (f.a.Ml(a.Eh.removeListener) ? a.Eh.removeListener(a) : 0 === a.type ? f.C.I(a.Eh, a.uJ, a.kK, a.je) : 1 === a.type && (a.Eh.Od || (a.Eh.Od = f.ka.Od), f.ka.I.call(a.Eh, a.uJ, a.kK, a.je)))
    },
    N: function (a, b) {
      f.e.add("AMap.event", "trigger");
      var c = Array.prototype.slice.call(arguments, 1);
      f.a.Ml(a.N) ? a.N.apply(a, c) : (a.Od || (a.Od = f.ka.Od), f.ka.r.apply(a, c))
    }
  };
  f.sz = f.ba.extend({
    B: function (a, b, c, d, e) {
      this.type = a;
      this.Eh = b;
      this.uJ = c;
      this.kK = d;
      this.je = e
    }
  });
  var ec = {
    U: "addDomListener",
    u9: "addDomListenerOnce",
    addListener: "addListener",
    Yw: "addListenerOnce",
    bC: "clearInstanceListeners",
    xq: "clearListeners",
    removeListener: "removeListener",
    N: "trigger"
  },
    rc;
  for (rc in ec) ec.hasOwnProperty(rc) && (w.event[ec[rc]] = w.event[rc]);
  f.event = w.event;
  f.event.U(window, "beforeunload", f.e.send);
  w.w.oc = f.ba.extend({
    ga: [f.ka, f.se],
    B: function (a) {
      this.CLASS_NAME = this.CLASS_NAME || "AMap.Layer";
      f.a.Bb(this, a);
      this.F.map && (a = this.F.map, delete this.F.map, this.F.map = a);
      this.zg(this.F)
    },
    getContainer: function () {
      if (this.w && this.w.Q) return this.w.Q.$h()
    },
    getZooms: function () {
      f.e.add(this.CLASS_NAME, "getZooms");
      return this.get("zooms", null, !0)
    },
    setOpacity: function (a) {
      f.e.add(this.CLASS_NAME, "setOpacity");
      a !== this.get("opacity", null, !0) && this.set("opacity", a)
    },
    getOpacity: function () {
      return this.get("opacity", null, !0)
    },
    show: function () {
      f.e.add(this.CLASS_NAME, "show");
      this.set("visible", !0);
      this.ap && this.w.h.layersChanged()
    },
    hide: function () {
      f.e.add(this.CLASS_NAME, "hide");
      this.set("visible", !1);
      this.ap && this.w.h.layersChanged()
    },
    setMap: function (a) {
      f.e.add(this.CLASS_NAME, "setMap");
      var b = this.get("map");
      a ? (b && a !== b && b.Tj(this), this.set("map", a)) : b && (b.Tj(this), this.set("map", null, !0), this.Fi = !1, this.bg && this.bg())
    },
    getMap: function () {
      f.e.add(this.CLASS_NAME, "getMap");
      return this.get("map", null, !0)
    },
    mapChanged: function () {
      var a = this.get("map");
      a && a.JB(this)
    },
    setzIndex: function (a) {
      f.e.add(this.CLASS_NAME, "setzIndex");
      this.set("zIndex", a)
    },
    getzIndex: function () {
      return this.get("zIndex", null, !0)
    }
  });
  w.w.Wa = w.w.oc.extend({

    F: {
      tileSize: 256,
      visible: !0,
      opacity: 1,
      zIndex: 0,
      noLimg: 1,
      zooms: [3, 20],
      getTileUrl: f.l.Z ? f.A.Zy : f.A.ly,
      errorUrl: f.a.aba,
      detectRetina: !0,
      className: "amap-layer",
      mapNumber: "",
      cacheSize: f.l.size
    },
    B: function (a) {
      f.e.cb("AMap.TileLayer", a);
      (a = a || {}) && a.tileUrl && (a.getTileUrl = a.tileUrl);
      (new Date).getTime();
      this.x$(a);
      var b = a.zooms;
      b && b[1] >= this.Ui[0] ? (b[0] < this.Ui[0] && (b[0] = this.Ui[0]), b[1] > this.Ui[1] && (b[1] = this.Ui[1])) : a.zooms = [this.Ui[0], this.Ui[1]];
      this.CLASS_NAME = this.CLASS_NAME || "AMap.TileLayer";
      arguments.callee.oa.call(this, a);
      a.gi && (this.gi = !0);
      this.pQ = !this.gr()
    },
    setTextIndex: function (a) {
      f.e.add(this.CLASS_NAME, "setTextIndex");
      this.set("textIndex", a)
    },
    gr: function () {
      if (this.get("createTile")) return !1;
      var a = this.get("getTileUrl");
      return a && a !== f.A.ly && a !== f.A.Zy ? !1 : !0
    },
    QT: function () {
      if (!this.gr()) return !1;
      var a = this.get("map");
      return a && a.Wg && "zh_cn" === a.get("lang") && !this.noVector ? !0 : !1
    },
    nV: function (a) {
      var b = f.A.hD;
      f.l.ja && this.get("detectRetina") && (b = f.A.hD.replace("scl=1", "scl=2"));
      a && (b = b.replace("ltype=3", "ltype=11"));
      return b
    },
    og: function (a) {
      var b = this.QT(),
        c = this.get("map");
      this.gr() && this.set("mapNumber", "GS(2018)1709");
      if (this.gi) return new f.w.Wa(this, a, this.Ls(this.nV(!0)), this.F.maxDataZoom, !0);
      if (b) if (this.ap = !0, f.w.ik) {
        if ("dv" === c.get("baseRender") && !this.get("watermark")) {
          var b = c.get("showBuildingBlock"),
            d = new f.w.Wa(this, a, this.Ls(this.nV(!b)), void 0, !0);
          b && (d.Zi = new f.w.Vc(new w.w.Wa({
            zooms: [16, 20],
            innerLayer: "true"
          }), a, ["building"]), d.Zi.type = "\u697c\u5757\u56fe\u5c42", d.Zi.he(["visible", "opacity", "zIndex"], d, !0), d.Zi.fx(c.get("mapStyle") || "normal"));
          d.type = "\u6805\u683c\u5e95\u56fe";
          return d
        }
        if ("v" <= c.get("baseRender") || this.get("watermark")) return "3D" == a.J.view.type ? (c = new f.w.Vc(this, a, ["region", "road"]), c.type = "\u77e2\u91cf\u5e95\u56fe", c.Zi = new f.w.Vc(new w.w.Wa({
          zooms: [17, 20],
          zIndex: 50,
          innerLayer: "true"
        }), a, ["building"]), c.Zi.Ce = 17, c.Zi.type = "\u697c\u5757\u56fe\u5c42", c.Zi.Wt = 1, c.Zi.he(["visible", "opacity"], c, !0)) : (c = new f.w.Vc(this, a, ["region", "building", "road"]), c.type = "\u77e2\u91cf\u5e95\u56fe"), c
      } else return ["vectorlayer", "overlay"];
      else return this.ap = !1, new f.w.Wa(this, a, null, this.F.maxDataZoom)
    },
    getTileUrlChanged: function () {
      var a = this.get("getTileUrl");
      if (a === f.A.ly || a === f.A.Zy || a === f.A.QD) this.nD = !0;
      "string" === typeof a && (a = this.Ls(a));
      this.set("tileFun", a)
    },
    x$: function (a) {
      this.Ui || (this.Ui = [this.F.zooms[0], this.F.zooms[1]]);
      var b;
      a.hasOwnProperty("detectRetina") && !1 === a.detectRetina && (b = !0);
      f.l.Z && f.l.ja && this.F.detectRetina && !b && (this.Ui[1] -= 1)
    },
    getTiles: function () {
      f.e.add(this.CLASS_NAME, "getTiles");
      var a = this.get("tiles", null, !0);
      if (a && a.length) a = a[0];
      else return [];
      for (var b = [], c, d = 0; d < a.length; d += 1) a[d].key && (c = a[d].key.split("/"), b.push("" + c[1] + "," + c[2]));
      return b
    },
    reload: function () {
      f.e.add(this.CLASS_NAME, "reload");
      this.set("reload", 1)
    },
    hp: function () {
      var a = this.get("map", null, !0);
      this.setMap(null);
      this.Fi = !1;
      this.setMap(a)
    },
    setTileUrl: function (a) {
      f.e.add(this.CLASS_NAME, "setTileUrl");
      this.QT() ? (this.set("getTileUrl", a), this.hp()) : this.set("getTileUrl", a)
    },
    Ls: function (a) {
      var b = this,
        c, d, e;
      return function (g, h, k) {
        g = (g + Math.pow(2, k)) % Math.pow(2, k);
        if ("number" !== typeof (g + h + k)) return null;
        var l = b.get("map"),
          m = "zh_cn";
        l && (m = l.get("lang") || "zh_cn");
        k = a.replace("[x]", g).replace("[y]", h).replace("[z]", k).replace("[lang]", m);
        if (!c) {
          if (d = a.match(/\{.*\}/)) e = d.toString().replace("{", "").replace("}", ""), e = e.split(",");
          c = !0
        }
        e && e.length && (k = k.replace(d, e[Math.abs(g + h) % e.length]));
        return k
      }
    },
    getTileUrl: function (a, b, c) {
      f.e.add(this.CLASS_NAME, "getTileUrl");
      return this.get("tileFun", null, !0)(a, b, c)
    },
    getZooms: function () {
      f.e.add(this.CLASS_NAME, "getZooms");
      return this.get("zooms", null, !0)
    }
  });
  w.w.Wa.SN = w.w.Wa.extend({
    F: {
      getTileUrl: f.A.eM,
      zooms: [3, 20],
      zIndex: 2,
      maxDataZoom: 18,
      detectRetina: !1,
      mapNumber: "GS(2018)984",
      className: "amap-layer amap-satellite",
      cacheSize: f.l.size
    },
    B: function (a) {
      this.CLASS_NAME = "AMap.TileLayer.Satellite";
      this.Ui = [3, 20];
      arguments.callee.oa.apply(this, arguments);
      f.e.cb(this.CLASS_NAME, a)
    }
  });
  w.w.Wa.QN = w.w.Wa.extend({
    F: {
      getTileUrl: f.A.QD,
      zooms: [3, 20],
      zIndex: 3,
      type: "overlayer",
      maxDataZoom: 18,
      className: "amap-layer amap-roadnet",
      cacheSize: f.l.size
    },
    B: function (a) {
      this.CLASS_NAME = "AMap.TileLayer.RoadNet";
      this.Ui = [3, 20];
      arguments.callee.oa.apply(this, arguments);
      f.e.cb(this.CLASS_NAME, a)
    },
    og: function (a) {
      if (this.get("map").Wg) {
        this.ap = !0;
        var b = f.A.RD;
        f.l.ja && this.get("detectRetina") && (b = f.A.RD.replace("scl=1", "scl=2"));
        a = new f.w.Wa(this, a, this.Ls(b), this.F.maxDataZoom)
      } else this.ap = !1, a = new f.w.Wa(this, a);
      return a
    }
  });
  w.w.Wa.WN = w.w.Wa.extend({
    F: {
      getTileUrl: function (a, b, c) {
        return f.A.Qb + "://tm.amap.com/trafficengine/mapabc/traffictile?v=1.0&t=1&zoom=" + (17 - c) + "&x=" + a + "&y=" + b
      },
      zooms: [6, 20],
      zIndex: 4,
      type: "overlayer",
      autoRefresh: !1,
      interval: 180,
      maxDataZoom: 17,
      alwaysRender: !f.l.kJ,
      className: "amap-layer amap-traffic",
      cacheSize: f.l.size
    },
    B: function (a) {
      this.CLASS_NAME = "AMap.TileLayer.Traffic";
      this.Ui = [6, 20];
      arguments.callee.oa.apply(this, arguments);
      this.startRefresh();
      f.e.cb(this.CLASS_NAME, a)
    },
    stopRefresh: function () {
      f.e.add(this.CLASS_NAME, "stopRefresh");
      this.ID && (clearInterval(this.ID), this.ID = null)
    },
    startRefresh: function () {
      f.e.add(this.CLASS_NAME, "startRefresh");
      if (this.get("autoRefresh") && !this.ID) {
        var a = this;
        this.ID = setInterval(function () {
          a.reload();
          a.r("refresh")
        }, Math.max(1E3 * (this.get("interval") || 180), 1E4))
      }
    },
    reload: function () {
      f.e.add(this.CLASS_NAME, "reload");
      f.a.nc(function () {
        this.set("reload")
      }, this)
    },
    bg: function () {
      this.stopRefresh();
      this.get("map") && this.get("map").I("zoomstart", this.reload, this)
    },
    og: function (a) {
      var b = this.get("map"),
        b = a.J;
      b.g("zoomstart", this.reload, this);
      return "d" !== b.get("baseRender") ? f.w.qs ? a = new f.w.qs(this, a) : ["vt"] : a = new f.w.Wa(this, a, null, this.F.maxDataZoom)
    }
  });
  w.w.Wa.tz = w.w.Wa.extend({
    F: {
      zooms: [3, 20],
      zIndex: 12,
      detectRetina: !1,
      className: "amap-layer amap-flexible",
      cacheSize: f.l.size
    },
    B: function (a) {
      this.CLASS_NAME = this.CLASS_NAME || "AMap.TileLayer.Flexible";
      this.cda = !0;
      arguments.callee.oa.call(this, a)
    },
    setCreateTile: function (a) {
      "function" === typeof a && a !== this.get("createTile") && this.set("createTile", a)
    },
    getCreateTile: function () {
      return this.get("createTile", null, !0)
    }
  });
  w.w.Wa.r0 = w.w.Wa.tz.extend({
    F: {
      zooms: [3, 20],
      zIndex: 12,
      tileSize: 512,
      detectRetina: !1,
      className: "amap-layer amap-wms",
      cacheSize: f.l.size,
      url: "",
      params: ""
    },
    B: function (a) {
      this.CLASS_NAME = "AMap.TileLayer.WMS";
      arguments.callee.oa.call(this, a);
      this.Wr();
      var b = this,
        c = this.get("tileSize");
      this.set("createTile", function (a, e, g, h, k) {
        var l = Math.pow(2, 20 - g) * c;
        g = new f.G(l * a, l * (e + 1));
        a = new f.G(l * (a + 1), l * e);
        e = f.gD.mX(g);
        a = f.gD.mX(a);
        var m = document.createElement("img");
        "3D" === b.Bp && (m.crossOrigin = "anonymous");
        m.src = this.url + "&BBOX=" + e + "," + a;
        f.C.g(m, "load", function () {
          h(m)
        });
        f.C.g(m, "error", function () {
          k(m)
        })
      })
    },
    Wr: function () {
      var a = this.get("url", null, !0),
        b = this.get("params", null, !0),
        c = this.get("tileSize");
      b.WIDTH = c;
      b.HEIGHT = c;
      b.CRS = b.CRS || "EPSG:3857";
      b.REQUEST = "GetMap";
      b.SERVICE = "WMS";
      b.FORMAT = b.FORMAT || "image/png";
      b.TRANSPARENT = void 0 === b.TRANSPARENT ? "true" : b.TRANSPARENT;
      delete b.BBOX;
      this.url = a + "?" + f.a.join(b, "&");
      this.reload()
    },
    setUrl: function (a) {
      this.set("url", a, !0);
      this.Wr()
    },
    getUrl: function () {
      return this.get("url", null, !0)
    },
    setParams: function (a) {
      f.extend(this.get("params", null, !0), a || {});
      this.Wr()
    },
    getParams: function () {
      return this.get("params", null, !0)
    }
  });
  w.w.Wa.s0 = w.w.Wa.tz.extend({
    F: {
      zooms: [3, 20],
      tileSize: 256,
      zIndex: 12,
      detectRetina: !1,
      className: "amap-layer amap-wmts",
      cacheSize: f.l.size
    },
    B: function (a) {
      this.CLASS_NAME = "AMap.TileLayer.WMTS";
      arguments.callee.oa.call(this, a);
      this.Wr();
      var b = this;
      this.get("tileSize");
      this.set("createTile", function (a, d, e, g, h) {
        var k = document.createElement("img");
        "3D" === b.Bp && (k.crossOrigin = "anonymous");
        k.src = this.url + "&TileMatrix=" + e + "&TileRow=" + d + "&TileCol=" + a;
        f.C.g(k, "load", function () {
          g(k)
        });
        f.C.g(k, "error", function () {
          h(k)
        })
      })
    },
    Wr: function () {
      var a = this.get("url", null, !0),
        b = this.get("params", null, !0);
      this.get("tileSize");
      b.TileMatrixSet = b.TileMatrixSet || "EPSG:3857";
      b.Request = "GetTile";
      b.Service = "WMTS";
      b.Format = b.Format || "image/png";
      this.url = a + "?" + f.a.join(b, "&");
      this.reload()
    },
    setUrl: function (a) {
      this.set("url", a, !0);
      this.Wr()
    },
    getUrl: function () {
      return this.get("url", null, !0)
    },
    setParams: function (a) {
      f.extend(this.get("params", null, !0), a || {});
      this.Wr()
    },
    getParams: function () {
      return this.get("params", null, !0)
    }
  });
  w.w.Wa.pv = w.w.Wa.tz.extend({
    F: {
      detectRetina: !0,
      zooms: [10, 18],
      zIndex: 2
    },
    B: function (a) {
      arguments.callee.oa.apply(this, arguments);
      var b = this;
      this.set("createTile", function (a, d, e, g, h) {
        function k(a, c, d) {
          var e = "zh_cn";
          b && b.get && l && (e = l.get("lang") || "zh_cn");
          return f.A.Qb + "://grid.amap.com/grid/" + d + "/" + a + "/" + c + "?src=jsapi&key=" + f.A.key + "&lang=" + e + "&dpiType=" + (f.l.cd ? "wprd" : "webrd")
        }
        var l = b.h || b.get("map");
        l.Rn || (l.Rn = new f.Pb.pv(l.map));
        if (l.Rn.Wy(a, d, e)) h();
        else {
          var m = document.createElement("img");
          "3D" === b.Bp && (m.crossOrigin = "anonymous");
          m.src = k(a, d, e);
          f.C.g(m, "load", function () {
            g(m)
          });
          f.C.g(m, "error", function () {
            h(m)
          })
        }
      })
    }
  });
  w.w.Gc = w.w.oc.extend({
    F: {
      visible: !0,
      zooms: [3, 25],
      type: "overlay",
      zIndex: 5,
      alwaysRender: !0
    },
    B: function (a) {
      arguments.callee.oa.apply(this, arguments)
    },
    og: function (a) {
      return new f.w.Gc(this, a)
    }
  });
  w.w.c_ = w.w.oc.extend({
    F: {
      zooms: [15, 20],
      zIndex: 8,
      visible: !0
    },
    B: function (a) {
      a = a || {};
      a.zooms && (a.zooms[0] = Math.max(15, a.zooms[0]));
      arguments.callee.oa.apply(this, arguments);
      this.CLASS_NAME = "AMap.Buildings"
    },
    gr: function () {
      return !1
    },
    og: function (a) {
      if (f.l.hx) return a = new f.w.n0(this, a, ["building"]), a.Wt = this.get("heightFactor") || 1, a
    }
  });
  w.w.GE = w.w.oc.extend({
    F: {
      visible: !0,
      zooms: [3, f.l.Z ? 20 : 18],
      opacity: 1,
      type: "overlay",
      zIndex: 6
    },
    B: function (a) {
      arguments.callee.oa.apply(this, arguments)
    },
    og: function (a) {
      return f.w.rv ? new f.w.rv(this, a) : ["imagelayer"]
    },
    getMap: function () {
      f.e.add(this.CLASS_NAME, "getMap");
      return this.Nh.map
    },
    show: function () {
      f.e.add(this.CLASS_NAME, "show");
      this.set("visible", !0);
      this.r("options")
    },
    getOpacity: function () {
      f.e.add(this.CLASS_NAME, "getOpacity");
      return this.get("opacity", null, !0)
    },
    setOpacity: function (a) {
      f.e.add(this.CLASS_NAME, "setOpacity");
      this.set("opacity", a)
    },
    getBounds: function () {
      f.e.add(this.CLASS_NAME, "getBounds");
      return this.get("bounds", null, !0).Ab()
    },
    setBounds: function (a) {
      f.e.add(this.CLASS_NAME, "setBounds");
      this.r("bounds", a);
      this.setOptions({
        bounds: a
      })
    },
    hide: function () {
      f.e.add(this.CLASS_NAME, "hide");
      this.set("visible", !1);
      this.r("options")
    },
    setOptions: function (a) {
      f.e.add(this.CLASS_NAME ? this.CLASS_NAME : "AMap.ImageLayer", "setOptions");
      this.zg(a);
      this.r("options")
    },
    getOptions: function () {
      f.e.add(this.CLASS_NAME, "getOptions");
      var a = {},
        b;
      for (b in this.F) this.F.hasOwnProperty(b) && (a[b] = this.get(b));
      return a
    },
    getElement: function () {
      return this.w.Q ? this.w.Q.Hb : this.w.$l ? this.w.$l.Hb : null
    }
  });
  w.w.rv = w.w.GE.extend({
    B: function (a) {
      a && a.url && (a.__source__ = a.url);
      arguments.callee.oa.apply(this, arguments);
      this.CLASS_NAME = "AMap.ImageLayer"
    },
    getImageUrl: function () {
      f.e.add(this.CLASS_NAME, "getImageUrl");
      return this.get("__source__")
    },
    setImageUrl: function (a) {
      f.e.add(this.CLASS_NAME, "setImageUrl");
      return this.set("__source__", a)
    }
  });
  w.w.p0 = w.w.GE.extend({
    B: function (a) {
      a && a.url && (a.__source__ = a.url);
      arguments.callee.oa.apply(this, arguments);
      this.CLASS_NAME = "AMap.VideoLayer"
    },
    getVideoUrl: function () {
      f.e.add(this.CLASS_NAME, "getVideoUrl");
      return this.get("__source__")
    },
    setVideoUrl: function (a) {
      f.e.add(this.CLASS_NAME, "setVideoUrl");
      return this.set("__source__", a)
    }
  });
  w.w.d_ = w.w.GE.extend({
    B: function (a) {
      a && a.canvas && (a.__source__ = a.canvas);
      arguments.callee.oa.apply(this, arguments);
      this.CLASS_NAME = "AMap.CanvasLayer"
    },
    getCanvas: function () {
      f.e.add(this.CLASS_NAME, "getCanvas");
      return this.get("__source__")
    },
    setCanvas: function (a) {
      f.e.add(this.CLASS_NAME, "setCanvas");
      return this.set("__source__", a)
    },
    reFresh: function () {
      this.w && (this.w.Vy = !0, this.w.set("display"))
    }
  });
  w.w.H_ = w.w.oc.extend({
    F: {
      visible: !0,
      zooms: [3, f.l.Z ? 20 : 18],
      type: "overlay",
      zIndex: 5,
      cursor: "pointer",
      alwaysRender: !0,
      stable: !0,
      bubble: !0,
      className: "amap-mass"
    },
    B: function (a, b) {
      this.CLASS_NAME = "AMap.MassMarks";
      f.e.cb(this.CLASS_NAME, b);
      f.l.Ll && (this.Fh = !0, b.size && (b.size = f.a.mn(b.size)), this.setData(a), f.a.Bb(this, b), b.style ? (this.zg(this.F, !0), this.setStyle(b.style)) : this.setStyle(this.F))
    },
    clear: function () {
      this.set("dataSources", "")
    },
    getStyle: function () {
      f.e.add(this.CLASS_NAME, "getStyle");
      return this.Yj
    },
    setStyle: function (a) {
      f.e.add(this.CLASS_NAME, "setStyle");
      if (a instanceof Array) {
        for (var b = 0; b < a.length; b += 1) a[b].rotation_ = Math.PI * (a[b].rotation || 0) / 180, a[b].size = f.a.mn(a[b].size), a.Fe = Math.max(a.Fe || 0, a[b].size.width + a[b].anchor.x), a.af = Math.max(a.Fe || 0, a[b].size.height + a[b].anchor.y);
        this.Yj = a
      } else a.size && (a.size = f.a.mn(a.size)), a.rotation_ = Math.PI * (a.rotation || 0) / 180, this.zg(a, !0), this.Yj = {
        anchor: this.get("anchor"),
        url: this.get("url"),
        size: this.get("size"),
        rotation_: this.get("rotation_")
      }, this.Yj.Fe = this.Yj.size.width + this.Yj.anchor.x, this.Yj.af = this.Yj.size.height + this.Yj.anchor.y;
      this.r("style")
    },
    setData: function (a) {
      f.e.add(this.CLASS_NAME, "setData");
      this.set("dataSources", a)
    },
    getData: function () {
      f.e.add(this.CLASS_NAME, "getData");
      return this.get("datas") || this.get("dataSources")
    },
    setMap: function (a) {
      f.e.add(this.CLASS_NAME, "setMap");
      f.l.Ll && (a ? (this.get("map") && this.get("map").Tj(this), this.set("map", a)) : this.get("map") && (this.get("map").Tj(this), this.set("map", null, !0), this.Fi = !1, this.bg && this.bg()))
    },
    og: function (a) {
      return f.gb.ay(["cvector"]) ? (a = new f.w.Gc(this, a), this.X("datas", a), a) : ["cvector"]
    }
  });
  w.w.KE = w.w.rv.extend({
    B: function (a, b, c) {
      f.e.cb("AMap.GroundImage", c);
      c = c || {};
      this.Gf = !0;
      var d = parseFloat(c.opacity);
      isNaN(d) && (d = 1);
      arguments.callee.oa.call(this, {
        url: a,
        bounds: b,
        clickable: c.clickable,
        opacity: d,
        map: c.map,
        zooms: c.zooms || [3, 20]
      });
      this.CLASS_NAME = "AMap.GroundImage"
    },
    xea: function (a) {
      this.get("bounds").contains(a.lnglat) && (a.target = this, this.r("click", a))
    },
    yea: function (a) {
      this.get("bounds").contains(a.lnglat) && (a.target = this, this.r("dblclick", a))
    },
    setMap: function (a) {
      f.e.add(this.CLASS_NAME, "setMap");
      a ? (this.get("map") && (this.get("map").Tj(this), this.XT && w.event.removeListener(this.XT), this.jU && w.event.removeListener(this.jU)), this.set("map", a)) : this.get("map") && (this.get("map").Tj(this), this.Nh.map = null)
    },
    mapChanged: function () {
      this.get("map") && (this.get("map").JB(this), this.get("clickable") && (this.XT = w.event.addListener(this.get("map"), "click", this.xea, this), this.jU = w.event.addListener(this.get("map"), "dblclick", this.yea, this)))
    }
  });
  w.D.Hg = f.ba.extend({
    ga: [f.ka, f.se,
    {
      za: f.a.za
    }],
    F: {
      extData: {},
      bubble: !1,
      clickable: !0,
      draggable: !1
    },
    B: function () {
      this.CA = f.a.Lb(this)
    },
    sla: function () {
      return this.CA
    },
    zka: function () {
      this.get("map", null, !0) && this.setMap(this.get("map"))
    },
    mapChanged: function () {
      this.get("map", null, !0) && this.get("map", null, !0).Zw(this)
    },
    BJ: function (a) {
      var b = 0;
      a && (b = "string" === typeof a ? Math.round(parseFloat(a) / 0.14929107086948487) : a);
      return b
    },
    setHeight: function (a) {
      this.height = a = a || 0;
      a = this.BJ(a);
      this.set("altitude", a)
    },
    getHeight: function () {
      return this.height
    },
    show: function () {
      f.e.add(this.CLASS_NAME, "show");
      this.set("visible", !0)
    },
    hide: function () {
      f.e.add(this.CLASS_NAME, "hide");
      this.set("visible", !1)
    },
    setMap: function (a) {
      f.e.add(this.CLASS_NAME, "setMap");
      a !== this.get("map", null, !0) && (a ? (this.get("map", null, !0) && this.get("map", null, !0).zu(this), this.set("map", a)) : this.get("map", null, !0) && (this.get("map", null, !0).zu(this), this.set("map", null, !0)))
    },
    getMap: function () {
      f.e.add(this.CLASS_NAME, "getMap");
      return this.get("map", null, !0)
    },
    setExtData: function (a) {
      f.e.add(this.CLASS_NAME, "setExtData");
      this.set("extData", a)
    },
    getExtData: function () {
      f.e.add(this.CLASS_NAME, "getExtData");
      return this.get("extData", null, !0)
    }
  });
  w.D.Gc = w.D.Hg.extend({
    B: function (a) {
      w.D.Gc.qc.B.apply(this, arguments)
    },
    show: function () {
      this.set("visible", !0);
      this.r("show", {
        type: "show",
        target: this
      })
    },
    hide: function () {
      this.set("visible", !1);
      this.r("hide", {
        type: "hide",
        target: this
      })
    },
    getVisible: function () {
      return this.get("visible", null, !0)
    },
    getOptions: function () {
      var a = {},
        b = "map zIndex strokeColor strokeOpacity strokeWeight strokeStyle strokeDasharray extData bubble clickable".split(" "),
        c = "isOutline outlineColor geodesic path lineJoin lineCap borderWeight showDir".split(" "),
        d = ["fillColor", "fillOpacity", "path", "lineJoin"],
        e = ["center", "radius"],
        g = ["bounds"],
        h = [];
      this instanceof w.D.Fb && (h = b.concat(c));
      this instanceof w.D.bc && (h = b.concat(d));
      this instanceof w.D.Pf && (h = b.concat(e).concat(d));
      this instanceof w.D.Fp && (h = b.concat(e).concat(d));
      this instanceof w.D.Jp && (h = b.concat(d).concat(g));
      for (b = 0; b < h.length; b += 1) a[h[b]] = this.get(h[b], null, !0);
      return a
    },
    setOptions: function (a) {
      a.hasOwnProperty("path") && (a.path && a.path.length || (a.path = []), a.path = this.za(a.path));
      a.center && (a.center = this.za(a.center));
      var b;
      a.hasOwnProperty("map") && (b = a.map, delete a.map);
      this.zg(a);
      void 0 !== b && (this.setMap(b), a.map = b);
      this.r("options");
      this.r("change", {
        type: "change",
        target: this
      })
    },
    setzIndex: function (a) {
      f.e.add(this.CLASS_NAME, "setzIndex");
      this.set("zIndex", a)
    },
    getzIndex: function () {
      f.e.add(this.CLASS_NAME, "getzIndex");
      return this.get("zIndex", null, !0)
    },
    setDraggable: function (a) {
      this.set("draggable", a)
    }
  });
  w.D.Fz = w.D.Gc.extend({
    F: {
      visible: !0,
      zIndex: 10,
      strokeColor: "#006600",
      strokeOpacity: 0.9,
      strokeWeight: 3,
      strokeStyle: "solid",
      strokeDasharray: [10, 5],
      lineJoin: "miter",
      path: []
    },
    B: function (a) {
      w.D.Fz.qc.B.apply(this, arguments)
    },
    setPath: function (a, b) {
      f.e.add(this.CLASS_NAME, "setPath");
      a && a.length || (a = []);
      a = this.za(a);
      this.set("path", a);
      this.r("change", {
        type: "change",
        target: this
      });
      b || this.r("setPath")
    },
    getPath: function () {
      f.e.add(this.CLASS_NAME, "getPath");
      return this.get("path", null, !0)
    },
    Qc: function () {
      var a = this.get("path");
      if (!a || !a.length) return null;
      a[0] instanceof f.V && (a = [a]);
      for (var b = new f.Wd(180, 90, -180, -90), c = 0; c < a.length; c += 1) for (var d = a[c], e = d.length - 1; 0 <= e; e -= 1) b.extend(d[e]);
      return b
    }
  });
  w.D.Fz.Fk({
    Qc: "getBounds"
  });
  w.D.Gg = f.ba.extend({
    ga: [f.ka, f.se],
    F: {
      size: new f.Uc(36, 36),
      imageOffset: new f.G(0, 0),
      image: f.A.qb + "extra/amap/theme/v1.3/markers/0.png",
      imageSize: null
    },
    B: function (a) {
      this.CLASS_NAME = "AMap.Icon";
      f.e.cb(this.CLASS_NAME, a);
      a = a || {};
      a.size && (a.size = f.a.mn(a.size));
      a.imageSize && (a.imageSize = f.a.mn(a.imageSize));
      f.a.Bb(this, a);
      this.zg(this.F)
    },
    setImageSize: function (a) {
      f.e.add(this.CLASS_NAME, "setImageSize");
      a = f.a.mn(a);
      this.set("imageSize", a)
    },
    getImageSize: function () {
      f.e.add(this.CLASS_NAME, "getImageSize");
      return this.get("imageSize", null, !0)
    }
  });
  w.D.G_ = f.ba.extend({
    ga: [f.ka, f.se],
    F: {
      coords: [],
      type: ""
    },
    B: function (a) {
      this.CLASS_NAME = "AMap.MarkerShape";
      f.e.cb(this.CLASS_NAME, a);
      f.a.Bb(this, a);
      this.zg(this.F)
    }
  });
  w.D.ab = w.D.Hg.extend({
    F: {
      cursor: "pointer",
      visible: !0,
      zIndex: 100,
      angle: 0,
      textAlign: "left",
      verticalAlign: "top",
      autoRotation: !1,
      opacity: 1,
      offset: new f.G(-9, -31),
      size: new f.G(19, 33),
      raiseOnDrag: !1,
      topWhenClick: !1,
      topWhenMouseOver: !1,
      animation: "AMAP_ANIMATION_NONE"
    },
    B: function (a) {
      this.CLASS_NAME = "AMap.Marker";
      f.e.cb(this.CLASS_NAME, a);
      a = a || {};
      this.Gf = !0;
      this.a5 = f.a.Lb(this);
      a.position && (a.position = this.za(a.position));
      a.height && this.setHeight(a.height);
      f.a.Bb(this, a);
      f.l.ne && (this.F.angle = 0);
      this.zg(this.F, !0);
      this.mapChanged()
    },
    getId: function () {
      return this.a5
    },
    setRaiseOnDrag: function (a) {
      f.e.add(this.CLASS_NAME, "setRaiseOnDrag");
      this.set("raiseOnDrag", a)
    },
    setPosition: function (a, b) {
      f.e.add(this.CLASS_NAME, "setPosition");
      a = this.za(a);
      void 0 !== b && this.setHeight(b);
      this.set("position", a)
    },
    getBounds: function () {
      var a = this.getPosition().Ab();
      return new f.Wd(a, a.Ab())
    },
    mapChanged: function () {
      this.cj("zoom");
      var a = this.get("map", null, !0);
      a && (this.get("position", null, !0) || this.set("position", a.get("center")), a.Zw(this), this.X("zoom", a))
    },
    getZooms: function () {
      return this.get("zooms", null, !0)
    },
    zoomChanged: function () {
      var a = this.get("zooms", null, !0);
      if (a) {
        var b = this.get("zoom");
        b < a[0] || b > a[1] ? this.set("outOfZooms", !0) : this.set("outOfZooms", !1);
        this.D && this.D.Pea()
      }
    },
    getPosition: function () {
      f.e.add(this.CLASS_NAME, "getPosition");
      return this.get("position", null, !0)
    },
    setIcon: function (a) {
      f.e.add(this.CLASS_NAME, "setIcon");
      this.set("icon", a)
    },
    getIcon: function () {
      f.e.add(this.CLASS_NAME, "getIcon");
      return this.get("icon", null, !0)
    },
    setContent: function (a) {
      f.e.add(this.CLASS_NAME, "setContent");
      this.set("content", a)
    },
    getContent: function () {
      f.e.add(this.CLASS_NAME, "getContent");
      return this.get("content", null, !0)
    },
    getContentDom: function () {
      return this.get("contentDom", null, !0)
    },
    hide: function () {
      f.e.add(this.CLASS_NAME, "hide");
      this.set("visible", !1)
    },
    show: function () {
      f.e.add(this.CLASS_NAME, "show");
      this.set("visible", !0)
    },
    setCursor: function (a) {
      f.e.add(this.CLASS_NAME, "setCursor");
      this.set("cursor", a)
    },
    setRotation: function (a) {
      f.e.add(this.CLASS_NAME, "setRotation");
      f.l.ne || this.set("angle", a)
    },
    setAngle: function (a) {
      f.e.add(this.CLASS_NAME, "setAngle");
      f.l.ne || "number" !== typeof a || this.set("angle", a)
    },
    getAngle: function () {
      f.e.add(this.CLASS_NAME, "getAngle");
      return this.get("angle", null, !0)
    },
    setOffset: function (a) {
      f.e.add(this.CLASS_NAME, "setOffset");
      this.set("offset", a)
    },
    getOffset: function () {
      f.e.add(this.CLASS_NAME, "getOffset");
      return this.get("offset", null, !0)
    },
    setTextAlign: function (a) {
      f.e.add(this.CLASS_NAME, "setTextAlign");
      this.set("textAlign", a)
    },
    getTextAlign: function () {
      f.e.add(this.CLASS_NAME, "getTextAlign");
      return this.get("textAlign", null, !0)
    },
    setVerticalAlign: function (a) {
      f.e.add(this.CLASS_NAME, "setVerticalAlign");
      this.set("verticalAlign", a)
    },
    getVerticalAlign: function () {
      f.e.add(this.CLASS_NAME, "getVerticalAlign");
      return this.get("verticalAlign", null, !0)
    },
    setzIndex: function (a) {
      f.e.add(this.CLASS_NAME, "setzIndex");
      this.set("zIndex", a)
    },
    getzIndex: function () {
      f.e.add(this.CLASS_NAME, "getzIndex");
      return this.get("zIndex", null, !0)
    },
    setOpacity: function (a) {
      f.e.add(this.CLASS_NAME, "setOpacity");
      this.set("opacity", a)
    },
    setDraggable: function (a) {
      f.e.add(this.CLASS_NAME, "setDraggable");
      this.set("draggable", a)
    },
    getDraggable: function () {
      f.e.add(this.CLASS_NAME, "getDraggable");
      return this.get("draggable", null, !0)
    },
    moveTo: function (a, b, c) {
      f.e.add(this.CLASS_NAME, "moveTo");
      a = this.za(a);
      this.set("move", {
        nf: a,
        speed: b,
        ib: c
      })
    },
    moveAlong: function (a, b, c, d) {
      f.e.add(this.CLASS_NAME, "moveAlong");
      this.set("move", {
        nf: a,
        speed: b,
        ib: c,
        B$: d
      })
    },
    stopMove: function () {
      f.e.add(this.CLASS_NAME, "stopMove");
      this.set("move", !1)
    },
    pauseMove: function () {
      f.e.add(this.CLASS_NAME, "pauseMove");
      var a = this.get("move");
      if (!a) return !1;
      a.action = "pause";
      this.set("move", a);
      return !0
    },
    resumeMove: function () {
      f.e.add(this.CLASS_NAME, "resumeMove");
      var a = this.get("move");
      if (!a) return !1;
      a.action = "resume";
      this.set("move", a);
      return !0
    },
    setShadow: function (a) {
      f.e.add(this.CLASS_NAME, "setShadow");
      this.set("shadow", a)
    },
    getShadow: function () {
      f.e.add(this.CLASS_NAME, "getShadow");
      return this.get("shadow", null, !0)
    },
    setClickable: function (a) {
      f.e.add(this.CLASS_NAME, "setClickable");
      a !== this.getClickable() && this.set("clickable", a)
    },
    getClickable: function () {
      f.e.add(this.CLASS_NAME, "getClickable");
      return this.get("clickable", null, !0)
    },
    setTitle: function (a, b) {
      f.e.add(this.CLASS_NAME, "setTitle");
      "string" === typeof a && this.set("title", a, b)
    },
    getTitle: function () {
      f.e.add(this.CLASS_NAME, "getTitle");
      return this.get("title", null, !0)
    },
    setLabel: function (a) {
      f.e.add(this.CLASS_NAME, "setLabel");
      a && !f.a.Oo(a) && (a = f.extend({}, this.get("label"), a));
      this.set("label", a)
    },
    getLabel: function () {
      f.e.add(this.CLASS_NAME, "getLabel");
      return this.get("label", null, !0)
    },
    setTop: function (a, b) {
      f.e.add(this.CLASS_NAME, "setTop");
      this.set("isTop", a, b)
    },
    getTop: function () {
      f.e.add(this.CLASS_NAME, "getTop");
      return this.get("isTop", null, !0)
    },
    setShape: function (a, b) {
      f.e.add(this.CLASS_NAME, "setShape");
      this.set("shape", a, b)
    },
    getShape: function () {
      f.e.add(this.CLASS_NAME, "getShape");
      return this.get("shape", null, !0)
    },
    setAnimation: function (a, b) {
      f.e.add(this.CLASS_NAME, "setAnimation");
      this.set("animation", a, b)
    },
    getAnimation: function () {
      f.e.add(this.CLASS_NAME, "getAnimation");
      return this.get("animation", null, !0)
    },
    getMap: function () {
      f.e.add(this.CLASS_NAME, "getMap");
      return this.get("map", null, !0)
    },
    markOnAMAP: function (a) {
      f.e.add(this.CLASS_NAME, "markOnAMAP");
      a = a || {};
      var b = {};
      b.name = a.name || this.get("name", null, !0) || "";
      a = this.za(a.position) || this.get("position", null, !0);
      b.y = a.P;
      b.x = a.O;
      f.Cg.qp(f.Cg.gca(b))
    }
  });
  f.pw = {
    PX: 12,
    Jja: function () { },
    $R: function () {
      if (f.Xa && f.Xa.length) {
        var a = f.pw.qJ(JSON.stringify({
          mks: f.Xa,
          from: f.A.tba,
          key: f.A.key
        }));
        new f.Sa.XMLHttpRequest(f.A.qb + "/count", {
          $$: "data=" + a,
          dd: "POST"
        });
        f.Xa = []
      }
    },
    qJ: function (a) {
      for (var b = "", c = 0, d = a.length; c < d; c++) b += String.fromCharCode((a.charCodeAt(c) + 256) % 65535);
      return b
    },
    Bj: function (a) {
      for (var b = "", c = 0, d = a.length; c < d; c++) b += String.fromCharCode((a.charCodeAt(c) - 256 + 65535) % 65535);
      return b
    }
  };
  if (f.l.hx && !f.l.Z && (new Date).getHours() === f.pw.PX) {
    var sc = setInterval(function () {
      (new Date).getHours() !== f.pw.PX ? clearInterval(sc) : f.pw.$R()
    }, 6E3);
    f.event.U(window, "beforeunload", f.pw.$R)
  };
  w.D.cl = w.D.Hg.extend({
    F: {
      visible: !1,
      items: []
    },
    B: function (a) {
      this.CLASS_NAME = "AMap.ContextMenu";
      f.e.cb(this.CLASS_NAME, a);
      this.Gf = !0;
      f.a.Bb(this, a);
      this.F.items = [];
      this.zg(this.F)
    },
    addItem: function (a, b, c) {
      f.e.add(this.CLASS_NAME, "addItem");
      this.get("items").push({
        zZ: a,
        ib: b,
        xD: c
      });
      this.r("items")
    },
    removeItem: function (a, b) {
      f.e.add(this.CLASS_NAME, "removeItem");
      var c = this.get("items"),
        d, e;
      for (e = 0; e < c.length; e += 1) if (d = c[e], d.zZ === a && d.ib === b) {
        c.splice(e, 1);
        break
      }
      this.r("items")
    },
    open: function (a, b) {
      f.e.add(this.CLASS_NAME, "open");
      b = f.a.za(b);
      this.set("position", b);
      this.map ? this.map && this.map !== a && (this.map.zu(this), this.map = a, this.setMap(a)) : (this.map = a, this.setMap(a));
      this.r("open", {
        type: "open",
        target: this
      })
    },
    close: function () {
      f.e.add(this.CLASS_NAME, "close");
      this.setMap(null);
      this.map && (this.map = this.map.iC = null, this.r("close", {
        type: "close",
        target: this
      }))
    }
  });
  w.D.fe = w.D.Hg.extend({
    F: {
      visible: !0,
      offset: new f.G(0, 0),
      showShadow: !1,
      closeWhenClickMap: !1,
      retainWhenClose: !0,
      autoMove: !0,
      altitude: 0
    },
    B: function (a) {
      this.CLASS_NAME = "AMap.InfoWindow";
      f.e.cb(this.CLASS_NAME, a);
      a = a || {};
      this.Gf = !0;
      a && a.size && (a.size = f.a.mn(a.size));
      f.a.Bb(this, a);
      this.zg(this.F);
      a.position && this.set("position", f.a.za(a.position), !0);
      a.height && this.set("altitude", this.BJ(a.height), !0)
    },
    open: function (a, b, c) {
      f.e.add(this.CLASS_NAME, "open");
      b = f.a.za(b);
      if (a && !this.iE && (b = b || this.get("position", null, !0))) {
        this.r("change", {
          type: "change",
          target: this
        });
        c = this.BJ(c) || this.get("altitude");
        var d = this.get("map", null, !0);
        d && d === a ? (this.set("altitude", c, !0), this.set("position", b)) : (this.map = a, a.Il && a.Il.close(), this.set("position", b, !0), this.set("altitude", c, !0), this.setMap(a));
        this.r("open", {
          type: "open",
          target: this
        })
      }
    },
    close: function () {
      this.D && this.D.map && (f.e.add(this.CLASS_NAME, "close"), this.setMap(null), this.map = null, this.r("change", {
        type: "change",
        target: this
      }))
    },
    setContent: function (a) {
      f.e.add(this.CLASS_NAME, "setContent");
      this.set("content", a);
      this.r("change", {
        type: "change",
        target: this
      })
    },
    getContentU: function () {
      f.e.add(this.CLASS_NAME, "getContentU");
      return this.get("content", null, !0)
    },
    getContentDom: function () {
      return this.get("contentDom", null, !0)
    },
    getContent: function () {
      f.e.add(this.CLASS_NAME, "getContent");
      return this.get("content", null, !0)
    },
    setPosition: function (a) {
      f.e.add(this.CLASS_NAME, "setPosition");
      a = f.a.za(a);
      this.set("position", a);
      this.r("change", {
        type: "change",
        target: this
      })
    },
    setOffset: function (a) {
      f.e.add(this.CLASS_NAME, "setOffset");
      this.set("offset", a);
      this.r("change", {
        type: "change",
        target: this
      })
    },
    getPosition: function () {
      f.e.add(this.CLASS_NAME, "getPosition");
      return this.get("position", null, !0)
    },
    setSize: function (a) {
      f.e.add(this.CLASS_NAME, "setSize");
      a = f.a.mn(a);
      this.set("size", a);
      this.r("change", {
        type: "change",
        target: this
      })
    },
    getSize: function (a) {
      f.e.add(this.CLASS_NAME, "getSize");
      var b = this.get("size", null, !0);
      if (b) return b;
      if (this.D && !a) return new f.Uc(this.D.Tg.offsetWidth, this.D.Tg.offsetHeight)
    },
    getIsOpen: function () {
      f.e.add(this.CLASS_NAME, "getIsOpen");
      return !!this.get("map")
    }
  });
  w.D.Fb = w.D.Fz.extend({
    F: {
      isOutline: !1,
      outlineColor: "#000000",
      geodesic: !1,
      borderWeight: 1
    },
    B: function (a) {
      w.D.Fb.qc.B.apply(this, arguments);
      this.CLASS_NAME = "AMap.Polyline";
      f.e.cb(this.CLASS_NAME, a);
      this.Gf = !0;
      a = a || {};
      a.zIndex = "number" === typeof a.zIndex ? a.zIndex : 50;
      a.path && (a.path = this.za(a.path));
      f.a.Bb(this, a);
      this.setOptions(this.F)
    },
    getLength: function () {
      f.e.add(this.CLASS_NAME, "getLength");
      for (var a = this.get("path"), b = 0, c = 0; c < a.length - 1; c += 1) b += a[c].Md(a[c + 1]);
      return parseFloat(b.toFixed(2))
    }
  });
  (function (a) {
    function b(a, b, c, d) {
      if (1 <= a) return d;
      var e = 1 - a;
      return e * e * b + 2 * e * a * c + a * a * d
    }
    function c(a, b, c, d, e) {
      if (1 <= a) return e;
      var g = 3 * (c[0] - b[0]),
        h = 3 * (d[0] - c[0]) - g,
        s = 3 * (c[1] - b[1]);
      c = 3 * (d[1] - c[1]) - s;
      return [(e[0] - b[0] - g - h) * Math.pow(a, 3) + h * Math.pow(a, 2) + g * a + b[0], (e[1] - b[1] - s - c) * Math.pow(a, 3) + c * Math.pow(a, 2) + s * a + b[1]]
    }
    function d(a, c, d, e) {
      return [b(a, c[0], d[0], e[0]), b(a, c[1], d[1], e[1])]
    }
    function e(b, c) {
      c = a.a.za(c);
      return b.hy(c, 20).Zj()
    }
    function g(b, c) {
      a.a.isArray(c) && (c = new a.G(c[0], c[1]));
      return b.Ay(c, 20)
    }
    function h(b, g, h, n, p, q) {
      var r = null;
      if (b && h && h.length) {
        b = [b];
        b.push.apply(b, h);
        b.push(g);
        h = 0;
        for (r = b.length; h < r; h++) b[h] = e(n, b[h]);
        h = a.extend({
          tolerance: 4,
          interpolateNumLimit: [3, 300]
        }, q);
        q = h.tolerance;
        h = h.interpolateNumLimit;
        q = Math.max(2, q);
        for (var s = r = 0, u = 0, v = b.length; u < v - 1; u++) var x = b[u],
          t = b[u + 1],
          r = r + Math.abs(t[0] - x[0]),
          s = s + Math.abs(t[1] - x[1]);
        a: {
          p = Math.min(h[1], Math.max(h[0], Math.round(Math.max(r, s) / p / q)));
          q = null;
          switch (b.length) {
            case 3:
              q = d;
              break;
            case 4:
              q = c;
              break;
            default:
              r = null;
              break a
          }
          h = [];
          r = [0].concat(b);
          for (s = 1; s < p - 2; s++) r[0] = s / p, h.push(q.apply(null, r));
          h.push(b[b.length - 1]);
          r = h
        }
      }
      return r || [e(n, g)]
    }
    a.rN = {
      Rma: d,
      Mka: c,
      cV: function (a, b, c, d) {
        var e, g, r = [];
        e = 0;
        for (g = a.length; e < g; e += 1) r.push.apply(r, h(a[e - 1], a[e], a[e].controlPoints, b, c, d));
        return r
      },
      Xba: function (a, b, c, d) {
        a = this.cV(a, b, c, d);
        c = [];
        d = 0;
        for (var e = a.length; d < e; d++) c.push(g(b, a[d]));
        return c
      }
    }
  })(f);
  w.D.iv = w.D.Fb.extend({
    F: {
      tolerance: 4,
      interpolateNumLimit: [3, 300]
    },
    B: function (a) {
      w.D.iv.qc.B.apply(this, arguments);
      this.CLASS_NAME = "AMap.BezierCurve";
      f.e.cb(this.CLASS_NAME, a)
    },
    getLength: function () {
      f.e.add(this.CLASS_NAME, "getLength");
      this.get("map");
      var a = this.getInterpolateLngLats();
      return f.nv.distanceOfLine(a)
    },
    getInterpolateLngLats: function () {
      var a = this.get("map");
      return f.rN.Xba(this.get("path"), a && a.Lm || f.Bg.JE, Math.pow(2, 2), this.F)
    },
    getSerializedPath: function () {
      f.e.add(this.CLASS_NAME, "getSerializedPath");
      for (var a = this.get("path", null, !0), b = [], c = 0, d = a.length; c < d; c++) {
        var e = a[c];
        if (e instanceof f.V) {
          var g = [];
          if (e.controlPoints) for (var h = 0, k = e.controlPoints.length; h < k; h++) g.push(e.controlPoints[h].PJ()), g.push(e.controlPoints[h].MJ());
          g.push(e.PJ());
          g.push(e.MJ());
          b.push(g)
        } else b.push(e)
      }
      return b
    },
    za: function (a) {
      var b = typeof a[0];
      if (f.a.isArray(a) && "object" === b) {
        for (b = 0; b < a.length; b += 1) a[b] = this.s7(a[b]);
        return a
      }
      return [this.zma(a)]
    },
    s7: function (a) {
      var b;
      if (a instanceof f.V) b = a;
      else {
        b = typeof a[0];
        var c, d, e = [];
        if ("string" === b || "number" === b) {
          d = a.length;
          if (d % 2) throw Error("LngLat number should be even, now it's " + d);
          b = new f.V(a[d - 2], a[d - 1]);
          c = 0;
          for (d -= 2; c < d; c += 2) e.push(new f.V(a[c], a[c + 1]))
        } else if (f.a.isArray(a[0])) for (d = a.length, b = new f.V(a[d - 1][0], a[d - 1][1]), c = 0, d -= 1; c < d; c++) e.push(new f.V(a[c][0], a[c][1]));
        else throw Error("AMap.LngLat expected, now it's " + a);
        b && e.length && (b.controlPoints = f.a.za(e))
      }
      if (b.controlPoints && 2 < b.controlPoints.length) throw Error("Control Points Number should be 1 or 2 !");
      return b
    }
  });
  w.D.bc = w.D.Fz.extend({
    B: function (a) {
      w.D.bc.qc.B.apply(this, arguments);
      this.CLASS_NAME = "AMap.Polygon";
      f.e.cb(this.CLASS_NAME, a);
      this.Gf = !0;
      a = a || {};
      a.zIndex = "number" === typeof a.zIndex ? a.zIndex : 10;
      a.path && (a.path = this.za(a.path));
      f.a.Bb(this, f.extend({
        fillColor: "#FFAA00",
        fillOpacity: 0.9
      }, a));
      this.setOptions(this.F)
    },
    XJ: function (a) {
      var b = 6378137 * Math.PI / 180,
        c = 0,
        d = a.length;
      if (3 > d) return 0;
      for (var e = 0; e < d - 1; e += 1) var g = a[e],
        h = a[e + 1],
        k = g.O * b * Math.cos(g.P * Math.PI / 180),
        g = g.P * b,
        l = h.O * b * Math.cos(h.P * Math.PI / 180),
        c = c + (k * h.P * b - l * g);
      e = a[e];
      a = a[0];
      d = e.O * b * Math.cos(e.P * Math.PI / 180);
      e = e.P * b;
      h = a.O * b * Math.cos(a.P * Math.PI / 180);
      c += d * a.P * b - h * e;
      return 0.5 * Math.abs(c)
    },
    getArea: function () {
      f.e.add(this.CLASS_NAME, "getArea");
      var a = this.get("path", null, !0),
        b;
      if (!a.length || a[0] instanceof f.V) b = this.XJ(a);
      else {
        b = this.XJ(a[0]);
        for (var c = 1; c < a.length; c += 1) b -= this.XJ(a[c])
      }
      return Number(b.toFixed(2))
    },
    toString: function () {
      f.e.add(this.CLASS_NAME, "toString");
      return this.get("path").join(";")
    },
    contains: function (a) {
      f.e.add(this.CLASS_NAME, "contains");
      a = f.a.za(a);
      var b = this.get("path");
      b.length && b[0] instanceof f.V && (b = [b]);
      a = [a.O, a.P];
      for (var c, d = 0, e = b.length; d < e && (c = this.q$(b[d]), f.Mc.No(c) || c.reverse(), c = f.Mc.md(a, c, 0 === d ? !0 : !1), 0 < d && (c = !c), c); d += 1);
      return c
    },
    q$: function (a) {
      for (var b = [], c = 0; c < a.length; c += 1) b.push([a[c].O, a[c].P]);
      return b
    }
  });
  w.D.Pf = w.D.Gc.extend({
    F: {
      visible: !0,
      zIndex: 10,
      strokeColor: "#006600",
      strokeOpacity: 0.9,
      strokeWeight: 3,
      strokeStyle: "solid",
      strokeDasharray: [10, 5],
      radius: 1E3,
      fillColor: "#006600",
      fillOpacity: 0.9,
      unit: "miter"
    },
    B: function (a) {
      w.D.Pf.qc.B.apply(this, arguments);
      this.CLASS_NAME = this.CLASS_NAME || "AMap.Circle";
      f.e.cb(this.CLASS_NAME, a);
      a = a || {};
      a.center && (a.center = f.a.za(a.center));
      a.zIndex = "number" === typeof a.zIndex ? a.zIndex : 10;
      f.a.Kl(a.radius, "string") && (a.radius = parseFloat(a.radius), isNaN(a.radius) && delete a.radius);
      f.a.Bb(this, a);
      this.Gf = this.F.center ? !0 : !1;
      this.setOptions(this.F)
    },
    setCenter: function (a, b) {
      f.e.add(this.CLASS_NAME, "setCenter");
      (a = f.a.za(a)) && a instanceof f.V && (this.set("center", a), this.r("change", {
        type: "change",
        target: this
      }), this.Gf || (this.Gf = !0, this.get("map") && this.get("map").r("overlays")), b || this.r("setCenter"))
    },
    getCenter: function () {
      f.e.add(this.CLASS_NAME, "getCenter");
      return this.get("center", null, !0)
    },
    setRadius: function (a, b) {
      f.e.add(this.CLASS_NAME, "setRadius");
      this.set("radius", a);
      this.r("change", {
        type: "change",
        target: this
      });
      b || this.r("setRadius")
    },
    getRadius: function () {
      f.e.add(this.CLASS_NAME, "getRadius");
      return this.get("radius", null, !0)
    },
    getBounds: function () {
      var a = this.get("center"),
        b = this.get("radius");
      if (!a) return null;
      var c = a.offset(-b, -b),
        a = a.offset(b, b);
      return new f.Wd(c, a)
    },
    contains: function (a) {
      f.e.add(this.CLASS_NAME, "contains");
      return this.get("center").Md(a) <= this.get("radius") ? !0 : !1
    }
  });
  w.D.tN = w.D.Pf.extend({
    B: function (a) {
      a = a || {};
      a.unit = "px";
      void 0 === a.radius ? a.radius = 20 : f.a.Kl(a.radius, "string") && (a.radius = parseFloat(a.radius), isNaN(a.radius) && (a.radius = 20));
      this.CLASS_NAME = "AMap.CircleMarker";
      w.D.tN.qc.B.apply(this, arguments)
    },
    getBounds: function () {
      var a = this.getCenter();
      return new f.Wd(a, a.Ab())
    },
    contains: function (a) {
      f.e.add(this.CLASS_NAME, "contains");
      var b = this.getMap();
      if (!b) return !1;
      var c = this.get("center");
      return c.Md(a) <= this.get("radius") * b.getResolution(c) ? !0 : !1
    }
  });
  var tc = f.ba.extend({
    B: function (a) {
      var b = Array(3),
        c;
      c = a instanceof Array ? a : a instanceof f.fj || a instanceof f.Ea ? a.elements : arguments;
      b[0] = c[0] || 0;
      b[1] = c[1] || 0;
      b[2] = c[2] || 0;
      this.elements = b
    },
    length: function () {
      return Math.sqrt(this.AW())
    },
    AW: function () {
      var a = this.elements;
      return a[0] * a[0] + a[1] * a[1] + a[2] * a[2]
    },
    normalize: function () {
      var a = this.elements,
        b = a[0],
        c = a[1],
        d = a[2],
        e = Math.sqrt(b * b + c * c + d * d);
      if (e) {
        if (1 === e) return this
      } else return a[0] = 0, a[1] = 0, a[2] = 0, this;
      e = 1 / e;
      a[0] = b * e;
      a[1] = c * e;
      a[2] = d * e;
      return this
    },
    Ab: function () {
      return new f.Ea(this)
    },
    copy: function (a) {
      var b = this.elements;
      a = a.elements;
      b[0] = a[0];
      b[1] = a[1];
      b[2] = a[2];
      return this
    },
    set: function (a, b, c) {
      var d = this.elements;
      d[0] = a;
      d[1] = b;
      d[2] = c
    },
    rb: function (a) {
      var b = this.elements;
      a = a.elements;
      return b[0] === a[0] && b[1] === a[1] && b[2] === a[2]
    },
    nr: function (a) {
      var b = this.elements;
      b[0] *= a;
      b[1] *= a;
      b[2] *= a;
      return this
    },
    add: function (a) {
      var b = this.elements;
      a = a.elements;
      b[0] += a[0];
      b[1] += a[1];
      b[2] += a[2];
      return this
    },
    F9: function (a, b) {
      var c = a.elements,
        d = b.elements,
        e = this.elements;
      e[0] = c[0] + d[0];
      e[1] = c[1] + d[1];
      e[2] = c[2] + d[2];
      return this
    },
    sub: function (a) {
      a = a.elements;
      var b = this.elements;
      b[0] -= a[0];
      b[1] -= a[1];
      b[2] -= a[2];
      return this
    },
    Mu: function (a, b) {
      var c = a.elements,
        d = b.elements,
        e = this.elements;
      e[0] = c[0] - d[0];
      e[1] = c[1] - d[1];
      e[2] = c[2] - d[2];
      return this
    },
    UI: function (a) {
      a = a.elements;
      var b = this.elements;
      b[0] = b[1] * a[2] - b[2] * a[1];
      b[1] = b[2] * a[0] - b[0] * a[2];
      b[2] = b[0] * a[1] - b[1] * a[0];
      return this
    },
    zt: function (a, b) {
      var c = a.elements,
        d = b.elements,
        e = this.elements;
      e[0] = c[1] * d[2] - c[2] * d[1];
      e[1] = c[2] * d[0] - c[0] * d[2];
      e[2] = c[0] * d[1] - c[1] * d[0];
      return this
    },
    Cj: function (a) {
      a = a.elements;
      var b = this.elements;
      return b[0] * a[0] + b[1] * a[1] + b[2] * a[2]
    },
    Md: function (a) {
      return Math.sqrt(this.pU(a))
    },
    pU: function (a) {
      var b = a.elements,
        c = this.elements;
      a = c[0] - b[0];
      var d = c[1] - b[1],
        b = c[2] - b[2];
      return a * a + d * d + b * b
    },
    Ve: function (a) {
      var b = this.elements[0],
        c = this.elements[1],
        d = this.elements[2];
      a = a.elements;
      var e = 1 / (a[3] * b + a[7] * c + a[11] * d + a[15]);
      this.elements[0] = (a[0] * b + a[4] * c + a[8] * d + a[12]) * e;
      this.elements[1] = (a[1] * b + a[5] * c + a[9] * d + a[13]) * e;
      this.elements[2] = (a[2] * b + a[6] * c + a[10] * d + a[14]) * e;
      return this
    }
  });
  f.Ea = tc;
  f.Ea.Fk({
    Cj: "dot",
    Ab: "clone",
    add: "add",
    sub: "sub",
    F9: "addVectors",
    Mu: "subVectors",
    zt: "crossVectors",
    normalize: "normalize",
    length: "length"
  });
  var uc = f.ba.extend({
    B: function (a) {
      var b = Array(4),
        c;
      c = a instanceof Array ? a : arguments;
      b[0] = c[0];
      b[1] = c[1];
      b[2] = c[2];
      b[3] = c[3] || 1;
      this.elements = b
    },
    copy: function (a) {
      var b = this.elements;
      a = a.elements;
      b[0] = a[0];
      b[1] = a[1];
      b[2] = a[2];
      b[3] = void 0 !== a[3] ? a[3] : 1;
      return this
    },
    multiply: function (a) {
      var b = this.elements;
      b[0] *= a;
      b[1] *= a;
      b[2] *= a;
      b[3] *= a
    },
    Ve: function (a) {
      var b = this.elements[0],
        c = this.elements[1],
        d = this.elements[2],
        e = this.elements[3];
      a = a.elements;
      this.elements[0] = a[0] * b + a[4] * c + a[8] * d + a[12] * e;
      this.elements[1] = a[1] * b + a[5] * c + a[9] * d + a[13] * e;
      this.elements[2] = a[2] * b + a[6] * c + a[10] * d + a[14] * e;
      this.elements[3] = a[3] * b + a[7] * c + a[11] * d + a[15] * e;
      return this
    }
  });
  f.fj = uc;

  function vc(a, b) {
    this.ku = void 0 !== a ? a : new f.Ea(1, 0, 0);
    this.px = void 0 !== b ? b : 0
  }
  f.ms = vc;
  vc.prototype = {
    set: function (a, b) {
      this.ku.copy(a);
      this.px = b;
      return this
    },
    normalize: function () {
      var a = 1 / this.ku.length();
      this.ku.nr(a);
      this.px *= a;
      return this
    },
    pC: function (a) {
      return this.ku.Cj(a) + this.px
    }
  };

  function wc(a, b, c, d, e) {
    a.ku.set(b, c, d);
    a.px = e;
    return a
  };

  function xc(a, b, c, d, e, g) {
    this.xy = [void 0 !== a ? a : new f.ms, void 0 !== b ? b : new f.ms, void 0 !== c ? c : new f.ms, void 0 !== d ? d : new f.ms, void 0 !== e ? e : new f.ms, void 0 !== g ? g : new f.ms]
  }
  f.zN = xc;
  xc.prototype = {
    set: function (a, b, c, d, e, g) {
      var h = this.xy;
      h[0].copy(a);
      h[1].copy(b);
      h[2].copy(c);
      h[3].copy(d);
      h[4].copy(e);
      h[5].copy(g);
      return this
    },
    Ab: function () {
      return (new f.zN).copy(this)
    },
    copy: function (a) {
      for (var b = this.xy, c = 0; 6 > c; c++) b[c].copy(a.xy[c]);
      return this
    },
    WC: function () {
      var a = new f.Ea,
        b = new f.Ea,
        c = a.elements,
        d = b.elements;
      return function (e) {
        var g = this.xy,
          h = e.max.elements;
        e = e.min.elements;
        for (var k = 0; 6 > k; k++) {
          var l = g[k],
            m = l.ku.elements;
          c[0] = 0 < m[0] ? e[0] : h[0];
          d[0] = 0 < m[0] ? h[0] : e[0];
          c[1] = 0 < m[1] ? e[1] : h[1];
          d[1] = 0 < m[1] ? h[1] : e[1];
          c[2] = 0 < m[2] ? e[2] : h[2];
          d[2] = 0 < m[2] ? h[2] : e[2];
          m = l.pC(a);
          l = l.pC(b);
          if (0 > m && 0 > l) return !1
        }
        return !0
      }
    }()
  };
  (function (a) {
    function b(a) {
      this.elements = a || [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
    }
    a.J_ = function (a) {
      this.elements = [a.elements[0], a.elements[1], a.elements[2], a.elements[4], a.elements[5], a.elements[6], a.elements[8], a.elements[9], a.elements[10]]
    };
    b.prototype.iM = function () {
      var a = this.elements;
      a[0] = 1;
      a[4] = 0;
      a[8] = 0;
      a[12] = 0;
      a[1] = 0;
      a[5] = 1;
      a[9] = 0;
      a[13] = 0;
      a[2] = 0;
      a[6] = 0;
      a[10] = 1;
      a[14] = 0;
      a[3] = 0;
      a[7] = 0;
      a[11] = 0;
      a[15] = 1
    };
    b.prototype.set = function (a) {
      var b, e;
      b = a.elements;
      e = this.elements;
      if (b !== e) {
        for (a = 0; 16 > a; ++a) e[a] = b[a];
        return this
      }
    };
    b.prototype.toFixed = function (b) {
      for (var d = this.elements, e = 0; 16 > e; ++e) d[e] = a.a.Pc(d[e], b);
      return this
    };
    b.prototype.concat = function (a) {
      var b, e, g, h, k, l, m;
      e = b = this.elements;
      g = a.elements;
      if (b === g) for (g = Array(16), a = 0; 16 > a; ++a) g[a] = b[a];
      for (a = 0; 4 > a; a++) h = e[a], k = e[a + 4], l = e[a + 8], m = e[a + 12], b[a] = h * g[0] + k * g[1] + l * g[2] + m * g[3], b[a + 4] = h * g[4] + k * g[5] + l * g[6] + m * g[7], b[a + 8] = h * g[8] + k * g[9] + l * g[10] + m * g[11], b[a + 12] = h * g[12] + k * g[13] + l * g[14] + m * g[15];
      return this
    };
    b.prototype.multiply = b.prototype.concat;
    b.prototype.If = function (b) {
      var d = this.elements;
      b = b.elements;
      var e = new a.fj,
        g = e.elements;
      g[0] = b[0] * d[0] + b[1] * d[4] + b[2] * d[8] + b[3] * d[12];
      g[1] = b[0] * d[1] + b[1] * d[5] + b[2] * d[9] + b[3] * d[13];
      g[2] = b[0] * d[2] + b[1] * d[6] + b[2] * d[10] + b[3] * d[14];
      g[3] = b[0] * d[3] + b[1] * d[7] + b[2] * d[11] + b[3] * d[15];
      return e
    };
    b.prototype.Lha = function () {
      var a, b;
      a = this.elements;
      b = a[1];
      a[1] = a[4];
      a[4] = b;
      b = a[2];
      a[2] = a[8];
      a[8] = b;
      b = a[3];
      a[3] = a[12];
      a[12] = b;
      b = a[6];
      a[6] = a[9];
      a[9] = b;
      b = a[7];
      a[7] = a[13];
      a[13] = b;
      b = a[11];
      a[11] = a[14];
      a[14] = b;
      return this
    };
    b.prototype.Rga = function (a) {
      var b, e, g;
      b = a.elements;
      a = this.elements;
      e = Array(16);
      e[0] = b[5] * b[10] * b[15] - b[5] * b[11] * b[14] - b[9] * b[6] * b[15] + b[9] * b[7] * b[14] + b[13] * b[6] * b[11] - b[13] * b[7] * b[10];
      e[4] = -b[4] * b[10] * b[15] + b[4] * b[11] * b[14] + b[8] * b[6] * b[15] - b[8] * b[7] * b[14] - b[12] * b[6] * b[11] + b[12] * b[7] * b[10];
      e[8] = b[4] * b[9] * b[15] - b[4] * b[11] * b[13] - b[8] * b[5] * b[15] + b[8] * b[7] * b[13] + b[12] * b[5] * b[11] - b[12] * b[7] * b[9];
      e[12] = -b[4] * b[9] * b[14] + b[4] * b[10] * b[13] + b[8] * b[5] * b[14] - b[8] * b[6] * b[13] - b[12] * b[5] * b[10] + b[12] * b[6] * b[9];
      e[1] = -b[1] * b[10] * b[15] + b[1] * b[11] * b[14] + b[9] * b[2] * b[15] - b[9] * b[3] * b[14] - b[13] * b[2] * b[11] + b[13] * b[3] * b[10];
      e[5] = b[0] * b[10] * b[15] - b[0] * b[11] * b[14] - b[8] * b[2] * b[15] + b[8] * b[3] * b[14] + b[12] * b[2] * b[11] - b[12] * b[3] * b[10];
      e[9] = -b[0] * b[9] * b[15] + b[0] * b[11] * b[13] + b[8] * b[1] * b[15] - b[8] * b[3] * b[13] - b[12] * b[1] * b[11] + b[12] * b[3] * b[9];
      e[13] = b[0] * b[9] * b[14] - b[0] * b[10] * b[13] - b[8] * b[1] * b[14] + b[8] * b[2] * b[13] + b[12] * b[1] * b[10] - b[12] * b[2] * b[9];
      e[2] = b[1] * b[6] * b[15] - b[1] * b[7] * b[14] - b[5] * b[2] * b[15] + b[5] * b[3] * b[14] + b[13] * b[2] * b[7] - b[13] * b[3] * b[6];
      e[6] = -b[0] * b[6] * b[15] + b[0] * b[7] * b[14] + b[4] * b[2] * b[15] - b[4] * b[3] * b[14] - b[12] * b[2] * b[7] + b[12] * b[3] * b[6];
      e[10] = b[0] * b[5] * b[15] - b[0] * b[7] * b[13] - b[4] * b[1] * b[15] + b[4] * b[3] * b[13] + b[12] * b[1] * b[7] - b[12] * b[3] * b[5];
      e[14] = -b[0] * b[5] * b[14] + b[0] * b[6] * b[13] + b[4] * b[1] * b[14] - b[4] * b[2] * b[13] - b[12] * b[1] * b[6] + b[12] * b[2] * b[5];
      e[3] = -b[1] * b[6] * b[11] + b[1] * b[7] * b[10] + b[5] * b[2] * b[11] - b[5] * b[3] * b[10] - b[9] * b[2] * b[7] + b[9] * b[3] * b[6];
      e[7] = b[0] * b[6] * b[11] - b[0] * b[7] * b[10] - b[4] * b[2] * b[11] + b[4] * b[3] * b[10] + b[8] * b[2] * b[7] - b[8] * b[3] * b[6];
      e[11] = -b[0] * b[5] * b[11] + b[0] * b[7] * b[9] + b[4] * b[1] * b[11] - b[4] * b[3] * b[9] - b[8] * b[1] * b[7] + b[8] * b[3] * b[5];
      e[15] = b[0] * b[5] * b[10] - b[0] * b[6] * b[9] - b[4] * b[1] * b[10] + b[4] * b[2] * b[9] + b[8] * b[1] * b[6] - b[8] * b[2] * b[5];
      g = b[0] * e[0] + b[1] * e[4] + b[2] * e[8] + b[3] * e[12];
      if (0 === g) return this;
      g = 1 / g;
      for (b = 0; 16 > b; b++) a[b] = e[b] * g;
      return this
    };
    b.prototype.Nj = function () {
      return (new b).Rga(this)
    };
    b.prototype.FY = function (a, b, e, g, h) {
      var k, l, m, n;
      if (a === b || e === g || 1 === h) throw "null frustum";
      l = 1 / (b - a);
      m = 1 / (g - e);
      n = 1 / (1 - h);
      k = this.elements;
      k[0] = 2 * l;
      k[1] = 0;
      k[2] = 0;
      k[3] = 0;
      k[4] = 0;
      k[5] = 2 * m;
      k[6] = 0;
      k[7] = 0;
      k[8] = 0;
      k[9] = 0;
      k[10] = -2 * n;
      k[11] = 0;
      k[12] = -(b + a) * l;
      k[13] = -(g + e) * m;
      k[14] = -(1 + h) * n;
      k[15] = 1;
      return this
    };
    b.prototype.Pga = function (a, b, e, g, h, k) {
      var l, m, n, p;
      if (a === b || g === e || h === k) throw "null frustum";
      if (0 >= h) throw "near <= 0";
      if (0 >= k) throw "far <= 0";
      m = 1 / (b - a);
      n = 1 / (g - e);
      p = 1 / (k - h);
      l = this.elements;
      l[0] = 2 * h * m;
      l[1] = 0;
      l[2] = 0;
      l[3] = 0;
      l[4] = 0;
      l[5] = 2 * h * n;
      l[6] = 0;
      l[7] = 0;
      l[8] = (b + a) * m;
      l[9] = (g + e) * n;
      l[10] = -(k + h) * p;
      l[11] = -1;
      l[12] = 0;
      l[13] = 0;
      l[14] = -2 * h * k * p;
      l[15] = 0;
      return this
    };
    b.prototype.KU = function (a, d, e, g, h, k) {
      return this.concat((new b).Pga(a, d, e, g, h, k))
    };
    b.prototype.Vga = function (a, b, e, g) {
      var h, k;
      if (e === g || 0 === b) throw "null frustum";
      if (0 >= e) throw "near <= 0";
      if (0 >= g) throw "far <= 0";
      a /= 2;
      k = Math.sin(a);
      if (0 === k) throw "null frustum";
      h = 1 / (g - e);
      k = Math.cos(a) / k;
      a = this.elements;
      a[0] = k / b;
      a[1] = 0;
      a[2] = 0;
      a[3] = 0;
      a[4] = 0;
      a[5] = k;
      a[6] = 0;
      a[7] = 0;
      a[8] = 0;
      a[9] = 0;
      a[10] = -(g + e) * h;
      a[11] = -1;
      a[12] = 0;
      a[13] = 0;
      a[14] = -2 * e * g * h;
      a[15] = 0
    };
    b.prototype.Ir = function (a, b, e) {
      var g = this.elements;
      g[0] = a;
      g[4] = 0;
      g[8] = 0;
      g[12] = 0;
      g[1] = 0;
      g[5] = b;
      g[9] = 0;
      g[13] = 0;
      g[2] = 0;
      g[6] = 0;
      g[10] = e;
      g[14] = 0;
      g[3] = 0;
      g[7] = 0;
      g[11] = 0;
      g[15] = 1;
      return this
    };
    b.prototype.scale = function (a, b, e) {
      var g = this.elements;
      g[0] *= a;
      g[4] *= b;
      g[8] *= e;
      g[1] *= a;
      g[5] *= b;
      g[9] *= e;
      g[2] *= a;
      g[6] *= b;
      g[10] *= e;
      g[3] *= a;
      g[7] *= b;
      g[11] *= e;
      return this
    };
    b.prototype.IY = function (a, b, e) {
      var g = this.elements;
      g[12] = a;
      g[13] = b;
      g[14] = e;
      return this
    };
    b.prototype.translate = function (a, b, e) {
      var g = this.elements;
      g[12] += g[0] * a + g[4] * b + g[8] * e;
      g[13] += g[1] * a + g[5] * b + g[9] * e;
      g[14] += g[2] * a + g[6] * b + g[10] * e;
      g[15] += g[3] * a + g[7] * b + g[11] * e;
      return this
    };
    b.prototype.Ju = function (a, b, e, g) {
      var h, k, l, m, n, p, q, r;
      a = Math.PI * a / 180;
      h = this.elements;
      k = Math.sin(a);
      a = Math.cos(a);
      0 !== b && 0 === e && 0 === g ? (0 > b && (k = -k), h[0] = 1, h[4] = 0, h[8] = 0, h[12] = 0, h[1] = 0, h[5] = a, h[9] = -k, h[13] = 0, h[2] = 0, h[6] = k, h[10] = a, h[14] = 0, h[3] = 0, h[7] = 0, h[11] = 0) : 0 === b && 0 !== e && 0 === g ? (0 > e && (k = -k), h[0] = a, h[4] = 0, h[8] = k, h[12] = 0, h[1] = 0, h[5] = 1, h[9] = 0, h[13] = 0, h[2] = -k, h[6] = 0, h[10] = a, h[14] = 0, h[3] = 0, h[7] = 0, h[11] = 0) : 0 === b && 0 === e && 0 !== g ? (0 > g && (k = -k), h[0] = a, h[4] = -k, h[8] = 0, h[12] = 0, h[1] = k, h[5] = a, h[9] = 0, h[13] = 0, h[2] = 0, h[6] = 0, h[10] = 1, h[14] = 0, h[3] = 0, h[7] = 0, h[11] = 0) : (l = Math.sqrt(b * b + e * e + g * g), 1 !== l && (l = 1 / l, b *= l, e *= l, g *= l), l = 1 - a, m = b * e, n = e * g, p = g * b, q = b * k, r = e * k, k *= g, h[0] = b * b * l + a, h[1] = m * l + k, h[2] = p * l - r, h[3] = 0, h[4] = m * l - k, h[5] = e * e * l + a, h[6] = n * l + q, h[7] = 0, h[8] = p * l + r, h[9] = n * l - q, h[10] = g * g * l + a, h[11] = 0, h[12] = 0, h[13] = 0, h[14] = 0);
      h[15] = 1;
      return this
    };
    b.prototype.rotate = function (a, d, e, g) {
      return this.concat((new b).Ju(a, d, e, g))
    };
    b.prototype.aM = function (a) {
      return this.rotate(a, 1, 0, 0)
    };
    b.prototype.bM = function (a) {
      return this.rotate(a, 0, 1, 0)
    };
    b.prototype.cM = function (a) {
      return this.rotate(a, 0, 0, 1)
    };
    a.ge = b
  })(f);
  w.D.Fp = w.D.bc.extend({
    F: {
      visible: !0,
      zIndex: 10,
      strokeColor: "#006600",
      strokeOpacity: 0.9,
      strokeWeight: 3,
      strokeStyle: "solid",
      strokeDasharray: [10, 5],
      radius: [1E3, 1E3],
      fillColor: "#006600",
      fillOpacity: 0.9
    },
    B: function () {
      var a = this,
        b = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {},
        b = f.extend(this.F, b),
        c = this.lo(b);
      b.path = c;
      w.D.Fp.qc.B.call(this, b);
      this.set("path", c);
      this.get("center") && this.get("map") || (this.Gf = !1);
      this.CLASS_NAME = "AMap.Ellipse";
      f.e.cb(this.CLASS_NAME, b);
      this.on("movepoly", function (b) {
        var c = a.get("map");
        b = c.de(c.Jb(a.get("center")).add(b.tu));
        "3D" === c.view.type && a.set("deltaPos", [0, 0]);
        a.set("center", b)
      })
    },
    lo: function () {
      var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {},
        b = [],
        c = a.center || this.get("center"),
        d = a.map || this.get("map");
      if (c && d) for (var c = f.a.za(c), e = a.radius || this.get("radius"), g = d.Jb(c), a = g.x, g = g.y, h = f.a.map(e, function (a) {
        return a / (d.view.getResolution(20) * Math.cos(c.P * Math.PI / 180))
      }), e = h[0], h = h[1], k = f.l.Z, l = (k ? 4 : 1) * Math.PI / 180, m = 0, k = k ? 89 : 359; m <= k; m++) {
        var n = m * l,
          n = {
            x: a + e * Math.cos(n),
            y: g + h * Math.sin(n)
          };
        b.push(d.de(n))
      }
      return b
    },
    mapChanged: function () {
      f.a.Ml(w.D.Fp.qc.mapChanged) && w.D.Fp.qc.mapChanged.apply(this);
      this.setPath(this.lo());
      !this.Gf && this.get("map") && (this.Gf = !0, this.get("map").r("overlays"))
    },
    setCenter: function (a, b) {
      f.e.add(this.CLASS_NAME, "setCenter");
      (a = f.a.za(a)) && a instanceof f.V && (this.set("center", a), this.set("path", this.lo()), this.r("change", {
        type: "change",
        target: this
      }), this.Gf || (this.Gf = !0, this.get("map") && this.get("map").r("overlays")), b || this.r("setCenter"))
    },
    setRadius: function (a) {
      var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : !1;
      f.e.add(this.CLASS_NAME, "setRadius");
      a && 2 === a.length && (this.set("radius", a), this.set("path", this.lo()), b || (this.r("change", {
        type: "change",
        target: this
      }), this.r("setPath")))
    },
    setOptions: function (a) {
      w.D.Fp.qc.setOptions.call(this, a);
      a.radius && this.setRadius(a.radius, !0);
      a.center && this.setCenter(a.center, !0)
    },
    getRadius: function () {
      f.e.add(this.CLASS_NAME, "getRadius");
      return this.get("radius", null, !0)
    },
    getCenter: function () {
      f.e.add(this.CLASS_NAME, "getCenter");
      return this.get("center", null, !0)
    }
  });
  w.D.Jp = w.D.bc.extend({
    F: {
      visible: !0,
      zIndex: 10,
      strokeColor: "#006600",
      strokeOpacity: 0.9,
      strokeWeight: 3,
      strokeStyle: "solid",
      strokeDasharray: [10, 5],
      fillColor: "#006600",
      fillOpacity: 0.9
    },
    B: function () {
      var a = this,
        b = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {},
        b = f.extend(this.F, b),
        c = this.lo(b);
      b.path = c;
      w.D.Jp.qc.B.call(this, b);
      this.setPath(c);
      this.F.bounds && this.get("map") || (this.Gf = !1);
      this.CLASS_NAME = "AMap.Rectangle";
      f.e.cb(this.CLASS_NAME, b);
      this.on("movepoly", function (b) {
        var c = a.get("map"),
          g = a.get("bounds"),
          h = c.de(c.Jb(g.Rb).add(b.tu));
        b = c.de(c.Jb(g.Kb).add(b.tu));
        "3D" === c.view.type && a.set("deltaPos", [0, 0]);
        a.set("bounds", new f.Wd(h, b))
      })
    },
    lo: function () {
      var a = [],
        b = (0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}).bounds || this.get("bounds");
      if (b) {
        var c = b.getSouthWest(),
          b = b.getNorthEast();
        f.a.Ib([new f.V(c.O, c.P), new f.V(b.O, c.P), new f.V(b.O, b.P), new f.V(c.O, b.P)], function (b) {
          return a.push(b)
        })
      }
      return a
    },
    mapChanged: function () {
      f.a.Ml(w.D.Jp.qc.mapChanged) && w.D.Jp.qc.mapChanged.apply(this);
      this.setPath(this.lo());
      !this.Gf && this.get("map") && (this.Gf = !0, this.get("map").r("overlays"))
    },
    setOptions: function (a) {
      w.D.Jp.qc.setOptions.call(this, a);
      a.bounds && this.setBounds(a.bounds, !0)
    },
    setBounds: function (a) {
      var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : !1;
      f.e.add(this.CLASS_NAME, "setBounds");
      a && a instanceof f.Wd && (this.set("bounds", a), this.set("path", this.lo()), this.Gf || (this.Gf = !0, this.get("map") && this.get("map").r("overlays")), b || (this.r("change", {
        type: "change",
        target: this
      }), this.r("setBounds")))
    },
    getBounds: function () {
      f.e.add(this.CLASS_NAME, "getCenter");
      return this.get("bounds", null, !0)
    }
  });
  w.D.VN = w.D.ab.extend({
    F: {
      text: "",
      textAlign: "center",
      verticalAlign: "middle",
      offset: new f.G(0, 0)
    },
    B: function (a) {
      w.D.VN.qc.B.apply(this, arguments);
      this.CLASS_NAME = "AMap.Text";
      f.e.cb(this.CLASS_NAME, a);
      this.m4();
      this.setText(this.get("text"));
      this.setStyle(this.get("style"))
    },
    m4: function () {
      if (!this.Uw) {
        var a = document.createElement("div");
        a.className = "amap-overlay-text-container";
        this.Uw = a
      }
    },
    getText: function () {
      f.e.add(this.CLASS_NAME, "getText");
      return this.get("text", null, !0)
    },
    setText: function (a) {
      f.e.add(this.CLASS_NAME, "setText");
      a || 0 === a || (a = "");
      f.j.Iha(this.Uw, "amap-overlay-text-empty", !a);
      f.e.add(this.CLASS_NAME, "setText");
      this.set("text", a);
      this.Uw.innerHTML = a;
      this.QX()
    },
    setStyle: function (a) {
      f.e.add(this.CLASS_NAME, "setStyle");
      f.extend(this.Uw.style, a);
      this.QX()
    },
    QX: function () {
      this.setContent(this.Uw);
      this.setShadow(this.getShadow())
    }
  });
  f.CN = {
    find: function (a) {
      return f.a.find(this.us || [], a)
    },
    BC: function () {
      return this.us || []
    },
    Bc: function (a) {
      return null !== this.find(a)
    },
    add: function (a) {
      var b = this,
        c = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : f.a.bp,
        d = this.us || (this.us = []);
      f.a.isArray(a) ? f.a.Ib(a, function (a) {
        b.add(a, c)
      }) : null === this.find(a) && (d.push(a), c(a));
      return this
    },
    remove: function (a) {
      var b = this,
        c = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : f.a.bp,
        d = this.us;
      if (d) if (f.a.isArray(a)) f.a.Ib(a, function (a) {
        b.remove(a, c)
      });
      else {
        var e = f.a.indexOf(d, a); - 1 !== e && (c(d[e]), d.splice(e, 1))
      }
      return this
    },
    clear: function () {
      this.Ib(0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : f.a.bp);
      this.us = [];
      return this
    },
    Ib: function () {
      var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : f.a.bp,
        b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : null;
      f.a.Ib(this.us || [], function () {
        for (var c = arguments.length, d = Array(c), e = 0; e < c; e++) d[e] = arguments[e];
        c = d[0];
        f.a.Ml(c.Ib) ? c.Ib(a, b) : a.apply(b || c, d)
      });
      return this
    },
    bn: function (a) {
      for (var b = arguments.length, c = Array(1 < b ? b - 1 : 0), d = 1; d < b; d++) c[d - 1] = arguments[d];
      this.Ib(function (b) {
        b && f.a.Ml(b[a]) && b[a].apply(b, c)
      });
      return this
    },
    g: function (a) {
      var b = arguments;
      this.Ib(function (a) {
        a.on.apply(a, b)
      });
      return this
    },
    I: function (a) {
      var b = arguments;
      this.Ib(function (a) {
        a.off.apply(a, b)
      });
      return this
    },
    addListener: function () {
      this.g.apply(this, arguments)
    },
    Yw: function (a) {
      var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : f.a.bp,
        c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;
      this.Ib(function (d) {
        d.on.call(d, event, function () {
          b();
          d.off(a)
        }, c)
      })
    },
    removeListener: function (a) {
      this.I(a.uJ, a.kK, a.je)
    },
    N: function (a, b) {
      this.Ib(function (c) {
        c.emit(a, b)
      })
    }
  };
  w.D.el = w.D.Hg.extend({
    ga: [f.CN],
    B: function () {
      var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : [];
      w.D.el.qc.B.apply(this);
      this.CLASS_NAME = "AMap.OverlayGroup";
      this.map = null;
      this.add(a)
    },
    dc: function (a) {
      this.bn("setMap", a);
      this.set("map", a);
      this.map = a;
      return this
    },
    mapChanged: function () { },
    Zw: function (a) {
      var b = this;
      this.add(a, function (a) {
        b.map && a.setMap(b.map)
      });
      return this
    },
    zu: function (a) {
      var b = this;
      this.remove(a, function (a) {
        a.getMap() === b.map && a.setMap(null)
      });
      return this
    },
    zc: function () {
      var a = this;
      this.clear(function (b) {
        b.getMap() === a.map && b.setMap(null)
      });
      return this
    },
    Xt: function () {
      this.bn("hide");
      return this
    },
    show: function () {
      this.bn("show");
      return this
    },
    Bb: function () {
      this.bn("setOptions", 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {});
      return this
    }
  });
  w.D.el.Fk({
    find: "getOverlay",
    BC: "getOverlays",
    Zw: ["addOverlay", "addOverlays"],
    Bc: "hasOverlay",
    zu: ["removeOverlay", "removeOverlays"],
    zc: "clearOverlays",
    Ib: "eachOverlay",
    dc: "setMap",
    Bb: "setOptions",
    show: "show",
    Xt: "hide",
    g: "on",
    I: "off"
  });
  (function (a, b) {
    function c(a, b) {
      if (!a.length) return !1;
      for (var c = 0, d = a.length; c < d; c++) {
        var e = a[c];
        if (!("*" === b || e && e.geometry && e.geometry.type === b) || e && e.properties && !e.properties._isAmap) return !1
      }
      return !0
    }
    function d(a) {
      for (var b = [], c = 0, d = a.length; c < d; c++) b.push(a[c].geometry.coordinates);
      return b
    }
    function e(a) {
      if (!a) return [];
      a = b.a.za(a);
      for (var c = [], d = 0, e = a.length; d < e; d++) c[d] = a[d].Zj();
      return c
    }
    a.D.AN = a.D.el.extend({
      B: function (c) {
        a.D.AN.qc.B.call(this, []);
        this.CLASS_NAME = "AMap.GeoJSON";
        b.e.cb(this.CLASS_NAME, c);
        this.F = b.extend({
          getMarker: function (b, c) {
            return new a.D.ab({
              position: c
            })
          },
          getPolyline: function (b, c) {
            return new a.D.Fb({
              path: c
            })
          },
          getPolygon: function (b, c) {
            return new a.D.bc({
              path: c
            })
          },
          coordsToLatLng: function (a) {
            return a
          }
        }, c);
        if (!this.F.coordsToLatLngs) {
          var d = this.F.coordsToLatLng;
          this.F.coordsToLatLngs = function (a) {
            for (var b = [], c = 0, e = a.length; c < e; c++) b.push(d.call(null, a[c]));
            return b
          }
        }
        this.importData(this.F.geoJSON)
      },
      importData: function (a) {
        if (a && (a = this.h4(a), a.length)) {
          this.Zw(a);
          var b = this.F.map;
          if (b) for (var c = 0, d = a.length; c < d; c++) a[c].setMap(b)
        }
      },
      toGeoJSON: function () {
        for (var a = this.BC(), b = [], c = 0, d = a.length; c < d; c++) b[c] = a[c].toGeoJSON();
        return b
      },
      h4: function (a) {
        if (a) {
          b.a.isArray(a) || (a = [a]);
          for (var c = [], d = 0, e = a.length; d < e; d++) {
            var m = this.i4(a[d]);
            m && c.push(m)
          }
          return c
        }
      },
      EO: function (a) {
        var b = "Feature" === a.type ? a.geometry : a,
          b = this.F.coordsToLatLng(b ? b.coordinates : null),
          b = this.F.getMarker(a, b);
        this.fo(a, b);
        return b
      },
      B1: function (c) {
        for (var d = "Feature" === c.type ? c.geometry : c, d = d ? d.coordinates : null, e = [], l = 0, m = d.length; l < m; l++) e.push(this.EO(b.extend({}, c, {
          type: "Feature",
          properties: {
            _isAmap: !0,
            _pointIndex: l,
            _parentProperities: c.properties
          },
          geometry: {
            type: "Point",
            coordinates: d[l]
          }
        })));
        d = new a.D.el(e);
        this.fo(c, d);
        return d
      },
      DO: function (a) {
        var b = "Feature" === a.type ? a.geometry : a,
          b = this.F.coordsToLatLngs(b ? b.coordinates : null),
          b = this.F.getPolyline(a, b);
        this.fo(a, b);
        return b
      },
      A1: function (c) {
        for (var d = "Feature" === c.type ? c.geometry : c, d = d ? d.coordinates : null, e = [], l = 0, m = d.length; l < m; l++) e.push(this.DO(b.extend({}, c, {
          type: "Feature",
          properties: {
            _isAmap: !0,
            _lineStringIndex: l,
            _parentProperities: c.properties
          },
          geometry: {
            type: "LineString",
            coordinates: d[l]
          }
        })));
        d = new a.D.el(e);
        this.fo(c, d);
        return d
      },
      FO: function (a) {
        for (var b = "Feature" === a.type ? a.geometry : a, b = b ? b.coordinates : null, c = [], d = 0, e = b.length; d < e; d++) c.push(this.F.coordsToLatLngs(b[d]));
        b = this.F.getPolygon(a, c);
        this.fo(a, b);
        return b
      },
      C1: function (c) {
        for (var d = "Feature" === c.type ? c.geometry : c, d = d ? d.coordinates : null, e = [], l = 0, m = d.length; l < m; l++) e.push(this.FO(b.extend({}, c, {
          type: "Feature",
          properties: {
            _isAmap: !0,
            _polygonIndex: l,
            _parentProperities: c.properties
          },
          geometry: {
            type: "Polygon",
            coordinates: d[l]
          }
        })));
        d = new a.D.el(e);
        this.fo(c, d);
        return d
      },
      u1: function (c) {
        for (var d = ("Feature" === c.type ? c.geometry : c).geometries, e = [], l = 0, m = d.length; l < m; l++) e.push(this.uG(b.extend({}, c, {
          type: "Feature",
          properties: {
            _isAmap: !0,
            _geometryIndex: l,
            _parentProperities: c.properties
          },
          geometry: d[l]
        })));
        d = new a.D.el(e);
        this.fo(c, d);
        return d
      },
      i4: function (b) {
        if (b) switch (b.type) {
          case "Feature":
            return this.uG(b);
          case "FeatureCollection":
            for (var c = b.features, d = [], e = 0, m = c.length; e < m; e++) {
              var n = this.uG(c[e]);
              n && d.push(n)
            }
            c = new a.D.el(d);
            this.fo(b, c);
            return c;
          default:
            throw Error("Invalid GeoJSON object." + b.type);
        }
      },
      fo: function (a, c) {
        c && a.properties && c.setExtData && c.setExtData(b.extend({}, c.getExtData() || {}, {
          _geoJsonProperties: a.properties
        }))
      },
      uG: function (a) {
        var b = "Feature" === a.type ? a.geometry : a;
        if (!(b && b.coordinates || b)) return null;
        switch (b.type) {
          case "Point":
            return this.EO(a);
          case "MultiPoint":
            return this.B1(a);
          case "LineString":
            return this.DO(a);
          case "MultiLineString":
            return this.A1(a);
          case "Polygon":
            return this.FO(a);
          case "MultiPolygon":
            return this.C1(a);
          case "GeometryCollection":
            return this.u1(a);
          default:
            throw Error("Invalid GeoJSON geometry." + b.type);
        }
      }
    });
    a.D.el.ob({
      toGeoJSON: function (a) {
        a = a || this.BC();
        for (var b = [], e = 0, l = a.length; e < l; e++) a[e].toGeoJSON && (b[e] = a[e].toGeoJSON());
        a = this.getExtData() || {};
        if (c(b, "Point")) b = {
          type: "Feature",
          properties: a._geoJsonProperties || {},
          geometry: {
            type: "MultiPoint",
            coordinates: d(b)
          }
        };
        else if (c(b, "LineString")) b = {
          type: "Feature",
          properties: a._geoJsonProperties || {},
          geometry: {
            type: "MultiLineString",
            coordinates: d(b)
          }
        };
        else if (c(b, "Polygon")) b = {
          type: "Feature",
          properties: a._geoJsonProperties || {},
          geometry: {
            type: "MultiPolygon",
            coordinates: d(b)
          }
        };
        else if (c(b, "*")) {
          a = a._geoJsonProperties || {};
          for (var e = [], l = 0, m = b.length; l < m; l++) e.push(b[l].geometry);
          b = {
            type: "Feature",
            properties: a,
            geometry: {
              type: "GeometryCollection",
              geometries: e
            }
          }
        } else b = {
          type: "FeatureCollection",
          properties: a._geoJsonProperties || {},
          features: b
        };
        return b
      }
    });
    a.D.ab.ob({
      toGeoJSON: function () {
        return {
          type: "Feature",
          properties: (this.getExtData() || {})._geoJsonProperties || {},
          geometry: {
            type: "Point",
            coordinates: this.getPosition().Zj()
          }
        }
      }
    });
    a.D.Fb.ob({
      toGeoJSON: function () {
        return {
          type: "Feature",
          properties: (this.getExtData() || {})._geoJsonProperties || {},
          geometry: {
            type: "LineString",
            coordinates: e(this.getPath())
          }
        }
      }
    });
    a.D.bc.ob({
      toGeoJSON: function () {
        var a = (this.getExtData() || {})._geoJsonProperties || {},
          c;
        if (c = this.getPath()) {
          c = b.a.za(c);
          b.a.isArray(c[0]) || (c = [c]);
          for (var d = [], l = 0, m = c.length; l < m; l++) d[l] = e(c[l]);
          c = d
        } else c = [];
        return {
          type: "Feature",
          properties: a,
          geometry: {
            type: "Polygon",
            coordinates: c
          }
        }
      }
    })
  })(w, f);
  w.w.PE = w.w.oc.extend({
    ga: [f.CN],
    B: function (a) {
      w.w.PE.qc.B.call(this, 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {});
      this.CLASS_NAME = "AMap.LayerGroup";
      this.map = null;
      this.add(a)
    },
    dc: function (a) {

      this.bn("setMap", a);
      this.set("map", a);
      this.map = a;
      return this
    },
    mapChanged: function () { },
    JB: function (a) {
      var b = this;
      this.add(a, function (a) {
        b.map && a.setMap(b.map)
      });
      return this
    },
    Tj: function (a) {
      var b = this;
      this.remove(a, function (a) {
        a.getMap() === b.map && a.setMap(null)
      });
      return this
    },
    G$: function () {
      var a = this;
      this.clear(function (b) {
        b.getMap() === a.map && b.setMap(null)
      });
      return this
    },
    Xt: function () {
      this.bn("hide");
      return this
    },
    show: function () {
      this.bn("show");
      return this
    },
    reload: function () {
      this.bn("reload");
      return this
    },
    Bb: function () {
      var a = this,
        b = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {},
        c = f.a.keys(b);
      f.a.Ib(c, function (c) {
        a.bn("set", c, b[c])
      });
      return this
    }
  });
  w.w.PE.Fk({
    find: "getLayer",
    BC: "getLayers",
    JB: ["addLayer", "addLayers"],
    Bc: "hasLayer",
    Tj: ["removeLayer", "removeLayers"],
    G$: "clearLayers",
    Ib: "eachLayer",
    dc: "setMap",
    Bb: "setOptions",
    show: "show",
    Xt: "hide",
    reload: "reload",
    g: "on",
    I: "off"
  });
  f.O_ = w.Pb.extend({
    B: function (a, b) {
      b && (b.center = b.position, b.zoom = 11);
      arguments.callee.oa.apply(this, arguments);
      window.console && window.console.log && window.console.log("\u9ad8\u5fb7\u5730\u56feJSAPI\u8857\u666f\u5df2\u4e0b\u7ebf\uff0c\u611f\u8c22\u60a8\u7684\u652f\u6301\u3002")
    }
  });
  f.P_ = w.D.ab.extend({
    B: function (a) {
      arguments.callee.oa.apply(this, arguments)
    }
  });
  f.Mc = {
    yo: function (a, b) {
      for (var c = Infinity, d = 0, e = 1, g = b.length; e < g; d = e, e += 1) c = Math.min(c, f.Mc.kha(a, [b[d], b[e]]));
      return Math.sqrt(c)
    },
    kha: function (a, b) {
      return this.jha(a, this.YT(a, b))
    },
    jha: function (a, b) {
      var c = a[0] - b[0],
        d = a[1] - b[1];
      return c * c + d * d
    },
    Nma: function (a, b, c, d) {
      d = d || 1E-6;
      if (c[0] === b[0]) {
        var e = Math.min(b[1], c[1]);
        b = Math.max(b[1], c[1]);
        return Math.abs(a[0] - c[0]) < d && a[1] >= e && a[1] <= b
      }
      var e = Math.min(b[0], c[0]),
        g = Math.max(b[0], c[0]);
      return Math.abs((c[1] - b[1]) / (c[0] - b[0]) * (a[0] - b[0]) + b[1] - a[1]) < d && a[0] >= e && a[0] <= g
    },
    YT: function (a, b) {
      var c = a[0],
        d = a[1],
        e = b[0],
        g = b[1],
        h = e[0],
        e = e[1],
        k = g[0],
        g = g[1],
        l = k - h,
        m = g - e,
        c = 0 === l && 0 === m ? 0 : (l * (c - h) + m * (d - e)) / (l * l + m * m || 0);
      0 >= c || (1 <= c ? (h = k, e = g) : (h += c * l, e += c * m));
      return [h, e]
    },
    No: function (a) {
      for (var b = a.length, c = 0, d = a[b - 1], e = d[0], d = d[1], g, h, k = 0; k < b; k += 1) h = a[k], g = h[0], h = h[1], c += (g - e) * (h + d), e = g, d = h;
      return 0 < c
    },
    md: function (a, b, c) {
      var d = a[0];
      a = a[1];
      var e = !1,
        g, h, k, l, m = b.length,
        n = 0;
      for (l = m - 1; n < m; l = n, n += 1) {
        var p = !1;
        g = b[n][0];
        h = b[n][1];
        k = b[l][0];
        l = b[l][1];
        if (g === d && h === a || k === d && l === a) return c ? !0 : !1;
        if (h < a === l >= a) {
          g = (k - g) * (a - h) / (l - h) + g;
          if (d === g) return c ? !0 : !1;
          p = d < g
        }
        p && (e = !e)
      }
      return e
    },
    FX: function (a, b) {
      function c(a, b, c, d) {
        var e = [a[0] - b[0], a[1] - b[1]],
          g = [c[0] - d[0], c[1] - d[1]];
        a = a[0] * b[1] - a[1] * b[0];
        c = c[0] * d[1] - c[1] * d[0];
        d = 1 / (e[0] * g[1] - e[1] * g[0]);
        return [(a * g[0] - c * e[0]) * d, (a * g[1] - c * e[1]) * d]
      }
      function d(a, b, c) {
        return (c[0] - b[0]) * (a[1] - b[1]) > (c[1] - b[1]) * (a[0] - b[0])
      }
      var e, g, h, k, l = a;
      e = b[b.length - 2];
      for (var m = 0, n = b.length - 1; m < n; m++) {
        g = b[m];
        var p = l,
          l = [];
        h = p[p.length - 1];
        for (var q = 0, r = p.length; q < r; q++) k = p[q], d(k, e, g) ? (d(h, e, g) || l.push(c(e, g, h, k)), l.push(k)) : d(h, e, g) && l.push(c(e, g, h, k)), h = k;
        e = g
      }
      if (3 > l.length) return [];
      l.push(l[0]);
      return l
    }
  };
  (function (a) {
    function b(b, c) {
      var d;
      a: {
        switch (b) {
          case "EPSG3395":
            d = a.Bg.vN;
            break a;
          case "EPSG4326":
            d = a.Bg.wN;
            break a
        }
        d = a.Bg.JE
      }
      return {
        project: function (b) {
          a.a.isArray(b) && (b = new a.V(b[0], b[1]));
          return d.hy(b, c).Zj()
        },
        unproject: function (b) {
          a.a.isArray(b) && (b = new a.G(b[0], b[1]));
          return d.Ay(b, c).Zj()
        },
        normalizePoint: function (b) {
          return a.a.za(b)
        },
        distance: function (b, c) {
          a.e.add(this.CLASS_NAME, "distance");
          c = this.normalizePoint(c);
          if (a.a.isArray(c)) return this.distanceToLine(b, c);
          b = this.normalizePoint(b);
          var d = a.gk.Cq,
            e = Math.cos,
            g = b.P * d,
            h = c.P * d,
            k = 2 * a.gk.oJ,
            d = c.O * d - b.O * d,
            e = (1 - e(h - g) + (1 - e(d)) * e(g) * e(h)) / 2;
          return k * Math.asin(Math.sqrt(e))
        },
        ringArea: function (b) {
          a.e.add(this.CLASS_NAME, "ringArea");
          b = this.normalizeLine(b);
          var c = a.gk.oJ * a.gk.Cq,
            d = 0,
            e = b.length;
          if (3 > e) return 0;
          for (var g = 0; g < e - 1; g += 1) var h = b[g],
            k = b[g + 1],
            u = h.O * c * Math.cos(h.P * a.gk.Cq),
            h = h.P * c,
            v = k.O * c * Math.cos(k.P * a.gk.Cq),
            d = d + (u * k.P * c - v * h);
          g = b[g];
          b = b[0];
          e = g.O * c * Math.cos(g.P * a.gk.Cq);
          g = g.P * c;
          k = b.O * c * Math.cos(b.P * a.gk.Cq);
          d += e * b.P * c - k * g;
          return 0.5 * Math.abs(d)
        },
        sphericalCalotteArea: function (b) {
          a.e.add(this.CLASS_NAME, "sphericalCalotteArea");
          var c = a.gk.oJ;
          b = c - c * Math.cos(b / c);
          return 2 * Math.PI * c * b
        }
      }
    }
    function c() {
      return {
        normalizePoint: function (a) {
          return a && a.x && a.y ? [a.x, a.y] : a
        },
        distance: function (a, b) {
          var c = a[0] - b[0],
            d = a[1] - b[1];
          return Math.sqrt(c * c + d * d)
        },
        project: function (a) {
          return a
        },
        unproject: function (a) {
          return a
        },
        ringArea: function (a) {
          for (var b = [0, 0], c = [0, 0], d = 0, e = a[0], n = a.length, p = 2; p < n; p++) {
            var q = a[p - 1],
              r = a[p];
            b[0] = e[0] - r[0];
            b[1] = e[1] - r[1];
            c[0] = e[0] - q[0];
            c[1] = e[1] - q[1];
            d += b[0] * c[1] - b[1] * c[0]
          }
          return d / 2
        }
      }
    }
    function d(a) {
      for (var b = 0, c = a.length, d = 0; d < c - 1; d++) var e = a[d],
        n = a[d + 1],
        b = b + (n[0] - e[0]) * (n[1] + e[1]);
      if (a[c - 1][0] !== a[0][0] || a[c - 1][1] !== a[0][1]) e = a[c - 1], n = a[0], b += (n[0] - e[0]) * (n[1] + e[1]);
      return 0 >= b
    }
    function e(b) {
      this.CLASS_NAME = "AMap.GeometryUtil";
      this.Cb = a.extend({
        onSegmentTolerance: 5,
        crs: "EPSG3857",
        maxZoom: 20
      }, b);
      this.setCrs(this.Cb.crs)
    }
    a.extend(e.prototype, {
      clone: function (b) {
        return new e(a.extend({}, this.Cb, b))
      },
      isPoint: function (b) {
        return b && (b instanceof a.V || a.a.isArray(b) && !isNaN(b[0]))
      },
      normalizePoint: function (a) {
        return a
      },
      normalizeLine: function (a) {
        for (var b = [], c = 0, d = a.length; c < d; c++) b.push(this.normalizePoint(a[c]));
        return b
      },
      normalizeMultiLines: function (b) {
        a.a.isArray(b) && this.isPoint(b[0]) && (b = [b]);
        for (var c = [], d = 0, e = b.length; d < e; d++) c.push(this.normalizeLine(b[d]));
        return c
      },
      setCrs: function (d) {
        a.extend(this, d && d.project && d.unproject ? d : "plane" === d ? c() : b(d, this.Cb.maxZoom))
      },
      distance: function () {
        throw Error("distance Not implemented!");
      },
      Us: function (a, b) {
        a = this.normalizeLine(a);
        this.isPoint(a[0]) || (a = a[0]);
        for (var c = [], d = 0, e = a.length; d < e; d++) c.push(this.project(a[d]));
        !0 === b ? c = this.makesureClockwise(c) : !1 === b && (c = this.makesureClockwise(c), c.reverse());
        return c
      },
      S7: function (a) {
        for (var b = [], c = 0, d = a.length; c < d; c++) b.push(this.unproject(a[c]));
        return b
      },
      closestOnSegment: function (b, c, d) {
        a.e.add(this.CLASS_NAME, "closestOnSegment");
        b = a.Mc.YT(this.project(b), this.Us([c, d]));
        return this.unproject(b)
      },
      closestOnLine: function (a, b) {
        b = this.normalizeLine(b);
        for (var c = Infinity, d, e = 0, n = b.length; e < n - 1; e++) {
          var p = this.closestOnSegment(a, b[e], b[e + 1]),
            q = this.distance(a, p);
          q < c && (c = q, d = p)
        }
        return d
      },
      distanceToSegment: function (a, b, c) {
        return this.distanceToLine(a, [b, c])
      },
      distanceToLine: function (a, b) {
        b = this.normalizeLine(b);
        this.isPoint(b[0]) || (b = b[0]);
        for (var c = Infinity, d = 0, e = b.length; d < e - 1; d++) var n = this.closestOnSegment(a, b[d], b[d + 1]),
          c = Math.min(c, this.distance(a, n));
        return c
      },
      isPointOnSegment: function (b, c, d, e) {
        a.e.add(this.CLASS_NAME, "isPointOnSegment");
        if (!e && 0 !== e || 0 > e) e = this.Cb.onSegmentTolerance;
        return this.distanceToSegment(b, c, d) <= e
      },
      isPointOnLine: function (a, b, c) {
        b = this.normalizeLine(b);
        for (var d = 0, e = b.length; d < e - 1; d++) if (this.isPointOnSegment(a, b[d], b[d + 1], c)) return !0;
        return !1
      },
      isPointOnRing: function (a, b, c) {
        b = this.normalizeLine(b);
        for (var d = 0, e = b.length; d < e; d++) if (this.isPointOnSegment(a, b[d], b[d === e - 1 ? 0 : d + 1], c)) return !0;
        return !1
      },
      isPointOnPolygon: function (a, b, c) {
        b = this.normalizeMultiLines(b);
        for (var d = 0, e = b.length; d < e; d++) if (this.isPointOnRing(a, b[d], c)) return !0;
        return !1
      },
      makesureClockwise: function (a) {
        d(a) || (a = [].concat(a), a.reverse());
        return a
      },
      makesureAntiClockwise: function (a) {
        d(a) && (a = [].concat(a), a.reverse());
        return a
      },
      isPointInRing: function (b, c) {
        a.e.add(this.CLASS_NAME, "isPointInRing");
        c = this.normalizeLine(c);
        var d = this.Us(c, !0);
        return a.Mc.md(this.project(b), d, !1)
      },
      isRingInRing: function (a, b) {
        for (var c = 0, d = a.length; c < d; c++) if (!this.isPointInRing(a[c], b)) return !1;
        return !0
      },
      isPointInPolygon: function (a, b) {
        b = this.normalizeMultiLines(b);
        for (var c, d = 0, e = b.length; d < e && (c = this.isPointInRing(a, b[d]), 0 < d && (c = !c), c); d += 1);
        return c
      },
      doesSegmentsIntersect: function (b, c, d, e) {
        a.e.add(this.CLASS_NAME, "doesSegmentsIntersect");
        var m = this.Us([b, c, d, e]);
        b = m[0];
        c = m[1];
        d = m[2];
        e = m[3];
        var m = !1,
          n = (e[0] - d[0]) * (b[1] - d[1]) - (e[1] - d[1]) * (b[0] - d[0]),
          p = (c[0] - b[0]) * (b[1] - d[1]) - (c[1] - b[1]) * (b[0] - d[0]);
        b = (e[1] - d[1]) * (c[0] - b[0]) - (e[0] - d[0]) * (c[1] - b[1]);
        0 !== b && (c = n / b, p /= b, 0 <= c && 1 >= c && 0 <= p && 1 >= p && (m = !0));
        return m
      },
      doesSegmentLineIntersect: function (a, b, c) {
        c = this.normalizeLine(c);
        for (var d = 0, e = c.length; d < e - 1; d++) if (this.doesSegmentsIntersect(a, b, c[d], c[d + 1])) return !0;
        return !1
      },
      doesSegmentRingIntersect: function (a, b, c) {
        c = this.normalizeLine(c);
        for (var d = 0, e = c.length; d < e; d++) if (this.doesSegmentsIntersect(a, b, c[d], c[d === e - 1 ? 0 : d + 1])) return !0;
        return !1
      },
      doesSegmentPolygonIntersect: function (a, b, c) {
        c = this.normalizeMultiLines(c);
        for (var d = 0, e = c.length; d < e; d++) if (this.doesSegmentRingIntersect(a, b, c[d])) return !0;
        return !1
      },
      doesLineLineIntersect: function (a, b) {
        a = this.normalizeLine(a);
        for (var c = 0, d = a.length; c < d - 1; c++) if (this.doesSegmentLineIntersect(a[c], a[c + 1], b)) return !0;
        return !1
      },
      doesLineRingIntersect: function (a, b) {
        a = this.normalizeLine(a);
        for (var c = 0, d = a.length; c < d - 1; c++) if (this.doesSegmentRingIntersect(a[c], a[c + 1], b)) return !0;
        return !1
      },
      doesRingRingIntersect: function (a, b) {
        a = this.normalizeLine(a);
        for (var c = 0, d = a.length; c < d; c++) if (this.doesSegmentRingIntersect(a[c], a[c === d - 1 ? 0 : c + 1], b)) return !0;
        return !1
      },
      Z1: function (a, b) {
        function c() {
          var a = [e[0] - n[0], e[1] - n[1]],
            b = [p[0] - q[0], p[1] - q[1]],
            d = e[0] * n[1] - e[1] * n[0],
            g = p[0] * q[1] - p[1] * q[0],
            h = 1 / (a[0] * b[1] - a[1] * b[0]);
          return [(d * b[0] - g * a[0]) * h, (d * b[1] - g * a[1]) * h]
        }
        function d(a) {
          return (n[0] - e[0]) * (a[1] - e[1]) > (n[1] - e[1]) * (a[0] - e[0])
        }
        a = this.makesureAntiClockwise(a);
        b = this.makesureClockwise(b);
        var e, n, p, q, r = a;
        e = b[b.length - 1];
        for (var s = 0, u = b.length; s < u; s++) {
          n = b[s];
          var v = r,
            r = [];
          p = v[v.length - 1];
          for (var x = 0, t = v.length; x < t; x++) q = v[x], d(q) ? (d(p) || r.push(c()), r.push(q)) : d(p) && r.push(c()), p = q;
          e = n
        }
        return r
      },
      ringRingClip: function (b, c) {
        a.e.add(this.CLASS_NAME, "ringRingClip");
        b = this.Us(b);
        c = this.Us(c);
        var d = this.Z1(b, c);
        return this.S7(d)
      },
      ringArea: function () {
        throw Error("distance Not implemented!");
      },
      distanceOfLine: function (a) {
        a = this.normalizeLine(a);
        for (var b = 0, c = 0, d = a.length; c < d - 1; c++) b += this.distance(a[c], a[c + 1]);
        return b
      },
      isClockwise: function (a) {
        a = this.Us(a);
        return d(a)
      }
    });
    a.nv = new e;
    a.Ez = new e;
    a.Ez.setCrs("plane")
  })(f);
  (function (a) {
    function b(a, b, c, d, e) {
      for (var g, h = 0, k = b, l = c - d; k < c; k += d) h += (a[l] - a[k]) * (a[k + 1] + a[l + 1]), l = k;
      if (e === 0 < h) for (e = b; e < c; e += d) g = r(e, a[e], a[e + 1], g);
      else for (e = c - d; e >= b; e -= d) g = r(e, a[e], a[e + 1], g);
      g && m(g, g.next) && (s(g), g = g.next);
      return g
    }
    function c(a, b) {
      if (!a) return a;
      b || (b = a);
      var c = a,
        d;
      do
        if (d = !1, c.XY || !m(c, c.next) && 0 !== l(c.va, c, c.next)) c = c.next;
        else {
          s(c);
          c = b = c.va;
          if (c === c.next) break;
          d = !0
        }
      while (d || c !== b);
      return b
    }
    function d(a, b, e, g, r, u, N) {
      if (a) {
        if (!N && u) {
          var I = a,
            C = I;
          do null === C.z && (C.z = h(C.x, C.y, g, r, u)), C.Yl = C.va, C = C.Ti = C.next;
          while (C !== I);
          C.Yl.Ti = null;
          C.Yl = null;
          var I = C,
            H, F, B, D, E, G, K = 1;
          do {
            C = I;
            B = I = null;
            for (D = 0; C;) {
              D++;
              F = C;
              for (H = E = 0; H < K && (E++, F = F.Ti, F); H++);
              for (G = K; 0 < E || 0 < G && F;) 0 !== E && (0 === G || !F || C.z <= F.z) ? (H = C, C = C.Ti, E--) : (H = F, F = F.Ti, G--), B ? B.Ti = H : I = H, H.Yl = B, B = H;
              C = F
            }
            B.Ti = null;
            K *= 2
          } while (1 < D)
        }
        for (I = a; a.va !== a.next;) {
          C = a.va;
          F = a.next;
          if (u) a: if (B = a.va, D = a.next, 0 <= l(B, a, D)) B = !1;
          else {
            E = h(B.x < a.x ? B.x < D.x ? B.x : D.x : a.x < D.x ? a.x : D.x, B.y < a.y ? B.y < D.y ? B.y : D.y : a.y < D.y ? a.y : D.y, g, r, u);
            K = h(B.x > a.x ? B.x > D.x ? B.x : D.x : a.x > D.x ? a.x : D.x, B.y > a.y ? B.y > D.y ? B.y : D.y : a.y > D.y ? a.y : D.y, g, r, u);
            for (H = a.Ti; H && H.z <= K;) {
              if (H !== a.va && H !== a.next && k(B.x, B.y, a.x, a.y, D.x, D.y, H.x, H.y) && 0 <= l(H.va, H, H.next)) {
                B = !1;
                break a
              }
              H = H.Ti
            }
            for (H = a.Yl; H && H.z >= E;) {
              if (H !== a.va && H !== a.next && k(B.x, B.y, a.x, a.y, D.x, D.y, H.x, H.y) && 0 <= l(H.va, H, H.next)) {
                B = !1;
                break a
              }
              H = H.Yl
            }
            B = !0
          } else a: if (B = a.va, D = a.next, 0 <= l(B, a, D)) B = !1;
          else {
            for (E = a.next.next; E !== a.va;) {
              if (k(B.x, B.y, a.x, a.y, D.x, D.y, E.x, E.y) && 0 <= l(E.va, E, E.next)) {
                B = !1;
                break a
              }
              E = E.next
            }
            B = !0
          }
          if (B) b.push(C.Pd / e), b.push(a.Pd / e), b.push(F.Pd / e), s(a), I = a = F.next;
          else if (a = F, a === I) {
            if (N) if (1 === N) {
              N = b;
              I = e;
              C = a;
              do F = C.va, B = C.next.next, !m(F, B) && n(F, C, C.next, B) && p(F, B) && p(B, F) && (N.push(F.Pd / I), N.push(C.Pd / I), N.push(B.Pd / I), s(C), s(C.next), C = a = B), C = C.next;
              while (C !== a);
              a = C;
              d(a, b, e, g, r, u, 2)
            } else {
              if (2 === N) a: {
                N = a;
                do {
                  for (I = N.next.next; I !== N.va;) {
                    if (C = N.Pd !== I.Pd) if (C = void 0, C = N.next.Pd !== I.Pd) if (C = void 0, C = N.va.Pd !== I.Pd) {
                      C = C = void 0;
                      b: {
                        C = N;
                        do {
                          if (C.Pd !== N.Pd && C.next.Pd !== N.Pd && C.Pd !== I.Pd && C.next.Pd !== I.Pd && n(C, C.next, N, I)) {
                            C = !0;
                            break b
                          }
                          C = C.next
                        } while (C !== N);
                        C = !1
                      }
                      if (C = !C) if (C = void 0, C = p(N, I)) if (C = void 0, C = p(I, N)) {
                        C = N;
                        F = !1;
                        B = (N.x + I.x) / 2;
                        D = (N.y + I.y) / 2;
                        do C.y > D !== C.next.y > D && C.next.y !== C.y && B < (C.next.x - C.x) * (D - C.y) / (C.next.y - C.y) + C.x && (F = !F), C = C.next;
                        while (C !== N);
                        C = F
                      }
                    }
                    if (C) {
                      a = q(N, I);
                      N = c(N, N.next);
                      a = c(a, a.next);
                      d(N, b, e, g, r, u);
                      d(a, b, e, g, r, u);
                      break a
                    }
                    I = I.next
                  }
                  N = N.next
                } while (N !== a)
              }
            } else d(c(a), b, e, g, r, u, 1);
            break
          }
        }
      }
    }
    function e(a, b) {
      return a.x - b.x
    }
    function g(a, b) {
      var c = b,
        d = a.x,
        e = a.y,
        g = -Infinity,
        h;
      do {
        if (e <= c.y && e >= c.next.y && c.next.y !== c.y) {
          var l = c.x + (e - c.y) * (c.next.x - c.x) / (c.next.y - c.y);
          if (l <= d && l > g) {
            g = l;
            if (l === d) {
              if (e === c.y) return c;
              if (e === c.next.y) return c.next
            }
            h = c.x < c.next.x ? c : c.next
          }
        }
        c = c.next
      } while (c !== b);
      if (!h) return null;
      if (d === g) return h.va;
      for (var l = h, m = h.x, n = h.y, q = Infinity, r, c = h.next; c !== l;) d >= c.x && c.x >= m && d !== c.x && k(e < n ? d : g, e, m, n, e < n ? g : d, e, c.x, c.y) && (r = Math.abs(e - c.y) / (d - c.x), (r < q || r === q && c.x > h.x) && p(c, a) && (h = c, q = r)), c = c.next;
      return h
    }
    function h(a, b, c, d, e) {
      a = 32767 * (a - c) * e;
      b = 32767 * (b - d) * e;
      a = (a | a << 8) & 16711935;
      a = (a | a << 4) & 252645135;
      a = (a | a << 2) & 858993459;
      b = (b | b << 8) & 16711935;
      b = (b | b << 4) & 252645135;
      b = (b | b << 2) & 858993459;
      return (a | a << 1) & 1431655765 | ((b | b << 1) & 1431655765) << 1
    }
    function k(a, b, c, d, e, g, h, k) {
      return 0 <= (e - h) * (b - k) - (a - h) * (g - k) && 0 <= (a - h) * (d - k) - (c - h) * (b - k) && 0 <= (c - h) * (g - k) - (e - h) * (d - k)
    }
    function l(a, b, c) {
      return (b.y - a.y) * (c.x - b.x) - (b.x - a.x) * (c.y - b.y)
    }
    function m(a, b) {
      return a.x === b.x && a.y === b.y
    }
    function n(a, b, c, d) {
      return m(a, b) && m(c, d) || m(a, d) && m(c, b) ? !0 : 0 < l(a, b, c) !== 0 < l(a, b, d) && 0 < l(c, d, a) !== 0 < l(c, d, b)
    }
    function p(a, b) {
      return 0 > l(a.va, a, a.next) ? 0 <= l(a, b, a.next) && 0 <= l(a, a.va, b) : 0 > l(a, b, a.va) || 0 > l(a, a.next, b)
    }
    function q(a, b) {
      var c = new u(a.Pd, a.x, a.y),
        d = new u(b.Pd, b.x, b.y),
        e = a.next,
        g = b.va;
      a.next = b;
      b.va = a;
      c.next = e;
      e.va = c;
      d.next = c;
      c.va = d;
      g.next = d;
      d.va = g;
      return d
    }
    function r(a, b, c, d) {
      a = new u(a, b, c);
      d ? (a.next = d.next, a.va = d, d.next.va = a, d.next = a) : (a.va = a, a.next = a);
      return a
    }
    function s(a) {
      a.next.va = a.va;
      a.va.next = a.next;
      a.Yl && (a.Yl.Ti = a.Ti);
      a.Ti && (a.Ti.Yl = a.Yl)
    }
    function u(a, b, c) {
      this.Pd = a;
      this.x = b;
      this.y = c;
      this.Ti = this.Yl = this.z = this.next = this.va = null;
      this.XY = !1
    }
    a.j_ = {
      LM: function (a, h, k) {
        k = k || 2;
        var l = h && h.length,
          m = l ? h[0] * k : a.length,
          n = b(a, 0, m, k, !0),
          p = [];
        if (!n) return p;
        var r, s, u, F;
        if (l) {
          var B = k,
            l = [],
            D, E, G;
          F = 0;
          for (D = h.length; F < D; F++) {
            E = h[F] * B;
            G = F < D - 1 ? h[F + 1] * B : a.length;
            E = b(a, E, G, B, !1);
            E === E.next && (E.XY = !0);
            var K = G = E;
            do G.x < K.x && (K = G), G = G.next;
            while (G !== E);
            l.push(K)
          }
          l.sort(e);
          for (F = 0; F < l.length; F++) {
            h = l[F];
            B = n;
            if (B = g(h, B)) h = q(B, h), c(h, h.next);
            n = c(n, n.next)
          }
        }
        if (a.length > 80 * k) {
          r = u = a[0];
          s = l = a[1];
          for (B = k; B < m; B += k) F = a[B], h = a[B + 1], F < r && (r = F), h < s && (s = h), F > u && (u = F), h > l && (l = h);
          u = Math.max(u - r, l - s);
          u = 0 !== u ? 1 / u : 0
        }
        d(n, p, k, r, s, u);
        return p
      }
    }
  })(f);
  (function (a) {
    function b(a) {
      var b = a.length;
      2 < b && a[b - 1][0] == a[0][0] && a[b - 1][1] == a[0][1] && a.pop()
    }
    function c(a, b) {
      for (var c = 0; c < b.length; c++) a.push(b[c][0]), a.push(b[c][1])
    }
    a.os = {
      Cf: function (a) {
        for (var b = a.length, c = 0, h = b - 1, k = 0; k < b; h = k++) c += a[h][0] * a[k][1] - a[k][0] * a[h][1];
        return 0.5 * c
      },
      Yca: function (b) {
        return 0 > a.os.Cf(b)
      },
      normalize: function (b) {
        var c;
        if (b) {
          c = [];
          for (var g = 0, h = b.length; g < h; g += 1) c[g] = b[g] instanceof Array ? this.normalize(b[g]) : b[g] instanceof a.V ? [b[g].O, b[g].P] : b[g] instanceof a.G ? [b[g].x, b[g].y] : b[g]
        }
        return c
      },
      tp: function (d, e) {
        e = e || [];
        var g = [],
          h = [];
        b(d);
        c(g, d);
        var k = d.length;
        e.forEach(b);
        for (var l = 0; l < e.length; l++) h.push(k), k += e[l].length, c(g, e[l]);
        return a.j_.LM(g, h)
      }
    }
  })(f);
  var yc = {
    v: "1.4.5",
    Pixel: f.G,
    LngLat: f.V,
    Size: f.Uc,
    Bounds: f.Wd,
    PixelBounds: f.Qe,
    event: w.event,
    Panorama: f.O_,
    PanoramaMarker: f.P_,
    Map: w.Pb,
    View2D: w.eF,
    GroundImage: w.w.KE,
    Marker: w.D.ab,
    ImageMarker: w.D.jja,
    Text: w.D.VN,
    Icon: w.D.Gg,
    MarkerShape: w.D.G_,
    Polyline: w.D.Fb,
    BezierCurve: w.D.iv,
    Polygon: w.D.bc,
    Circle: w.D.Pf,
    CircleMarker: w.D.tN,
    Ellipse: w.D.Fp,
    Rectangle: w.D.Jp,
    ContextMenu: w.D.cl,
    InfoWindow: w.D.fe,
    Buildings: w.w.c_,
    TileLayer: w.w.Wa,
    ImageLayer: w.w.rv,
    CanvasLayer: w.w.d_,
    VideoLayer: w.w.p0,
    VectorLayer: w.w.Gc,
    MassMarks: w.w.H_,
    LayerGroup: w.w.PE,
    OverlayGroup: w.D.el,
    GeoJSON: w.D.AN,
    CANVAS: "canvas",
    DOM: "dom",
    GeometryUtil: f.nv,
    PlaneGeometryUtil: f.Ez
  };
  yc.GeometryUtil.triangulateShape = function (a, b) {
    a = f.os.normalize(a);
    b = f.os.normalize(b);
    return f.os.tp(a, b)
  };
  yc.plugin = yc.service = w.Pb.prototype.plugin;
  yc.TileLayer.Satellite = w.w.Wa.SN;
  yc.TileLayer.RoadNet = w.w.Wa.QN;
  yc.TileLayer.google = w.w.Wa.pv;
  yc.TileLayer.Flexible = w.w.Wa.tz;
  yc.TileLayer.WMS = w.w.Wa.r0;
  yc.TileLayer.WMTS = w.w.Wa.s0;
  yc.TileLayer.Traffic = w.w.Wa.WN;
  yc.Panorama.Events = w.event;
  yc.TileLayer.PanoramaLayer = w.w.Wa.lja;
  yc.UA = {
    ie: f.l.Lo,
    ielt9: f.l.ne,
    ielt11: f.l.Fca,
    mobile: f.l.Z,
    android: f.l.yj,
    ios: f.l.XC
  };
  yc.Browser = {
    ua: navigator.userAgent,
    mobile: f.l.Z,
    plat: f.l.wr,
    mac: f.l.ky,
    windows: f.l.Oia,
    ios: f.l.XC,
    iPad: f.l.xca,
    iPhone: f.l.yca,
    android: f.l.yj,
    android23: f.l.H9,
    chrome: f.l.chrome,
    firefox: f.l.zJ,
    safari: f.l.dM,
    wechat: f.l.SZ,
    uc: f.l.hia,
    qq: f.l.Efa,
    ie: f.l.Lo,
    ie6: f.l.Dh,
    ie7: f.l.cr,
    ie8: f.l.ne && !f.l.cr && !f.l.Dh,
    ie9: f.l.Eca,
    ie10: f.l.OV,
    ie11: f.l.Bca,
    edge: f.l.Xaa,
    ielt9: f.l.ne,
    baidu: f.l.PB,
    isLocalStorage: f.l.Si,
    isGeolocation: !!navigator.geolocation,
    mobileWebkit: f.l.Yda,
    mobileWebkit3d: f.l.RW,
    mobileOpera: !!f.l.Xda,
    retina: f.l.cd,
    touch: !!f.l.Me,
    msPointer: !!f.l.TW,
    pointer: !!f.l.FL,
    webkit: f.l.QZ,
    ie3d: f.l.Cca,
    webkit3d: f.l.RZ,
    gecko3d: f.l.vba,
    opera3d: f.l.Nea,
    any3d: f.l.NB,
    isCanvas: f.l.Ll,
    isSvg: f.l.Ol,
    isVML: f.l.Lo,
    isWorker: !!window.Worker,
    isWebsocket: !!window.WebSocket,
    isWebGL: function () {
      for (var a = document.createElement("canvas"), b = ["webgl", "experimental-webgl", "moz-webgl"], c = null, d = 0; d < b.length; d += 1) {
        try {
          c = a.getContext(b[d])
        } catch (e) { }
        if (c) if (c.drawingBufferWidth !== a.width || c.drawingBufferHeight !== a.height) break;
        else return !0
      }
      return !1
    }
  };
  yc.Util = {
    colorNameToHex: f.a.dC,
    rgbHex2Rgba: f.a.mY,
    argbHex2Rgba: f.a.Vf,
    isEmpty: f.a.Oo,
    deleteItemFromArray: f.a.Dt,
    deleteItemFromArrayByIndex: f.a.zl,
    indexOf: f.a.indexOf,
    format: f.a.Pc,
    isArray: f.a.isArray,
    isDOM: f.a.$C,
    includes: f.a.ga,
    requestIdleCallback: f.a.Ly,
    cancelIdleCallback: f.a.EI,
    requestAnimFrame: f.a.nc,
    cancelAnimFrame: f.a.Sg,
    color2RgbaArray: f.a.cC
  };
  yc.DomUtil = {
    getViewport: f.j.KC,
    getViewportOffset: f.j.cK,
    create: f.j.create,
    setClass: f.j.Iga,
    hasClass: f.j.El,
    addClass: f.j.Ga,
    removeClass: f.j.Ma,
    setOpacity: f.j.un,
    rotate: f.j.rotate,
    setCss: f.j.Ha,
    empty: f.j.Gy,
    remove: f.j.remove,
    TRANSFORM: f.j.rf,
    TRANSITION: f.j.Hz
  };
  var zc = f.A;
  yc.User = {
    key: zc.key
  };
  window.AMap = yc;
  window.AMap.BuryPoint = f.BuryPoint;
  window.AMap.Class = f.ba;
  if (!zc.iy && "undefined" !== typeof arguments && arguments.callee) try {
    if (f.l.Si && window.localStorage) {
      var Ac = window.localStorage["_AMap_" + f.mD];
      Ac && JSON.parse(Ac).version === zc.Jh || window.localStorage.setItem("_AMap_" + f.mD, JSON.stringify({
        version: zc.Jh,
        script: "(" + arguments.callee + ")(config)"
      }));
      //TODO 关闭cookie查询

      //var Bc = new Image;
      //Bc.src = zc.qb + "/maps/cookie?key=amap_ver&value=" + zc.Jh;
      //document.head.appendChild(Bc);
      //Bc.onload = Bc.onerror = Bc.onabort = function() {
      //	document.head.removeChild(Bc)
      //}
    }
  } catch (Cc) { };
  window.AMap.convertFrom = function (a, b, c) {
    f.e.add("AMap", "convertFrom", b);
    var d = f.A.ud + "/v3/assistant/coordinate/convert";
    a = f.a.za(a);
    var e = [];
    if (a instanceof Array) {
      for (var g = 0, h = a.length; g < h; g += 1) e.push(a[g] + "");
      e = e.join(";")
    } else e = a + "";
    b = ["key=" + f.A.key, "s=rsv3", "locations=" + e, "coordsys=" + (b || "gps")];
    d += 0 < b.length ? "?" + b.join("&") : "";
    d = new f.Sa.bb(d, {
      callback: "callback"
    });
    d.g("complete", function (a) {
      if ("1" === a.status) {
        a = a.locations.split(";");
        for (var b = 0; b < a.length; b += 1) {
          var d = a[b].split(",");
          a[b] = new AMap.LngLat(d[0], d[1])
        }
        c && "function" === typeof c && c("complete", {
          info: "ok",
          locations: a
        })
      } else c && "function" === typeof c && c("error", a.info)
    }, this);
    d.g("error", function (a) {
      c && "function" === typeof c && c("error", a.info)
    }, this)
  };
  f.Sa = f.Sa || {};
  f.Sa.YE = f.ba.extend({
    ga: [f.ka],
    B: function (a, b) {
      this.F = {
        callback: "cbk",
        type: "json",
        charset: "utf-8"
      };
      b = b || {};
      f.a.Bb(this, b);
      this.url = a;
      this.send(a, b.dd, b.$$)
    },
    send: function (a) {
      var b = f.j.create("script");
      b.type = "text/javascript";
      b.charset = this.F.charset;
      var c = this;
      f.l.ne ? b.onreadystatechange = function () {
        "loaded" !== this.readyState && "complete" !== this.readyState || c.r("complete")
      } : (b.onload = function () {
        c.r("complete")
      }, b.onerror = function () {
        c.r("error", {
          status: 0,
          info: "service error",
          url: a
        })
      });
      b.src = a;
      document.getElementsByTagName("head")[0].appendChild(b)
    }
  });
  f.Sa.bb = f.Sa.YE.extend({
    s$: function () {
      if (f.a.yY) return f.a.eE.push(this), !0
    },
    rga: function () {
      this.r("error", {
        info: "TIME_OUT_A"
      })
    },
    send: function (a, b, c, d) {
      function e() {
        window[g] = null;
        try {
          window[g] = null
        } catch (a) { }
        h.onerror = null;
        h.parentNode && h.parentNode.removeChild(h)
      }
      if (!this.F.rt || !this.s$()) {
        a = encodeURI(a);
        var g = this.F.fun;
        if (!g || window[g]) g = f.a.$U("jsonp_", 6) + "_";
        var h = document.createElement("script");
        h.type = "text/javascript";
        h.charset = "utf-8";
        h.async = !0;
        var k = this;
        f.l.ne || (h.onerror = function () {
          e();
          k.r("error", {
            info: "REQUEST_FAILED",
            url: a
          })
        });
        window[g] = function (a) {
          e();
          if (k.F.callbackFunction) k.F.callbackFunction.call(k.F.context, a);
          else if (3E4 === a.errcode && a.data) f.a.yY = !0, f.gb.load("AMap.AntiCrabFrame", function () {
            f.a.rt || (f.a.rt = new f.ZZ);
            f.a.eE.push(k);
            f.a.rt.open(k.F.dd, a.data.host, k.AL || "", k.url)
          });
          else {
            if (a instanceof Array || "string" === typeof a) a = {
              data: a
            };
            a.cla = g;
            k.r("complete", a)
          }
        };
        b = "?"; - 1 !== a.indexOf("?") && (b = "&");
        b = a + b + this.F.callback + "=" + g;
        if (-1 !== a.indexOf(f.A.ud + "/v") || -1 !== a.indexOf("yuntuapi.amap.com/datasearch") || -1 !== a.indexOf("webapi.amap.com/")) b = b + "&platform=JS&logversion=2.0" + ("&appname=" + f.A.jo), b += "&csid=" + this.xia(), b += "&sdkversion=" + f.A.lt;
        if (c = this.F.uC) {
          var l = [],
            m;
          for (m in c) c.hasOwnProperty(m) && (l.push(m + "=" + c[m]), b += "&" + m + "=" + encodeURIComponent(c[m]));
          k.AL = l.join("&")
        }
        h.src = d ? b + "&rereq=true" : b;
        f.Sa.bb.hP || (f.Sa.bb.hP = document.getElementsByTagName("head")[0]);
        f.Sa.bb.hP.appendChild(h)
      }
    },
    xia: function () {
      var a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split("");
      return function (b, c) {
        var d = [],
          e;
        c = c || a.length;
        if (b) for (e = 0; e < b; e++) d[e] = a[0 | Math.random() * c];
        else {
          var g;
          d[8] = d[13] = d[18] = d[23] = "-";
          d[14] = "4";
          for (e = 0; 36 > e; e++) d[e] || (g = 0 | 16 * Math.random(), d[e] = a[19 === e ? g & 3 | 8 : g])
        }
        return d.join("")
      }
    }()
  });
  window.AMap.Http = {};
  window.AMap.Http.JSONP = f.Sa.bb;
  f.Sa.XMLHttpRequest = f.Sa.YE.extend({
    send: function (a, b, c) {
      var d = this.Tia = new XMLHttpRequest,
        e = this;
      d.onreadystatechange = function () {
        4 === d.readyState && 200 === d.status ? e.r("complete", {
          url: a,
          data: d.responseText
        }) : 404 === d.status && (d.abort(), e.r("error", {
          url: a,
          data: "404"
        }))
      };
      d.open(b || "GET", a);
      "POST" === b && d.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      d.send(c || void 0)
    },
    abort: function () {
      this.Tia.abort()
    }
  });
  f.pi = f.ba.extend({
    B: function (a, b, c, d) {
      this.start = a;
      this.end = b;
      this.transition = c;
      this.precision = d || 0;
      this.Fr = !1;
      return this
    },
    Xk: function (a) {
      var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : !1;
      this.Sf = +new Date;
      this.frames = 0;
      this.je = a;
      this.startTime = +new Date;
      this.Fr = !0;
      this.qT = f.a.nc(this.update, this, b)
    },
    update: function () {
      this.qT = f.a.nc(this.update, this, !1);
      this.frames += 1;
      var a = +new Date,
        b = a - this.startTime,
        b = this.transition ? this.transition(this.start, this.end, b, this.frames, a - this.Sf) : null;
      "number" === typeof b && Math.abs(b - this.end) < this.precision && (this.stop(), b = this.end);
      this.Sf = a;
      this.kn.call(this.je || this, b)
    },
    stop: function (a) {
      f.a.Sg(this.qT);
      a && this.update();
      this.Fr = !1
    }
  });
  f.pi.Easing = {
    Linear: {
      None: function (a) {
        return a
      }
    },
    Bounce: {
      In: function (a) {
        return 1 - (a < 1 / 2.75 ? 7.5625 * a * a : a < 2 / 2.75 ? 7.5625 * (a -= 1.5 / 2.75) * a + 0.75 : a < 2.5 / 2.75 ? 7.5625 * (a -= 2.25 / 2.75) * a + 0.9375 : 7.5625 * (a -= 2.625 / 2.75) * a + 0.984375)
      },
      Out: function (a) {
        return f.pi.Easing.Bounce.In(1 - a)
      }
    },
    Cubic: {
      In: function (a) {
        return 1 - a * a * a
      },
      Out: function (a) {
        a = 1 - a;
        return 1 - a * a * a
      }
    }
  };
  f.Pb = f.ba.extend({
    ga: [f.ka, f.se, f.gD],
    B: function (a, b) {
      this.J = b;
      this.Lm = b.Lm;
      this.Xj = "";
      this.Ng = this.hg = this.Bi = !1;
      this.Hs = {};
      this.K = a;
      this.P4();
      this.Pca();
      this.X("zooms", b, !0);
      this.X("size", b, !0);
      this.X("limitBounds", b);
      this.X("view", b);
      this.X("nolimg", b, !0);
      this.X("mapNumber", b, !0);
      this.X("lang", b, !0);
      this.X("features", b, !0);
      this.X("styleID", b, !0);
      this.X("forceBig", b, !0);
      this.X("mode", b, !0);
      this.X("showBuildingBlock", b, !0);
      this.X("mapStyle", b);
      var c = this.get("mapStyle");
      this.qd = f.A.qd[c] || f.A.qd["default"];
      this.FB = "#a3ccff";
      this.Mw = b.get("skyColor") || "#cce0ff";
      this.X("editEnable", b);
      this.cc && this.X("style", b, !0);
      this.X("styleUrl", b);
      this.X("hightlight", b, !0);
      this.X("labelzIndex", b, !0);
      f.l.Uy && (this.Ic = new f.w.Lh(new w.w.Wa({
        zIndex: b.get("labelzIndex"),
        visible: !1
      }), this), this.Ic.type = "\u77e2\u91cf\u6807\u6ce8", b.labelsLayer = this.Ic.ia, this.Ic.ia.g("complete", this.um, this, !0), this.Ic.ia.g("renderComplete", this.um, this), this.Ic.jw = this.Ic.ai = !0);
      this.X("isHotspot", b, !0);
      this.X("layers", b);
      this.X("overlays", b);
      this.X("infos", b, !0);
      this.X("contextmenus", b, !0);
      this.X("controls", b);
      this.X("bounds", b);
      this.X("draw", b);
      this.he("zoomAndCenter destroy defaultCursor jogEnable animateEnable baseRender overlayRender gridMapForeign".split(" "), b);
      this.he("rotateEnable pitchEnable dragEnable keyboardEnable doubleClickZoom scrollWheel zoomEnable touchZoom".split(" "), b, !0);
      this.get("jogEnable") ? this.er = !0 : this.er = !1;
      this.l4();
      this.r4();
      this.jQ && this.jQ();
      this.X("resizeEnable", b);
      this.J.map = this;
      c = this.get("size");
      c = c.width * c.height / 65536;
      f.l.cd && 3 < c && (this.xT = !0);
      this.iY()
    },
    editEnableChanged: function () {
      location.hostname.match(/.amap.com/) && (this.cc = this.get("editEnable"))
    },
    labelzIndexChanged: function () {
      this.Ic && this.Ic.set("zIndex", this.get("labelzIndex"))
    },
    styleChanged: function () {
      this.Qj = !0
    },
    mapStyleChanged: function () {
      if (this.J.Wg) {
        this.Xj && (this.set("style", ""), this.lC = this.Xj = "");
        var a = this.get("mapStyle");
        this.Qj = !0;
        this.qd = f.A.qd[a] || f.A.qd["default"];
        this.Fy()
      }
    },
    styleUrlChanged: function () {
      if (this.J.Wg) {
        var a = this.get("styleUrl") || "";
        if (a !== this.Xj) {
          var b = -1 !== a.indexOf("?isPublic=true"),
            a = a.substr(0, 46),
            c = a.split("amap://styles/")[1];
          "normal" === c ? (this.Xj = "", this.set("nolimg", !1), this.set("style", ""), this.lC = "") : (this.kz = !0, this.set("nolimg", !0), b = new f.Sa.bb(32 > c.length ? f.A.Qb + "://webapi.amap.com/style?name=" + c + "&key=" + f.A.key : f.A.Qb + "://webapi.amap.com/v4/map/styles?styleid=" + c + "&s=rsv3&key=" + f.A.key + (b ? "&ispublic=1" : ""), {
            callback: "callback"
          }), b.g("complete", function (a) {
            //TODO	自定义样式代码处
            //						console.log(a.data.content)
            a.data && a.data.content ? this.set("style", JSON.parse(a.data.content)) : this.set("style", "");
            this.kz = !1
          }, this), b.g("error", function () {
            this.kz = !1
          }, this), this.Xj = a, this.Fy())
        }
      }
    },
    zY: function (a) {
      this.K.style.background = a
    },
    resizeEnableChanged: function () { },
    u$: function () {
      var a = this.get("limitBounds"),
        b = this.get("bounds");
      b.Rb.O > b.Kb.O && (b.Kb.O += 360);
      if (!a.contains(b)) {
        var c = this.get("center").Ab();
        a.Bh() < b.Bh() ? c.O = a.Zh().O : (a.Rb.O > b.Rb.O && (c.O += a.Rb.O - b.Rb.O), a.Kb.O < b.Kb.O && (c.O += a.Kb.O - b.Kb.O));
        a.zh() < b.zh() ? c.P = a.Zh().P : (a.Rb.P > b.Rb.P && (c.P += a.Rb.P - b.Rb.P), a.Kb.P < b.Kb.P && (c.P += a.Kb.P - b.Kb.P));
        return c
      }
    },
    BH: function () {
      var a = this.qM;
      this.J.refreshSize();
      var b = this.get("size");
      b && a && !b.rb(a) && (this.qM = b, this.Jr = !0, this.set("display"), this.jY(b), this.get("resizeEnable") && this.ha("resize", {
        nea: a,
        YW: b
      }))
    },
    WR: function () {
      var a = this;
      a.BH();
      a.wH = setTimeout(function () {
        a.WR()
      }, 200)
    },
    T1: function () {
      this.wH && (clearTimeout(this.wH), this.wH = null)
    },
    P4: function () {
      this.qM = this.J.getSize();
      if (f.l.ne || f.l.SZ && f.l.XC || f.l.Rda) this.WR();
      else {
        var a = this;
        f.C.D9(this.K, function (b) {
          a.BH(b)
        })
      }
    },
    Pca: function () {
      var a = this.K;
      f.j.Ga(a, "amap-container");
      var b = {};
      b.Kc = f.j.create("div", a, "amap-maps");
      this.lj = f.j.create("div", a);
      this.lj.style.display = "none";
      b.no = f.j.create("div", b.Kc, "amap-drags");
      b.w = f.j.create("div", b.no, "amap-layers");
      b.D = f.j.create("div", b.no, "amap-overlays");
      b.controls = f.j.create("div", a, "amap-controls");
      b.jy = f.j.create("a", a, "amap-logo");
      var c = window.location.host; - 1 === c.indexOf("amap.com") && -1 === c.indexOf("gaode.com") && (b.jy.href = f.l.Z ? "http://m.amap.com" : "http://gaode.com", b.jy.target = "_blank");
      f.j.create("img", b.jy).src = f.l.cd ? this.J.F.logoUrlRetina : this.J.F.logoUrl;
      b.zj = f.j.create("div", a, "amap-copyright");
      b.zj.style.display = "none";
      350 < f.j.KC(this.K).width && (b.zj.innerHTML = this.J.F.copyright, b.zj.IW = f.j.create("span", b.zj, "amap-mcode"), this.Fy());
      this.Oa = b
    },
    Fy: function () {
      var a = this.get("layers");
      if (a) {
        for (var b = -1, c = "", d = 0; d < a.length; d += 1) {
          var e = a[d].get("mapNumber"),
            g = a[d].getzIndex();
          e && g > b && a[d].get("visible") && (c = e, b = g)
        }
        this.set("mapNumber", c);
        a = this.J.getMapStyle();
        "GS(2018)1709" === c && a && "normal" !== a && "amap://styles/normal" !== a && (c = "", this.Oa.zj.style.visibility = "hidden", this.Oa.jy.style.display = "none");
        c && this.Oa.zj.IW && (this.Oa.zj.IW.innerHTML = "- " + c + "\u53f7", this.Oa.zj.style.visibility = "visible", this.Oa.jy.style.display = "block");
        return c
      }
    },
    uP: function () {
      var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : !1;
      f.l.Si && f.im && (a ? f.im.flush() : (this.HU && clearTimeout(this.HU), this.HU = setTimeout(function () {
        f.a.Ly(function () {
          f.im.flush()
        })
      }, 1E3)))
    },
    um: function () {
      function a() {
        e.J.set("rasterLayer", void 0);
        e.J.gi = e.J.NX = !0;
        e.Mt.RC = !1;
        f.a.Ly(function () {
          e.J && e.J.Tj(g)
        })
      }
      function b() {
        for (var a = e.get("layers"), b = e.get("zoom"), c = 0; c < a.length; c += 1) {
          var d = a[c].get("zooms");
          if (!(a[c].gi || !d || b > d[1] || b < d[0] || !a[c].get("visible") || a[c].w && a[c].w.ta && 0 === a[c].w.ta.length || a[c].w && a[c].w.eL || a[c].w && a[c].w.wa)) return !1
        }
        return e.Ic && e.Ic.get("visible") && 0 < e.Ic.ta.length && !e.Ic.wa && !e.Ic.TA ? !1 : !0
      }
      function c() {
        var a = {
          id: e.J.id
        };
        f.Zd.te.end(f.extend(a, {
          key: "rds"
        }));
        f.Zd.te.send(f.extend(a, {
          params: {
            rs: e.get("baseRender"),
            viewmode: e.J.getViewMode_(),
            fd: 0 === e.fD ? 1 : 0,
            raster: e.J.gi ? 1 : 0
          }
        }));
        e.J && e.J.Kk && e.J.Kk.ZA();
        e.J.HX = 1;
        e.uP(!0);
        e.set("display");
        e.gy = !0
      }
      function d() {
        f.Zd.te.end({
          id: e.J.id,
          key: "rd"
        });
        f.a.nc(function () {
          this.r("complete")
        }, e);
        e.J.wa = !0;
        e.set("display")
      }
      if (!this.YI) if (this.gy) 1 === this.Op && 13 === this.get("zoom") && (f.a.Fx.stop(this.mA), f.Zd.te.send({
        id: this.J.id,
        params: {
          fps: this.mA.Fx,
          type: "fps",
          rs: this.get("baseRender")
        }
      }), this.Op = 2), this.uP();
      else {
        var e = this,
          g = this.J.get("rasterLayer"),
          h = b();
        g ? (g.w && g.w.wa && (this.J.wa || d()), h && (this.J.wa || d(), a(), c())) : h && (this.J.wa || d(), c(), this.J.NX = !0)
      }
    },
    layersChanged: function () {
      this.Ya = this.Ya || [];
      for (var a = this.get("layers"), b = this.Ya.length - 1; 0 <= b; b -= 1) this.Ya[b] === this.ad || this.Ya[b] === this.gp || this.Ya[b].jw || this.Ya[b].ia.jw || -1 !== f.a.indexOf(a, this.Ya[b].ia) || (this.Ya[b].bg(), this.Ya[b].Zi && this.Ya[b].Zi.bg(), this.Ya[b].ia.I("complete", this.um, this), this.Ya[b].ia.I("renderComplete", this.um, this), this.Ya = f.a.zl(this.Ya, b));
      for (var c = !1, d = !0, e = this.get("labelzIndex"), b = 0; b < a.length; b += 1) {
        if (a[b].Fi) - 1 === f.a.indexOf(this.Ya, a[b].w) && this.Ya.push(a[b].w);
        else {
          var g = this.og(a[b]);
          g && (this.Ya.push(g), a[b].Fi = !0, a[b].w = g);
          a[b].g("complete", this.um, this, !0);
          a[b].g("renderComplete", this.um, this)
        }
        a[b].ap && a[b].get("visible") && (c = !0, !1 === a[b].get("detectRetina") && (d = !1), e = a[b].get("textIndex") || e)
      }
      this.Ic && (c || "3D" !== this.J.getViewMode_() ? this.Ic.TA = !1 : (c = f.a.find(a, function (a) {
        if (w.w.Gp && a instanceof w.w.Gp && a.get("visible")) return !0
      }), this.Ic.TA = c = !!c));
      a = f.a.indexOf(this.Ya, this.Ic);
      c && this.J.get("showLabel") ? (-1 === a && this.Ya.push(this.Ic), this.Ic.ja = d && f.l.ja, this.Ic.fx(this.get("mapStyle") || "normal"), this.Ic.set("zIndex", e), this.Ic.set("visible", !0), this.J.Px = !0, this.J.get("isHotspot") ? this.Ic.Gea() : this.Ic.LI()) : (this.Ic && (this.Ic.set("visible", !1), this.J.Px = !1, this.Ic.LI()), this.J.Px = !1);
      this.J.isHotspotChanged();
      this.set("display", 0);
      this.Fy()
    },
    isHotspotChanged: function () {
      this.layersChanged()
    },
    controlsChanged: function () {
      var a = this.get("controls"),
        b, c;
      if (a.add && 0 < a.add.length) for (; 0 < a.add.length;) b = a.add.shift(), (c = b.pq || b.addTo) && c.call(b, this.J, this.Oa.controls);
      else if (a.remove && a.remove.length) for (; 0 < a.remove.length;) b = a.remove.shift(), (c = b.zr || b.removeFrom) && c.call(b, this.J, this.Oa.controls)
    },
    bT: function () {
      if (!this.YI) {
        var a = this;
        this.eT = !1;
        a.ad || (a.ad = new f.w.Gc(new w.w.Gc, a), a.ad.Fe = 36, a.ad.af = 36, a.ad.set("zIndex", 120), a.Ya.push(a.ad), a.ad.xx = !0);
        for (var b = a.get("overlays"), c = [], d = 0; d < a.mc.length; d += 1) - 1 === f.a.indexOf(b, a.mc[d].Oc) && (a.mc[d].Oc instanceof w.D.fe || a.mc[d].Oc instanceof w.D.cl ? a.mc[d].bg() : (a.ad && a.mc[d] instanceof f.D.ab ? (a.ad.Jf = f.a.Dt(a.ad.Jf, a.mc[d].M), a.ad.SX([a.mc[d].M])) : a.gp && a.gp.SX([a.mc[d].M]), a.mc[d].M.ea ? (f.j.remove(a.mc[d].M.ea), a.mc[d].M.ea = null) : a.mc[d].M.Ia && (f.j.remove(a.mc[d].M.Ia.Ye), f.j.remove(a.mc[d].M.Ia.Wb), a.mc[d].M.Ia = null), a.mc[d].Qk && a.mc[d].Qk.stop(), a.mc[d].Oc.Fi = !1, a.mc[d].Oc.Nh.map = null, a.mc[d].Oc.D = null, a.mc[d].Oc = null, a.mc[d].M.Daa(), a.mc[d].M = null, a.mc[d].vp(), a.mc[d].Nh = null, a.mc[d].Uh(), a.mc[d].map = null), c.push(a.mc[d]));
        for (d = 0; d < c.length; d += 1) a.mc = f.a.zl(a.mc, f.a.indexOf(a.mc, c[d]));
        var e = [],
          g = [];
        f.a.Fga(function (b) {
          if (!b.Fi && b.Gf) {
            var c = b.D || a.h$(b);
            c && (a.mc.push(c), c instanceof f.D.fe || c instanceof f.D.cl ? c.qD(a) : c instanceof f.D.ab ? e.push(c.M) : g.push(c.M), b.Fi = !0)
          }
        }, b);
        e.length && a.ad.oq(e);
        g.length && (a.gp || (a.gp = new f.w.Gc(new w.w.Gc, a), a.gp.set("zIndex", 110), a.Ya.push(a.gp)), a.gp.oq(g));
        a.set("display", 0)
      }
    },
    overlaysChanged: function () {
      this.mc = this.mc || [];
      this.mc.length && this.mc.length !== this.get("overlays").length ? this.bT() : this.eT || (f.a.nc(this.bT, this), this.eT = !0)
    },
    contextmenusChanged: function () {
      var a = this.get("contextmenu");
      if (a) {
        var b = this;
        f.gb.load("overlay", function () {
          b.iC = new f.D.cl(a, b);
          b.set("display", 0)
        })
      }
    },
    infosChanged: function () {
      var a = this.get("infos");
      if (a) {
        this.Il = this.Il || {};
        var b, c = this;
        f.gb.load("overlay", function () {
          for (var d in a) a.hasOwnProperty(d) && (b = a[d], c.Il[d] = c.Il[d] || new f.D.fe(b, c))
        })
      }
    },
    h$: function (a) {
      var b = null;
      if (a instanceof w.D.ab) b = new f.D.ab(a, this);
      else if (a instanceof w.D.cl) b = new f.D.cl(a, this);
      else if (a instanceof w.D.fe) b = new f.D.fe(a, this);
      else {
        var c = ["overlay"];
        "d" === this.get("overlayRender") ? (c.push("dvector"), f.l.Ol ? c.push("svg") : c.push("vml")) : c.push("cvector");
        if (!this.Bia && !f.gb.ay(c)) {
          var d = this;
          f.gb.$f(c, function () {
            this.Bia = !0;
            d.overlaysChanged()
          });
          return
        }
        a instanceof w.D.bc ? b = new f.D.bc(a, this) : a instanceof w.D.iv ? b = new f.D.iv(a, this) : a instanceof w.D.Fb ? b = new f.D.Fb(a, this) : a instanceof
          w.D.Pf ? b = new f.D.Pf(a, this) : a instanceof w.D.Fp ? b = new f.D.bc(a, this) : a instanceof w.D.Jp && (b = new f.D.bc(a, this))
      }
      return b
    },
    oka: function () {
      function a() { }
      var b = new f.w.Gc,
        c = [],
        d = new f.V(116.405467, 39.907761);
      new f.style.qf.Gg;
      for (var e = 0; 100 > e; e += 1) for (var g = 0; 100 > g; g += 1) {
        var h = new f.V(d.O + 0.02 * g, d.P + 0.02 * e),
          h = new f.Eg({
            name: "point" + (100 * e + g),
            map: this,
            Y: new f.pa.Qf(this.Jb(h))
          });
        c[100 * e + g] = h;
        h.g("hover", a, h)
      }
      b.oq(c);
      this.Ya.push(b)
    },
    Mb: function () { },
    nka: function (a) {
      var b = new f.w.Gc,
        c = [],
        c = (new f.q_({
          map: this
        })).GD(a);
      b.oq(c);
      this.Ya.push(b);
      this.set("display", 0)
    },
    og: function (a) {
      a = a.og(this);
      if (!a) return null;
      if (a.length && "string" == typeof a[0]) {
        var b = this;
        f.gb.$f(a, function () {
          b.layersChanged()
        })
      } else return a;
      return null
    },
    wla: function () {
      return this.Oa
    },
    Wma: function () {
      this.set("display", 0)
    },
    displayChanged: function (a) {
      this.TS || this.iY(a)
    },
    iY: function (a) {
      if (a) if (f.a.Sg(this.ND), f.l.yj) {
        var b = this;
        setTimeout(function () {
          b.fc()
        }, 0)
      } else this.fc();
      else this.Zr || (this.ND = f.a.nc(this.fc, this), this.Zr = !0)
    },
    fc: function () {
      if (!this.YI) {
        this.r("render");
        this.Zr = !1;
        var a = {};
        if (this.Ya) {
          for (var b = this.J.getViewMode_(), c = [], d = 0, e = this.Ya.length; d < e; d += 1) this.Ya[d].Bp && this.Ya[d].Bp !== b ? this.Ya[d].wa = !0 : (c.push(this.Ya[d]), this.Ya[d].Zi && c.push(this.Ya[d].Zi));
          c.sort(function (a, b) {
            var c = a.get("zIndex"),
              d = b.get("zIndex");
            return c > d ? 1 : c === d ? a.Lz > b.Lz ? 1 : -1 : -1
          });
          a.Ya = c;
          a.size = this.get("size");
          if (a.size.width && a.size.height) {
            b = f.l.ja ? Math.min(window.devicePixelRatio || 1, 2) : 1;
            a.Z9 = 15E5 < a.size.width * a.size.height * b * b;
            a.RC = !!this.J.get("rasterLayer");
            a.Z = f.l.Z;
            a.W = this.J.JC();
            a.S = this.J.view.get("resolution");
            a.Wo = this.get("mapStyle");
            a.Qj = this.Qj;
            a.Hc = this.Ng;
            a.Bl = this.Hs;
            a.Pe = this.Bi;
            a.Hf = this.hg;
            a.IM = this.hg && f.l.Z;
            a.uZ = f.l.Z && this.Bi;
            a.kE = f.l.Z && this.Ng;
            this.kE = a.kE;
            a.ek = a.W.zoom > this.get("targetLevel");
            a.nma = !0;
            a.xT = this.xT;
            for (var b = !1, g, c = !1, d = 0; d < this.Ya.length; d += 1) this.Ya[d].bi && this.Ya[d].get("visible") && a.W.zoom <= this.Ya[d].get("zooms")[1] && (a.VL = !0), this.Ya[d].Wm().cd && (b = !0);
            for (d = 0; d < this.Ya.length; d += 1) this.Ya[d].ia.qI && a.VL && (!this.Bi && this.Ya[d].ia.get("visible") && (g = this.Ya[d].ia.qI(), g.Ola = 1, g.zoom = a.W.zoom), c = !0);
            c ? g && this.Gb !== g && (this.Gb = g) : this.Gb = [];
            a.Gb = this.Gb;
            a.cd = b;
            a.scale = Math.pow(2, a.W.zoom - a.W.ce);
            this.Mt = a;
            if (g = this.DC()) g.fc(a), this.Qj = this.JU = !1
          }
        }
      }
    },
    DC: function () {
      if (!this.T || this.T.type !== this.J.view.type) if (this.T = null, "3D" == this.J.view.type) {
        var a = this;
        f.gb.load("Map3D", function () {
          a.T || (a.T = new f.Ja.Bz(a), a.set("display"))
        })
      } else this.T = new f.Q.canvas.Pb(this);
      return this.T
    },
    Eba: function () {
      var a = [],
        b = this.get("controls").Bc,
        c;
      for (c in b) b[c].Rt && b[c].Rt() && a.push(b[c].Rt());
      return a
    },
    destroyChanged: function () {
      this.YI = 1;
      this.R = {};
      this.Ic && (this.Ic.ia.I("complete", this.um, this), this.Ic.bg(), this.Ya = f.a.zl(this.Ya, f.a.indexOf(this.Ya, this.Ic)));
      this.A8 && clearTimeout(this.A8);
      this.g8();
      this.n5();
      this.gH && this.gH();
      this.h9();
      this.vp();
      this.J = this.J.map = null;
      this.K = this.K.qF = null;
      this.Qd && (this.Qd.stop(), this.Qd = null);
      this.Oe && (this.Oe.stop(), this.Oe = null);
      this.Tc && (this.Tc.stop(), this.Tc = null)
    },
    h9: function () {
      var a = this.K;
      this.T1();
      f.C.I$(a);
      f.j.Gy(a);
      this.lj = null;
      f.j.Ma(a, "amap-container");
      this.Oa = null
    },
    jogEnableChanged: function () {
      this.get("jogEnable") ? this.er = !0 : this.er = !1
    },
    drawChanged: function () {
      var a = this,
        b, c, d = this.get("draw");
      if (d) {
        this.an || (this.an = []);
        b = 0;
        for (c = this.an.length; b < c; b += 1) this.an[b].Ofa();
        f.gb.load("interaction", function () {
          var b = new f.kja({
            type: d,
            w: a.gp
          }, a);
          a.an.push(b);
          a.loaded = !0
        })
      } else if (this.an) for (b = 0, c = this.an.length; b < c; b += 1) this.an[b].Ofa(), this.an[b].Cka(), this.I("click", this.an[b].Ila, this)
    },
    Je: function (a, b, c) {
      return this.J.view.Je(a, b, c)
    },
    jf: function (a, b, c) {
      return this.J.view.jf(a, b, c)
    },
    sV: function (a, b) {
      var c = this.get("size"),
        d = document.createElement("canvas");
      a = a || c.width;
      b = b || c.height;
      d.width = a;
      d.height = b;
      for (var e = -(c.width - a) / 2, c = -(c.height - b) / 2, g = d.getContext("2d"), h = this.Oa.w.childNodes, k = [], l = 0; l < h.length; l += 1) k.push(h[l]);
      k.sort(function (a, b) {
        return a.style.zIndex - b.style.zIndex
      });
      for (l = 0; l < k.length; l += 1) {
        var m = k[l];
        if (f.j.El(m, "amap-layer") || f.j.El(m, "amap-e") || f.j.El(m, "amap-labels")) if ("CANVAS" === m.tagName) {
          var h = c,
            n = e,
            p = parseFloat(m.style.width) || m.width,
            q = parseFloat(m.style.height) || m.height,
            r = 1;
          m.style.transform && (r = parseFloat(m.style.transform.split("(")[1]));
          g.drawImage(m, n, h, p * r, q * r)
        } else if ("DIV" === m.tagName) for (var r = m.childNodes, s = parseFloat(m.style.top) || 0 + c, m = parseFloat(m.style.left) || 0 + e, u = 0; u < r.length; u += 1) {
          var v = r[u];
          if ("CANVAS" === v.tagName || "IMG" === v.tagName) h = parseFloat(v.style.top) || 0, n = parseFloat(v.style.left) || 0, p = parseFloat(v.style.width) || v.width, q = parseFloat(v.style.height) || v.height, g.drawImage(v, n + m, h + s, p, q)
        }
      }
      return d.toDataURL()
    }
  });
  f.Pb.ob({
    l4: function () {
      this.ow = !1;
      f.l.Me && ("3D" === this.J.view.type ? this.j1() : this.h1());
      f.l.Z || this.e1()
    },
    g8: function () {
      f.l.Me && ("3D" === this.J.view.type ? this.t5() : this.s5());
      f.l.Z || this.o5()
    },
    rotateEnableChanged: function () {
      this.TD = this.get("rotateEnable");
      f.l.Me && this.zT && "3D" !== this.J.view.type && (this.TD ? this.zT() : this.mea());
      this.rotation = this.TD ? this.get("rotation") : 0;
      this.set("rotation", this.rotation);
      this.set("display")
    },
    zoomEnableChanged: function () {
      this.get("zoomEnable") ? (f.l.Me && this.uI && "3D" !== this.J.view.type && this.uI(), f.l.Z || this.g1()) : (f.l.Me && this.hL && this.hL(), f.l.Z || this.r5())
    },
    mousewheelChanged: function () { },
    RK: function (a) {
      a && this.Kda(a.kq)
    },
    Kda: function (a) {
      this.ow = a
    },
    Tr: function () {
      this.ow = !1
    },
    vg: function (a, b, c) {
      var d, e = {};
      a || (a = window.event);
      var g = f.C.Gj(a, this.Oa.Kc);
      f.l.Me && ("touchend" !== a.type ? this.R.GQ = g : g = this.R.GQ);
      e.ub = g;
      e.Ad = this.jf(g);
      e.Ad && (e.Ad = e.Ad.toFixed(3));
      e.nf = this.de(e.Ad);
      c || (c = this.ow ? this.ow ? [this.ow] : null : this.j3(e.Ad)) && 0 < c.length && c[0].ao && (d = c[0].ao, e.kq = c[0]);
      d || (d = this);
      e.jd = d;
      e.Bja = a.altKey;
      e.ctrlKey = a.ctrlKey;
      e.button = void 0 === a.button ? 0 : a.button;
      !b && a.preventDefault && a.preventDefault();
      return e
    },
    DG: function (a) {
      return a && a !== this && a !== document
    },
    xH: function () {
      if (this.R.Pm && this.R && this.R.Ff) {
        var a = this.R.Pm.ub.Va(this.R.Ff);
        a.x || a.y ? (this.R.hg = !0, this.R.om || (this.R.Qm.r("dragstart", this.R.Om), this.R.om = !0), this.R.Qm.r("dragging", this.R.Pm), this.R.Ff = this.R.Pm.ub) : this.R.hg = !1
      }
    },
    hha: function (a) {
      for (var b = [], c = 0; c < a.length; c += 1) a[c] && (b = b.concat(a[c]));
      return b
    },
    vr: function (a, b, c) {
      return a && b && (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y) < (c || 10)
    },
    j3: function (a) {
      var b = this.DC();
      if (!b) return null;
      var c, d = this;
      this.Ya.sort(function (a, b) {
        return a.get("zIndex") > b.get("zIndex") ? -1 : 1
      });
      b.Sq(a, this.Ya, function (a) {
        c = a;
        c = d.hha(c)
      }, function () {
        c = []
      });
      return c
    }
  });
  f.Pb.ob({
    r4: function () {
      this.g("moveend", this.bX, this);
      f.l.yj && (f.l.pE || f.l.PB) && this.g("zoomend", this.iN, this);
      this.g("movestart", this.cX, this);
      this.g("zoomstart", this.hX, this);
      this.g("zoomend", this.gX, this);
      this.wF();
      this.Op = 0;
      this.mA = {};
      "undefined" === typeof window.requestAnimationFrame && (this.Op = 2)
    },
    hX: function () {
      2 !== this.Op && 12 === this.get("zoom") && (this.Op = 1, f.a.Fx.start(this.mA));
      this.Bi = !0
    },
    gX: function () {
      1 === this.Op && 13 !== this.get("zoom") && (this.Op = 0, f.a.Fx.cancel(this.mA));
      this.Bi = !1;
      this.set("display")
    },
    CS: function (a, b) {
      this.Hs.left = 0 < a;
      this.Hs.right = 0 > a;
      this.Hs.Yu = 0 < b;
      this.Hs.rC = 0 > b
    },
    gq: function () {
      this.Hs = {}
    },
    n5: function () {
      this.I("moveend", this.bX, this);
      f.l.yj && (f.l.pE || f.l.PB) && this.I("zoomend", this.iN, this);
      this.I("movestart", this.cX, this);
      this.I("zoomstart", this.hX, this);
      this.I("zoomend", this.gX, this);
      this.p5()
    },
    bX: function (a) {
      this.hg = !1;
      this.gq();
      this.jY();
      !a.iW && this.get("limitBounds") ? (a = this.u$()) && !a.rb(this.get("center")) ? this.YD(this.get("zoom"), a, !1, !0) : this.ha("moveend") : this.ha("moveend");
      this.set("display")
    },
    cX: function () {
      this.hg = !0;
      this.gq()
    },
    dragEnableChanged: function () {
      (this.yx = this.get("dragEnable")) ? this.vF() : this.fH()
    },
    ha: function (a, b) {
      var c;
      b && (c = b.YW ? {
        type: a,
        newsize: b.YW,
        oldsize: b.nea
      } : {
          type: a,
          pixel: b.ub,
          target: this.J,
          lnglat: b.nf
        });
      this.J.r(a, c)
    },
    wF: function () {
      this.g("click", this.hR);
      this.g("dblclick", this.lR);
      f.l.Me && this.zO();
      f.l.Z || this.f1()
    },
    p5: function () {
      this.I("click", this.hR);
      this.I("dblclick", this.lR);
      f.l.Me && this.XQ();
      f.l.Z || this.q5()
    },
    $A: function (a, b) {
      var c = this.get("targetLevel") || this.get("zoom"),
        c = 0 < b ? Math.floor(c) + 1 : Math.ceil(c) - 1,
        c = Math.min(Math.max(c, this.get("zooms")[0]), this.get("zooms")[1]);
      c === this.get("zoom") || this.Oe && this.Oe.Fr && c === this.Oe.end || this.hv(c, !1, a)
    },
    hR: function (a) {
      this.ha("click", a)
    },
    lR: function (a) {
      this.get("doubleClickZoom") && this.get("zoomEnable") && this.$A(a.Ad, 1);
      this.ha("dblclick", a)
    },
    aka: function (a) {
      this.$A(a.Cna, a.Dna);
      this.ha("touchend", a)
    },
    vF: function () {
      this.yx && ("3D" === this.J.view.type ? (this.g("dragstart", this.rR), this.g("dragging", this.nR), this.g("dragend", this.pR)) : (this.g("dragstart", this.qR), this.g("dragging", this.mR), this.g("dragend", this.oR)))
    },
    fH: function () {
      this.yx || ("3D" === this.J.view.type ? (this.I("dragstart", this.rR), this.I("dragging", this.nR), this.I("dragend", this.pR)) : (this.I("dragstart", this.qR), this.I("dragging", this.mR), this.I("dragend", this.oR)))
    },
    qR: function (a) {
      this.RK(a);
      this.gq();
      this.Ng = !0;
      this.R.Ht = a.ub.x;
      this.R.zx = a.ub.y;
      this.Qd && (this.Qd.stop(), this.Co(!0));
      this.ha("dragstart");
      this.ha("movestart");
      this.r("movestart", a);
      this.oha()
    },
    mR: function (a) {
      var b = this.R,
        c = a.ub.x - b.Ht,
        d = a.ub.y - b.zx;
      if (d || c) {
        this.R.hg = !0;
        this.CS(c, d);
        b.Ht = a.ub.x;
        b.zx = a.ub.y;
        a = c;
        var b = d,
          e = this.TD ? this.rotation : 0;
        e && (e *= Math.PI / 180, a = c * Math.cos(e) + Math.sin(e) * d, b = -Math.sin(e) * c + Math.cos(e) * d);
        a = this.get("centerCoords").Va((new f.G(a, b)).Sc(this.S));
        (b = this.RT(a)) && (d = Math.round(this.Je(b).Va(this.Je(a)).y));
        this.$o(this.Oa.no, c, d);
        a.x = (a.x + f.a.fb) % f.a.fb;
        this.set("centerCoords", a, !0);
        this.set("center", this.de(a), !0);
        this.er && (this.Sf ? (a = new Date, this.Tp = 100 < a - this.Sf ? new f.G(0, 0) : new f.G(c, d), this.Sf = a) : this.Sf = new Date);
        this.ha("dragging");
        this.ha("mapmove")
      } else this.R.hg = !1, this.Tp = null, this.gq()
    },
    $o: function (a, b, c) {
      if (a && !(1 > Math.abs(b) && 1 > Math.abs(c))) {
        var d = parseFloat(a.style.top) || 0,
          e = parseFloat(a.style.left) || 0,
          g = "";
        this.rotation && (g = f.j.rp[f.j.rf] + ":rotate(" + this.rotation + "deg);overflow:visible;");
        a.style.cssText = "position:absolute;top:" + (d + c) + "px;left:" + (e + b) + "px;" + g
      }
    },
    RT: function (a) {
      var b = this.J.view.eO(),
        c = this.qM.height * this.S / 2;
      return a.y < b.xd + c ? (a.y = b.xd + c, a) : a.y > b.wd - c ? (a.y = b.wd - c, a) : null
    },
    oR: function () {
      this.Tr();
      100 < new Date - this.Sf && (this.Tp = null);
      this.R.Ff = null;
      this.Ng = !1;
      this.gq();
      this.ha("dragend");
      if (this.er && this.Tp) if (this.R.hg) {
        var a = this.Tp,
          b = new f.G(0, 0);
        this.Qd = new f.pi(a, b, function (a, b, e) {
          return 600 <= e ? b : a.Sc(1 - Math.pow(e / 600, 2)).floor()
        }, 1);
        this.Qd.kn = function (a) {
          if (2 > Math.abs(a.x) && 2 > Math.abs(a.y)) this.Qd.stop(), this.r("moveend"), this.Co(), this.Tp = this.Sf = null;
          else {
            var b = a.x,
              e = a.y,
              g = this.TD ? this.rotation : 0;
            g && (g *= Math.PI / 180, b = a.x * Math.cos(g) + Math.sin(g) * a.y, e = -Math.sin(g) * a.x + Math.cos(g) * a.y);
            b = this.get("centerCoords").Va((new f.G(b, e)).Sc(this.S));
            e = this.RT(b);
            g = a.y;
            e && (g = Math.round(this.Je(e).Va(this.Je(b)).y));
            this.$o(this.Oa.no, a.x, g);
            b.x = (b.x + f.a.fb) % f.a.fb;
            this.set("centerCoords", b, !0);
            this.set("center", this.de(b), !0);
            this.ha("mapmove")
          }
        };
        this.Qd.Xk(this)
      } else this.r("moveend"), this.Co(!0), this.Tp = this.Sf = null;
      else this.r("moveend"), this.Co(), this.Tp = this.Sf = null
    },
    oha: function () {
      if (!this.R.refresh) {
        var a = this;
        this.R.refresh = setInterval(function () {
          a.set("display", 0)
        }, f.l.Z ? 400 : 100)
      }
    },
    iN: function () {
      if (f.l.yj && (f.l.pE || f.l.PB)) {
        for (var a = this.Oa.w.childNodes, b = 0; b < a.length; b += 1) {
          var c = a[b];
          c instanceof HTMLCanvasElement && (c.width = 0);
          "amap-e" === c.className && (c.style.height = "0")
        }
        for (b = 0; b < this.Ya.length; b += 1) c = this.Ya[b], "undefined" !== typeof AMap.IndoorMap && c instanceof AMap.IndoorMap && (c.mq && (c.mq.width = 0), c.mt && (c.mt.width = 0))
      }
    },
    Co: function (a) {
      this.R.refresh && (clearInterval(this.R.refresh), this.R.refresh = null);
      a || (this.iN(), this.set("display", 0))
    },
    jY: function (a) {
      this.set("refresh", a)
    }
  });
  f.Pb.ob({
    setZoomSlow: function (a) {
      this.YD(a, null, !this.get("animateEnable"))
    },
    setPanTo: function (a) {
      this.YD(null, a, !this.get("animateEnable"))
    },
    zoomAndCenterChanged: function (a) {
      var b = a[0];
      b < this.get("zooms")[0] && (b = this.get("zooms")[0]);
      b > this.get("zooms")[1] && (b = this.get("zooms")[1]);
      this.YD(b, a[1], a[2] || !this.get("animateEnable"))
    },
    zoomChanged: function () {
      this.S = Math.pow(2, 20 - this.get("zoom"));
      this.r("closeOverlays");
      this.set("display")
    },
    rotationChanged: function (a) {
      this.rotation = this.get("rotateEnable") ? this.get("rotation") : 0;
      this.J.r("rotate", {
        rotation: this.rotation || 0
      });
      !0 !== a && this.set("display", 0)
    },
    pitchChanged: function () {
      this.pitch = this.get("pitchEnable") ? this.get("pitch") : 0;
      this.J.r("pitch", {
        pitch: this.pitch || 0
      });
      this.set("display", 0)
    },
    centerCoordsChanged: function () {
      this.r("closeOverlays");
      this.Gja ? this.set("display", 1) : this.set("display")
    }
  });
  f.YN = f.ba.extend({
    ga: [f.ka, f.se],
    B: function (a, b) {
      this.type = "2D";

      this.map = a;
      this.zg(b, !0);
      this.centerChanged();
      a.he("zoom center centerCoords scale rotation pitch resolution".split(" "), this);
      this.he(["crs", "refresh"], a)
    },
    getResolution: function (a) {
      return this.map.Lm.ZJ(a || this.get("zoom"))
    },
    eO: function () {
      this.lF || this.V$();
      return this.lF
    },
    V$: function () {
      var a;
      if (this.get("center") instanceof f.V) {
        a = new f.Wd(-180, -85, 180, 85);
        var b = this.map.Jb(a.Hj());
        a = this.map.Jb(a.Ho());
        this.lF = {
          pe: b.x,
          xd: b.y,
          Td: a.x,
          wd: a.y
        }
      } else a = this.map.get("limitBounds"), this.lF = {
        pe: a[0],
        xd: a[1],
        Td: a[2],
        wd: a[3]
      }
    },
    JC: function () {
      var a = this.map,
        b = this.get("zoom");
      return {
        zoom: b,
        qh: this.get("center"),
        Aa: this.Hk(),
        eb: this.get("centerCoords"),
        rotation: a.get("rotateEnable") && parseInt(this.get("rotation")) || 0,
        bf: a.get("crs"),
        S: Math.pow(2, 20 - b),
        ce: Math.round(b),
        Ze: Math.pow(2, 20 - Math.round(this.get("zoom")))
      }
    },
    centerChanged: function () {
      this.set("centerCoords", this.map.Jb(this.get("center")).toFixed(3), !0)
    },
    centerCoordsChanged: function () {
      var a = this.map,
        b = this.eO(),
        c = this.get("centerCoords"),
        d = a.getSize(),
        e = this.get("zoom", null, !0),
        a = this.get("center", null, !0),
        d = d.height * Math.pow(2, 20 - e) / 2;
      a instanceof f.V ? c.x = (c.x + 268435456) % 268435456 : 0 > c.x ? c.x = 0 : c.x > b.Td && (c.x = b.Td);
      c.y < b.xd + d ? c.y = b.xd + d : c.y > b.wd - d && (c.y = b.wd - d);
      this.set("center", this.map.de(c), !0)
    }
  });
  f.eF = f.YN.extend({
    Hk: function () {
      var a = this.map.get("size"),
        b = this.get("centerCoords"),
        c = (this.map.get("rotateEnable") && parseInt(this.get("rotation"))) % 360 || 0,
        d = this.get("zoom", null, !0),
        e = Math.pow(2, 20 - d),
        c = Math.PI * c / 180,
        a = new f.G((Math.abs(a.width * Math.cos(c)) + Math.abs(a.height * Math.sin(c))) / 2, (Math.abs(a.width * Math.sin(c)) + Math.abs(a.height * Math.cos(c))) / 2),
        e = new f.Qe(b.Va(a.Sc(e)), b.add(a.Sc(e))),
        c = this.map.get("targetLevel");
      if (c > d - 1) {
        var g = Math.pow(2, 20 - c);
        e.EE = new f.Qe(b.Va(a.Sc(g)), b.add(a.Sc(g)))
      }
      e.fZ = c || d;
      e.Ub = a;
      return e
    },
    xba: function (a) {
      var b = this.map.get("size"),
        c = this.get("centerCoords"),
        d = (this.map.get("rotateEnable") && parseInt(this.get("rotation"))) % 360 || 0,
        d = Math.PI * d / 180,
        b = new f.G((Math.abs(b.width * Math.cos(d)) + Math.abs(b.height * Math.sin(d))) / 2, (Math.abs(b.width * Math.sin(d)) + Math.abs(b.height * Math.cos(d))) / 2);
      a = Math.pow(2, 20 - a);
      return new f.Qe(c.Va(b.Sc(a)), c.add(b.Sc(a)))
    },
    Qc: function () {
      var a = this.Hk(),
        b = a.nd.x,
        c = a.Nb.y,
        a = new f.G(a.Nb.x, a.nd.y),
        b = new f.G(b, c);
      return new f.Wd(this.map.de(a), this.map.de(b))
    },
    zoomChanged: function () { },
    Je: function (a, b) {
      this.map.get("size");
      var c = a.Ab(),
        d = this.get("centerCoords"),
        e = c.Va(d);
      e.x < -f.a.fb / 2 ? e.x += f.a.fb : e.x > f.a.fb / 2 && (e.x -= f.a.fb);
      var c = this.map.get("size").Tu().vc(2),
        g = (this.map.get("rotateEnable") ? this.get("rotation") : 0) * Math.PI / 180,
        d = e.x * Math.cos(g) - Math.sin(g) * e.y,
        e = Math.sin(g) * e.x + Math.cos(g) * e.y;
      return c.add((new f.G(d, e)).Sc(Math.pow(2, (b || this.get("zoom")) - 20)))
    },
    jf: function (a, b) {
      var c = this.map.get("size").Tu().vc(2),
        d = a.Va(c),
        e = (this.map.get("rotateEnable") ? this.get("rotation") : 0) * Math.PI / 180,
        c = d.x * Math.cos(e) + Math.sin(e) * d.y,
        d = -Math.sin(e) * d.x + Math.cos(e) * d.y,
        c = this.get("centerCoords").add((new f.G(c, d)).Sc(Math.pow(2, 20 - (b || this.get("zoom")))));
      c.x = (c.x + 268435456) % 268435456;
      return c
    }
  });
  f.q0 = f.YN.extend({
    B: function (a, b) {
      this.Zg = new f.ge;
      this.yd = new f.ge([1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1]);
      arguments.callee.oa.apply(this, arguments);
      this.scale = 1;
      this.type = "3D";
      this.qw = !0;
      this.UK = f.a.bind(this.UK, this)
    },
    refreshChanged: function () {
      this.Vr()
    },
    zoomChanged: function () {
      this.Vr()
    },
    centerChanged: function () {
      arguments.callee.oa.apply(this, arguments);
      this.Vr()
    },
    centerCoordsChanged: function () {
      arguments.callee.oa.apply(this, arguments);
      this.Vr()
    },
    rotationChanged: function () {
      this.Vr()
    },
    pitchChanged: function (a) {
      this.Nh.pitch = Math.min(this.map.get("maxPitch"), Math.max(a, 0));
      this.Vr()
    },
    Vr: function () {
      this.tia() || (this.bN(), this.Eaa())
    },
    Eaa: function () {
      f.a.Jj();
      this.qw = !1;
      this.VG && clearTimeout(this.VG);
      this.VG = setTimeout(this.UK, 150)
    },
    UK: function () {
      this.VG = null;
      this.qw = !0
    },
    Pla: function () {
      return this.qw
    },
    bN: function () {
      var a = this.get("centerCoords"),
        b = this.get("pitch"),
        c = this.get("rotation");
      this.map.get("rotateEnable") || (c = 0);
      this.map.get("pitchEnable") || (b = 0);
      a = (new f.ge).IY(-a.x + f.a.Wc.x, -a.y + f.a.Wc.y, 0);
      b = (new f.ge).Ju(180 - b, 1, 0, 0);
      this.ofa = (new f.ge).set(b);
      c = (new f.ge).Ju(c, 0, 0, 1);
      this.kp = (new f.ge).set(c);
      this.sba = a.Nj();
      this.yd = (new f.ge).IY(0, 0, -this.ul).multiply(b.multiply(c.multiply(a))).toFixed(8);
      this.yd.oe = this.yd.Nj()
    },
    tia: function (a) {
      a = a || this.get("zoom");
      var b = this.map.get("size"),
        c = b.width,
        b = b.height;
      if (!c || !b) return !0;
      this.OB = c /= b;
      b = b / 2 * Math.pow(2, 20 - a);
      a = f.a.Pc((56 - a) * Math.PI / 180, 2);
      var d = f.a.Pc(b / Math.tan(a / 2), 0);
      2400 > d && (d = 2400, a = 2 * Math.atan(b / d));
      this.ul = d;
      this.ry = this.ul / 10;
      this.yJ = 50 * this.ul;
      this.raa = (this.ul - this.ry) / (this.yJ - this.ry);
      this.Zg.Vga(a, c, this.ry, this.yJ);
      this.Zg.oe = this.Zg.Nj();
      a = this.Zg;
      var c = new f.zN,
        b = c.xy,
        e = this.Zg.elements,
        d = e[0],
        g = e[1],
        h = e[2],
        k = e[3],
        l = e[4],
        m = e[5],
        n = e[6],
        p = e[7],
        q = e[8],
        r = e[9],
        s = e[10],
        u = e[11],
        v = e[12],
        x = e[13],
        t = e[14],
        e = e[15];
      wc(b[0], k - d, p - l, u - q, e - v).normalize();
      wc(b[1], k + d, p + l, u + q, e + v).normalize();
      wc(b[2], k + g, p + m, u + r, e + x).normalize();
      wc(b[3], k - g, p - m, u - r, e - x).normalize();
      wc(b[4], k - h, p - n, u - s, e - t).normalize();
      wc(b[5], k + h, p + n, u + s, e + t).normalize();
      a.KU = c
    },
    JC: function () {
      var a = this.map,
        b = this.get("zoom");

      a.map.Jr && this.Vr();
      return {
        zoom: b,
        OB: this.OB,
        top: this.top,
        qh: this.get("center"),
        Aa: this.Hk(),
        eb: this.get("centerCoords"),
        rotation: a.get("rotateEnable") && parseInt(this.get("rotation")) || 0,
        pitch: a.get("rotateEnable") && this.get("pitch") || 0,
        foa: this.get("yaw"),
        bf: a.get("crs"),
        S: Math.pow(2, 20 - b),
        ce: Math.round(b),
        Ze: Math.pow(2, 20 - Math.round(this.get("zoom"))),
        Zg: this.Zg,
        yd: this.yd
      }
    },
    Hk: function () {
      var a = this.map.get("size"),
        b = a.width,
        a = a.height;
      if (!b || !a) return null;
      var c, d;
      d = 0;
      c = this.jf(new f.G(0, d), !0);
      if (55 < this.Nh.pitch || !c) for (; !c;) d += b / 96, c = this.jf(new f.G(0, d), !0);
      this.top = d / a;
      d = this.jf(new f.G(b, d), !0);
      var e = 0,
        g = this.Nh.zoom;
      50 <= this.Nh.pitch && 18 <= g && (e = 0);
      g = this.jf(new f.G(b, a + e), !0);
      e = this.jf(new f.G(0, a + e), !0);
      c = [c.Zj(), d.Zj(), g.Zj(), e.Zj(), c.Zj()];
      c = new f.pN(c);
      c.DI = this.jf(new f.G(b / 2, a + 256), !0);
      return c
    },
    Qc: function () {
      var a = this.Hk();
      if (a) {
        for (var b = [], c = 0; c < a.path.length; c += 1) {
          var d = this.map.de(new f.G(a.path[c][0], a.path[c][1]));
          b.push(d)
        }
        return new f.pN(b)
      }
    },
    Je: function (a, b, c) {
      a.z = c || 0;
      a = this.UW([a]);
      a = a[0];
      return new f.G(a.x, a.y)
    },
    VU: function (a) {
      var b = this.map.get("size");
      a = new f.fj([a.x / b.width * 2 - 1, 1 - a.y / b.height * 2, -1, 1]);
      a.multiply(this.ry);
      return this.Zg.oe.If(a)
    },
    jf: function (a, b, c) {
      var d = this.map.get("size"),
        e = a.x / d.width * 2 - 1,
        d = 1 - a.y / d.height * 2;
      a = new f.fj([e, d, -1, 1]);
      a.multiply(this.ry);
      if (!this.Zg.oe) return null;
      a = this.Zg.oe.If(a);
      e = new f.fj([e, d, 1, 1]);
      e.multiply(this.yJ);
      var d = this.Zg.oe.If(e),
        g = this.yd.oe,
        e = g.If(a).elements;
      a = g.If(d).elements;
      c = (e[2] - (-c || 0)) / (e[2] - a[2]);
      if (0 > a[2] || 0 > c || b && c > 2.5 * this.raa) return null;
      b = e[0] - c * (e[0] - a[0]);
      c = e[1] - c * (e[1] - a[1]);
      return isNaN(b) || isNaN(c) ? null : (new f.G(b, c)).add(f.a.Wc)
    },
    UW: function (a) {
      for (var b = this.get("center"), c = this.map, d = f.a.Wc.x, e = f.a.Wc.y, g = this.map.get("size"), h = [], k = new f.fj([0, 0, 0, 1]), l = k.elements, m = new f.G(0, 0), n = 0, p = a.length; n < p; n++) {
        m.x = a[n].x;
        m.y = a[n].y;
        m.z = -a[n].z || 0;
        var q = c.de(m); - 180 > b.O - q.O ? m.x -= 268435456 : 180 < b.O - q.O && (m.x += 268435456);
        l[0] = m.x - d;
        l[1] = m.y - e;
        l[2] = m.z;
        l[3] = 1;
        q = this.Zg.If(this.yd.If(k));
        q.multiply(1 / q.elements[3]);
        h.push({
          x: (q.elements[0] + 1) / 2 * g.width,
          y: (-q.elements[1] + 1) / 2 * g.height,
          z: q.elements[2]
        })
      }
      return h
    },
    Qia: function (a) {
      var b = this.map.get("size");
      a = this.Zg.If(this.yd.If((new f.fj).copy(a)));
      a.multiply(1 / a.elements[3]);
      b = new f.G((a.elements[0] + 1) / 2 * b.width, (-a.elements[1] + 1) / 2 * b.height);
      b.z = a.elements[2];
      return b
    }
  });
  f.a.Wc = new f.G(215440491, 106744817);
  f.Pb.ob({
    OT: function (a, b, c) {
      var d = this;
      d.zE ? (f.a.EI(d.zE), d.zE = null) : (d.ha("zoomstart", {
        zoom: a
      }), d.r("zoomstart"));
      d.zE = f.a.Ly(function () {
        d.zE = null;
        d.ha("zoomend", {
          zoom: a
        });
        d.ha("zoomchange", {
          zoom: a
        });
        d.r("zoomend")
      }, {
        timeout: 150
      });
      a = f.a.Pc(a, 2);
      d.hv(a, !0, b, c)
    },
    hv: function (a, b, c, d) {
      function e(b) {
        b = f.a.Pc(b, 2);
        var c = this.jf(k);
        this.set("zoom", b);
        var d = this.jf(k),
          c = d && d ? d.Va(c) : new f.G(0, 0);
        this.set("centerCoords", this.get("centerCoords").Va(c).toFixed(3));
        c.x && c.y && this.ha("mapmove");
        b === a && Math.floor(a) === a && (this.set("targetLevel", null), g && (this.ha("zoomchange"), this.ha("zoomend")), h && this.r("moveend"), this.r("zoomend"), this.Oe = null)
      }
      "3D" !== this.J.view.type && (f.l.Z || f.l.ne) && (b = !0);
      a = a || this.get("zoom");
      a = Math.min(Math.max(a, this.get("zooms")[0]), this.get("zooms")[1]);
      var g = a !== this.get("zoom"),
        h = !!c;
      this.Qd && (this.Qd.stop(), this.Qd = null);
      c = c || this.get("centerCoords");
      var k = this.Je(c),
        l;
      this.Tc && this.Tc.Fr && (this.Tc.stop(), this.Tc.mK && (d = !0), this.Tc.Ox && (l = !0), this.Tc = null, this.set("targetLevel", null));
      this.Oe && this.Oe.Fr && (this.Oe.stop(), d = !0, this.Oe.Ox && (l = !0), this.Oe = null, this.set("targetLevel", null));
      g && !d && this.ha("zoomstart");
      h && !l && this.ha("movestart");
      this.r("zoomstart");
      b ? e.call(this, a) : (this.Oe = new f.pi(this.get("zoom"), a, null, 0.02), this.Oe.mK = g, this.Oe.Ox = h, this.Oe.transition = function (a, b, c) {
        return c >= f.A.MB ? b : (b - a) * (1 - Math.pow(1 - c / f.A.MB, 4)) + a
      }, this.Oe.kn = e, this.Oe.Xk(this, !0), this.set("targetLevel", a))
    },
    YD: function (a, b, c, d) {
      var e = null;
      a || (a = this.Tc ? this.Tc.xha : this.get("targetLevel") || this.get("zoom"));
      var e = b ? this.Jb(b).toFixed(3) : this.Tc ? this.Tc.eZ : this.get("centerCoords"),
        g = a !== this.get("zoom"),
        h = !e.rb(this.get("centerCoords")),
        k = b = !1;
      this.Oe && this.Oe.Fr && (this.Oe.stop(), b = !0, this.Oe.Ox && (k = !0), this.Oe = null, this.set("targetLevel", null));
      this.Tc && this.Tc.Fr && (this.Tc.stop(), this.Tc.mK && (b = !0), this.Tc.Ox && (k = !0), this.Tc = null, this.set("targetLevel", null));
      this.Qd && (this.Qd.stop(), this.Qd = null);
      if (g || h) {
        if (!this.J.view.Hk().contains(e) || g && "3D" !== this.J.view.type && (f.l.Z || f.l.ne)) c = !0;
        if (c) g && (b || (this.r("zoomstart"), this.ha("zoomstart")), this.set("zoom", a), this.ha("zoomchange"), this.ha("zoomend"), this.r("zoomend")), h && (k || d || (this.ha("movestart"), this.r("movestart")), this.set("centerCoords", e), this.ha("mapmove"), this.r("moveend", {
          iW: d
        })), this.set("targetLevel", null);
        else {
          this.set("targetLevel", a);
          var l = a - this.get("zoom"),
            m = e.Va(this.get("centerCoords")).toFixed(3);
          this.Tc = new f.pi(1, 0, null, 0.001);
          this.Tc.mK = g;
          this.Tc.Ox = h;
          this.Tc.eZ = e;
          this.Tc.xha = a;
          this.Tc.transition = function (a, b, c) {
            return Math.pow(1 - Math.min(f.A.MB, c) / f.A.MB, 2)
          };
          this.Tc.kn = function (b) {
            0.02 > b ? (this.Tc && (this.Tc.stop(), this.Tc = null), g && (this.set("zoom", a), this.ha("zoomchange"), this.ha("zoomend"), g = !1, this.r("zoomend")), h && (this.set("centerCoords", e), this.r("mapmove"), this.r("moveend", {
              iW: d
            })), this.set("targetLevel", null)) : (g && this.set("zoom", a - l * b), h && (b = e.Va(m.Sc(b)).toFixed(3), this.set("centerCoords", b), this.ha("mapmove")));
            this.set("display", 1)
          };
          this.Tc.Xk(this);
          g && !b && (this.r("zoomstart"), this.ha("zoomstart"));
          !h || k || d || (this.r("movestart"), this.ha("movestart"))
        }
      }
    }
  });
  f.w = {};
  f.w.oc = f.ba.extend({
    ga: [f.ka, f.se],
    B: function (a, b) {
      this.ia = a;
      this.ed = [3, 18];
      this.Lz = f.a.Lb(this);
      a && this.he(["opacity", "visible", "zIndex", "zooms"], a);
      a.Bp = b.J.getViewMode_();
      this.h = b;
      this.X("display", b)
    },
    bg: function () {
      this.bi && this.LI();
      if (f.Ba && f.Ba.zp && f.Ba.zp.length) {
        var a = f.a.indexOf(f.Ba.zp, this); - 1 !== a && (f.Ba.zp = f.a.zl(f.Ba.zp, a))
      }
      if (a = this.xb) {
        if (a.length) for (var b = 0; b < a.length; b += 1) a[b].parentNode && a[b].parentNode.removeChild(a[b]);
        else a.parentNode && a.parentNode.removeChild(a);
        this.xb = null
      }
      this.ia.bg && this.ia.bg();
      this.ia.Fi = !1;
      this.ia.w = null;
      this.vp();
      this.Q && (this.Q.Et(), this.Q = null);
      this.$l && (this.$l.Et(), this.$l = null)
    },
    ha: function (a, b) {
      this.ia.r(a, b)
    },
    visibleChanged: function () {
      this.set("display", 0)
    },
    zIndexChanged: function () {
      this.set("display", 0)
    },
    kM: function (a) {
      f.j.un(a, this.opacity)
    },
    opacityChanged: function () {
      var a = this.get("opacity");
      this.opacity = Math.min(Math.max(0, a), 1);
      if (a = this.xb) if (a.length) for (var b = 0; b < a.length; b += 1) this.kM(a[b]);
      else this.kM(a)
    },
    KJ: function () {
      var a = this.get("bounds");
      if (a) {
        if (a instanceof f.Wd) {
          var b = a.Hj(),
            a = a.Ho(),
            c = this.h.Jb(new f.V(180, 0)).x,
            d = this.h.Jb(b),
            e = this.h.Jb(a),
            g = this.h.get("center");
          b.O > a.O && (0 < g.O ? e.x += c : d.x -= c);
          this.H = [d.x, d.y, e.x, e.y]
        } else a instanceof f.Qe ? this.H = [a.Nb.x, a.Nb.y, a.nd.x, a.nd.y] : a instanceof f.Kz && "3D" === this.ia.Bp && (b = a.path[1], d = this.h.Jb(a.path[0]), e = this.h.Jb(b), this.H = [d.x, d.y, e.x, e.y, a.xY, a.height]);
        return this.H
      }
      return null
    }
  });
  var Dc = function () {
    function a(a) {
      this.gF[f.a.Lb(a)] = a;
      return this
    }
    function b(a) {
      this.gF[f.a.Lb(a)] = null;
      return this
    }
    return function () {
      function c() {
        var a = c.gF,
          b, g = [],
          h;
        for (h in a) Object.prototype.hasOwnProperty.call(a, h) && g.push(a[h]);
        for (a = g.length - 1; 0 <= a; a -= 1) h = g[a].apply(this, arguments), void 0 !== h && (b = h);
        return b
      }
      c.gF = {};
      c.lT = a;
      c.Uma = b;
      return c
    }
  }();
  f.ff = f.ba.extend({
    ga: [f.ka],
    B: function (a, b) {
      this.ml = a | 0;
      this.Oz = !!b;
      this.count = 0;
      this.kL = Dc();
      this.clear();
      this.IA = []
    },
    Oo: function () {
      return !this.count
    },
    Nla: function () {
      return this.count >= this.ml
    },
    tna: function (a) {
      this.ml !== a && (this.ml = a | 0) && this.WS(this.ml)
    },
    Bc: function (a) {
      return !!this.h[a]
    },
    get: function (a, b) {
      var c = this.rP(a);
      return c ? c.value : b
    },
    set: function (a, b) {
      var c = this.rP(a);
      c ? c.value = b : (c = new f.ff.Hp(a, b), this.h[a] = c, this.mQ(c), this.count += 1)
    },
    Bn: function (a) {
      this.remove(a)
    },
    remove: function (a) {
      return Object.prototype.hasOwnProperty.call(this.h, a) ? (this.Ew(this.h[a]), !0) : !1
    },
    forEach: function (a, b) {
      for (var c = this.rc.next; c !== this.rc; c = c.next) a.call(b, c.value, c.key, this)
    },
    AD: function (a, b) {
      return Object.prototype.hasOwnProperty.call(this.h, a) ? this.h[a].value : b
    },
    Bma: function () {
      return this.rc.next.value
    },
    Cma: function () {
      return this.rc.va.value
    },
    shift: function () {
      return this.XR(this.rc.next)
    },
    UT: function () {
      this.IA.length = 0
    },
    GW: function (a) {
      this.IA.push(a)
    },
    push: function (a) {
      a = new f.ff.Hp("", a);
      0 === this.count ? (this.rc.va = null, a.va = this.rc, this.rc.next = a) : (this.Sw.next = a, a.va = this.Sw);
      this.count += 1;
      this.Sw = a
    },
    iia: function (a) {
      a = new f.ff.Hp("", a);
      0 === this.count ? (this.rc.va = null, a.va = this.rc, this.Sw = this.rc.next = a) : (this.rc.next.va = a, a.next = this.rc.next, a.va = this.rc, this.rc.next = a);
      this.count += 1
    },
    gea: function () {
      if (this.count) {
        this.count -= 1;
        var a = this.rc.next;
        a.next ? (a.next.va = this.rc, this.rc.next = a.next) : (this.rc.next = null, this.Sw = this.rc.va = null);
        a.next = null;
        a.va = null;
        return a.value
      }
      return null
    },
    pop: function () {
      return this.XR(this.rc.va)
    },
    rP: function (a) {
      if (Object.prototype.hasOwnProperty.call(this.h, a)) return a = this.h[a], this.Oz && (a.remove(), this.mQ(a)), a
    },
    mQ: function (a) {
      this.Oz ? (a.next = this.rc.next, a.va = this.rc, this.rc.next = a, a.next.va = a) : (a.va = this.rc.va, a.next = this.rc, this.rc.va = a, a.va.next = a);
      this.ml && this.F8(this.ml)
    },
    F8: function () {
      var a = this;
      a.Vw || (a.Vw = setTimeout(function () {
        a.Vw = null;
        a.WS(a.ml)
      }, 0))
    },
    WS: function (a) {
      this.Vw && (clearTimeout(this.Vw), this.Vw = null);
      if (!(this.count < a)) {
        for (var b = this.Oz ? this.rc.va : this.rc.next, c = {}, d = 0, e = this.IA.length; d < e; d++) c[this.IA[d]] = !0;
        for (; b && this.count > a && (d = this.Oz ? b.va : b.next, b.key && !c[b.key] && (this.Ew(b), this.kL(b.value)), b = d, b !== this.rc && b !== this.Sw););
      }
    },
    Ew: function (a) {
      a.remove();
      delete this.h[a.key];
      this.count -= 1
    },
    XR: function (a) {
      this.rc !== a && this.Ew(a);
      return a.value
    },
    clear: function () {
      this.h = {};
      this.rc = new f.ff.Hp("", null);
      this.rc.va = this.rc.next = this.rc;
      this.count = 0
    }
  });
  f.ff.Hp = function (a, b) {
    this.key = a;
    this.value = b
  };
  f.ff.Hp.prototype.va = null;
  f.ff.Hp.prototype.next = null;
  f.ff.Hp.prototype.remove = function () {
    this.va.next = this.next;
    this.next.va = this.va;
    this.next = this.va = null
  };

  function Ec(a, b, c) {
    this.url = a;
    this.yc = b;
    this.FJ = c;
    this.Dk = this.OD = !1
  }
  function Fc(a, b, c) {
    var d = Gc;
    return function () {
      return d.call(this, a, b, c)
    }
  }
  function Gc(a, b, c) {
    a.$ka = +new Date;
    a.loaded = b;
    clearTimeout(a.Gha);
    var d = a.Gda;
    d.Uk.remove(a.url) && d.M4();
    d = a.fda ? a.ta : a.qa;
    a.ta = null;
    (c || b || a.FJ) && a.yc(b ? d : null, a);
    a.oW ? (a.oW.Uh(), a.oW = null) : d && (d.onload = null, d.onerror = null, d.onabort = null, a.qa = null)
  }
  f.vz = f.ba.extend({
    Dja: "assets/image/blank.gif",
    B: function (a, b, c) {
      this.timeout = b || 15E3;
      this.qn = new f.ff(1024);
      this.Uk = new f.ff(1024);
      this.$T = a;
      this.tJ = c
    },
    EF: function (a) {
      a && this.Uk.count >= this.$T && (a = this.Uk.rc.va.value, a.Dk && (this.Uk.remove(a.url), this.lO(a)));
      for (; this.qn.count && !(this.Uk.count >= this.$T);) this.A2(this.qn.shift())
    },
    M4: function () {
      if (!this.OO) {
        this.OO = !0;
        var a = this;
        setTimeout(function () {
          a.OO = !1;
          a.EF()
        }, 0)
      }
    },
    A2: function (a) {
      var b = document.createElement("img");
      a.uba && (b.crossOrigin = "anonymous");
      b.src = a.url;
      a.qa = b;
      a.Gda = this;
      a.startTime = +new Date;
      a.OD = !0;
      b.complete ? Gc(a, !0) : (this.Uk.set(a.url, a), b.onload = Fc(a, !0), b.onerror = Fc(a, !1, !0), b.onabort = Fc(a, !1), a.Gha = setTimeout(Fc(a, !1, !0), this.timeout))
    },
    lO: function (a) {
      a.OD && (Gc(a, !1), a.Dk = !0, a.mka = !0)
    },
    bma: function (a, b, c) {
      return this.eD(a.url, b, c, !0, a.ma.z + "_" + a.ma.x + "_" + a.ma.y)
    },
    eD: function (a, b, c, d, e) {
      var g = this.Uk.get(a);
      if (g && g.Dk) g.Dk = !1, g.yc = b, g.FJ = c;
      else {
        g = new Ec(a, b, c);
        g.fda = d;
        g.key = e;
        if (this.qn.get(f.a.Lb(g))) return;
        this.qn.set(f.a.Lb(g), g);
        this.EF(!0)
      }
      return g
    },
    Ada: function (a, b, c) {
      var d = this.Uk.get(a);
      if (d && d.Dk) d.Dk = !1, d.yc = b, d.FJ = c;
      else {
        d = new Ec(a, b, c);
        d.uba = !0;
        if (this.qn.get(f.a.Lb(d))) return;
        this.qn.set(f.a.Lb(d), d);
        this.EF(!0)
      }
      return d
    },
    NT: function (a) {
      a.Dk || (a.Dk = !0, this.qn.remove(f.a.Lb(a)))
    },
    clear: function (a) {
      this.qn.forEach(function (a) {
        a.Dk = !0
      });
      this.qn.clear();
      if (a) for (; 0 < this.Uk.length;) a = this.Uk.pop(), this.lO(a);
      else this.Uk.forEach(function (a) {
        a.Dk = !0
      })
    }
  });

  function Hc(a, b, c) {
    this.z = a;
    this.x = b;
    this.y = c
  }
  Hc.prototype.Ab = function () {
    return new Hc(this.z, this.x, this.y)
  };
  Hc.prototype.toString = function () {
    return [this.z, this.x, this.y].join("/")
  };
  f.Wa = function (a) {
    var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : !1;
    this.ma = a;
    this.key = a.toString();
    this.tg = b
  };
  f.hk = Hc;
  f.w.Wa = f.w.oc.extend({
    B: function (a, b, c, d, e) {
      arguments.callee.oa.apply(this, arguments);
      this.X("tileSize", a);
      this.X("tiles", a);
      this.he(["zooms", "type", "detectRetina", "errorUrl"], a);
      this.X("lang", b, !0);
      this.X("mapStyle", b, !0);
      this.X("style", b, !0);
      this.X("features", b, !0);
      var g = "overlayer" === a.get("type") || !1 === a.get("blend");
      this.ij = !g && !f.l.Z;
      if (f.l.ne || f.l.coa) this.ij = !1;
      var h = b.get("size"),
        h = h.width * h.height / 65536;
      this.ja = f.l.Z && f.l.ja && this.get("detectRetina");
      f.l.cd && f.l.Z && 9 < h && (this.ij = !1);
      this.Qh = !g && !a.gi;
      this.Rh = !g && !a.gi;
      this.oZ = c;
      this.X("reload", a);
      a.cda ? this.X("createTile", a) : this.X("tileFun", a);
      this.Ce = d;
      this.PV = e
    },
    langChanged: function () {
      this.set("reload");
      this.ia.hp()
    },
    mapStyleChanged: function () {
      this.set("reload");
      this.ia.hp()
    },
    styleChanged: function () {
      this.h.cc || (this.set("reload"), this.ia.hp())
    },
    featuresChanged: function () {
      this.set("reload");
      this.ia.hp()
    },
    reloadChanged: function () {
      this.set("display", 0)
    },
    tileFunChanged: function () {
      var a = this.oZ || this.get("tileFun");
      this.yt = function (b, c, d) {
        var e = a(b.ma.x, b.ma.y, b.ma.z);
        if (!b.Qo || b.Qo.Dk) b.loaded = !1, b.Qo = ("3D" === this.h.J.view.type ? f.Lj.Ada : f.Lj.eD).call(f.Lj, e, function (a) {
          b.Qo = null;
          a ? c(a) : d()
        }, !1)
      }
    },
    createTileChanged: function () {
      var a = this.ia.getCreateTile();
      this.yt = function (b, c, d) {
        a.call(this.q.ia, b.ma.x, b.ma.y, b.ma.z, c, d)
      };
      this.set("reload")
    },
    Wm: function () {
      return {
        ee: this.get("tileSize"),
        visible: this.get("visible"),
        H: this.KJ(),
        ed: this.get("zooms"),
        TB: this.ij,
        Qh: this.Qh,
        Rh: this.Rh,
        opacity: this.get("opacity"),
        yt: this.ia.get("createTile"),
        Dl: this.oZ || this.get("tileFun"),
        cd: this.ia.ap ? !1 : this.get("detectRetina") && f.l.ja && f.l.Z
      }
    },
    vl: function (a) {
      if (f.Q.Gd.ri) return new f.Q.Gd.ri(this, a)
    }
  });
  f.Lj = new f.vz(6, null);
  f.w.Gc = f.w.oc.extend({
    B: function (a, b) {
      this.jb = Math.min(2, window.devicePixelRatio || 1);
      this.cd = f.l.ja && !a.Fh;

      this.map = b;
      this.wn = 0;
      this.Jk = !1;
      this.af = this.Fe = 0;
      this.Jf = [];
      arguments.callee.oa.apply(this, arguments);
      this.or = [];
      this.Yh = new f.w.n_;
      a && (this.X("style", a), this.X("cursor", a, !0), this.lha = a.get("stable") || !1, this.X("dataSources", a), this.X("bubble", a));
      this.X("display", b);
      this.b1()
    },
    Wm: function () {
      return {
        visible: this.get("visible"),
        ed: this.get("zooms"),
        opacity: this.get("opacity"),
        zIndex: this.get("zIndex"),
        ax: this.ia.get("alwaysRender") || !1
      }
    },
    dataSourcesChanged: function () {
      var a = this.get("dataSources");
      a && a.length ? "string" === typeof a ? (new f.Sa.bb(a)).g("complete", function (a) {
        this.qX(a.data);
        this.xo = a.data;
        this.Jk = !0;
        this.set("display");
        this.wa = !0;
        this.ia.r("complete")
      }, this) : a.length && (this.qX(a), this.xo = a, this.Jk = !0, this.set("display"), this.wa = !0, this.ia.r("complete")) : this.clear()
    },
    getDatas: function () {
      return this.xo
    },
    oia: function () {
      if (this.ia.Fh) {
        var a = this.Yj;
        this.Fe = a.Fe;
        this.af = a.af
      }
    },
    ha: function (a, b) {
      var c = {
        type: a,
        data: "mouseout" === a ? this.L4 || null : b.kq.Ra,
        target: this.ia
      };
      this.L4 = "mouseout" === a ? null : b.kq.Ra;
      this.ia.r(a, c)
    },
    $b: function (a) {
      this.ha(a.type, a)
    },
    b1: function () {
      this.g("click", this.$b);
      this.g("dblclick", this.$b);
      this.g("mousedown", this.$b);
      this.g("mouseup", this.$b);
      this.g("mouseover", this.$b);
      this.g("mouseout", this.$b);
      this.g("touchstart", this.$b);
      this.g("touchend", this.$b)
    },
    ika: function () {
      this.I("click", this.$b);
      this.I("dblclick", this.$b);
      this.I("mousedown", this.$b);
      this.I("mouseup", this.$b);
      this.I("mouseover", this.$b);
      this.I("mouseout", this.$b);
      this.I("touchstart", this.$b);
      this.I("touchend", this.$b)
    },
    styleChanged: function () {
      this.Yj = this.get("style");
      this.oia();
      this.set("display", 0)
    },
    qX: function (a) {
      if (a) {
        this.clear();
        for (var b = 0; b < a.length; b += 1) {
          var c = a[b].lnglat;
          a[b].lnglat = f.a.za(c);
          c = this.map.Jb(c);
          c = new f.Eg({
            name: "point-" + f.a.Lb(this),
            Y: new f.pa.Qf([c.x, c.y], !0)
          });
          c.ao = this;
          c.Ra = a[b];
          this.IB(c)
        }
      }
    },
    jV: function (a) {
      if ("geojson" === a) return new f.q_({
        map: this.map
      });
      if ("topjson" === a) return new f.tja({
        map: this.map
      });
      if ("subway" === a) return new f.rja({
        map: this.map
      })
    },
    ifa: function (a) {
      if (a) {
        var b = [],
          b = [],
          c = {};
        if (a.rules) {
          for (var b = a.rules, d = 0, e = b.length; d < e; d += 1) {
            for (var g = [], h = b[d].symbolizers, k = 0, l = h.length; k < l; k += 1) h[k].fill && (g[k] = new f.style.qf.xN(h[k].fill)), h[k].stroke && (g[k] = new f.style.qf.UN(h[k].stroke));
            h = g;
            b[d].fE = h;
            b[d] = new f.style.Y_(b[d])
          }
          c.rules = b
        }
        if (a.symbolizers) {
          b = a.symbolizers;
          a = 0;
          for (d = b.length; a < d; a += 1) b[a].fill && (b[a] = new f.style.qf.xN(b[a].fill)), b[a].stroke && (b[a] = new f.style.qf.UN(b[a].stroke));
          c.fE = b
        }
        a = new f.aF(c)
      } else a = new f.aF({});
      this.set("style", a);
      return a
    },
    gka: function (a, b) {
      if (-1 === f.a.indexOf(a, f.A.qb)) {
        var c = new f.Sa.bb(a);
        c.g("complete", function (c) {
          c = this.ta[a] = this.jV(b).GD(c);
          this.oq(c);
          this.ha("complete")
        }, this);
        c.g("error", this.Mb, this)
      } else (new f.Sa.XMLHttpRequest(a)).g("complete", function (c) {
        c = f.dba("(" + c.data + ")");
        c = this.ta[a] = this.jV(b).GD(c);
        this.oq(c)
      }, this)
    },
    Gfa: function (a) {
      "px" === a.target.get("unit") ? (this.Fe = Math.max(a.Yi, this.Fe), this.af = Math.max(a.Yi, this.af)) : a.Yi > this.Yo && (this.Yo = a.Yi, this.hu = this.Yo / this.map.get("resolution", 20))
    },
    IB: function (a) {
      this.Yh.add(a);
      if (!this.xx && !this.ia.Fh) {
        if (0 === a.name.indexOf("circle") || 0 === a.name.indexOf("ellipse")) {
          a.g("rad", this.Gfa, this);
          var b = a.get("radius");
          b.length && (b = Math.max.apply(null, b));
          "px" === a.get("unit") ? (this.Fe = Math.max(b, this.Fe), this.af = Math.max(b, this.af)) : this.Yo ? b > this.Yo && (this.Yo = b, this.hu = this.Yo / this.map.get("resolution", 20)) : (this.Yo = b, this.hu = this.Yo / this.map.get("resolution", 20))
        }
        b = a.get("strokeWeight") || 0;
        if (!this.iu || b > this.iu) this.iu = b
      }
      this.lha || a.X("feature", this, !0)
    },
    oq: function (a) {
      this.Jk = !0;
      for (var b = 0, c = a.length; b < c; b += 1) this.IB(a[b])
    },
    clear: function () {
      this.Jk = !0;
      this.xo = [];
      this.Yh.clear();
      this.set("display", 0)
    },
    Li: function (a) {
      var b;
      return 0 > a[0] ? (b = [a[0] + f.a.fb, a[1], f.a.fb, a[3]], a = [0, a[1], a[2], a[3]], b = this.Yh.Li(b), a = this.Yh.Li(a), f.extend(b, a)) : a[2] > f.a.fb ? (b = [a[0], a[1], f.a.fb, a[3]], a = [0, a[1], a[2] - f.a.fb, a[3]], b = this.Yh.Li(b), a = this.Yh.Li(a), f.extend(b, a)) : this.Yh.Li(a)
    },
    tla: function (a) {
      var b, c = this.get("style"),
        d = a.$i;
      c instanceof f.aF || (c = this.ifa(c));
      if (d && 0 < d.length) b = c.fU(d, a);
      else {
        if (c.sY.length || c.$i.length) b = c.iaa(a);
        b || (b = a.Lba())
      }
      return b
    },
    fK: function (a) {
      function b(a, b) {
        return a.Ej - b.Ej
      }
      var c = [],
        d, e, g, h, k, l = {};
      for (d in a) if (a.hasOwnProperty(d)) {
        g = a[d];
        h = g.get("zIndex");
        for (e in l) if (l.hasOwnProperty(e) && (k = c[l[e]][2], k === h)) break;
        "undefined" === typeof l[h] && (c.push([
          [],
          [], h]), l[h] = c.length - 1);
        h = c[l[h]];
        h[0].push(g)
      }
      c.sort(this.gha);
      a = 0;
      for (d = c.length; a < d; a += 1) c[a][0].sort(b);
      return c
    },
    featureChanged: function (a) {
      this.Jk = !0;
      var b = a.target,
        c = b.Y;
      0 !== this.Yh.Qba([f.a.Lb(b)]).length && (this.Yh.remove(b, a.rr), c && !a.xaa && this.Yh.add(b))
    },
    SX: function (a) {
      this.Jk = !0;
      for (var b, c = 0, d = a.length; c < d; c += 1) b = a[c], b.Y.rr = null, b.Bo(!0), b.cj("feature")
    },
    xna: function (a, b) {
      return a[1].zIndex === b[1].zIndex ? f.a.Lb(a[1]) - f.a.Lb(b[1]) : a[1].zIndex - b[1].zIndex
    },
    gha: function (a, b) {
      return a[2] - b[2]
    },
    pna: function (a) {
      return a.xla() === f.w.xja.pja
    },
    vl: function (a) {
      return this.xx ? new f.Q.Sd.gj(this, a) : "c" === this.map.get("overlayRender") && f.Q.canvas.gj ? new f.Q.canvas.gj(this, a) : f.Q.Gd.gj && "d" === this.map.get("overlayRender") ? new f.Q.Gd.gj(this, a) : null
    }
  });
  f.w.Gc.ob({
    wl: function (a) {
      return this.xx ? new f.Ja.Sd.gj(this, a) : this.ia.Fh ? new f.Ja.I_(this, a) : new f.Ja.gj(this, a)
    }
  });
  f.w.n_ = f.ba.extend({
    B: function () {
      this.clear()
    },
    clear: function () {
      this.$m = [];
      this.ML = new f.Kh
    },
    add: function (a) {
      var b = f.a.Lb(a),
        c = a.Y;
      this.$m[b] || (this.count += 1, this.$m[b] = a, c && !f.H.rb(c.Qc(), [Infinity, Infinity, -Infinity, -Infinity]) && this.ML.Wx(c.Qc(), a))
    },
    nla: function () {
      return this.$m
    },
    Li: function (a) {
      return this.ML.yga(a)
    },
    Qba: function (a) {
      var b = a.length,
        c = [],
        d;
      for (d = 0; d < b; d += 1) this.$m[a[d]] && c.push(this.$m[a[d]]);
      return c
    },
    remove: function (a, b) {
      var c = f.a.Lb(a).toString(),
        d = a.Y;
      this.$m[c] && (this.$m[c] = null, d && (c = "undefined" !== typeof b ? b : d.Qc(), this.ML.remove(c, a)))
    }
  });
  f.Kh = f.ba.extend({
    B: function (a) {
      this.MW = "undefined" !== typeof a ? a : 6;
      this.kD = Math.floor(this.MW / 2);
      this.Ny = {
        H: [Infinity, Infinity, -Infinity, -Infinity],
        sb: []
      };
      this.count = 0
    },
    y$: function (a, b) {
      var c = -1,
        d = [],
        e;
      d.push(b);
      var g = b.sb;
      do {
      -1 !== c && (d.push(g[c]), g = g[c].sb, c = -1);
        for (var h = g.length - 1; 0 <= h; h -= 1) {
          var k = g[h];
          if ("undefined" !== typeof k.jr) {
            c = -1;
            break
          }
          var l = f.Kh.Lu(k.H[2] - k.H[0], k.H[3] - k.H[1], k.sb.length + 1),
            k = f.Kh.Lu((k.H[2] > a.H[2] ? k.H[2] : a.H[2]) - (k.H[0] < a.H[0] ? k.H[0] : a.H[0]), (k.H[3] > a.H[3] ? k.H[3] : a.H[3]) - (k.H[1] < a.H[1] ? k.H[1] : a.H[1]), k.sb.length + 2);
          if (0 > c || Math.abs(k - l) < e) e = Math.abs(k - l), c = h
        }
      } while (-1 !== c);
      return d
    },
    Wx: function (a, b, c) {
      a = {
        H: a,
        jr: b
      };
      "undefined" !== typeof c && (a.type = c);
      this.WV(a, this.Ny);
      this.count += 1
    },
    WV: function (a, b) {
      var c;
      if (0 === b.sb.length) b.H = f.H.Ab(a.H), b.sb.push(a);
      else {
        var d = this.y$(a, b),
          e = a;
        do {
          if (c && "undefined" !== typeof c.sb && 0 === c.sb.length) {
            var g = c;
            c = d.pop();
            for (var h = 0, k = c.sb.length; h < k; h += 1) if (c.sb[h] === g || 0 === c.sb[h].sb.length) {
              c.sb.splice(h, 1);
              break
            }
          } else c = d.pop();
          g = e instanceof
            Array;
          if ("undefined" !== typeof e.jr || "undefined" !== typeof e.sb || g) {
            if (g) {
              g = 0;
              for (h = e.length; g < h; g += 1) f.H.extend(c.H, e[g].H);
              c.sb = c.sb.concat(e)
            } else f.H.extend(c.H, e.H), c.sb.push(e);
            c.sb.length <= this.MW ? e = {
              H: f.H.Ab(c.H)
            } : (e = g = this.vda(c.sb), 1 > d.length && (c.sb.push(g[0]), d.push(c), e = g[1]))
          } else f.H.extend(c.H, e.H), e = {
            H: f.H.Ab(c.H)
          }
        } while (0 < d.length)
      }
    },
    vda: function (a) {
      for (var b = this.lfa(a); 0 < a.length;) this.mfa(a, b[0], b[1]);
      return b
    },
    lfa: function (a) {
      for (var b = a.length - 1, c = 0, d = a.length - 1, e = 0, g = a.length - 2; 0 <= g; g -= 1) {
        var h = a[g];
        h.H[0] > a[c].H[0] ? c = g : h.H[2] < a[b].H[1] && (b = g);
        h.H[1] > a[e].H[1] ? e = g : h.H[3] < a[d].H[3] && (d = g)
      }
      Math.abs(a[b].H[2] - a[c].H[0]) > Math.abs(a[d].H[3] - a[e].H[1]) ? b > c ? (b = a.splice(b, 1)[0], c = a.splice(c, 1)[0]) : (c = a.splice(c, 1)[0], b = a.splice(b, 1)[0]) : d > e ? (b = a.splice(d, 1)[0], c = a.splice(e, 1)[0]) : (c = a.splice(e, 1)[0], b = a.splice(d, 1)[0]);
      return [{
        H: f.H.Ab(b.H),
        sb: [b]
      }, {
        H: f.H.Ab(c.H),
        sb: [c]
      }]
    },
    mfa: function (a, b, c) {
      for (var d = f.Kh.Lu(b.H[2] - b.H[0], b.H[3] - b.H[1], b.sb.length + 1), e = f.Kh.Lu(c.H[2] - c.H[0], c.H[3] - c.H[1], c.sb.length + 1), g, h, k, l = a.length - 1; 0 <= l; l -= 1) {
        var m = a[l],
          n = [b.H[0] < m.H[0] ? b.H[0] : m.H[0], b.H[2] > m.H[2] ? b.H[2] : m.H[2], b.H[1] < m.H[1] ? b.H[1] : m.H[1], b.H[3] > m.H[3] ? b.H[3] : m.H[3]],
          n = Math.abs(f.Kh.Lu(n[1] - n[0], n[3] - n[2], b.sb.length + 2) - d),
          m = [c.H[0] < m.H[0] ? c.H[0] : m.H[0], c.H[2] > m.H[2] ? c.H[2] : m.H[2], c.H[1] < m.H[1] ? c.H[1] : m.H[1], c.H[3] > m.H[3] ? c.H[3] : m.H[3]],
          m = Math.abs(f.Kh.Lu(m[1] - m[0], m[3] - m[2], c.sb.length + 2) - e),
          p = Math.abs(m - n);
        if (!h || !g || p < g) h = l, g = p, k = m < n ? c : b
      }
      d = a.splice(h, 1)[0];
      b.sb.length + a.length + 1 <= this.kD ? (b.sb.push(d), f.H.extend(b.H, d.H)) : c.sb.length + a.length + 1 <= this.kD ? (c.sb.push(d), f.H.extend(c.H, d.H)) : (k.sb.push(d), f.H.extend(k.H, d.H))
    },
    remove: function (a, b) {
      var c = [];
      c[0] = {
        H: a
      };
      (c[1] = b) || (c[1] = !1);
      c[2] = this.Ny;
      this.count -= 1;
      if (!1 === c[1]) {
        var d = 0,
          e = [];
        do d = e.length, e = e.concat(this.WX.apply(this, c));
        while (d !== e.length);
        return e
      }
      return this.WX.apply(this, c)
    },
    WX: function (a, b, c) {
      var d = [],
        e = [],
        g = [];
      if (!a || !f.H.mf(a.H, c.H)) return g;
      a = f.H.Ab(a.H);
      var h;
      e.push(c.sb.length);
      d.push(c);
      do {
        c = d.pop();
        var k = e.pop() - 1;
        if ("undefined" !== typeof b) for (; 0 <= k;) {
          var l = c.sb[k];
          if (f.H.mf(a, l.H)) if (b && "undefined" !== typeof l.jr && l.jr === b || !b && ("undefined" !== typeof l.jr || f.H.aU(a, l.H))) {
            "undefined" !== typeof l.sb ? (g = this.Gu(l, !0, [], l), c.sb.splice(k, 1)) : g = c.sb.splice(k, 1);
            f.Kh.PL(c);
            b = void 0;
            c.sb.length < this.kD && (h = this.Gu(c, !0, [], c));
            break
          } else "undefined" !== typeof l.sb && (e.push(k), d.push(c), c = l, k = l.sb.length);
          k -= 1
        } else if ("undefined" !== typeof h) {
          c.sb.splice(k + 1, 1);
          0 < c.sb.length && f.Kh.PL(c);
          k = 0;
          for (l = h.length; k < l; k += 1) this.WV(h[k], c);
          h.length = 0;
          0 === d.length && 1 >= c.sb.length ? (h = this.Gu(c, !0, h, c), c.sb.length = 0, d.push(c), e.push(1)) : 0 < d.length && c.sb.length < this.kD ? (h = this.Gu(c, !0, h, c), c.sb.length = 0) : h = void 0
        } else f.Kh.PL(c)
      } while (0 < d.length);
      return g
    },
    search: function (a, b) {
      return this.Gu({
        H: a
      }, !1, [], this.Ny, b)
    },
    yga: function (a, b) {
      return this.Gu({
        H: a
      }, !1, [], this.Ny, b, !0)
    },
    Gu: function (a, b, c, d, e, g) {
      var h = {},
        k = [];
      if (!f.H.mf(a.H, d.H)) return c;
      k.push(d.sb);
      do {
        d = k.pop();
        for (var l = d.length - 1; 0 <= l; l -= 1) {
          var m = d[l];
          if (f.H.mf(a.H, m.H)) if ("undefined" !== typeof m.sb) k.push(m.sb);
          else if ("undefined" !== typeof m.jr) if (b) c.push(m);
          else if ("undefined" === typeof e || m.type === e) m = m.jr, "undefined" !== typeof g ? h[f.a.Lb(m)] = m : c.push(m)
        }
      } while (0 < k.length);
      return "undefined" !== typeof g ? h : c
    }
  });
  f.Kh.PL = function (a) {
    var b = a.sb.length,
      c = a.H;
    if (0 === b) f.H.empty(c);
    else {
      var d = a.sb[0].H;
      c[0] = d[0];
      c[2] = d[2];
      c[1] = d[1];
      c[3] = d[3];
      for (d = 1; d < b; d += 1) f.H.extend(c, a.sb[d].H)
    }
  };
  f.Kh.Lu = function (a, b, c) {
    var d = (a + b) / 2;
    a *= b;
    return a * c / (a / (d * d))
  };
  f.D = f.D || {};
  f.D.Hg = f.ba.extend({
    ga: [f.ka, f.se],
    Vea: ["position", "altitude", "visible", "clickable", "bubble"],
    B: function (a, b) {

      this.map = b;
      this.he(this.Vea, a);
      this.X("zIndex", a);
      this.X("draggable", a);
      f.l.Me && this.i1();
      f.l.Z || this.wF();
      this.Oc = a;
      this.Oc.D = this
    },
    draggableChanged: function () {
      this.get("draggable") ? this.vF() : this.fH()
    },
    ha: function (a, b) {
      var c;
      c = b ? {
        type: a,
        pixel: b.ub,
        target: this.Oc,
        lnglat: b.nf
      } : {
          type: a
        };
      this.Oc && this.Oc.r(a, c)
    },
    $b: function (a) {
      ("click" !== a.type && "rightclick" !== a.type && "dblclick" !== a.type && "longclick" !== a.type || this.get("clickable")) && this.ha(a.type, a)
    },
    uF: function () {
      this.g("click", this.$b);
      this.g("rightclick", this.$b);
      this.g("longclick", this.$b);
      this.g("longpress", this.$b);
      this.g("dblclick", this.$b)
    },
    YS: function () {
      this.I("click", this.$b);
      this.I("rightclick", this.$b);
      this.I("longclick", this.$b);
      this.I("longpress", this.$b);
      this.I("dblclick", this.$b)
    },
    wF: function () {
      this.get("clickable") && this.uF();
      this.g("mousemove", this.$b);
      this.g("mouseout", this.$b);
      this.g("mouseover", this.$b);
      this.g("mousedown", this.$b);
      this.g("mouseup", this.$b)
    },
    jka: function () {
      this.YS();
      this.I("mousemove", this.$b);
      this.I("mouseout", this.$b);
      this.I("mouseover", this.$b);
      this.I("mousedown", this.$b);
      this.I("mouseup", this.$b)
    },
    clickableChanged: function () {
      this.get("clickable") ? this.uF() : this.YS()
    },
    i1: function () {
      this.get("clickable") && this.uF();
      this.g("touchstart", this.$b, this);
      this.g("touchmove", this.$b, this);
      this.g("touchend", this.$b, this)
    },
    vF: function () {
      this.g("dragstart", this.$p);
      this.g("dragging", this.Yp);
      this.g("dragend", this.Zp)
    },
    $p: function (a) {
      this.map.RK(a);
      this.Ff = a.ub;
      this.sW = a.Ad;
      this.rW = a.nf;
      this.ha("dragstart", a)
    },
    Yp: function (a) {
      var b = this.map.J.view.type;
      if ("2D" == b) {
        var c = a.ub.Va(this.Ff),
          b = c.x,
          c = c.y;
        this.Ff = a.ub;
        var d = this.map.get("rotation") * Math.PI / 180,
          e = b * Math.cos(d) + Math.sin(d) * c,
          b = -Math.sin(d) * b + Math.cos(d) * c;
        this.$o(new f.G(e, b));
        this.ha("dragging", a)
      } else "3D" == b && a.Ad && (c = a.ub.Va(this.Ff), b = c.x, c = c.y, e = a.Ad.Va(this.sW), a.nf.Va(this.rW), this.Ff = a.ub, "function" === typeof this.oy && this.oy(b, c, e), this.sW = a.Ad, this.rW = a.nf, this.ha("dragging", a))
    },
    Zp: function (a) {
      this.map.Tr();
      this.ha("dragend", a)
    },
    fH: function () {
      this.I("dragstart", this.$p);
      this.I("dragging", this.Yp);
      this.I("dragend", this.Zp)
    },
    hG: function (a) {
      var b, c, d = [];
      if (a) for (b = 0, c = a.length; b < c; b += 1) d.push(this.iG(a[b]));
      return d
    },
    iG: function (a) {
      a = this.map.Jb(a);
      return [a.x, a.y]
    },
    $e: function (a) {
      var b = this.M.hb || this.map.get("centerCoords"),
        c = Math.pow(2, 20 - this.map.get("zoom"));
      return [(a[0] - b.x) / c, (a[1] - b.y) / c]
    }
  });
  f.D.ab = f.D.Hg.extend({
    AL: "content contentDom icon opacity angle autoRotation offset textAlign verticalAlign shadow title label isTop shape topWhenClick topWhenMouseOver noSelect".split(" "),
    I9: {
      AMAP_ANIMATION_NONE: !1,
      AMAP_ANIMATION_DROP: f.pi.Easing.Bounce,
      AMAP_ANIMATION_BOUNCE: f.pi.Easing.Cubic
    },
    B: function (a, b) {
      arguments.callee.oa.apply(this, arguments);
      this.he(this.AL, a);
      this.X("move", a);
      this.k$();
      this.vq();
      this.set("AnimationOffset", new f.G(0, 0), !0);
      this.X("raiseOnDrag", a);
      this.X("animation", a)
    },
    xG: function (a, b, c) {
      if (this.get("animation") && "AMAP_ANIMATION_NONE" !== this.get("animation")) {
        var d = this;
        this.Qk = new f.pi;
        this.Qk.transition = function (c, g, h) {
          if ("AMAP_ANIMATION_NONE" === d.get("animation")) return 0;
          if (a && 600 <= h) return d.Qk.stop(), 0;
          c = 0 === Math.floor(h / 600) % 2 ? "Out" : "In";
          "out" === b ? c = "Out" : "in" === b && (c = "In");
          return d.I9[d.get("animation")][c](h % 600 / 600)
        };
        c = c || 40;
        this.Qk.kn = function (a) {
          d.set("AnimationOffset", d.hH.add(new f.G(0, -1 * c * a)))
        };
        this.hH = new f.G(0, 0);
        this.Qk.Xk()
      }
    },
    AnimationOffsetChanged: function () {
      this.positionChanged()
    },
    eS: function () {
      this.Qk && (this.Qk.stop(), this.set("AnimationOffset", this.hH));
      this.set("AnimationOffset", new f.G(0, -40));
      if (this.fv) this.fv.set("position", this.get("position"));
      else {
        var a = new w.D.ab({
          zIndex: this.get("zIndex") - 1,
          icon: new w.D.Gg({
            image: f.A.qb + "extra/amap/theme/v1.3/dragCross.png",
            size: new f.Uc(14, 11)
          }),
          offset: new f.G(-4, -5),
          position: this.get("position")
        });
        a.la = !0;
        this.fv = a
      }
      this.fv.setMap(this.map.J)
    },
    iP: function () {
      this.set("animation", "AMAP_ANIMATION_DROP", !0);
      this.xG(!0, "in");
      this.fv.setMap(null)
    },
    animationChanged: function () {
      this.Qk && (this.Qk.stop(), this.set("AnimationOffset", this.hH), this.Qk = null);
      var a = this.get("animation");
      a && "AMAP_ANIMATION_NONE" !== a && ("AMAP_ANIMATION_DROP" === a ? this.xG(!0, "in", 100) : this.xG())
    },
    Ng: function () {
      this.fv && this.fv.set("position", this.get("position"))
    },
    raiseOnDragChanged: function () {
      this.get("raiseOnDrag") ? (this.g("dragstart", this.eS, this), this.g("dragging", this.Ng, this), this.g("dragend", this.iP, this)) : (this.I("dragstart", this.eS, this), this.I("dragging", this.Ng, this), this.I("dragend", this.iP, this))
    },
    $o: function (a) {
      var b = this.get("position");
      a = this.map.Jb(b).add(a.Sc(Math.pow(2, 20 - this.map.get("zoom"))));
      b instanceof f.V ? this.set("position", this.map.de(a)) : this.set("position", a)
    },
    oy: function (a, b) {
      var c = this.get("position"),
        d = this.get("altitude"),
        c = this.map.Vo(c, d),
        d = this.map.so(new f.G(c.x + a, c.y + b), null, d);
      this.set("position", d)
    },
    k$: function () {
      var a = this.get("content"),
        b = this.get("shadow"),
        c = this.get("offset"),
        d = this.get("label"),
        a = a ? this.ET(a, c) : this.zI(this.get("icon"), c);
      this.set("contentDom", a, !0);
      b && (b = this.IT(b, c), this.set("shadowDom", b, !0));
      d && d.content && this.set("labelDom", this.AI(d.content), !0)
    },
    AI: function (a) {
      var b = document.createElement("div");
      b.className = "amap-marker-label";
      b.innerHTML = a;
      return b
    },
    vq: function () {
      var a = this.get("position");
      if (this.map && a && !this.M) {
        var b = this.map,
          a = this.map.Jb(a),
          a = this.M = new f.Eg({
            name: "marker-" + f.a.Lb(this),
            map: b,
            Y: new f.pa.Qf([a.x, a.y])
          });
        a.ao = this;
        this.X("coords", a, !0);
        a.he("offset textAlign verticalAlign isTop zIndex params noSelect".split(" "), this)
      }
    },
    getParams: function () {
      return {
        zIndex: this.get("zIndex"),
        LB: this.get("angle"),
        pg: this.get("contentDom"),
        qW: this.get("labelDom"),
        KY: this.get("shadowDom"),
        opacity: this.get("opacity"),
        altitude: this.get("altitude"),
        title: this.get("title"),
        label: this.get("label"),
        nN: this.get("AnimationOffset"),
        verticalAlign: this.get("verticalAlign"),
        textAlign: this.get("textAlign"),
        offset: this.get("offset"),
        mW: this.get("isTop"),
        shape: this.get("shape"),
        visible: this.get("visible") && !this.Oc.get("outOfZooms")
      }
    },
    offsetChanged: function () {
      function a(a) {
        var c = b.get("offset"),
          g = b.get("AnimationOffset"),
          h = b.get("verticalAlign"),
          k = b.get("textAlign"),
          l = Math.round(a.x) + c.x + g.x;
        a = Math.round(a.y) + c.y + g.y;
        g = f.j.Hx(b.M.pg);
        c = g[0];
        g = g[1];
        switch (k) {
          case "center":
            l -= c / 2;
            break;
          case "right":
            l -= c
        }
        switch (h) {
          case "middle":
            a -= g / 2;
            break;
          case "bottom":
            a -= g
        }
        b.M.ea.style.left = l + "px";
        b.M.ea.style.top = a + "px"
      }
      if (this.M && this.M.ea) {
        var b = this,
          c = this.map.J.view.type;
        "2D" == c ? (c = this.map.Jb(this.get("position")), c = c.Va(this.M.ra).vc(Math.pow(2, 20 - this.map.get("zoom"))), this.M.ea && (this.M.ea.yw && this.M.ea.parentNode !== this.M.ea.yw ? this.map.set("display") : a(c))) : "3D" == c && (c = this.get("position"), c = this.map.Vo(c, this.get("altitude")), this.M.ea && (this.M.ea.yw && this.M.ea.parentNode !== this.M.ea.yw ? this.map.set("display") : a(c)))
      } else this.map.set("display")
    },
    altitudeChanged: function () {
      this.offsetChanged()
    },
    positionChanged: function () {
      if (this.M) {
        var a = this.map.Jb(this.get("position"));
        this.set("coords", [a.x, a.y]);
        this.map && (this.M.S_ = !0, this.offsetChanged())
      }
    },
    textAlignChanged: function () {
      this.rO()
    },
    verticalAlignChanged: function () {
      this.rO()
    },
    rO: function () {
      this.M && (this.M.Ug = !0, this.map && (this.map.ad.Ik = !0, this.map.set("display")))
    },
    contentChanged: function () {
      if (this.M) {
        this.map.ad.Ik = !0; - 1 === f.a.indexOf(this.map.ad.Jf, this.M) && this.map.ad.Jf.push(this.M);
        var a = this.get("contentDom");
        this.M.ea && this.M.ea === a.parentNode && this.M.ea.removeChild(a);
        var a = this.get("content"),
          b = this.get("offset"),
          a = this.ET(a, b);
        this.set("contentDom", a);
        this.M.ea && (f.l.Dh && f.a.iepngFix(a), this.M.ea.appendChild(a), this.M.pg = a);
        this.map && this.map.set("display")
      }
    },
    iconChanged: function () {
      if (this.M && this.M.ea && !this.get("content")) {
        this.map.ad.Ik = !0; - 1 === f.a.indexOf(this.map.ad.Jf, this.M) && this.map.ad.Jf.push(this.M);
        this.M.ea && this.get("contentDom") && this.M.ea.removeChild(this.get("contentDom"));
        var a = this.get("icon"),
          b = this.get("offset"),
          a = this.zI(a, b);
        this.set("contentDom", a);
        this.M.ea ? (f.l.Dh && f.a.iepngFix(a), this.M.ea.appendChild(a), this.M.pg = a) : this.map && this.map.set("display")
      }
    },
    shadowChanged: function () {
      if (this.M && this.M.ea) {
        var a = this.get("shadowDom");
        this.M.ea && a && a.parentNode === this.M.ea && this.M.ea.removeChild(a);
        if (a = this.get("shadow")) {
          var b = this.get("offset"),
            a = this.IT(a, b);
          this.set("shadowDom", a);
          this.M.ea && this.M.ea.appendChild(a)
        }
      }
    },
    titleChanged: function () {
      this.M && this.M.pg && "string" === typeof this.get("title") && this.M.pg && this.get("title") && (this.M.pg.title = this.get("title"))
    },
    labelChanged: function (a) {
      a = a || this.get("label");
      if (this.M && this.M.ea) {
        var b = this.M.ea,
          c = this.get("labelDom");
        c && c.parentNode === b && b.removeChild(c);
        if (a && a.content) {
          c = "";
          if (a.content) {
            var c = this.AI(a.content),
              d = 0,
              e = 0;
            a.offset && (d = a.offset.y + "px", e = a.offset.x + "px");
            c.style.top = d;
            c.style.left = e;
            b.appendChild(c)
          }
          this.set("labelDom", c)
        }
      } else a && a.content ? this.set("labelDom", this.AI(a.content), !0) : this.set("labelDom", null)
    },
    isTopChanged: function () {
      var a = this.map.ad.jE,
        b = this.get("isTop"),
        c = this.get("zIndex");
      a ? a === this ? this.M && this.M.ea && (this.M.ea.style.zIndex = b ? this.map.ad.wn + 10 : c, this.map.ad.jE = b ? this : null) : (a.M && a.M.ea && (a.M.ea.style.zIndex = b ? a.get("zIndex") : this.map.ad.wn + 10), this.M && this.M.ea && (this.M.ea.style.zIndex = b ? this.map.ad.wn + 10 : c), this.map.ad.jE = b ? this : a) : (this.map.ad.jE = this, this.M && this.M.ea && (this.M.ea.style.zIndex = b ? this.map.ad.wn + 10 : c))
    },
    visibleChanged: function () {
      this.M && this.M.ea && (this.get("visible") && !this.Oc.get("outOfZooms") ? this.M.ea.style.display = "block" : this.M.ea.style.display = "none")
    },
    Pea: function () {
      this.visibleChanged()
    },
    angleChanged: function () {
      if (this.M && this.M.ea) {
        var a = {
          x: -1 * this.get("offset").x,
          y: -1 * this.get("offset").y
        };
        f.j.rotate(this.M.ea, this.get("angle") || 0, a)
      }
    },
    zIndexChanged: function () {
      var a = this.get("zIndex");
      if (a > this.map.ad.wn) {
        this.map.ad.wn = a;
        var b = this.map.ad.jE;
        b && b.M && b.M.ea && (b.M.ea.style.zIndex = a + 10)
      }
      this.M && this.M.ea && (this.M.ea.style.zIndex = this.get("isTop") ? this.map.ad.wn + 10 : this.get("zIndex"))
    },
    opacityChanged: function () {
      var a = this.get("contentDom"),
        b = this.get("shadowDom");
      a && f.j.un(a, this.get("opacity"));
      b && f.j.un(b, this.get("opacity"))
    },
    ET: function (a) {
      var b;
      b = document.createElement("div");
      b.className = "amap-marker-content";
      "string" !== typeof a ? b.appendChild(a) : (b.innerHTML = a, b.childNodes[0] && !b.childNodes[0].style && (b.style["white-space"] = "pre"));
      f.j.un(b, this.get("opacity"));
      return b
    },
    zI: function (a) {
      var b, c = 0,
        d = 0,
        e, g, h, k;
      a ? ("string" === typeof a ? (b = a, k = !0) : (b = a.get("image"), d = a.get("size"), e = a.get("imageSize"), c = d.width, d = d.height, e && (g = e.width, h = e.height)), c || (c = 0), d || (d = 0), a = "string" !== typeof a ? a.get("imageOffset") : {
        x: 0,
        y: 0
      }) : (b = f.A.Xg + "/mark_bs.png", a = {
        x: 0,
        y: 0
      }, c = 19, d = 33, g = 19, h = 33);
      e = document.createElement("div");
      e.className = "amap-icon";
      e.style.position = "absolute";
      k && !f.l.ne && (e.style.overflow = "inherit");
      c && (e.style.width = c + "px");
      d && (e.style.height = d + "px");
      c = document.createElement("img");
      c.src = b;
      g && h && (c.style.width = g + "px", c.style.height = h + "px");
      c.style.top = a.y + "px";
      c.style.left = a.x + "px";
      f.l.ne && k || e.appendChild(c);
      f.j.un(f.l.ne && k ? c : e, this.get("opacity"));
      return f.l.ne && k ? c : e
    },
    IT: function (a, b) {
      var c = this.zI(a, b);
      c.style.zIndex = -1;
      return c
    },
    moveChanged: function () {
      var a = this.get("move");
      if (!1 === a) return this.rha();
      void 0 !== a && ("pause" === a.action ? this.kfa() : "[object Array]" === Object.prototype.toString.call(a.nf) ? a.nf && ("resume" === a.action && this.DA ? this.moveTo(a.nf[a.nf.wm || 0], a.speed, a.ib) : (this.DA && this.r("movestop"), a.nf.wm = 0, this.set("position", a.nf[0]), this.bea(a.nf, a.speed, a.ib, a.B$))) : this.moveTo(a.nf, a.speed, a.ib, !0))
    },
    moveTo: function (a, b, c, d) {
      var e = this.get("position");
      a.Va(e);
      var g = Math.round(a.Md(e) / 1E3 / b * 36E5);
      if (0 === g) return this.r("moveend");
      this.Yg && (this.Yg.stop(), this.Yg = null);
      this.Yg = new f.pi(e, a);
      c = c ||
        function (a) {
          return a
        };
      this.Yg.transition = function (a, b, d) {
        if (d >= g) return b;
        var e = (b.O - a.O) * c(d / g) + a.O;
        a = (b.P - a.P) * c(d / g) + a.P;
        return new f.V(e, a)
      };
      this.Yg.kn = function (b) {
        this.set("position", b);
        d && this.Oc.r("moving", {
          passedPath: [this.Yg.start, this.get("position")]
        });
        this.r("moving");
        b.rb(a) && (this.Yg && (this.Yg.stop(), this.Yg = null), this.Oc.r("moveend"), this.r("moveend"))
      };
      this.get("autoRotation") && !f.l.ne && (b = "2D" == (this.map.J.view.type || "2D") ? this.h3(e, a) : this.i3(e, a), this.set("angle", b));
      this.Yg.Xk(this)
    },
    rha: function () {
      this.Yg && (this.Yg.stop(), this.Yg = null, this.r("movestop"))
    },
    kfa: function () {
      this.Yg && (this.Yg.stop(), this.Yg = null, this.r("movepause"))
    },
    bea: function (a, b, c, d) {
      function e() {
        var b = a.slice(0, a.wm || 0);
        b.push(this.get("position"));
        this.Oc.r("moving", {
          passedPath: b
        })
      }
      function g() {
        a.wm < a.length - 1 ? (a.wm += 1, this.moveTo(a[a.wm], b, c)) : (this.ha("movealong"), d ? (a.wm = 0, this.set("position", a[0]), this.moveTo(a[a.wm], b, c)) : this.r("movestop"))
      }
      var h = Math.min(a.wm || 0, a.length - 1);
      this.DA || (this.DA = !0, this.g("moving", e, this), this.g("moveend", g, this), this.g("movestop", function l() {
        this.DA = !1;
        this.I("moveend", g, this);
        this.I("moving", e, this);
        this.I("movestop", l, this)
      }, this));
      this.moveTo(a[h], b, c)
    },
    i3: function (a, b) {
      var c = this.map,
        d = c.Vo(a),
        c = c.Vo(b),
        e = 0;
      c.Md(d);
      var g = c.y - d.y,
        h = c.x - d.x;
      0 !== c.x - d.x ? (e = Math.atan((c.y - d.y) / (c.x - d.x)), 0 <= g && 0 > h ? e = Math.PI + e : 0 > g && 0 >= h ? e = Math.PI + e : 0 > g && 0 <= h && (e = 2 * Math.PI + e)) : e = c.y > d.y ? Math.PI / 2 : 3 * Math.PI / 2;
      return f.a.Pc(180 * e / Math.PI, 1)
    },
    h3: function (a, b) {
      var c = this.map,
        d = c.Jb(a),
        c = c.Jb(b),
        e = 0;
      c.Md(d);
      var g = c.y - d.y,
        h = c.x - d.x;
      0 !== c.x - d.x ? (e = Math.atan((c.y - d.y) / (c.x - d.x)), 0 <= g && 0 > h ? e = Math.PI + e : 0 > g && 0 >= h ? e = Math.PI + e : 0 > g && 0 <= h && (e = 2 * Math.PI + e)) : e = c.y > d.y ? Math.PI / 2 : 3 * Math.PI / 2;
      return f.a.Pc(180 * e / Math.PI, 1)
    }
  });
  f.D.cl = f.D.Hg.extend({
    B: function (a, b) {
      arguments.callee.oa.apply(this, arguments);
      this.X("items", a, !0);
      this.X("content", a, !0);
      this.X("resolution", b);
      this.X("centerCoords", b);
      this.bx = a
    },
    qD: function (a) {
      this.Df();
      this.wp();
      this.bk();
      this.cj("resolution");
      this.cj("centerCoords");
      this.cj("render");
      this.X("resolution", a);
      this.X("centerCoords", a);
      this.X("render", a);
      this.map.g("movestart", this.rk, this);
      this.map.g("mapmove", this.rk, this);
      this.map.g("zoomstart", this.rk, this);
      this.map.g("click", this.rk, this);
      this.map.g("closeOverlays", this.rk, this);
      this.map.g("rotate", this.rk, this)
    },
    rk: function () {
      this.bx.map && this.bx.close()
    },
    mapChanged: function () { },
    positionChanged: function () {
      this.bk()
    },
    renderChanged: function () {
      this.bk()
    },
    Df: function () {
      this.K && (this.K.parentNode && this.K.parentNode.removeChild(this.K), this.K = null);
      var a = f.j.create("div", null, "amap-menu");
      f.C.g(a, "mousedown", function (a) {
        f.C.stopPropagation(a)
      }, this);
      this.K = a;
      this.map.Oa.D.appendChild(this.K)
    },
    wp: function () {
      var a = this,
        b = this.K;
      b.innerHTML = "";
      var c = this.get("content");
      if ("object" === typeof c) b.appendChild(c);
      else if ("string" === typeof c) b.innerHTML = c;
      else if ((c = this.get("items")) && c.length) {
        var d = f.j.create("ul", b, "amap-menu-outer");
        c.sort(function (a, b) {
          return isNaN(a.xD) || isNaN(b.xD) ? 0 : a.xD - b.xD
        });
        for (b = 0; b < c.length; b += 1)(function (b) {
          var c = b.zZ,
            h = b.ib,
            k = f.j.create("li", d);
          k.innerHTML = c;
          f.C.g(k, "click", function () {
            h.call(k);
            a.bx.close()
          }, k)
        })(c[b])
      } else this.K.innerHTML = ""
    },
    bk: function () {
      var a = this.map,
        b = this.K;
      a && b && (this.map.get("zoom"), b = this.get("position"), b = a.Vo(b), a = b.y, b = b.x, this.K.style.right = "", this.K.style.bottom = "", this.K.style.left = b + "px", this.K.style.top = a + "px")
    },
    bg: function () {
      this.K && (this.map.I("click", this.Ija, this), this.map.Oa.D.removeChild(this.K), this.bx.Fi = !1, this.K = this.bx.Nh.map = null, this.map.I("movestart", this.rk, this), this.map.I("zoomstart", this.rk, this), this.map.I("click", this.rk, this), this.map.I("closeOverlays", this.rk, this), this.map.I("rotate", this.rk, this))
    },
    visibleChanged: function () {
      this.K && (this.get("visible") ? this.K.style.display = "block" : this.K.style.display = "none")
    },
    itemsChanged: function () {
      this.K && this.wp()
    }
  });
  f.D.fe = f.D.Hg.extend({
    B: function (a, b) {
      arguments.callee.oa.apply(this, arguments);
      this.he("content contentDom position contentU altitude isCustom autoMove showShadow closeWhenClickMap size offset".split(" "), a);
      this.X("retainWhenClose", a, !0);
      a.X("toBeClose", this);
      this.Ci = a
    },
    qD: function (a) {
      this.Y$ || (this.Df(), this.wp());
      this.cj("resolution");
      this.cj("centerCoords");
      this.cj("render");
      this.X("resolution", a);
      this.X("centerCoords", a);
      this.X("render", a);
      this.map = a;
      a.Oa.D.appendChild(this.Wb);
      this.cN();
      this.bk();
      this.qO();
      this.Y$ = !0;
      this.Q$();
      this.Oc.r("onAdd", {
        type: "onAdd",
        target: this.Oc
      })
    },
    Df: function () {
      var a = f.j.create("div");
      a.className = "amap-info";
      var b = f.j.create("div", a, "amap-info-shadowContainer"),
        c = f.j.create("div", a),
        d = f.j.create("div", c, "amap-info-contentContainer");
      a.style.position = "absolute";
      c.style.position = "absolute";
      c.style.bottom = "0px";
      c.style.left = "0px";
      b.style.position = "absolute";
      this.Wb = a;
      this.Ye = c;
      this.nM = b;
      this.Tg = d;
      this.set("contentDom", this.Tg, !0)
    },
    wp: function () {
      var a = this.get("contentU");
      if (a) {
        var b = this.get("isCustom"),
          c = this.Tg,
          d = this.nM;
        c.innerHTML = "";
        var e = null;
        if (b) {
          if ("string" === typeof a) c.innerHTML = a;
          else if (a instanceof Array) for (e = 0; e < a.length; e += 1) c.appendChild(a[e]);
          else c.appendChild(a);
          e = c;
          d.parentNode && d.parentNode.removeChild(d)
        } else {
          e = d = f.j.create("div", c, "amap-info-content amap-info-outer");
          "string" === typeof a ? d.innerHTML = a : d.appendChild(a);
          this.Z$ = d;
          a = f.j.create("a", this.Tg, "amap-info-close");
          a.innerHTML = "\u00d7";
          this.KI = a;
          a.href = "javascript: void(0)";
          f.l.Me && (f.C.g(a, "touchstart", function (a) {
            f.C.stop(a)
          }, this), f.C.g(a, "touchend", function (a) {
            f.C.stop(a);
            this.Ci.close()
          }, this), f.C.g(a, "click", function (a) {
            f.C.stop(a);
            this.Ci.close()
          }, this));
          f.l.Z || (f.C.g(a, "mousedown", function (a) {
            f.C.stop(a)
          }, this), f.C.g(a, "click", function (a) {
            f.C.stop(a);
            this.Ci.close()
          }, this));
          if (a = this.get("size", !0)) 0 !== a.width && (d.style.width = a.width + "px"), 0 !== a.height && (d.style.height = a.height + "px");
          a = f.j.create("div", c, "amap-info-sharp");
          a.style.height = "23px";
          if (f.l.Dh || f.l.cr) a.style.marginLeft = c.childNodes[0].offsetWidth / 2 - 5;
          this.nM.style.display = "block"
        }
        f.C.pha(e)
      }
    },
    cN: function () {
      var a = this.get("isCustom"),
        b = this.get("showShadow");
      if (!a && b) {
        var a = this.nM,
          b = f.j.KC(this.Tg),
          c = b.height - 23,
          d = b.width;
        if (f.l.Dh || f.l.cr) c = this.Tg.childNodes[0].offsetHeight, d = this.Tg.childNodes[0].offsetWidth + 26;
        b = "background-image:url(" + f.A.qb + (f.l.Dh ? "extra/amap/theme/v1.3/iws.gif);" : "extra/amap/theme/v1.3/iws.png);");
        a.innerHTML = "";
        var e = [],
          g;
        g = e[1] = {};
        g.height = 0.5 * c + 4;
        g.width = d;
        g.offsetX = 400;
        g.offsetY = 16;
        g.top = -g.height - 10 - 15;
        g.left = 23;
        g = e[2] = {};
        g.height = e[1].height;
        g.width = e[1].height;
        g.offsetX = 1075 - g.width;
        g.offsetY = e[1].offsetY;
        g.top = e[1].top;
        g.left = 23 + e[1].width;
        g = e[3] = {};
        g.height = 10;
        g.width = 22;
        g.offsetX = 30;
        g.offsetY = 445;
        g.top = -25;
        g.left = 23 + (f.l.cr || f.l.Dh ? 5 : 0);
        g = e[4] = {};
        g.height = 10;
        g.width = d / 2 - 15 - e[3].left - e[3].width;
        g.offsetX = 132;
        g.offsetY = 445;
        g.top = -25;
        g.left = e[3].left + e[3].width;
        g = e[5] = {};
        g.height = 10;
        g.width = 70;
        g.offsetX = 80;
        g.offsetY = 445;
        g.top = -25;
        g.left = e[4].left + e[4].width;
        g = e[6] = {};
        g.height = 10;
        g.width = d - e[5].left - e[5].width;
        g.offsetX = 132;
        g.offsetY = 445;
        g.top = -25;
        g.left = e[5].left + e[5].width;
        g = e[7] = {};
        g.height = 10;
        g.width = 30;
        g.offsetX = 621;
        g.offsetY = 445;
        g.top = -25;
        g.left = d;
        g = e[8] = {};
        g.height = 15;
        g.width = 70;
        g.offsetX = 47;
        g.offsetY = 470;
        g.top = -15;
        g.left = d / 2 - 15;
        for (c = 1; 8 >= c; c += 1) d = f.j.create("div", a), g = [], g.push("position:absolute;"), g.push(b), g.push("top:" + e[c].top + "px;"), g.push("left:" + e[c].left + "px;"), g.push("width:" + e[c].width + "px;"), g.push("height:" + e[c].height + "px;"), g.push("background-position:" + -e[c].offsetX + "px " + -e[c].offsetY + "px;"), d.style.cssText = g.join("")
      }
    },
    Nna: function () { },
    bk: function () {
      var a = this.map,
        b = this.Wb,
        c = this.get("position");
      if (a && b && c) {
        b = a.Vo(c, this.get("altitude"));
        a.get("size");
        c = f.j.KC(this.Tg);
        if (f.l.Dh || f.l.cr) c.width = this.Tg.childNodes[0].offsetWidth + 14;
        a = this.get("offset");
        c = this.get("isCustom") ? c.width / 2 : (c.width - 30) / 2;
        this.Wb.style.left = Math.round(b.x - c + (a.x || 0)) + "px";
        this.Wb.style.top = Math.round(b.y + (a.y || 0)) + "px";
        b = this.Z$;
        if (this.KI && b.childNodes[0]) {
          for (c = a = 0; c < b.childNodes.length; c += 1) a += b.childNodes[0].clientHeight || 0;
          a > (this.get("size").height || b.clientHeight) ? this.KI.style.right = "20px" : this.KI.style.right = "5px"
        }
      }
    },
    b2: function () {
      var a = new f.G(2 - this.Tg.offsetWidth / 2, 2 - this.Tg.offsetHeight),
        b = this.get("offset") || new f.G(0, 0);
      this.get("isCustom") || (a = a.add(new f.G(0, -23)));
      return a.add(b)
    },
    altitudeChanged: function () {
      this.bk()
    },
    qO: function () {
      if (this.get("position") && this.get("autoMove") && this.Tg) {
        for (var a = this.map, b = new f.Uc(this.Tg.offsetWidth, this.Tg.offsetHeight), c = a.Vo(this.get("position"), this.get("altitude")).add(this.b2()), d = c.add(b.Tu()), e = a.get("size"), g = a.Eba(), h = 0, k = 0, l = 0; l < g.length; l += 1) {
          var m = g[l],
            n = 0,
            p = 0;
          0 === m[1] && 0 === m[2] ? (n = m[3] - (c.x + h), p = m[0] - (c.y + k), 0 < n && 0 < p && (Math.abs(n) < Math.abs(p) ? h += n : k += p)) : 0 === m[2] && 0 === m[3] ? (n = e.Bh() - m[1] - (d.x + h), p = m[0] - (c.y + k), 0 > n && 0 < p && (Math.abs(n) < Math.abs(p) ? h += n : k += p)) : 0 === m[0] && 0 === m[3] ? (n = e.Bh() - m[1] - (d.x + h), p = e.zh() - m[2] - (d.y + k), 0 > n && 0 > p && (Math.abs(n) < Math.abs(p) ? h += n : k += p)) : 0 === m[0] && 0 === m[1] && (n = m[3] - (c.x + h), p = e.zh() - m[2] - (d.y + k), 0 < n && 0 > p && (Math.abs(n) < Math.abs(p) ? h += n : k += p))
        }
        c = c.add(new f.G(h, k));
        d = d.add(new f.G(h, k));
        l = g = 0;
        0 > c.x || b.Bh() > e.Bh() ? g = 20 - c.x : e.Bh() < d.x && (g = e.Bh() - d.x - 25);
        0 > c.y || b.zh() > e.zh() ? l = 5 - c.y : e.zh() < d.y && (l = e.zh() - d.y - 15);
        g += h;
        l += k;
        (g || l) && a.J.panBy(g, l)
      }
    },
    Q$: function () {
      this.get("closeWhenClickMap") && (this.map.g("clickstart", this.jR, this, !1), this.map.g("clickend", this.iR, this, !1))
    },
    jR: function () {
      this.Ci.Fi && this.Ci.getIsOpen() && (this.Ci.iE = !0)
    },
    iR: function () {
      this.Ci.Fi && (this.Ci.iE && this.Ci.close(), this.Ci.iE = !1)
    },
    bg: function () {
      this.Wb && this.map && (this.Ci.iE = !1, this.get("closeWhenClickMap") && (this.map.I("clickstart", this.jR, this), this.map.I("clickend", this.iR, this)), this.get("retainWhenClose") ? this.map.lj.appendChild(this.Wb) : (this.Wb.parentNode === this.map.Oa.D && this.map.Oa.D.removeChild(this.Wb), this.Ci.D = null), this.map = null, this.Ci.Fi = !1, this.Oc.r("close", {
        type: "close",
        target: this.Oc
      }))
    },
    Rja: function () {
      if (!this.get("isCustom")) return this.Tg.offsetWidth;
      for (var a = this.Jg, b = a.firstChild, c = a.lastChild; b && c && b.style && c.style && b === c;) a = b, b = a.firstChild, c = a.lastChild;
      a = f.j.me(a, "width");
      return a = parseInt(a.replace("px", ""), 10)
    },
    renderChanged: function () {
      this.bk()
    },
    positionChanged: function () {
      this.map && this.Wb && (this.bk(), this.qO())
    },
    offsetChanged: function () {
      this.positionChanged()
    },
    contentChanged: function () {
      this.wp();
      this.cN();
      this.bk()
    },
    sizeChanged: function () {
      this.wp();
      this.cN();
      this.bk()
    }
  });
  f.pa = {};
  f.pa.Xd = f.ba.extend({
    ga: [f.ka, f.se],
    B: function () { },
    Ab: function () {
      return new this.B(this.Na)
    },
    IJ: function () {
      return this.Na
    },
    setCoords: function (a) {
      this.Kga(a)
    },
    Kga: function (a) {
      this.rr = this.Qc();
      this.hf = null;
      if (f.pa.bc && this instanceof f.pa.bc) {
        var b = a.length;
        this.Mf = Array(b);
        for (var c, d, e = 0; e < b; e += 1) if (c = a[e], d = new f.pa.JN(c), this.Mf[e] = d, 0 === e) {
          if (0 === c.length) break;
          d.No(c) || c.reverse()
        } else 0 !== c.length && d.No(c) && c.reverse()
      } else this.Na = a
    }
  });
  f.pa.Yd = f.extend({}, {
    ls: "point",
    ME: "linestring",
    IN: "linearring",
    Cz: "polygon",
    TE: "multipoint",
    SE: "multilinestring",
    Az: "multipolygon",
    hja: "geometrycollection"
  });
  f.Eg = f.ba.extend({
    ga: [f.ka, f.se],
    B: function (a) {
      a = a || {};
      a.hw && (this.hw = a.hw);
      a.zG && (this.zG = a.zG);
      a.wQ && (this.wQ = a.wQ);
      this.map = a.map;
      this.Ej = a.dG || f.a.Lb(this);
      this.name = a.name || "";
      this.Ug = !1;
      this.set("visible", !0, !0);
      this.hM(a.Y);
      this.$i = a.fE;
      this.style = a.style
    },
    Daa: function () {
      this.style = this.$i = this.ao = this.xW = this.Y = this.name = this.map = null;
      this.vp();
      this.Uh()
    },
    nca: function () {
      return this.$i
    },
    Yga: function (a) {
      this.$i = a;
      this.zIndex = this.$i[0].oi || this.zIndex
    },
    pla: function () {
      return this.Y
    },
    hM: function (a) {
      a && (this.Y = a, this.X("coords", a, !0), this.hw || this.zG) && (a.X("radius", this), a.X("center", this), a.X("resolution", this), a.X("strokeWeight", this))
    },
    setStyle: function (a) {
      this.Yga(a);
      this.Bo()
    },
    coordsChanged: function () {
      this.Bo()
    },
    radiusChanged: function () {
      this.Y.rr = this.Y.Qc();
      this.Y.hf = null;
      this.Bo()
    },
    Bo: function (a) {
      this.set("feature", {
        target: this,
        xaa: a,
        rr: this.Y.rr || this.Y.Qc(),
        eea: this.Y.Qc()
      });
      this.Y.rr = this.Y.Qc()
    },
    visibleChanged: function () {
      this.Bo()
    },
    Cla: function (a) {
      for (var b = 0; b < this.$i.length; b += 1) {
        var c = this.$i[b];
        if (a.rb(c.wt(this))) return c
      }
    },
    Lba: function () {
      var a = this.Y,
        b = [];
      a.Vg() === f.pa.Yd.Cz || a.Vg() === f.pa.Yd.Az ? b.push(new f.style.Kd.bc({
        fillColor: "#78cdd1",
        vd: 0.2,
        strokeColor: "#122e29",
        Ua: 0.5,
        Ob: 1
      })) : a.Vg() === f.pa.Yd.ME || a.Vg() === f.pa.Yd.IN || a.Vg() === f.pa.Yd.SE ? b.push(new f.style.Kd.Jn({
        color: "#888888",
        width: 1,
        zIndex: 10
      })) : a.Vg() !== f.pa.Yd.ls && a.Vg() !== f.pa.Yd.TE || b.push(new f.style.Kd.Gg({
        url: f.A.qb + "extra/amap/theme/v1.3/markers/0.png",
        width: 36,
        height: 36,
        rotation: 0,
        doa: -12,
        eoa: -36,
        zIndex: 100
      }));
      return b
    }
  });
  f.Eg.cja = "geometry";
  f.pa.Qf = f.pa.Xd.extend({
    B: function (a, b) {
      this.Na = a;
      this.Fh = b;
      this.hf = null
    },
    Qc: function () {
      if (!this.hf) {
        var a = this.Na[0],
          b = this.Na[1];
        if (this.Fh) this.hf = [a, b, a, b];
        else {
          var c = this.get("radius"),
            d = this.get("resolution") * this.get("strokeWeight") || 0,
            c = c ? c / Math.cos(Math.PI * this.get("center").P / 180) : 0;
          this.hf = [a - c - d, b - c - d, a + c + d, b + c + d]
        }
      }
      return this.hf
    },
    Vg: function () {
      return f.pa.Yd.ls
    }
  });
  f.Q = {
    canvas: {},
    Gd: {},
    of: {},
    Sd: {}
  };
  f.Q.oc = f.ba.extend({
    ga: [f.ka, f.se],
    B: function (a, b) {
      this.q = a;
      this.Fh = a.ia.Fh;
      this.T = b;
      this.h = b.h;
      this.X("display", b)
    },
    Et: function () {
      this.nu && this.nu();
      this.vp();
      this.h = this.T = this.q = null
    },
    Sq: function (a, b) {
      var c = this.zoom,
        d = [],
        e = this.q;
      if (Math.floor(c) !== c) b(d, e);
      else {
        c = [a.x, a.y];
        if (e.Ik) {
          for (var g = e.Jf, h = !0, k = [], l = 0; l < g.length; l += 1) {
            var m = g[l].pg;
            if (m) if (m.parentNode && m.parentNode.parentNode && this.T && m.parentNode.parentNode !== this.T.lj && "none" !== m.parentNode.style.display) {
              var n = f.j.Hx(m),
                m = n[0],
                n = n[1];
              if (m && n) {
                var p = Math.max(Math.abs(g[l].get("offset").x), Math.abs(g[l].get("offset").y)) + Math.max(m, n);
                e.Fe = Math.max(e.Fe, p);
                e.af = Math.max(e.af, p);
                g[l].width = m;
                g[l].height = n
              } else h = !1, k.push(g[l])
            } else h = !1, k.push(g[l])
          }
          h ? (e.Ik = !1, e.Jf = []) : e.Jf = k
        }
        g = Math.max(e.Fe, e.iu || 0) * this.S;
        h = Math.max(e.af, e.iu || 0) * this.S;
        k = 0;
        e.hu && (k = e.hu / Math.cos(Math.PI * this.h.get("center").P / 180));
        h = Math.max(h, k || 0);
        g = Math.max(g, k || 0);
        if (g = e.Li([c[0] - g, c[1] - h, c[0] + g, c[1] + h])) {
          for (var q in g) if (g.hasOwnProperty(q) && (h = g[q], h.get("visible") && !h.get("noSelect"))) if (k = h.Y, k instanceof f.pa.Qf) if (this.Fh) {
            l = this.q.Yj;
            l instanceof Array && (l = "number" === typeof h.Ra.style && l[h.Ra.style] ? l[h.Ra.style] : l[0]);
            var m = l.size.width * this.S,
              n = l.size.height * this.S,
              p = l.anchor.x * this.S,
              r = l.anchor.y * this.S,
              k = k.Na,
              s = l.rotation_,
              u = [c[0], c[1]];
            if (s) {
              var v = (c[0] - k[0]) / this.S,
                x = (c[1] - k[1]) / this.S,
                t = s,
                s = Math.cos(-t),
                y = Math.sin(-t),
                t = v * s - x * y,
                v = v * y + x * s;
              u[0] = k[0] + t * this.S;
              u[1] = k[1] + v * this.S
            }
            m = f.H.vI([
              [u[0] - m + p, u[1] - n + r],
              [u[0] + p, u[1] + r]
            ]);
            f.H.md(m, k) && d.push(h)
          } else if ("undefined" !== typeof k.get("radius")) l = k.Na, l = new f.G(l[0], l[1]), m = new f.G(c[0], c[1]), k = k.get("radius"), "px" === h.get("unit") ? m.Md(l) / Math.pow(2, 20 - this.zoom) < k && d.push(h) : m.Md(l) * Math.cos(h.get("center").P * Math.PI / 180) <= k / this.jn * Math.pow(2, 20 - this.zoom) && d.push(h);
          else {
            if (l = h.get("params"), l.visible) {
              k = k.Na;
              s = l.LB % 360;
              u = [c[0], c[1]];
              s && (v = (c[0] - k[0]) / this.S, x = (c[1] - k[1]) / this.S, t = Math.PI * s / 180, s = Math.cos(-t), y = Math.sin(-t), t = v * s - x * y, v = v * y + x * s, u[0] = k[0] + t * this.S, u[1] = k[1] + v * this.S);
              m = h.width * this.S;
              n = h.height * this.S;
              p = l.offset.x * this.S;
              r = l.offset.y * this.S;
              v = l.verticalAlign;
              switch (l.textAlign) {
                case "center":
                  p -= m / 2;
                  break;
                case "right":
                  p -= m
              }
              switch (v) {
                case "middle":
                  r -= n / 2;
                  break;
                case "bottom":
                  r -= n
              }
              m = f.H.vI([
                [u[0] - m - p, u[1] - n - r],
                [u[0] - p, u[1] - r]
              ]);
              k[0] instanceof Array || (k = [k]);
              for (n = k.length - 1; 0 <= n; n -= 1) if (f.H.md(m, k[n])) {
                l.shape ? this.$x(h, u, k) && d.push(h) : d.push(h);
                break
              }
            }
          } else k.md ? k.md(c) && d.push(h) : k.Gt && 1.8 * k.Gt(c) <= h.get("strokeWeight") * this.S && d.push(h);
          this.Fh ? d.sort(function (a, b) {
            return a.Ej > b.Ej ? -1 : 1
          }) : d.sort(function (a, b) {
            return a.get("isTop") ? -1 : b.get("isTop") ? 1 : a.get("zIndex") > b.get("zIndex") || a.get("zIndex") === b.get("zIndex") && a.Ej > b.Ej ? -1 : 1
          });
          b(d, e)
        } else b([], e)
      }
    },
    $x: function (a, b, c) {
      var d = (b[0] - c[0][0]) / this.S;
      b = (b[1] - c[0][1]) / this.S;
      a = a.get("params");
      c = a.offset;
      var d = [d - c.x, b - c.y],
        e;
      a = a.shape;
      if ("circle" === a.F.type) {
        if (b = a.F.coords[0], c = a.F.coords[1], Math.sqrt((d[0] - b) * (d[0] - b) + (d[1] - c) * (d[1] - c)) <= a.F.coords[2]) return !0
      } else {
        if ("poly" === a.F.type) return e = a.F.coords, e = this.$B(e), f.Mc.md(d, e);
        if ("rect" === a.F.type) return e = a.F.coords, a = e[0], b = e[1], c = e[2], e = e[3], e = [
          [a, b],
          [c, b],
          [c, e],
          [a, e]
        ], f.Mc.md(d, e)
      }
      return !1
    },
    $B: function (a) {
      for (var b = [], c = 0; c / 2 < a.length / 2; c += 2) b.push([a[c], a[c + 1]]);
      return b
    },
    aV: function (a, b, c, d, e, g, h) {
      var k = ["position:absolute;"];
      k.push("top:" + Math.round(c) + "px;");
      k.push("left:" + Math.round(b) + "px;");
      k.push("width:" + Math.round(d) + "px;");
      k.push("height:" + Math.round(e) + "px;");
      1 > g && ("opacity" in a.style ? (k.push("opacity"), k.push(":"), k.push(g), k.push(";")) : 8 <= document.documentMode ? (k.push("-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(opacity="), k.push(Math.ceil(100 * g)), k.push(")';")) : (k.push("filter:alpha(opacity="), k.push(Math.ceil(100 * g)), k.push(");")));
      k.push("z-index:" + h + ";");
      k.join("");
      f.j.AY(a, k.join(""))
    }
  });
  f.Q.Pb = f.ba.extend({
    ga: [f.ka, f.se],
    B: function (a) {
      this.h = a;
      this.lj = a.lj;
      this.K = a.Oa.w;
      this.X("display", a);
      this.X("rotateEnable", a);
      this.X("style", a);
      this.X("hightlight", a)
    },
    jL: function (a) {
      this.qd = a || f.a.rq("ff" + this.h.qd.slice(1))
    },
    Sq: function (a, b, c, d) {
      function e(a, d) {
        a.length && (h[f.a.indexOf(b, d)] = a);
        k -= 1;
        0 >= k && (c(h), k = 0)
      }
      for (var g = b.length, h = [], k = 0, l, m = [], n = 0; n < g; n += 1) l = b[n], l instanceof f.w.Gc && l.get("visible") && (m.push(this.Vq(l)), k += 1);
      for (g = 0; g < m.length; g += 1) m[g].Sq(a, e, d)
    }
  });
  f.iU = {
    Vf: function (a, b) {
      for (var c = [], d = 0, e = a.length; d < e; d += 2) {
        var g = 0,
          g = "str" === b ? f.a.Pc(parseInt(a.substr(d, 2), 16) / (0 === d ? 255 : 1), 3) : f.a.Pc(parseInt(a.substr(d, 2), 16) / 255, 3);
        c.push(g)
      }
      c.push(c.shift());
      return "str" === b ? "rgba(" + c.join(",") + ")" : c
    },
    sX: function (a, b, c) {
      if (b[c]) console.log("customType repeat!!", c);
      else {
        var d = {};
        d.visible = void 0 === a.visible ? !0 : a.visible;
        d.eha = void 0 === a.showLabel ? !0 : a.showLabel;
        d.Wj = void 0 === a.showIcon ? !0 : a.showIcon;
        if (void 0 !== a.color) {
          var e = "",
            g = "";
          a.color && (e = this.Vf(a.color, "str"), g = this.Vf(a.color));
          d.color = {
            canvas: e,
            of: g
          }
        } else d.opacity = a.opacity;
        void 0 !== a.fillColor ? (g = e = "", a.fillColor && (e = this.Vf(a.fillColor, "str"), g = this.Vf(a.fillColor)), d.fillColor = {
          canvas: e,
          of: g
        }) : d.vd = a.fillOpacity;
        void 0 !== a.strokeColor ? (g = e = "", a.strokeColor && (e = this.Vf(a.strokeColor, "str"), g = this.Vf(a.strokeColor)), d.strokeColor = {
          canvas: e,
          of: g
        }) : d.Ua = a.strokeOpacity;
        void 0 !== a.textFillColor ? (g = e = "", a.textFillColor && (e = this.Vf(a.textFillColor, "str"), g = this.Vf(a.textFillColor)), d.zha = {
          canvas: e,
          of: g
        }) : d.Aha = a.textFillOpacity;
        void 0 !== a.textStrokeColor ? (g = e = "", a.textStrokeColor && (e = this.Vf(a.textStrokeColor, "str"), g = this.Vf(a.textStrokeColor)), d.Bha = {
          canvas: e,
          of: g
        }) : d.Cha = a.textStrokeOpacity;
        void 0 !== a.backgroundColor ? (g = e = "", a.backgroundColor && (e = this.Vf(a.backgroundColor, "str"), g = this.Vf(a.backgroundColor)), d.backgroundColor = {
          canvas: e,
          of: g
        }) : d.T9 = a.backgroundOpacity;
        a.texture && (d.hc = f.A.Qb + "://" + a.texture);
        b[c] = d
      }
    },
    CL: function (a, b, c, d) {
      if (a) for (var e in a) if (a.hasOwnProperty(e)) {
        var g = a[e],
          h = e;
        c && (h = c + ":" + e);
        if (g.detailedType) this.sX(g, b, h), this.CL(g.detailedType, b, h, g);
        else if (g.subType) this.CL(g.subType, b, h);
        else {
          if (void 0 !== g.code) {
            for (var k in d) d.hasOwnProperty(k) && void 0 === g[k] && void 0 !== d[k] && "isDetailed" !== k && "detailedType" !== k && (g[k] = d[k]);
            h = c + ":" + g.code
          }
          this.sX(g, b, h)
        }
      }
    },
    styleChanged: function () {
      if (this.h.J.Wg) {
        var a = {};
        this.CL(this.h.get("style"), a);
        this.At = a;
        var a = this.At["regions:land"],
          b = this.At.water,
          c = this.At.sky,
          d, e, g;
        if (a) {
          var h = "rgba(0,0,0,0)";
          if (a.visible) {
            var k = this.Rq(f.a.mY(this.h.qd.substr(1)), a.opacity, a.color);
            k && (h = k, d = this.Ot(f.a.Cr(this.h.qd.substr(1)), a.opacity, a.color))
          }
          this.h.lC = h
        }
        b && b.visible && (e = this.Ot(f.a.Cr(this.h.FB.substr(1)), b.opacity, b.color));
        c && c.visible && (g = this.Ot(f.a.Cr(this.h.Mw.substr(1)), void 0, c.color));
        this.jL && this.jL(d, e, g);
        this.HZ ? this.HZ(this.At) : this.set("display")
      }
    },
    Rq: function (a, b, c) {
      if (a) {
        if (void 0 !== b) return a = a.split(","), a[3] = f.a.Pc(parseFloat(b), 3) + ")", a.join(",");
        if (c) return c.canvas
      }
      return a
    },
    Ot: function (a, b, c) {
      if (a) {
        if (void 0 !== b) return [a[0], a[1], a[2], f.a.Pc(parseFloat(b), 3)];
        if (c) return c.of
      }
      return a
    },
    GC: function (a, b) {
      if (void 0 !== b) {
        var c = this.At[a + ":" + b];
        if (c) return c
      }
      return this.At[a]
    },
    Fj: function (a, b, c, d) {
      var e = null,
        g = a;
      d = d ? this.Rq : this.Ot;
      if (e = this.GC(b)) if (e.visible) {
        var g = 1,
          h = "";
        if (c) if (e.fillColor || e.vd) g = e.vd, h = e.fillColor;
        else {
          if (e.color || e.opacity) g = e.opacity, h = e.color
        } else if (e.strokeColor || e.Ua) g = e.Ua, h = e.strokeColor;
        else if (e.color || e.opacity) g = e.opacity, h = e.color;
        g = d(a, g, h)
      } else g = "";
      this.Ko === b && (g = this.Uq(g || a));
      return g
    },
    Fo: function (a, b, c) {
      c = c ? this.Rq : this.Ot;
      var d = null,
        e = a;
      (d = this.GC(b)) && (e = d.visible ? c(a, d.opacity, d.color) : "");
      this.Ko === b && (e = this.Uq(e || a));
      return e
    },
    Nt: function (a, b, c, d, e) {
      var g = a,
        h = b,
        k = c,
        l = !0,
        m = !0,
        n = 1,
        p = this.GC(d, e);
      p && (p.visible && p.eha ? (g = this.Rq(a, p.Aha, p.zha), h = this.Rq(b, p.Cha, p.Bha), k = this.Rq(c, p.T9, p.backgroundColor), l = p.Wj) : (m = l = !1, g = h = k = ""));
      p = !1;
      this.Ko === d ? p = !0 : void 0 !== e && this.Ko === d + "-" + e && (p = !0);
      p && (g = this.Uq(g || a), h = this.Uq(h || b), k = this.Uq(k || c), n = 1 - 1.6 * this.Yt, m = l = !0);
      return [g, h, k, l, m, n]
    },
    Oq: function (a, b, c, d) {
      var e = null,
        g = a,
        h = b;
      d = d ? this.Rq : this.Ot;
      if (e = this.GC(c)) e.visible ? (g = d(a, e.vd, e.fillColor), h = d(b, e.Ua, e.strokeColor)) : g = h = "";
      this.Ko === c && (b = h || b, g = this.Uq(g || a), h = this.Uq(b));
      return [g, h]
    }
  };
  f.Q.Pb.ob(f.iU);
  f.Q.canvas.Pb = f.Q.Pb.extend({
    B: function (a) {
      arguments.callee.oa.apply(this, arguments);
      this.type = "2D"
    },
    Vq: function (a) {
      if (!a.Q) {
        var b = a.vl(this);
        b && !b.gaa && (a.Q = b)
      }
      return a.Q
    },
    fc: function (a) {
      var b = this.h.lC || this.h.qd;
      this.OL !== b && this.h.J.Wg && (this.h.zY(b), this.OL = b);
      this.h.Oa.no.style.cssText = "";
      for (var c = a.Ya, b = a.W, d = a.size.width, e = a.size.height, g = 0; g < c.length; g += 1) {
        var h = c[g],
          k = this.Vq(h),
          l = c[g].Wm();
        if (k && k.q) if (!l.visible || l.ed[0] > b.zoom || l.ed[1] < b.zoom || h.ta && 0 === h.ta.length) {
          if (k = k.$h()) if (k.length) for (l = 0; l < k.length; l += 1) k[l].parentNode === this.K && this.K.removeChild(k[l]);
          else k.parentNode === this.K && this.K.removeChild(k)
        } else {
          k.fc(a, l);
          var h = k.$h(),
            m, n, p = k.transform;
          if (!p || !h || k.ai && !this.h.J.wa) c[g].Ni && h.parentNode !== this.K && (this.K.appendChild(h), c[g].xb = h);
          else {
            c[g].xb = h;
            h.length || (h = [h], p = [p]);
            for (var q = 0; q < h.length; q += 1) if (m = h[q], n = p[q], !n.Xt) {
              var r = n.translate.x,
                s = n.translate.y;
              c[g].aD || (r = f.a.Pc(r, 2), s = f.a.Pc(s, 2));
              var u = n.scale;
              1E-5 > Math.abs(r) && (r = 0);
              1E-5 > Math.abs(s) && (s = 0);
              var v = [];
              v.push("position:absolute");
              v.push("z-index:" + (n.oi || c[g].get("zIndex")));
              c[g].xx ? (v.push("top:" + Math.floor(e / 2 + s) + "px"), v.push("left:" + Math.floor(d / 2 + r) + "px")) : m.gW ? (v.push("height:" + m.height * u + "px"), v.push("width:" + m.width * u + "px"), v.push("top:" + (e / 2 - s * u) + "px"), v.push("left:" + (d / 2 - r * u) + "px")) : (1 !== u && (v.push(f.j.rp[f.j.rf] + "-origin:" + r + "px " + s + "px"), v.push(f.j.rp[f.j.rf] + ":scale3d(" + u + "," + u + ",1)")), v.push("top:" + Math.floor(e / 2 - s) + "px"), v.push("left:" + Math.floor(d / 2 - r) + "px"), k.Gh && (v.push("height:" + m.height + "px"), v.push("width:" + m.width + "px")));
              k.aD || 1 === l.opacity || "number" !== typeof l.opacity || v.push(f.j.gV(m, l.opacity));
              m.parentNode !== this.K && this.K.appendChild(m);
              f.j.AY(m, v.join(";"))
            }
          }
        }
      }
      a = this.h.Oa.no;
      h = this.h.Oa.w;
      c = this.h.Oa.D;
      f.j.rf && "number" === typeof b.rotation && 0 !== b.rotation ? (a.style[f.j.rf + "Origin"] = d / 2 + "px " + e / 2 + "px", a.style[f.j.rf] = "rotate(" + b.rotation + "deg)", a.style.overflow = "visible", h.style.overflow = "visible", c.style.overflow = "visible") : (a.style.cssText = "", h.style.cssText = "-webkit-transform: translateZ(0);", c.style.cssText = "");
      this.h.Jr = !1
    }
  });
  f.Q.ri = f.Q.oc.extend({
    B: function (a, b) {
      arguments.callee.oa.apply(this, arguments);
      this.X("reload", a, !0);
      var c = a.ia.get("cacheSize");
      if (this.h && this.h.J) {
        var d = this.h.J.get("tileCacheSize");
        d && 0 < d && (c = d)
      }
      this.xa = new f.ff(c);
      this.yi = !1;
      var e = this;
      this.xa.kL.lT(function (a) {
        e.Pv(a)
      });
      this.ec = 1;
      this.mm = 50;
      this.sO = !0;
      this.q.xa = this.xa;
      this.Lj = new f.vz(6, null, a.tJ);
      new f.vz(5, null, a.tJ)
    },
    nu: function () {
      this.clear();
      this.xa.clear();
      this.Ec && (this.Ec.I("tiles", this.wD, this), this.Ec.I("ack", this.vD, this), this.Ec.I("disable", this.uD, this), this.Ec = null);
      this.Gh && f.C.I(this.Qa, "webglcontextlost", this.ty, this);
      this.h.I("zoomend", this.Ii, this);
      this.h.I("moveend", this.Ii, this)
    },
    reloadChanged: function () {
      this.q && (this.q.wa = !1);
      this.xa.clear();
      this.reload = !0;
      this.set("display")
    },
    Ri: function (a, b, c) {
      function d(b) {
        a.loaded = !0;
        e.q && (a.status = "loaded", a.qa = !0, a.sc = b, e.set("display", 0), "function" === typeof c && c())
      }
      var e = this;
      a.status = "loading";
      e.xa.set(a.key, a);
      this.q.yt && this.q.yt.call(this, a, d, function () {
        a.loaded = !0;
        e.q && (a.status = "loaded", a.qa = !0, "function" === typeof c && c())
      })
    },
    vZ: function (a, b, c, d) {
      var e = [];
      c = c || 18;
      b = Math.pow(2, b - c);
      for (var g = 0; g < a.length; g += 1) {
        var h = a[g].ma,
          k = Math.floor(h.x / b),
          h = Math.floor(h.y / b);
        d ? (k = c + "/" + k + "/" + h, h = this.xa.get(k)) : (h = new f.hk(c, k, h), k = h + "", h = new f.Wa(h));
        !e[k] && h && (e.push(h), e[k] = 1)
      }
      return e
    },
    Pk: function (a) {
      for (var b = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : !1, c = a.length - 1; 0 <= c; c -= 1) {
        var d = a[c];
        if (d.length) {
          if (this.q.Tw) {
            for (var e = [], g = d.length - 1; 0 <= g; g -= 1) {
              var h = d[g],
                k = h.ma;
              this.q.h.Rn.Wy(k.x, k.y, k.z) ? e.push(d[g]) : (this.xa.set(h.key, h), h.loaded = !0, h.status = "loaded", h.qa = !0, h.Pa = {})
            }
            d = e;
            a[c] = e;
            if (0 == e.length) continue
          }
          if (this.bi) {
            if (this.h.kz) break;
            e = d[0].ma.z;
            18 < e && (d = this.vZ(d, e));
            this.Kr(d, this.Gh ? 1 : 0);
            for (h = g = 0; g < d.length;) this.QK(d.slice(50 * h, 50 * h + 50), e, b), g += 50, h += 1
          } else {
            var l = this,
              e = function () {
                var a = d.length;
                return function () {
                  if (0 === --a) {
                    var b = {
                      key: "rb",
                      index: 0,
                      id: l.h.J.id
                    };
                    l.q.ia.gi || (f.Zd.te.end(b), f.Zd.te.end(f.extend(b, {
                      index: 1
                    })))
                  }
                }
              }();
            this.Kr(d);
            this.fn += d.length;
            for (g = d.length - 1; 0 <= g; g -= 1) this.Ri(d[g], this.Lj, e)
          }
        }
      }
    },
    St: function (a, b) {
      var c = this.xa.get(a + "");
      c || b || (c = new f.Wa(a.Ab()));
      return c
    },
    bE: function (a, b) {
      return this.ee * Math.pow(2, a - b)
    },
    Pv: function (a) {
      a.Qo && this.Lj.NT(a.Qo);
      a.OD = !1;
      a.loaded = !1
    },
    vt: function (a, b) {
      var c = (2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 0) || this.Ta,
        d = a.nd.x,
        e = a.nd.y,
        g = a.Nb.x,
        h = a.Nb.y;
      new f.G(0, 0);
      var k = this.bE(20, c);
      b && (g = Math.max(b[0], g) - b[0], h = Math.max(b[1], h) - b[1], d = Math.min(b[2], d) - b[0], e = Math.min(b[3], e) - b[1], new f.G(Math.floor(b[0] / k), Math.floor(b[1] / k)));
      d /= k;
      e /= k;
      d = {
        Td: 0 === d % 1 ? d - 1 : Math.floor(d),
        wd: 0 === e % 1 ? e - 1 : Math.floor(e),
        pe: Math.floor(g / k),
        xd: Math.floor(h / k)
      };
      d.MX = d.Td - d.pe + 1;
      d.Hfa = d.wd - d.xd + 1;
      d.z = c;
      d.S = this.S * Math.pow(2, this.zoom - c);
      d.NC = Math.ceil(d.MX / 2);
      return d
    },
    dr: function (a, b, c) {
      return b < a.pe || b > a.Td || c < a.xd || c > a.wd ? !1 : !0
    },
    Kr: function (a, b) {
      if (a.length) {
        var c = this.eb.vc(this.ee << 20 - a[0].ma.z),
          d = Math.floor(c.x),
          e = Math.floor(c.y);
        a.sort(function (a, c) {
          var k = a.ma,
            l = c.ma,
            m = k.x - d,
            k = k.y - e,
            n = l.x - d,
            l = l.y - e;
          return (b ? -1 : 1) * (n * n + l * l - (m * m + k * k))
        })
      }
    },
    clear: function () {
      this.Lj.clear()
    },
    Xl: function (a, b) {
      this.ng = !1;
      this.clear();
      this.Rh = b.Rh;
      this.Qh = b.Qh;
      this.ee = b.ee;
      var c = a.W;
      this.bf = b.bf || a.W.bf;
      this.qh = c.qh;
      this.size = a.size;
      this.rotation = c.rotation;
      this.eb = c.eb;
      this.Aa = a.W.Aa;
      this.zoom && (this.pu = c.zoom > this.zoom ? "in" : c.zoom < this.zoom ? "out" : !1);
      this.Pe = a.Pe;
      this.Hf = a.Hf;
      this.zoom = c.zoom;
      this.ce = c.ce;
      this.Ta = !1 === this.bi && !this.q.PV && this.q.ja ? this.ce + 1 : this.ce;
      this.Ce && this.Ta > this.Ce && (this.Ta = this.Ce);
      this.Sl && this.Ta < this.Sl && (this.Ta = this.Sl);
      this.S = c.S;
      this.Ze = c.Ze;
      c = a.W.Aa;
      this.Kf = this.vt(c, b.H);
      this.em = c.EE ? this.vt(c.EE, b.H) : null;
      var c = this.Kf,
        d = this.Aa.fZ,
        e = null,
        e = d < this.zoom && this.em ? this.em : c,
        g = [],
        h = [],
        k, l = [],
        m = [],
        n = [],
        p = new f.hk(0, 0, 0),
        q, r = this.zoom,
        m = this.pm || "",
        s = {},
        u = {},
        v, x, t, y, A, z;
      this.Lc = 1E6 * Math.random() << 0;
      for (q = m.length - 1; 0 <= q; q -= 1) if (k = m[q], !(k.ws < b.opacity)) if (p.z = k.ma.z, p.x = k.ma.x, p.y = k.ma.y, p.z === this.Ta) s[p + ""] |= 16;
      else if (p.z < this.Ta) {
        if (s[p + ""] |= 64, this.Rh) for (y = this.Ta - p.z, v = Math.max(c.pe, p.x << y), r = Math.min(c.Td, (p.x + 1 << y) - 1), x = Math.max(c.xd, p.y << y), t = Math.min(c.wd, (p.y + 1 << y) - 1), p.z = this.Ta, y = v; y <= r; y += 1) for (p.x = y, A = x; A <= t; A += 1) p.y = A, z = p + "", s[z] |= 32, u[z] = u[z] ? Math.max(k.ma.z, u[z]) : k.ma.z
      } else if (this.Qh) for (v = 1; p.z >= this.Ta;) {
        s[p + ""] |= v;
        v = p.x >> 1;
        x = p.y >> 1;
        r = v << 1;
        t = x << 1;
        k = 0;
        for (y = 2; 0 < y; y -= 1) for (p.x = r + y, A = 2; 0 < A; A -= 1) p.y = t + A, s[p + ""] & 5 && (k += 1);
        p.z -= 1;
        p.x = v;
        p.y = x;
        v = 4 === k ? 4 : 2
      }
      m = [];
      p.z = this.Ta;
      q = !0;
      this.xa.UT();
      for (y = e.pe; y <= e.Td; y += 1) for (p.x = y, A = e.xd; A <= e.wd; A += 1) p.y = A, this.xa.GW("" + p), k = this.St(p), v = !1, k.qa ? (k.Lc = this.Lc, this.dr(c, y, A) && (m.push(k), this.ij && (k.ec !== this.ec || 1 > k.ws) && (v = !0))) : (q = !1, this.dr(c, y, A) && (v = !0), k.status || this.ce !== d || this.em && !this.dr(this.em, y, A) || l.push(k)), v && n.push(k);
      q ? (this.Cx || (this.Cx = !0), this.q.wa || (k = {
        key: this.q.ai ? "rl" : "rb",
        index: 1,
        id: this.h.J.id
      }, this.q.ia.gi || (f.Zd.te.end(k), f.Zd.te.push({
        key: "ftc",
        Dn: m.length,
        id: this.h.J.id
      })))) : this.q.wa = !1;
      this.ng = q;
      m.length && this.Cx && (g.push(m), m.ng = q);
      h.push(l);
      d = !1;
      if (this.Qh) {
        n = n.slice(0);
        e = [];
        for (q = n.length - 1; 0 <= q; q -= 1) k = n[q], s[k.key] & 4 || e.push(k);
        k = b.ed[1];
        for (r = this.Ta + 1; n.length && r <= k; r += 1) {
          m = [];
          l = n;
          n = [];
          p.z = r;
          for (q = l.length - 1; 0 <= q; q -= 1) if (y = l[q], v = s[y.key], v & 7) for (v = y.ma.x << 1, x = y.ma.y << 1, y = 1; 0 <= y; y -= 1) for (p.x = v + y, A = 1; 0 <= A; A -= 1) p.y = x + A, z = p + "", t = this.xa.AD(z), s[z] & 5 && t && t.qa ? (t.tw = !0, t.Lc = this.Lc, m.push(t)) : n.push(new f.Wa(p.Ab()));
          m.length && (d = !0, g.push(m))
        }
        n = e
      }
      if (!d && this.Rh) for (y = !g.length || this.Gh ? b.ed[0] : Math.max(b.ed[0], this.Ta - 2), Math.max(y, this.Ta - this.V4), r = this.Ta - 1; n.length && r >= y; r -= 1) {
        m = [];
        A = {};
        l = n;
        n = [];
        for (q = l.length - 1; 0 <= q; q -= 1) k = l[q], p.z = r, p.x = k.ma.x >> 1, p.y = k.ma.y >> 1, k = this.St(p), A[k.key] || (A[k.key] = 1, v = !1, k.qa && (!this.W6 || s[k.key] & 64) ? (p.x = Math.min(c.Td, Math.max(c.pe, p.x << this.Ta - r)), p.y = Math.min(c.wd, Math.max(c.xd, p.y << this.Ta - r)), p.z = this.Ta, z = p + "", "number" === typeof u[z] && k.ma.z > u[z] ? v = !0 : k.tw = !0, k.Lc = this.Lc, m.push(k)) : v = !0, v && n.push(k));
        m.length && g.push(m)
      }
      this.kr = this.fn = 0;
      this.Pk(h);
      this.bj = g;
      this.q.set("tiles", g);
      this.LL(a, b)
    },
    QI: function (a) {
      var b = a.Bl,
        b = void 0 === b ? {} : b,
        c = a.as,
        d = void 0 === c ? 0 : c,
        c = a.op,
        c = void 0 === c ? 0 : c;
      a = a.H;
      var e = null;
      d ? (b = this.Ta + d, c = this.h.J.getCoordsBoundByZoom(b), e = this.vt(c, a, b)) : (a = this.Kf, d = this.yi, e = {
        pe: a.pe - (!d || b.left ? c : 0),
        Td: a.Td + (!d || b.right ? c : 0),
        xd: a.xd - (!d || b.Yu ? c : 0),
        wd: a.wd + (!d || b.rC ? c : 0)
      });
      return e
    },
    Lx: function (a) {
      var b = this,
        c = a.op,
        d = a.as,
        e = void 0 === d ? 0 : d,
        d = a.mode,
        g = void 0 === d ? 0 : d,
        h = [];
      a = this.QI({
        Bl: a.Bl,
        as: e,
        op: void 0 === c ? 0 : c,
        H: a.H
      });
      c = function () {
        var a = void 0;
        switch (g) {
          case 0:
            a = function (a, c) {
              if (0 <= a && 0 <= c && (a < b.Kf.pe || c < b.Kf.xd || a > b.Kf.Td || c > b.Kf.wd)) {
                var d = new f.hk(b.Ta + e, a, c);
                b.xa.Bc(d.toString()) || h.push(new f.Wa(d, !0))
              }
            };
            break;
          default:
            a = function (a, c) {
              var d = new f.hk(b.Ta + e, a, c);
              b.xa.Bc(d.toString()) || h.push(new f.Wa(d, !0))
            }
        }
        return a
      }();
      for (d = a.pe; d <= a.Td; d++) for (var k = a.xd; k <= a.wd; k++) c(d, k);
      return h
    },
    BF: function () {
      var a = this.h.J;
      return a.HX && a.get("preloadMode") && 200 <= this.xa.ml && this.q.ia.gr()
    },
    LL: function (a, b) {
      var c = a.Bl,
        d = a.Hc,
        e = b.H,
        g = b.ed;
      if (this.BF()) {
        if (d || !this.yi) c = this.Lx({
          Bl: c,
          op: this.yi ? 2 : 1
        }), c.length && this.Pk([c], !0);
        this.Ta >= g[0] + 2 && ("out" === this.pu || !this.yi) && (e = this.Lx({
          as: this.yi ? -2 : -1,
          mode: 1,
          H: e
        }), e.length && this.Pk([e], !0));
        this.yi = !0
      }
    }
  });
  f.Q.Gd.ri = f.Q.ri.extend({
    B: function (a, b) {
      arguments.callee.oa.apply(this, arguments);
      this.mm = 120;
      this.bi = !1;
      this.Df();
      this.Ce = a.Ce;
      this.Sl = a.Sl
    },
    $h: function () {
      return this.xb
    },
    Df: function () {
      this.xb = document.createElement("div");
      this.xb.className = this.q.ia.get("className") || "amap-layer";
      this.Mq = document.createDocumentFragment()
    },
    Br: function (a) {
      var b = Math.pow(2, a.W.zoom - this.qe),
        c = a.W.eb.Va(this.Ro).vc(this.ii);
      this.transform = {
        translate: this.transform.translate.add(c),
        scale: b,
        rotate: 0
      };
      this.eb = a.W.eb
    },
    rI: function (a, b) {
      if (!this.ra || 3E4 < Math.abs(this.eb.x - this.ra.x) / this.S || 3E4 < Math.abs(this.eb.y - this.ra.y) / this.S) this.ra = this.eb;
      this.qe = this.ce;
      this.ii = this.Ze;
      this.hi = !1;
      this.currentTime = +new Date;
      this.dN = b.dN;
      var c = this.Kf;
      this.ij = this.mm && b.TB;
      var d = this.bj,
        e = 256 * c.MX,
        c = 256 * c.Hfa;
      this.Pe = this.zoom << 0 !== this.zoom;
      var g = this.eb.Va(this.ra);
      g.x < -f.a.fb / 2 && (g.x += f.a.fb);
      g.x > f.a.fb / 2 && (g.x -= f.a.fb);
      this.GI = g.vc(this.Ze);
      return [d, e, c, b]
    },
    Cu: function (a, b) {
      var c = this.rI(a, b);
      this.ip.apply(this, c);
      this.Ne(a);
      this.ng && !this.q.wa && (c = this.q, c.ia.gi || f.Zd.te.end({
        key: "rb",
        index: 2,
        id: this.h.J.id
      }), c.wa = !0, c.$c ? c.ha("renderComplete") : (c.$c = !0, c.ha("complete")))
    },
    fc: function (a, b) {
      this.ek = a.ek;
      this.Hf = a.Hf;
      this.Xl(a, b);
      this.Ro && f.l.yj && (a.Pe || a.Hf) ? this.Br(a, b) : this.Cu(a, b);
      this.Ro = this.eb;
      this.hi && this.set("display", 0)
    },
    Ar: function () {
      for (var a = this.xb.childNodes, b = a.length - 1; 0 <= b; b -= 1) a[b] && a[b].ec !== this.ec && this.xb.removeChild(a[b])
    },
    FD: function (a, b) {
      return a.xd === b.xd && a.pe === b.pe && a.wd === b.wd && a.Td === b.Td
    },
    ip: function (a) {
      var b = this.ec;
      this.ec += 1;
      var c = !1,
        d, e, g;
      e = !1;
      var h = [];
      this.ra.x - this.eb.x < -f.a.fb / 2 ? this.ra = new f.G(this.ra.x + f.a.fb, this.ra.y) : this.ra.x - this.eb.x > f.a.fb / 2 && (this.ra = new f.G(this.ra.x - f.a.fb, this.ra.y));
      for (d = a.length - 1; 0 <= d; d -= 1) if (g = a[d], g.length) {
        e = g[0].ma.z;
        for (var k, l, m = this.bE(this.ce, e), n = g.length - 1; 0 <= n; n -= 1) {
          l = g[n];
          this.gY(l);
          if (!l.Fc && this.ra === l.ra && l.qe === this.qe) {
            var p = l.sc;
            if (p && p.parentNode === this.xb && 1 === l.ws) {
              h.push(l);
              p.ec = this.ec;
              l.ec = this.ec;
              continue
            }
          }
          l.ra = this.ra;
          l.qe = this.qe;
          k = l.ma;
          var c = !0,
            q = (new f.G((k.x << 20 - e) * this.ee, (k.y << 20 - e) * this.ee)).Va(this.ra),
            q = q.vc(this.Ze);
          q.x = Math.floor(q.x);
          q.y = Math.floor(q.y);
          var r = 1;
          if (!l.jP || this.sO && l.ec !== b) l.jP = this.currentTime;
          this.ij && !l.tw ? (p = Math.max(0, Math.abs(k.z - this.zoom) - 1), r = Math.min(1, (this.currentTime - l.jP) / (1 / Math.pow(1.32, p) * this.mm)), 1 !== r && (this.hi = !0)) : l.tw = !1;
          l.ec = this.ec;
          l.ws = r;
          l.qa ? (p = l.sc, !p && l.Fc && l.Fc.sc && (p = l.Fc.sc), 0 !== r && p && (this.aV(p, q.x, q.y, m, m, r, k.z), p.parentNode !== this.xb && (f.l.Dh && "overlayer" === this.q.get("type") && (p.style.display = "none"), this.Mq.appendChild(p)), p.ec = this.ec, l.ce = this.ce, h.push(l))) : l.Lc = null
        }
        e = !0
      }
      1 < a.length && (this.hi = !0);
      this.pm = h;
      this.Ar();
      this.xb.appendChild(this.Mq);
      return c || !e
    },
    gY: function () { },
    Ne: function () {
      this.transform = {
        translate: this.GI,
        scale: Math.pow(2, this.zoom - this.ce),
        rotate: 0
      }
    }
  });
  window.CanvasRenderingContext2D && (window.CanvasRenderingContext2D.prototype.XI = function (a, b, c, d, e) {
    "undefined" === typeof e && (e = [10, 10]);
    this.moveTo(a, b);
    var g = c - a,
      h = d - b,
      k = Math.floor(Math.sqrt(g * g + h * h));
    d = g / k;
    c = h / k;
    e.KK = 0;
    for (var l = [], g = this.mC, m = 0, n = 0, p = !1, q = h = 0; q < e.length; q += 1) e.KK += e[q], l[q] = {
      mJ: e[q] * d,
      nJ: e[q] * c,
      cD: h += e[q]
    }, g -= e[q], 0 > g && !p && (m = q, n = -g, p = !0);
    for (p = 0; n + p <= k;) n < e[m] ? (g = n * d, h = n * c) : (g = l[m].mJ, h = l[m].nJ), a += g, b += h, this.Ty ? this.moveTo(a, b) : this.lineTo(a, b), p += n, this.Ty = !this.Ty, n = e[(m + 1) % e.length], m = (m + 1) % e.length;
    k -= p;
    a += k * d;
    b += k * c;
    this.Ty ? this.moveTo(a, b) : this.lineTo(a, b);
    this.mC = (this.mC + p + k) % e.KK
  }, window.CanvasRenderingContext2D.prototype.oaa = function (a, b, c, d) {
    "undefined" === typeof d && (d = [10, 10]);
    var e = 2 * Math.PI * c,
      g = 0 >= d ? e : Math.round(e / (d[0] + d[1])),
      h = (d[0] + d[1]) / e * 2 * Math.PI;
    d = d[0] / e * 2 * Math.PI;
    for (e = 0; e < g; e += 1) this.beginPath(), this.arc(a, b, c, e * h, e * h + d), this.stroke()
  });
  f.Q.Sd.gj = f.Q.ri.extend({
    B: function (a, b) {
      arguments.callee.oa.apply(this, arguments);
      this.Df()
    },
    bK: function () {
      return this.mb.zM
    },
    $h: function () {
      return this.xb
    },
    Df: function () {
      this.xb = document.createElement("div");
      this.xb.className = "amap-markers";
      this.mb = new f.Q.Sd.Gc(this.xb);
      this.mb.q = this.q;
      this.T.K.appendChild(this.xb)
    },
    xp: function (a, b) {
      this.Mq = b.Mq;
      this.du = b;
      this.bf = a.W.bf;
      this.S = a.W.S;
      this.zoom = a.W.zoom;
      this.size = a.size;
      this.Aa = a.W.Aa;
      this.jn = a.S;
      this.hb = a.W.eb;
      this.qh = a.W.qh;
      var c = !1;
      if (!this.ra || 3E4 < Math.abs(this.hb.x - this.ra.x) / this.S || 3E4 < Math.abs(this.hb.y - this.ra.y) / this.S) c = !0;
      if (c || this.zoom << 0 !== this.zoom || this.qe !== this.zoom) this.ra = this.hb, this.qe = this.zoom
    },
    Yq: function (a) {
      var b = a.W.Aa.Ub.y * this.S;
      a = a.W.Aa.Ub.x * this.S;
      return [this.hb.x - a, this.hb.y - b, this.hb.x + a, this.hb.y + b]
    },
    Ar: function () {
      if (this.xg && this.xg) for (var a in this.xg) if (this.xg.hasOwnProperty(a)) {
        var b = this.xg[a];
        b.Lc !== this.Lc && b.ea && this.T.lj.appendChild(b.ea)
      }
    },
    fc: function (a, b) {
      this.Lc = 1E6 * Math.random() << 0;
      this.xp(a, b);
      this.W = a.W;
      this.size = a.size;
      var c = this.q;
      this.ee = 256;
      var d, e;
      e = this.Yq(a);
      var g = 0;
      c.Ik && (g = 50 * this.S);
      e[0] -= this.q.Fe * this.S + g;
      e[1] -= this.q.af * this.S + g;
      e[2] += this.q.Fe * this.S + g;
      e[3] += this.q.af * this.S + g;
      c = c.Li(e);
      for (d in c) c.hasOwnProperty(d) && (c[d].Lc = this.Lc, c[d].xW = this);
      this.Ar(c);
      this.xp.call(this.mb, a, b);
      this.mb.Jy(c);
      this.xg = c;
      this.Ne(a)
    },
    Ne: function () {
      var a = Math.pow(2, this.zoom - this.ce);
      this.transform = {
        translate: this.ra.Va(this.hb).vc(this.S),
        scale: a,
        rotate: 0
      }
    }
  });
  f.Q.Sd.Gc = f.ba.extend({
    B: function (a) {
      this.Vi = a
    },
    Jy: function (a, b) {
      var c = document.createDocumentFragment(),
        d = b && b.wK ? null : {},
        e = !0,
        g;
      for (g in a) if (a.hasOwnProperty(g)) {
        var h = a[g],
          k, l = h.get("params");
        if (h.ea) k = h.ea;
        else {
          k = f.j.create("div");
          k.className = "amap-marker";
          var m = l.pg,
            n = l.KY;
          m && k.appendChild(m);
          n && k.appendChild(n);
          h.ea = k;
          h.pg = m;
          if (n = l.title) m.title = n;
          this.q.Ik = !0; - 1 === f.a.indexOf(this.q.Jf, h) && this.q.Jf.push(h);
          h.Ug = !0
        }
        var m = l.offset,
          n = m.x,
          p = m.y,
          q = l.textAlign,
          r = l.verticalAlign,
          m = !1;
        if ("left" !== q || "top" !== r) if (k.parentNode !== this.Vi && d && (m = !0, d[g] = h, e = !1), !m) {
          var s = f.j.Hx(h.pg),
            u = s[0],
            s = s[1];
          switch (q) {
            case "center":
              n -= u / 2;
              break;
            case "right":
              n -= u
          }
          switch (r) {
            case "middle":
              p -= s / 2;
              break;
            case "bottom":
              p -= s
          }
        }
        if (h.Ug) u = [], r = this.vo(h.Y.Na), h.ra = this.ra, s = l.nN, q = Math.round(r[1] + p + s.y), r = Math.round(r[0] + n + s.x), u.push("top:" + q + "px"), u.push("left:" + r + "px"), u.push("z-index:" + (l.mW ? this.q.wn + 10 : l.zIndex)), f.l.ne || u.push(f.j.rV(k, l.LB, {
          x: -n,
          y: -p
        })), u.push("display:" + (l.visible ? "block" : "none") + ";"), k.style.cssText = u.join(";"), (n = l.label) && n.content && (l = l.qW, r = q = 0, n.offset && (q = n.offset.y + "px", r = n.offset.x + "px"), l.style.top = q, l.style.left = r, k.appendChild(l));
        else if (h.S_ || this.zoom << 0 !== this.zoom || h.zoom !== this.zoom || k.parentNode !== this.Vi || h.ra !== this.ra) r = this.vo(h.Y.Na), h.ra = this.ra, s = l.nN, q = Math.round(r[1] + p + s.y), r = Math.round(r[0] + n + s.x), k.style.top = q + "px", k.style.left = r + "px";
        h.zoom = this.zoom;
        k.parentNode !== this.Vi && (f.l.Dh && f.a.iepngFix(k), c.appendChild(k), h.Ug = m);
        k.yw = this.Vi
      }
      this.Vi.appendChild(c);
      e || this.Jy(d, {
        wK: !0
      })
    },
    vo: function (a) {
      return [(a[0] - this.ra.x) / this.S, (a[1] - this.ra.y) / this.S]
    }
  });
  var zc = f.A,
    Ic = f.l,
    Xb = f.ba.Eq,
    Jc = f.pfa,
    da = document,
    Kc = !0,
    Lc = [];
  Ic.Me && Lc.push("touch");
  Ic.Z || Lc.push("mouse");
  Ic.Uy && (Lc.push("vectorlayer", "overlay"), Ic.bm ? Lc.push("wgl") : Lc.push("cmng", "cgl"));
  if (Jc) {
    for (var Mc = [], Nc = Jc.split(","), Oc = 0; Oc < Nc.length; Oc += 1) {
      var Pc = Nc[Oc];
      Xb[Pc] && Mc.push.apply(Mc, Xb[Pc]);
      Mc.push(Pc)
    }
    Lc = Lc.concat(Mc)
  }
  Lc.push("sync");
  if (Ic.Si) {
    var Qc = !0,
      Rc = [],
      Sc = [];
    try {
      for (var Oc = 0, Tc = Lc.length; Oc < Tc; Oc++) {
        var Uc = JSON.parse(localStorage.getItem("_AMap_" + Lc[Oc]));
        if (Uc && Uc.version === zc.Jh) Rc.push(Uc.script), Uc.css && Sc.push(Uc.css);
        else {
          Rc = void 0;
          Qc = !1;
          break
        }
      }
    } catch (Vc) {
      Rc = Sc = void 0, Qc = !1
    }
    if (Qc) try {
      Sc.length && Wc();
      var Xc = Rc.join(";");
      eval(Xc)
    } catch (Yc) {
      Kc = !1
    } else Kc = !1
  } else Kc = !1;
  if (Kc) for (Oc = 0; Oc < Lc.length; Oc += 1) f.gb.ux(Lc[Oc]).status = 1;
  else zc.iy = !1, Zc();

  function $c() {
    for (var a = da.getElementsByTagName("script"), b, c = 0; c < a.length; c += 1) if (0 === a[c].src.indexOf(zc.qb + "/maps?")) {
      b = a[c];
      break
    }
    return zc.yc || b && b.async
  }
  function Zc() {
    var a = zc.qb + "/maps/modules?v=" + zc.lt + "&key=" + zc.key + "&vrs=" + zc.Jh + "&m=" + Lc.join(",");
    //TODO 指定本地的插件地址		crossorigin="anonymous"
    a = offlineMap.baseUrl + 'extra/amap/js/plugins.js';
    $c() ? ad(a) : (da.write('<script  id="amap_plus_js" src="' + a + '" type="text/javascript">\x3c/script>'), setTimeout(function () {
      da.getElementById("amap_plus_js") || ad(a)
    }, 1))
  }

  function ad(a) {
    var b = da.createElement("script");
    b.charset = "utf-8";
    b.src = a;
    b.id = "amap_plus_js";
    (a = da.head || da.getElementsByTagName("head")[0] || da.body) && a.appendChild(b)
  }

  function Wc() {
    var a = Sc.join("\n"),
      b = da.createElement("style");
    b.type = "text/css"; - 1 === zc.qb.indexOf("webapi.amap.com") && (a = a.replace(/webapi.amap.com/gi, zc.qb.split("://")[1]));
    "https" === zc.Qb && (a = a.replace(/http:/gi, "https:"));
    if (b.styleSheet) {
      var c = function () {
        try {
          b.styleSheet.cssText = a
        } catch (c) { }
      };
      b.styleSheet.disabled ? setTimeout(c, 10) : c()
    } else b.appendChild(da.createTextNode(a));
    c = da.head || da.getElementsByTagName("head")[0];
    2 > c.childNodes.length ? c.appendChild(b) : c.insertBefore(b, c.childNodes[1])
  };
})(["8afbcd8006fcd36a22136ef20a12456a", [112.721177, 34.262109, 114.220961, 34.989506, 113.665412, 34.757975],
  offlineMap.baseUrl /*"http://webapi.amap.com"*/,
  1, "1.4.6", null, "410100", "Map3D,AMap.ControlBar,AMap.Scale,AMap.MouseTool,AMap.Weather",
  true, true, true, true, "1557836070-1"])
