text:
import e from "map-promisified";
var t = {
    methods: {
      $_emitEvent(e, t = {}) {
        this.$emit(e, { map: this.map, component: this, ...t });
      },
      $_emitMapEvent(e, t = {}) {
        this.$_emitEvent(e.type, { mapboxEvent: e, ...t });
      }
    }
  },
  a = {
    resize: { name: "resize" },
    webglcontextlost: { name: "webglcontextlost" },
    webglcontextrestored: { name: "webglcontextrestored" },
    remove: { name: "remove" },
    movestart: { name: "movestart" },
    load: { name: "load" },
    contextmenu: { name: "contextmenu" },
    dblclick: { name: "dblclick" },
    click: { name: "click" },
    touchcancel: { name: "touchcancel" },
    touchmove: { name: "touchmove" },
    touchend: { name: "touchend" },
    touchstart: { name: "touchstart" },
    dataloading: { name: "dataloading" },
    mousemove: { name: "mousemove" },
    mouseup: { name: "mouseup" },
    mousedown: { name: "mousedown" },
    sourcedataloading: { name: "sourcedataloading" },
    error: { name: "error" },
    data: { name: "data" },
    styledata: { name: "styledata" },
    sourcedata: { name: "sourcedata" },
    mouseout: { name: "mouseout" },
    styledataloading: { name: "styledataloading" },
    moveend: { name: "moveend" },
    move: { name: "move" },
    render: { name: "render" },
    zoom: { name: "zoom" },
    zoomstart: { name: "zoomstart" },
    zoomend: { name: "zoomend" },
    boxzoomstart: { name: "boxzoomstart" },
    boxzoomcancel: { name: "boxzoomcancel" },
    boxzoomend: { name: "boxzoomend" },
    rotate: { name: "rotate" },
    rotatestart: { name: "rotatestart" },
    rotateend: { name: "rotateend" },
    dragend: { name: "dragend" },
    drag: { name: "drag" },
    dragstart: { name: "dragstart" },
    pitch: { name: "pitch" },
    idle: { name: "idle" }
  },
  i = {
    container: {
      type: [String, HTMLElement],
      default: () => "map-" + ("" + Math.random()).split(".")[1]
    },
    accessToken: { type: String, default: void 0 },
    minZoom: { type: Number, default: 0 },
    maxZoom: { type: Number, default: 22 },
    mapStyle: { type: [String, Object], required: !0 },
    hash: { type: [Boolean, String], default: !1 },
    interactive: { type: Boolean, default: !0 },
    bearingSnap: { type: Number, default: 7 },
    pitchWithRotate: { type: Boolean, default: !0 },
    clickTolerance: { type: Number, default: 3 },
    attributionControl: { type: Boolean, default: !0 },
    customAttribution: { type: [String, Array], default: null },
    logoPosition: {
      type: String,
      default: "bottom-left",
      validator: e =>
        ["top-left", "top-right", "bottom-left", "bottom-right"].includes(e)
    },
    failIfMajorPerformanceCaveat: { type: Boolean, default: !1 },
    preserveDrawingBuffer: { type: Boolean, default: !1 },
    refreshExpiredTiles: { type: Boolean, default: !0 },
    maxBounds: { type: Array, default() {} },
    scrollZoom: { type: [Boolean, Object], default: () => !0 },
    boxZoom: { type: Boolean, default: !0 },
    dragRotate: { type: Boolean, default: !0 },
    dragPan: { type: Boolean, default: !0 },
    keyboard: { type: Boolean, default: !0 },
    doubleClickZoom: { type: Boolean, default: !0 },
    touchZoomRotate: { type: [Boolean, Object], default: () => !0 },
    trackResize: { type: Boolean, default: !0 },
    center: { type: [Object, Array], default: void 0 },
    zoom: { type: Number, default: 0 },
    bearing: { type: Number, default: 0 },
    pitch: { type: Number, default: 0 },
    bounds: { type: [Object, Array], default: void 0 },
    fitBoundsOptions: { type: Object, default: void 0 },
    renderWorldCopies: { type: Boolean, default: !0 },
    RTLTextPluginUrl: { type: String, default: void 0 },
    light: { type: Object, default: void 0 },
    tileBoundaries: { type: Boolean, default: !1 },
    collisionBoxes: { type: Boolean, default: !1 },
    repaint: { type: Boolean, default: !1 },
    transformRequest: { type: Function, default: null },
    maxTileCacheSize: { type: Number, default: null },
    localIdeographFontFamily: { type: String, default: null },
    collectResourceTiming: { type: Boolean, default: !1 },
    fadeDuration: { type: Number, default: 300 },
    crossSourceCollisions: { type: Boolean, default: !0 }
  };
const r = {
  maxBounds(e) {
    this.map.setMaxBounds(e);
  },
  minZoom(e) {
    this.map.setMinZoom(e);
  },
  maxZoom(e) {
    this.map.setMaxZoom(e);
  },
  mapStyle(e) {
    this.map.setStyle(e);
  },
  collisionBoxes(e) {
    this.map.showCollisionBoxes = e;
  },
  tileBoundaries(e) {
    this.map.showTileBoundaries = e;
  },
  repaint(e) {
    this.map.repaint = e;
  },
  zoom(e) {
    this.map.setZoom(e);
  },
  center(e) {
    this.map.setCenter(e);
  },
  bearing(e) {
    this.map.setBearing(e);
  },
  pitch(e) {
    this.map.setPitch(e);
  },
  light(e) {
    this.map.setLigh(e);
  }
};
function s(e, t, a, i) {
  this.initial ||
    (this.$listeners["update:" + e]
      ? (this.propsIsUpdating[e]
          ? ((this._watcher.active = !1),
            this.$nextTick(() => {
              this._watcher.active = !0;
            }))
          : ((this._watcher.active = !0), t(a, i)),
        (this.propsIsUpdating[e] = !1))
      : t(a, i));
}
var o = {
    name: "GlMap",
    mixins: [
      {
        watch: (function() {
          const e = {};
          return (
            Object.entries(r).forEach(t => {
              e[t[0]] = function(e, a) {
                return s.call(this, t[0], t[1].bind(this), e, a);
              };
            }),
            e
          );
        })()
      },
      {
        created() {
          this.actions = {};
        },
        methods: {
          $_registerAsyncActions(t) {
            this.actions = {
              ...e(t),
              stop() {
                this.map.stop();
                const e = {
                  pitch: this.map.getPitch(),
                  zoom: this.map.getZoom(),
                  bearing: this.map.getBearing(),
                  center: this.map.getCenter()
                };
                return (
                  Object.entries(e).forEach(e => {
                    this.$_updateSyncedPropsFabric(e[0], e[1])();
                  }),
                  Promise.resolve(e)
                );
              }
            };
          }
        }
      },
      {
        methods: {
          $_updateSyncedPropsFabric(e, t) {
            return () => {
              this.propsIsUpdating[e] = !0;
              let a = "function" == typeof t ? t() : t;
              return this.$emit("update:" + e, a);
            };
          },
          $_bindPropsUpdateEvents() {
            [
              {
                events: ["moveend"],
                prop: "center",
                getter: this.map.getCenter.bind(this.map)
              },
              {
                events: ["zoomend"],
                prop: "zoom",
                getter: this.map.getZoom.bind(this.map)
              },
              {
                events: ["rotate"],
                prop: "bearing",
                getter: this.map.getBearing.bind(this.map)
              },
              {
                events: ["pitch"],
                prop: "pitch",
                getter: this.map.getPitch.bind(this.map)
              },
              {
                events: ["moveend", "zoomend", "rotate", "pitch"],
                prop: "bounds",
                getter: () => {
                  let e = this.map.getBounds();
                  return (
                    this.$props.bounds instanceof Array && (e = e.toArray()), e
                  );
                }
              }
            ].forEach(({ events: e, prop: t, getter: a }) => {
              e.forEach(e => {
                this.$listeners["update:" + t] &&
                  this.map.on(e, this.$_updateSyncedPropsFabric(t, a));
              });
            });
          },
          $_loadMap() {
            return this.mapboxPromise.then(
              e => (
                (this.mapbox = e.default ? e.default : e),
                new Promise(e => {
                  this.accessToken &&
                    (this.mapbox.accessToken = this.accessToken);
                  const t = new this.mapbox.Map({
                    ...this._props,
                    container: this.$refs.container,
                    style: this.mapStyle
                  });
                  t.on("load", () => e(t));
                })
              )
            );
          },
          $_RTLTextPluginError(e) {
            this.$emit("rtl-plugin-error", { map: this.map, error: e });
          },
          $_bindMapEvents(e) {
            Object.keys(this.$listeners).forEach(t => {
              e.includes(t) && this.map.on(t, this.$_emitMapEvent);
            });
          },
          $_unbindEvents(e) {
            e.forEach(e => {
              this.map.off(e, this.$_emitMapEvent);
            });
          }
        }
      },
      t
    ],
    props: { mapboxGl: { type: Object, default: null }, ...i },
    provide() {
      const e = this;
      return {
        get mapbox() {
          return e.mapbox;
        },
        get map() {
          return e.map;
        },
        get actions() {
          return e.actions;
        }
      };
    },
    data: () => ({ initial: !0, initialized: !1 }),
    computed: {
      loaded() {
        return !!this.map && this.map.loaded();
      },
      version() {
        return this.map ? this.map.version : null;
      },
      isStyleLoaded() {
        return !!this.map && this.map.isStyleLoaded();
      },
      areTilesLoaded() {
        return !!this.map && this.map.areTilesLoaded();
      },
      isMoving() {
        return !!this.map && this.map.isMoving();
      },
      canvas() {
        return this.map ? this.map.getCanvas() : null;
      },
      canvasContainer() {
        return this.map ? this.map.getCanvasContainer() : null;
      },
      images() {
        return this.map ? this.map.listImages() : null;
      }
    },
    created() {
      (this.map = null),
        (this.propsIsUpdating = {}),
        (this.$_containerVNode = null),
        (this.mapboxPromise = this.mapboxGl
          ? Promise.resolve(this.mapboxGl)
          : import("mapbox-gl"));
    },
    mounted() {
      this.$_loadMap().then(e => {
        (this.map = e),
          void 0 !== this.RTLTextPluginUrl &&
            "loaded" !== this.mapbox.getRTLTextPluginStatus() &&
            this.mapbox.setRTLTextPlugin(
              this.RTLTextPluginUrl,
              this.$_RTLTextPluginError
            );
        const t = Object.keys(a);
        this.$_bindMapEvents(t),
          this.$_registerAsyncActions(e),
          this.$_bindPropsUpdateEvents(),
          (this.initial = !1),
          (this.initialized = !0),
          this.$emit("load", { map: e, component: this });
      });
    },
    beforeDestroy() {
      this.$nextTick(() => {
        this.map && this.map.remove();
      });
    },
    render(e) {
      return (
        this.$$_containerVNode ||
          (this.$_containerVNode = e("div", {
            id: this.container,
            ref: "container"
          })),
        e("div", { class: "mgl-map-wrapper" }, [
          this.$_containerVNode,
          this.initialized ? this.$slots.default : null
        ])
      );
    }
  },
  n = {
    methods: {
      $_emitSelfEvent(e, t = {}) {
        this.$_emitMapEvent(e, { control: this.control, ...t });
      },
      $_bindSelfEvents(e, t) {
        Object.keys(this.$listeners).forEach(a => {
          e.includes(a) && t.on(a, this.$_emitSelfEvent);
        });
      },
      $_unbindSelfEvents(e, t) {
        0 !== e.length &&
          t &&
          e.forEach(e => {
            t.off(e, this.$_emitSelfEvent);
          });
      }
    }
  },
  d = {
    mixins: [t, n],
    inject: ["mapbox", "map", "actions"],
    props: { position: { type: String, default: "top-right" } },
    beforeDestroy() {
      this.map && this.control && this.map.removeControl(this.control);
    },
    methods: {
      $_addControl() {
        try {
          this.map.addControl(this.control, this.position);
        } catch (e) {
          return void this.$_emitEvent("error", { error: e });
        }
        this.$_emitEvent("added", { control: this.control });
      }
    },
    render() {}
  },
  h = {
    name: "NavigationControl",
    mixins: [d],
    props: {
      showCompass: { type: Boolean, default: !0 },
      showZoom: { type: Boolean, default: !0 }
    },
    created() {
      (this.control = new this.mapbox.NavigationControl(this.$props)),
        this.$_addControl();
    }
  };
const l = {
  trackuserlocationstart: "trackuserlocationstart",
  trackuserlocationend: "trackuserlocationend",
  geolocate: "geolocate",
  error: "error"
};
var p = {
    name: "GeolocateControl",
    mixins: [t, n, d],
    props: {
      positionOptions: {
        type: Object,
        default: () => ({ enableHighAccuracy: !1, timeout: 6e3 })
      },
      fitBoundsOptions: { type: Object, default: () => ({ maxZoom: 15 }) },
      trackUserLocation: { type: Boolean, default: !1 },
      showUserLocation: { type: Boolean, default: !0 }
    },
    created() {
      const e = this.mapbox.GeolocateControl;
      (this.control = new e(this.$props)),
        this.$_addControl(),
        this.$_bindSelfEvents(Object.keys(l), this.control);
    },
    methods: {
      trigger() {
        if (this.control) return this.control.trigger();
      }
    }
  },
  m = {
    name: "FullscreenControl",
    mixins: [d],
    props: { container: { type: HTMLElement, default: void 0 } },
    created() {
      (this.control = new this.mapbox.FullscreenControl(this.$props)),
        this.$_addControl();
    }
  },
  u = {
    name: "AttributionControl",
    mixins: [d],
    props: {
      compact: { type: Boolean, default: !0 },
      customAttribution: { type: [String, Array], deafault: void 0 }
    },
    created() {
      (this.control = new this.mapbox.AttributionControl(this.$props)),
        this.$_addControl();
    }
  };
const c = { drag: "drag", dragstart: "dragstart", dragend: "dragend" },
  y = { click: "click", mouseenter: "mouseenter", mouseleave: "mouseleave" };
var f = {
  name: "MapMarker",
  mixins: [t, n],
  inject: ["mapbox", "map"],
  provide() {
    const e = this;
    return {
      get marker() {
        return e.marker;
      }
    };
  },
  props: {
    offset: { type: [Object, Array], default: () => [0, 0] },
    coordinates: { type: Array, required: !0 },
    color: { type: String },
    anchor: { type: String, default: "center" },
    draggable: { type: Boolean, default: !1 }
  },
  data: () => ({ initial: !0, marker: void 0 }),
  watch: {
    coordinates(e) {
      this.initial || this.marker.setLngLat(e);
    },
    draggable(e) {
      this.initial || this.marker.setDraggable(e);
    }
  },
  mounted() {
    const e = { ...this.$props };
    this.$slots.marker && (e.element = this.$slots.marker[0].elm),
      (this.marker = new this.mapbox.Marker(e)),
      this.$listeners["update:coordinates"] &&
        this.marker.on("dragend", e => {
          let t;
          (t =
            this.coordinates instanceof Array
              ? [e.target._lngLat.lng, e.target._lngLat.lat]
              : e.target._lngLat),
            this.$emit("update:coordinates", t);
        });
    const t = Object.keys(c);
    this.$_bindSelfEvents(t, this.marker),
      (this.initial = !1),
      this.$_addMarker();
  },
  beforeDestroy() {
    void 0 !== this.map && void 0 !== this.marker && this.marker.remove();
  },
  methods: {
    $_addMarker() {
      this.marker.setLngLat(this.coordinates).addTo(this.map),
        this.$_bindMarkerDOMEvents(),
        this.$_emitEvent("added", { marker: this.marker });
    },
    $_emitSelfEvent(e) {
      this.$_emitMapEvent(e, { marker: this.marker });
    },
    $_bindMarkerDOMEvents() {
      Object.keys(this.$listeners).forEach(e => {
        Object.values(y).includes(e) &&
          this.marker._element.addEventListener(e, e => {
            this.$_emitSelfEvent(e);
          });
      });
    },
    remove() {
      this.marker.remove(), this.$_emitEvent("removed");
    },
    togglePopup() {
      return this.marker.togglePopup();
    }
  },
  render(e) {
    return e("div", { style: { display: "none" } }, [
      this.$slots.marker,
      this.marker ? this.$slots.default : null
    ]);
  }
};
const g = { open: "open", close: "close" };
var v = {
    name: "Popup",
    mixins: [t, n],
    inject: {
      mapbox: { default: null },
      map: { default: null },
      marker: { default: null }
    },
    props: {
      closeButton: { type: Boolean, default: !0 },
      closeOnClick: { type: Boolean, default: !0 },
      anchor: {
        validator: e =>
          "string" == typeof e &&
          [
            "top",
            "bottom",
            "left",
            "right",
            "top-left",
            "top-right",
            "bottom-left",
            "bottom-right"
          ].includes(e),
        default: void 0
      },
      offset: { type: [Number, Object, Array], default: () => [0, 0] },
      coordinates: { type: Array },
      onlyText: { type: Boolean, default: !1 },
      showed: { type: Boolean, default: !1 }
    },
    data: () => ({ initial: !0, popup: void 0 }),
    computed: {
      open: {
        get() {
          return void 0 !== this.popup && this.popup.isOpen();
        },
        set(e) {
          this.map &&
            this.popup &&
            (e ? this.popup.addTo(this.map) : this.popup.remove());
        }
      }
    },
    watch: {
      coordinates(e) {
        this.initial || this.popup.setLngLat(e);
      },
      showed(e, t) {
        e !== t && ((this.open = e), this.marker && this.marker.togglePopup());
      }
    },
    created() {
      this.popup = new this.mapbox.Popup(this.$props);
    },
    mounted() {
      this.$_addPopup(), (this.initial = !1);
    },
    beforeDestroy() {
      this.map && (this.popup.remove(), this.$_emitEvent("removed"));
    },
    methods: {
      $_addPopup() {
        if (
          ((this.popup = new this.mapbox.Popup(this.$props)),
          void 0 !== this.coordinates && this.popup.setLngLat(this.coordinates),
          void 0 !== this.$slots.default)
        )
          if (this.onlyText)
            if (3 === this.$slots.default[0].elm.nodeType) {
              let e = document.createElement("span");
              e.appendChild(this.$slots.default[0].elm),
                this.popup.setText(e.innerText);
            } else this.popup.setText(this.$slots.default[0].elm.innerText);
          else this.popup.setDOMContent(this.$slots.default[0].elm);
        this.$_bindSelfEvents(Object.keys(g), this.popup),
          this.$_emitEvent("added", { popup: this.popup }),
          this.marker && this.marker.setPopup(this.popup),
          this.showed &&
            ((this.open = !0), this.marker && this.marker.togglePopup());
      },
      $_emitSelfEvent(e) {
        this.$_emitMapEvent(e, { popup: this.popup });
      },
      remove() {
        this.popup.remove(), this.$_emitEvent("remove", { popup: this.popup });
      }
    },
    render(e) {
      return e("div", { style: { display: "none" } }, [this.$slots.default]);
    }
  },
  $ = [
    "mousedown",
    "mouseup",
    "click",
    "dblclick",
    "mousemove",
    "mouseenter",
    "mouseleave",
    "mouseover",
    "mouseout",
    "contextmenu",
    "touchstart",
    "touchend",
    "touchcancel"
  ];
var b = {
  mixins: [t],
  props: {
    ...{
      sourceId: { type: String, required: !0 },
      source: { type: [Object, String], default: void 0 }
    },
    ...{
      layerId: { type: String, required: !0 },
      layer: { type: Object, required: !0 },
      before: { type: String, default: void 0 }
    },
    ...{
      clearSource: { type: Boolean, default: !0 },
      replaceSource: { type: Boolean, default: !1 },
      replace: { type: Boolean, default: !1 }
    }
  },
  inject: ["mapbox", "map"],
  data: () => ({ initial: !0 }),
  computed: {
    sourceLoaded() {
      return !!this.map && this.map.isSourceLoaded(this.sourceId);
    },
    mapLayer() {
      return this.map ? this.map.getLayer(this.layerId) : null;
    },
    mapSource() {
      return this.map ? this.map.getSource(this.sourceId) : null;
    }
  },
  created() {
    this.layer.minzoom &&
      this.$watch("layer.minzoom", function(e) {
        this.initial ||
          this.map.setLayerZoomRange(this.layerId, e, this.layer.maxzoom);
      }),
      this.layer.maxzoom &&
        this.$watch("layer.maxzoom", function(e) {
          this.initial ||
            this.map.setLayerZoomRange(this.layerId, this.layer.minzoom, e);
        }),
      this.layer.paint &&
        this.$watch(
          "layer.paint",
          function(e) {
            if (!this.initial && e)
              for (let t of Object.keys(e))
                this.map.setPaintProperty(this.layerId, t, e[t]);
          },
          { deep: !0 }
        ),
      this.layer.layout &&
        this.$watch(
          "layer.layout",
          function(e) {
            if (!this.initial && e)
              for (let t of Object.keys(e))
                this.map.setLayoutProperty(this.layerId, t, e[t]);
          },
          { deep: !0 }
        ),
      this.layer.filter &&
        this.$watch(
          "layer.filter",
          function(e) {
            this.initial || this.map.setFilter(this.layerId, e);
          },
          { deep: !0 }
        );
  },
  beforeDestroy() {
    if (this.map && this.map.loaded()) {
      try {
        this.map.removeLayer(this.layerId);
      } catch (e) {
        this.$_emitEvent("layer-does-not-exist", {
          layerId: this.sourceId,
          error: e
        });
      }
      if (this.clearSource)
        try {
          this.map.removeSource(this.sourceId);
        } catch (e) {
          this.$_emitEvent("source-does-not-exist", {
            sourceId: this.sourceId,
            error: e
          });
        }
    }
  },
  methods: {
    $_emitLayerMapEvent(e) {
      return this.$_emitMapEvent(e, { layerId: this.layerId });
    },
    $_bindLayerEvents(e) {
      Object.keys(this.$listeners).forEach(t => {
        e.includes(t) && this.map.on(t, this.layerId, this.$_emitLayerMapEvent);
      });
    },
    $_unbindEvents(e) {
      this.map &&
        e.forEach(e => {
          this.map.off(e, this.layerId, this.$_emitLayerMapEvent);
        });
    },
    $_watchSourceLoading(e) {
      "source" === e.dataType &&
        e.sourceId === this.sourceId &&
        (this.$_emitEvent("layer-source-loading", { sourceId: this.sourceId }),
        this.map.off("dataloading", this.$_watchSourceLoading));
    },
    move(e) {
      this.map.moveLayer(this.layerId, e),
        this.$_emitEvent("layer-moved", { layerId: this.layerId, beforeId: e });
    },
    remove() {
      this.map.removeLayer(this.layerId),
        this.map.removeSource(this.sourceId),
        this.$_emitEvent("layer-removed", { layerId: this.layerId }),
        this.$destroy();
    }
  },
  render() {}
};
const _ = t,
  I = n,
  S = d,
  L = b,
  x = { withEvents: t, withSelfEvents: n, asControl: d, asLayer: b },
  E = o,
  k = h,
  w = p,
  B = m,
  C = u,
  M = {
    name: "ScaleControl",
    mixins: [d],
    props: {
      maxWidth: { type: Number, default: 150 },
      unit: {
        type: String,
        default: "metric",
        validator: e => ["imperial", "metric", "nautical"].includes(e)
      }
    },
    watch: {
      unit(e, t) {
        this.control && e !== t && this.control.setUnit(e);
      }
    },
    created() {
      (this.control = new this.mapbox.ScaleControl(this.$props)),
        this.$_addControl();
    }
  },
  P = {
    name: "GeojsonLayer",
    mixins: [b],
    computed: {
      getSourceFeatures() {
        return e =>
          this.map
            ? this.map.querySourceFeatures(this.sourceId, { filter: e })
            : null;
      },
      getRenderedFeatures() {
        return (e, t) =>
          this.map
            ? this.map.queryRenderedFeatures(e, {
                layers: [this.layerId],
                filter: t
              })
            : null;
      },
      getClusterExpansionZoom() {
        return e =>
          new Promise((t, a) => {
            if (!this.mapSource)
              return a(
                new Error(`Map source with id ${this.sourceId} not found.`)
              );
            this.mapSource.getClusterExpansionZoom(e, (e, i) =>
              e ? a(e) : t(i)
            );
          });
      },
      getClusterChildren() {
        return e =>
          new Promise((t, a) => {
            const i = this.mapSource;
            if (!i)
              return a(
                new Error(`Map source with id ${this.sourceId} not found.`)
              );
            i.getClusterChildren(e, (e, i) => (e ? a(e) : t(i)));
          });
      },
      getClusterLeaves() {
        return (...e) =>
          new Promise((t, a) => {
            if (!this.mapSource)
              return a(
                new Error(`Map source with id ${this.sourceId} not found.`)
              );
            this.mapSource.getClusterLeaves(...e, (e, i) => (e ? a(e) : t(i)));
          });
      }
    },
    created() {
      this.source &&
        this.$watch(
          "source.data",
          function(e) {
            this.initial || this.mapSource.setData(e);
          },
          { deep: !0 }
        ),
        this.$_deferredMount();
    },
    methods: {
      $_deferredMount() {
        if (
          (this.map.on("dataloading", this.$_watchSourceLoading), this.source)
        ) {
          const e = { type: "geojson", ...this.source };
          try {
            this.map.addSource(this.sourceId, e);
          } catch (t) {
            this.replaceSource &&
              (this.map.removeSource(this.sourceId),
              this.map.addSource(this.sourceId, e));
          }
        }
        this.$_addLayer(),
          this.$_bindLayerEvents($),
          this.map.off("dataloading", this.$_watchSourceLoading),
          (this.initial = !1);
      },
      $_addLayer() {
        let e = this.map.getLayer(this.layerId);
        if (e) {
          if (!this.replace)
            return (
              this.$_emitEvent("layer-exists", { layerId: this.layerId }), e
            );
          this.map.removeLayer(this.layerId);
        }
        const t = { id: this.layerId, source: this.sourceId, ...this.layer };
        this.map.addLayer(t, this.before),
          this.$_emitEvent("added", { layerId: this.layerId });
      },
      setFeatureState(e, t) {
        if (this.map) {
          const a = { id: e, source: this.source };
          return this.map.setFeatureState(a, t);
        }
      },
      getFeatureState(e) {
        if (this.map) {
          const t = { id: e, source: this.source };
          return this.map.getFeatureState(t);
        }
      },
      removeFeatureState(e, t, a) {
        if (this.map) {
          const i = { id: e, source: this.source, sourceLayer: t };
          return this.map.removeFeatureState(i, a);
        }
      }
    }
  },
  T = {
    name: "ImageLayer",
    mixins: [b],
    created() {
      this.source &&
        (this.source.coordinates &&
          this.$watch(
            "source.coordinates",
            function(e) {
              this.initial || (e && this.mapSource.setCoordinates(e));
            },
            { deep: !0 }
          ),
        this.source.url &&
          this.$watch(
            "source.url",
            function(e) {
              this.initial ||
                (e &&
                  this.mapSource.updateImage({
                    url: e,
                    coordinates: this.source.coordinates
                  }));
            },
            { deep: !0 }
          )),
        this.$_deferredMount();
    },
    methods: {
      $_deferredMount() {
        const e = { type: "image", ...this.source };
        this.map.on("dataloading", this.$_watchSourceLoading);
        try {
          this.map.addSource(this.sourceId, e);
        } catch (t) {
          this.replaceSource &&
            (this.map.removeSource(this.sourceId),
            this.map.addSource(this.sourceId, e));
        }
        this.$_addLayer(), this.$_bindLayerEvents($), (this.initial = !1);
      },
      $_addLayer() {
        let e = this.map.getLayer(this.layerId);
        if (e) {
          if (!this.replace)
            return (
              this.$_emitEvent("layer-exists", { layerId: this.layerId }), e
            );
          this.map.removeLayer(this.layerId);
        }
        const t = {
          id: this.layerId,
          source: this.sourceId,
          type: "raster",
          ...this.layer
        };
        this.map.addLayer(t, this.before),
          this.$_emitEvent("added", { layerId: this.layerId });
      }
    }
  },
  j = {
    name: "CanvasLayer",
    mixins: [b],
    inject: ["mapbox", "map"],
    props: {
      source: { type: Object, required: !0 },
      layer: { type: Object, default: null }
    },
    computed: {
      canvasElement() {
        return this.mapSource ? this.mapSource.getCanvas() : null;
      }
    },
    watch: {
      coordinates(e) {
        this.initial || this.mapSource.setCoordinates(e);
      }
    },
    created() {
      this.$_deferredMount();
    },
    methods: {
      $_deferredMount() {
        const e = { type: "canvas", ...this.source };
        this.map.on("dataloading", this.$_watchSourceLoading);
        try {
          this.map.addSource(this.sourceId, e);
        } catch (t) {
          this.replaceSource &&
            (this.map.removeSource(this.sourceId),
            this.map.addSource(this.sourceId, e));
        }
        this.$_addLayer(), this.$_bindLayerEvents($), (this.initial = !1);
      },
      $_addLayer() {
        let e = this.map.getLayer(this.layerId);
        if (e) {
          if (!this.replace)
            return (
              this.$_emitEvent("layer-exists", { layerId: this.layerId }), e
            );
          this.map.removeLayer(this.layerId);
        }
        let t = {
          id: this.layerId,
          source: this.sourceId,
          type: "raster",
          ...this.layer
        };
        this.map.addLayer(t, this.before),
          this.$_emitEvent("added", {
            layerId: this.layerId,
            canvas: this.canvasElement
          });
      }
    }
  },
  O = {
    name: "VideoLayer",
    mixins: [b],
    computed: {
      video() {
        return this.map.getSource(this.sourceId).getVideo();
      }
    },
    created() {
      this.source &&
        this.source.coordinates &&
        this.$watch("source.coordinates", function(e) {
          this.initial || this.mapSource.setCoordinates(e);
        }),
        this.$_deferredMount();
    },
    methods: {
      $_deferredMount() {
        const e = { type: "video", ...this.source };
        this.map.on("dataloading", this.$_watchSourceLoading);
        try {
          this.map.addSource(this.sourceId, e);
        } catch (t) {
          this.replaceSource &&
            (this.map.removeSource(this.sourceId),
            this.map.addSource(this.sourceId, e));
        }
        this.$_addLayer(), this.$_bindLayerEvents($), (this.initial = !1);
      },
      $_addLayer() {
        let e = this.map.getLayer(this.layerId);
        if (e) {
          if (!this.replace)
            return (
              this.$_emitEvent("layer-exists", { layerId: this.layerId }), e
            );
          this.map.removeLayer(this.layerId);
        }
        let t = {
          id: this.layerId,
          source: this.sourceId,
          type: "background",
          ...this.layer
        };
        this.map.addLayer(t, this.before),
          this.$_emitEvent("added", { layerId: this.layerId });
      }
    }
  },
  z = {
    name: "VectorLayer",
    mixins: [b],
    computed: {
      getSourceFeatures() {
        return e =>
          this.map
            ? this.map.querySourceFeatures(this.sourceId, {
                sourceLayer: this.layer["source-layer"],
                filter: e
              })
            : null;
      },
      getRenderedFeatures() {
        return (e, t) =>
          this.map
            ? this.map.queryRenderedFeatures(e, {
                layers: [this.layerId],
                filter: t
              })
            : null;
      }
    },
    watch: {
      filter(e) {
        this.initial || this.map.setFilter(this.layerId, e);
      }
    },
    created() {
      this.$_deferredMount();
    },
    methods: {
      $_deferredMount() {
        let e = { type: "vector", ...this.source };
        this.map.on("dataloading", this.$_watchSourceLoading);
        try {
          this.map.addSource(this.sourceId, e);
        } catch (t) {
          this.replaceSource &&
            (this.map.removeSource(this.sourceId),
            this.map.addSource(this.sourceId, e));
        }
        this.$_addLayer(),
          this.$_bindLayerEvents($),
          this.map.off("dataloading", this.$_watchSourceLoading),
          (this.initial = !1);
      },
      $_addLayer() {
        let e = this.map.getLayer(this.layerId);
        if (e) {
          if (!this.replace)
            return (
              this.$_emitEvent("layer-exists", { layerId: this.layerId }), e
            );
          this.map.removeLayer(this.layerId);
        }
        let t = { id: this.layerId, source: this.sourceId, ...this.layer };
        this.map.addLayer(t, this.before),
          this.$_emitEvent("added", { layerId: this.layerId });
      },
      setFeatureState(e, t) {
        if (this.map) {
          const a = {
            id: e,
            source: this.sourceId,
            "source-layer": this.layer["source-layer"]
          };
          return this.map.setFeatureState(a, t);
        }
      },
      getFeatureState(e) {
        if (this.map) {
          const t = {
            id: e,
            source: this.source,
            "source-layer": this.layer["source-layer"]
          };
          return this.map.getFeatureState(t);
        }
      }
    }
  },
  F = {
    name: "RasterLayer",
    mixins: [b],
    created() {
      this.$_deferredMount();
    },
    methods: {
      $_deferredMount() {
        let e = { type: "raster", ...this.source };
        this.map.on("dataloading", this.$_watchSourceLoading);
        try {
          this.map.addSource(this.sourceId, e);
        } catch (t) {
          this.replaceSource &&
            (this.map.removeSource(this.sourceId),
            this.map.addSource(this.sourceId, e));
        }
        this.$_addLayer(),
          this.$_bindLayerEvents($),
          this.map.off("dataloading", this.$_watchSourceLoading),
          (this.initial = !1);
      },
      $_addLayer() {
        let e = this.map.getLayer(this.layerId);
        if (e) {
          if (!this.replace)
            return (
              this.$_emitEvent("layer-exists", { layerId: this.layerId }), e
            );
          this.map.removeLayer(this.layerId);
        }
        let t = {
          id: this.layerId,
          type: "raster",
          source: this.sourceId,
          ...this.layer
        };
        this.map.addLayer(t, this.before),
          this.$_emitEvent("added", { layerId: this.layerId });
      }
    }
  },
  A = f,
  R = v;
export {
  x as $helpers,
  C as MglAttributionControl,
  j as MglCanvasLayer,
  B as MglFullscreenControl,
  P as MglGeojsonLayer,
  w as MglGeolocateControl,
  T as MglImageLayer,
  E as MglMap,
  A as MglMarker,
  k as MglNavigationControl,
  R as MglPopup,
  F as MglRasterLayer,
  M as MglScaleControl,
  z as MglVectorLayer,
  O as MglVideoLayer,
  S as asControl,
  L as asLayer,
  _ as withEvents,
  I as withSelfEvents
};


"Time Trap," shown at the Galaxy Highland 10 movie theater to a crowd spilling into the aisles, was shot beginning in 2015 and had its world premiere in May 2016 at the Seattle International Film Festival. The movie will play again in Austin on Nov. 1 at the Long Center for the Performing Arts.
The movie's plot surrounds a group of archeology college students who stumble into a cave searching for their missing professor, played by Andrew Wilson, Owen Wilson's brother. Cassidy Gifford, daughter of Kathie Lee Gifford, is another notable actor in the movie.
While on their search, the students discover that the cave speeds up time. The students find aliens, cowboys and cavemen who have all stumbled into the cave's time warp.
Dennis said he got the idea for the movie while trying to cast celebrities for another movie he was writing. He gave the actors two weeks to reply to his offers, but the wait was agonizing, Dennis said.
The pair then decided to switch gears and make "Time Trap" their big project, but they needed mentors to guide them through the logistics, Foster said.
"We can get a movie shot and done, but we don't know what the hell to do with it and how to deal with agents and managers and casting directors," Foster said.
"Time Trap's" set also served as a learning opportunity for radio-television-film senior Nic Bonesteel, who worked as an intern in the movie's production design department.
"Time Trap" will play at the Hollywood Film Festival in November and Japan's Yubari International Fantastic Film Festival in March.


text:
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <import resource="applicationContext-nonwired.xml" />

    <bean primary="true" class="org.acme.service.impl.CustomServiceB" />
</beans>

redpajama_set_name: RedPajamaGithub


One sign of a maturing tech ecosystem is the success of a city's serial entrepreneurs, and recently we've seen some of Chicago's most high profile founders and technologists move on to their next companies, and tackle big industries like the Internet of Things, cancer research, and artificial intelligence.
Kickstarter cofounder Charles Adler is giving entrepreneurs, creatives and makers a better place to work with the Center for Lost Arts8; Motorola veterans are spinning out to create new hardware startups like John Renaldi's "invisible wearable" company Jio9; along with many, many other founders who are on to their next project and have committed to building in Chicago.
1871 CEO Howard Tullman added that Chicago also has a handful of who he calls "benchers," successful entrepreneurs who are taking some time off but will likely "be back in the action in a reasonably short time." This list includes Fieldglass founder Jai Shekhawat, AKTA founder John Roa, and Roger Liew, the former CTO of Orbitz. Tullman also said that 1871 isn't just full of first-time founders. There are dozens of serial entrepreneurs working out of the Chicago tech hub.
Of course, as Chicago's tech community matures, it doesn't come without growing pains. Some of the city's most prominent startups have gone through layoffs in recent months, with Avant firing 60 employees and Raise trimming 15% by cutting 45 people. And the city is still well behind other markets like New York and Boston when it comes to total venture funding.
But Chicago is proving to be a city where entrepreneurs are willing to double down after successful exits, and that's good news for the future of Chicago tech.
Jim Dallke is the Associate Editor of ChicagoInno of Streetwise Media, where this article previously appeared.


The Searchers 1956, 119 min.
The Quiet Man 1952, 129 min.
Young Mr. Lincoln 1939, 100 min.
Fort Apache 1948, 125 min.
They Were Expendable 1945, 135 min.
On Dangerous Ground 1952, 82 min.
Wagon Master 1950, 86 min.
John Ford • Starring: Ben Johnson, Joanne Dru, Harry Carey Jr.
A Guy Named Joe 1943, 122 min.
Joan of Arc 1948, 100 min.
The Wings of Eagles 1957, 110 min.
Tall in the Saddle 1944, 87 min.
Operation Pacific 1951, 111 min.
Canyon Passage 1946, 92 min.
Kiss Tomorrow Goodbye 1950, 102 min.
The Long Gray Line 1955, 138 min.
The Fighting Sullivans 1944, 112 min.


text:
Q: MVC4: How to pass custom error log + exception to Elmah? I would like to pass some custom error message along with raised exception to elmah source. for example I have class
public class Activity
{
   public string Id { get; set; }
   public Committee Committee { get; set; }
    public Contact Contact { get; set; }
    [Range(1950, 2050, ErrorMessage = "{0} must be between {1} and {2}.")]
    [DisplayName("Activity End Date")]
    public int? EndDate { get; set; }
    [DisplayName("Source")]
    public string Source { get; set; }
    [DisplayName("Activity Role")]
    public string Role { get; set; }
    [DisplayName("Comments")]
    public string Comments { get; set; }
}

When exception raised, I don't have this class prop values in my exception. So I want pass these values and exception to elmah.
Now I am doing
 catch (Exception exception)
            {

                Elmah.ErrorSignal.FromCurrentContext().Raise(exception);
                return View("Error");
            }

How can I do?

A: Override the ToString() method in your class and raise the Exception as so:
catch (Exception exception)
{
  var newException = new Exception(yourClass.ToString(), exception);
  Elmah.ErrorSignal.FromCurrentContext().Raise(newException);
}

In your Activity class:
public override string ToString()
{
   //return concatenate the property names and values here ....
}

redpajama_set_name: RedPajamaStackExchange


She walks past the iconic Empire State Building and Central Park regularly. She spends her spare time exploring New York City's museums and art galleries. Vancouver-born Laura Tsang credits her time in Kamloops at Thompson Rivers University with getting her to one of the world's most metropolitan cities.
She had visited TRU once before she arrived on campus to study law in 2012. It was close to her family in Vancouver, where she attended York House School, an all-girls school, from kindergarten to Grade 12. After high school, Tsang headed east to the University of Toronto to study political science and economics.
Then she chose to study law and she chose TRU.
"I knew little about Kamloops. It was only the second year the law school had opened," she said.
She developed solid relationships with friends and professors, fostered by the law school's small class sizes. Tsang worked closely with a few professors and particularly Chris Hunt, who she worked for as a research assistant. He was also her supervisor in a directed research course and they worked together on the inaugural issue of the Canadian Journal of Comparative and Contemporary Law.
"He was my reference for jobs and I still keep in touch with him today. He's always been very helpful and supportive of everything I've done, even since I graduated. That's something from TRU that helped me get to New York," she said.
After graduating from TRU in 2015, Tsang articled at Bilkey Law Corp., a boutique insurance litigation firm. Two years later, she packed up and moved to New York City to get her Master's of Law from Fordham University.
"The faculty at TRU have received master's degrees and PhDs from excellent schools. I spoke with a few of my former professors before I applied. They helped me make the decision to pursue a master's degree. I chose Fordham to move into a different kind of law, fashion law," she said.
As narrow as fashion law might seem, it actually encompasses broad areas, such as intellectual property law, corporate law and even environmental law.
For this reason, Tsang is currently completing a clerkship in the commercial division at New York State Supreme Court, New York county, since finishing her master's degree.
As for the city itself, well, she's definitely not in Kamloops any more. She recently saw actor Jake Gyllenhaal seated among dozens of other people waiting to be selected for jury duty.
"The pace of life here is so much faster than Kamloops. It's been go go go since I arrived. I've never been busier in my life, but I've never been happier being busy. I've never worked as hard as I have in New York, but it's all been worth it," said Tsang.
Laura Tsang, who graduated from TRU Law in 2015, grabs a boat to visit the iconic Statue of Lilberty.
Central Park is a wealth of colour in fall, as TRU Law alumnus Laura Tsang discovered now that she's working there.


Featuring Pre Written Sample Text And Professional Designs, These Cover Letter Examples Are The Perfect Place To Start In Creating Your Own Cover Letter.
Nursing Position Cover Letter] New Grad Nurse Cover Letter Example .
Registered Nurse Cover Letter Templates. Sample Nurse Cover Letter Granitestateartsmarket Com .


Eugene, Oregon — Apr. 26, 2010 – VersaLogic Corp., a Eugene, Oregon-based embedded computer company, today announced the "Leopard", an ultra-fast PC/104-Plus embedded computer. Leopard brings the power of the 2nd generation Intel® Core™2 Duo processor (SP9300) to a compact PC/104-Plus form factor.


Every week, The Esports Observer analyzes last week's top Twitch content, and breaks down the major competitions, events and news which are influencing streaming media in video games. The rankings are decided by the total number of hours watched for each title, from Monday to the following Sunday, compiled using Influencer.gg.
The NA LCS Quarterfinals and League of Legends NA Summer Promotion/Relegation Tournament helped the LCS North American Twitch channel grab the most LoL viewership of last week, totalling 1.1 million. Europe was not far behind, with the EU LCS Quarterfinals and its own summer promotion competition pulling in a combined 845K.
There were also two noteworthy regional competitions last week: the 2017 CBLOL Summer Season finals in Brazil, and the play-offs for the 2017 Turkish Champions League Winter. Riot's Twitch channels for both territories each took a strong portion of LoL's weekly viewership (295.5k for Brazil, and 184K for Turkey).
Every news site and deckbuilding directory for Blizzard's digital CCG worked overtime last week, now the latest expansion, Journey to Un'Goro, is live. For those without an Azerothian calendar, it's now the "Year of the Mammoth", the second of the game's annual card rotations. With so many longtime classic tools gone, pro players have been in a mad dash to discover the deck archetypes that will influence the next 12 months of play. This goes to explain why, despite its upped viewer numbers, Hearthstone still possesses less Average Concurrent Channels (350, compared to LoL's 1586). Viewers flock to a handful of top ranked channels, trying to find the only ones who can make sense of the fluctuating meta.
Today also marks the beginning of the Hearthstone Global Games, the title's first ever premier international team tournament. The marketing behind this event, where each nation voted for its representatives, resulted in a lot of hype and controversy. It'll be interesting to see whether it pays off for Hearthstone esports.
Out of the 14.3M hours of CS:GO watched last week, roughly 75% of it was esports content. The finale of the SL i League StarSeries Season 3 was the most watched event on Twitch of the seven days, generating a total of 8.9M hours of viewership across April 4-9 – and that's just on the English and Russian language Starladder channels. It's a big step-up from Season 2, which concluded with a total of 2.7 million aggregate views for its play-offs last September.
As we reported last week, Faceit will be integrating Genius Spots data analytics technology into their next Esports Championship Series. Starting April 14, this will allow the organiser to monitor betting activity, but more importantly, fan engagement.
This breakout Twitch hit may have dropped a few places, but retaining most of its viewership is still astounding for a game that has no major esports presence or year-long awaited expansion. The survival shooter boasts the highest number of average concurrent channels next to only LoL and Bungie's Destiny, and is now a major time-sink for several well-known CS:GO players (such as summit1g, who was once again the most watched streamer of last week, and only played Playerunknown's Battlegrounds).
It was announced yesterday that Battlegrounds had sold over 1 million copies, and though the MMO is subject to the occasional matchmaking, server and sound issues, these evidently aren't enough to deter broadcasters.
Now that the Dota 2 Asia Championship Grand Finals have concluded, Valve's MOBA relied on its usual streamer base and smaller level tournaments to edge into the 5th spot, with Blizzard's Overwatch hanging behind by only 2 million hours of total viewership. Patch 7.05 launched yesterday with only minor gameplay tweaks and no new heroes, so we can expect similar viewer stats until the Kiev Major starts April 27.


I think this came out much better than the way I've always made it before. Haven't made it in a long time so I experimented.
I browned 2lbs of burger with onion powder, granulated garlic, s&p, etc., then drained it.
Then I added a thick layer of mashed potatoes and baked it for a half hour or so on 375. Uh, or was it 400?
Oct 3, 2012 – burger red chile Mexican lasagna?
Sweet and tangy crock pot chicken? Meh.
This entry was posted in burger, casserole, cooking by ABQChristopher.Bookmark the permalink.


text:
Radar Basics: An Overview of Electronic Warfare Part 2
October 30, 2018Mario LaMarche
In the first post of this series, we discussed the history of electronic warfare with an emphasis on the back-and-forth competition to develop systems that grant the owner control over the electromagnetic spectrum. When one country develops a new radar system, its adversary starts working on a jammer. In order to mitigate the effects of the jammer, the radar developer then must design a system that protects the radar from those effects.
This invisible battle over control of the electromagnetic spectrum is critical to success on the battlefield and is the topic of the subsequent posts. However, understanding the technology to jam and deceive radar requires an understanding of the radar systems.
We're all familiar with the applications of radar—that yellow warning light on your mirror telling you someone is in your blind spot, police radar monitoring your speed, images on the news showing the path of a storm. However, for the purpose of understanding electronic warfare, we'll look at the types of radar in three main groups.
Three Types of Radar Systems
Search radars scan over long ranges and wide angles to locate targets. For example, early warning systems can detect distant threats to provide adequate time for a response. These types of radar systems often operate at lower frequencies since range is prioritized over resolution. Because range is so critical, these systems are sometimes installed on-board aircraft to increase the line-of-sight to the horizon.
Tracking radar systems accurately measure a small number of targets—often just one. By operating at a higher frequency, the resolution is increased, providing improved accuracy. Additionally, instead of scanning a large area, they focus on a much smaller region in order to continuously monitor their target. Fire-control radars employ this type of system.
Imaging radars employ a variety of techniques to analyze an area to create an image. For example, airborne synthetic aperture radar (SAR) can be used to create images of landscapes. The below image is of the Teide Volcano in the Canary Islands and was created using a space-based synthetic aperture radar on-board the Space Shuttle Endeavor.
Radar Basics
Now that we've broken down types of radar by their application, we'll move on to describing the details behind their operation.
At its core, radar technology is simple. The transmitter sends a signal towards the target. Some energy from this pulse reflects off of the target and is received by the radar system. Since the radar signals propagate at the speed of light, measuring the elapsed time between sending the original signal and receiving the reflection allows for a calculation of the distance. By confining the radar signal to a narrow beam, the location of the source of the reflection is known.
Doppler Radar The approach above provides the distance to the target and the angle of the target relative to the radar system. However, what if we also need to understand how the target is moving? To do this, we use Doppler radar.
If you aren't familiar with the Doppler effect, it explains why the pitch of a siren appears to change right as the ambulance drives past. In terms of radar, the frequency of the reflected wave is modified as a function of the reflector's velocity. In practice, the velocity of the target is determined by analyzing the phase shift in the received radar signal. Measuring this phase shift requires the transmitted radar pulses to have the same phase offset. While creating coherent pulses is a challenge, it enables a much more capable radar system.
In addition to determining the target's velocity, Doppler radar can filter out reflections from objects with low velocities. In the case of an airborne Doppler radar, this technique is able to discard many of the reflections from the ground. Referred to as "ground clutter rejection", this technique increases the radar's ability to easily identify other airborne targets—especially those flying low near the source of the unwanted ground reflections.
Range and Resolution
Next, we'll describe two key performance metrics of a radar system—range and resolution—and discuss some common techniques to improve them.
Range To understand how to optimize the range of a radar system, we first need to review some of the factors that determine the range. Depending on the gain of the antenna, a percentage of the transmitted power is incident on the target, and depending on the target's radar cross section, some of that power is reflected back to the radar antenna. As the range is increased, less and less power returns to the radar receiver. When the received power of the signal is close to the noise floor, the range of the radar has been exceeded.
Obviously, increasing the transmitted power also increases the received power. One way to accomplish this is through the use of a GaN-based power amplifier. This high-power technology supports increased output power in a small form factor. A less obvious approach is to integrate multiple pulses. Since the noise is roughly random in nature, averaging multiple measurements improves the signal-to-noise ratio and therefore increases the radar's range.
Resolution As described above, tracking radars need to accurately locate the target with high resolution. Operating at a high frequency is one way to improve the resolution of the radar. Another approach is shaping the waveform, using techniques such as pulse compression. Linear frequency modulation, commonly referred to as "chip", is one type of pulse compression. While the details are beyond the scope of this article, they result in the radar receiving narrower pulses, which improve the resolution of the radar.
While much more can be said regarding the functioning of radar systems, this brief introduction provides the necessary background for the subsequent posts. In the next article we present a brief overview of electronic support, followed by posts on the other two main elements of electronic warfare—electronic attack and electronic protection. In terms of radar, electronic support involves locating an adversary's radar system, electronic attack involves degrading an adversary's radar system, and electronic protection involves protecting a radar system from the effects of an adversary's use of electronic attack.
Part 3: Electronic Support

redpajama_set_name: RedPajamaCommonCrawl


To contact Tyson Brown, please log in to your account.
Interested in: Looking for a go getter mind set type of people who want to work from home part time or fulltime.
Not interested in: In people that ARE NOT SERIOUS.


Our new budget accelerator ACA1221ec for the A1200 has reached our resellers and also the first customers. The new card is equipped with a 68ec020-25 processor that operates at slightly more than 28MHz. More technical details can be found in the product description.
With the release of this new accelerator, we hope to reduce the high demand for ACA1233n accelerators. One variant of the ACA1233n is already completely sold out, and the remaining 40MHz version of the ACA1233n is not available in unlimited quantity. With the ACA1221ec, we're offering an alternative for less demanding applications.


text:
Bonanza Boomers
Board index Other Westerns There Were Other Westerns?
Member Celebrations
Happy 12th Anniversary Bonanza Boomers *
Earn Your Own "Letter" Anniversary badge! *
Reader's Choice * Prop Fiction * Winner Fun With Captions *
Winners, Answers, Everything you needed to know is revealed! Without A Trace *
Escape to Ponderosa *
Fun With Art * The Coloring Book * Modern Art new * Paint Me A Picture
ARTastic ~ Members Portfolio's.
Saturday Chat January 25. Celebrating Pernell! Hosted by Tahoe Lee
Meet & Greet and Stuffed in Chat ~ February 1
Oscar Chat February 9
Volunteer to host a future Saturday Night Chat
If you like the westerns we're currently discussing, you may have liked other western TV shows. So why don't we discuss them here! Post about western conventions (non Bonanza), the shows, the actors and anything you want to discuss.
Moderator: Tracy
Who is your favorite Bonanza character?: Adam Cartwright
Location: West Texas
Post by RedShirt » Fri Oct 27, 2017 10:54 pm
Laredo (NBC 1967-1969)
Neville Brand was the "name" star, in the role of Texas Ranger Sgt Reese Bennett. He has a connection to Bonanza via several guest roles, most notably Gunnar Borgstrom, Hoss's Uncle (Spoiler Alert: and the chief of a band of none-too-honest wanderers); he also played Pepper Shannon, and in a smaller role, Doyle.
An avid reader, Brand served in WW2, receiving a Silver Star for gallantry in action; other awards and decorations were the Purple Heart, the Good Conduct Medal, the American Defense Service Medal, the European-African-Middle Eastern Campaign Medal with three Battle Stars, one Overseas Service Bar, one Service Stripe and the Combat Infantryman Badge. In a 1966 interview he explained the Silver Star, stating that withering fire from German machine guns in a hunting lodge kept him and his unit pinned down. "I must have flipped my lid," he said. "I decided to go into that lodge." He was discharged from service in October 1945. The next year he worked on his first film project, for the US Army Signal Corps, along with Charlton Heston. He worked on many movies throughout a lengthy career, including John Wayne's Cahill, US Marshal.
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=33507829 A full list of cast including regulars and guests can be found at: http://www.hollywood.com/tv/laredo-59501139/credits/.
Rangers Chad Smith (Peter Brown) and Joe Riley (William Smith) frequently teased their sergeant about his age (he was in his forties). Captain Parmalee (Philip Carey) often had trouble with Ranger Bennett's somewhat unorthodox reporting style. "Died good. What does that mean?" "Well, Cap'n, he ... he hollered good."
Peter Brown had prior TV success in The Lawman. Ranger Chad Smith hailed from New Orleans originally, and was fond of games of chance. In the second season he often wore a blue cavalry-style shirt, as seen below right, in a photo with a fellow Ranger played by Robert Wolders.
He became involved with writing, directing and acting while stationed in Alaska with the 2nd infantry. He got his big break when, while working at a gas station, he met Jack Warner, who invited him the next day for a screen test. He became a contract player for Warner Brothers Studios. "The Fastest Gun in Hollywood," his biography, gets its title from his championship in an early 1960s magazine-sponsored contest. With TV-western mania at its peak, one American magazine sponsored a contest for actors who portrayed western heroes and villains, who needed the quick-draw skill for the climactic scenes in so many such shows. The magazine held a competiton among some of the stars, firing blanks, aiming not at each other but downrange, and using an electronic timer. Quite a number of cowboy stars showed up to "slap leather." Brown beat them all and won the title of the fastest gun in Hollywood. For the series Laredo, Peter Brown used his real-life horse, Amigo (1965).
Philip Carey (not unlike Bonanza's David Canary) had a long career in soap opera after the show finished its run.
He served in the United States Marine Corps, was wounded as part of the ship's detachment of the USS Franklin during World War II, and served again in the Korean War. After Laredo, Carey guest-starred in an episode of ABC's military-western Custer starring Wayne Maunder in the title role. Carey had played Custer himself in The Great Sioux Massacre (1965) and played Captain Myles Keogh at the Battle of the Little Big Horn in Walt Disney's Tonka in 1959. From 1979 until late 2007, he played the protective Texan patriarch Asa Buchanan on the ABC soap opera, One Life to Live.
William Smith played the shy giant, Ranger Joe Riley, who joined up for protection from a sheriff -- his previous work had been as a gunfighter. The actor is a lifelong bodybuilder; he wasthe final Marlboro Man before cigarette advertising was discontinued on television.
Smith served in the United States Air Force, where he won the 200 pound arm-wrestling championship of the world multiple times as well as the United States Air Force weightlifting championship. Smith is a record holder for reverse-curling his own bodyweight. His trademark arms measured 18½ inches. Smith held a 31-1 record as an amateur boxer and studied martial arts with kenpo instructor Ed Parker for several years. He also played semi-pro football in Germany and competed in motocross and downhill skiing events. One of his earliest leading roles was as Joe Riley, a Texas Ranger on the NBC western series Laredo (1965–1967). Smith's character was good-natured with muscles of steel. In 1967, Smith guest starred as Jude Bonner on James Arness's long-lived western Gunsmoke. Smith was cast as John Richard Parker, brother of Cynthia Ann Parker, both taken hostage in Texas by the Comanche, in the 1969 episode "The Understanding" of the syndicated television series Death Valley Days, which was hosted by Robert Taylor.
The cast varied in the second season with Claude Akins having a recurring role. Robert Wolders also appeared in the later episodes.
These users thanked the author RedShirt for the post (total 2):
Karol • october
A gun is only a tool, like your jackknife; no better 'n no worse than the man who handles it. Any man can pull a trigger. It's not hard. But it takes a big man not to pull one. -- Adam Cartwright
Badges: 202
Who is your favorite Bonanza character?: Adam
Re: Laredo
Post by Karol » Sat Oct 28, 2017 1:35 am
Thanks, Redshirt, for all the informations about the main cast of "Laredo", the pictures and the links!
I can't remember seeing the show on German TV. It was probably one of the few series that were not shown on German television.
These users thanked the author Karol for the post:
Don't worry, things usually work out if you want it enough. (Adam in "The Jackknife")
Don't dream your life - live your dream. (Tommaso Campanella)
Post by Julianna » Sat Oct 28, 2017 10:00 am
Nice summary of the show and actors. Wasn't William Smith in Conan ? I think he played Conan's father. Very short role, but still in the movie with Arnold. (no scenes together)
These users thanked the author Julianna for the post:
Post by RedShirt » Sat Oct 28, 2017 3:23 pm
Y'all are very welcome. I hope I did this right.
It's tough to find pictures that aren't too big for the board!
Julianna wrote: Nice summary of the show and actors. Wasn't William Smith in Conan ? I think he played Conan's father. Very short role, but still in the movie with Arnold. (no scenes together)
I think that's right.
Pretty close to the last thing he did, if I remember correctly, is a guest role on Walker, Texas Ranger.
Sort of a "Silence of the Lambs" type character, who really shook up Washoe's view of the world before the episode ended.
Many of the kinds of roles William Smith used to be in go to actors like Danny Trejo now (and if you've seen some of the recent cellphone commercials with Trejo, it's a bit of a shock what a comedian he can be!).
Who is your favorite Bonanza character?: Ben, Adam, Hoss, Joe
Location: Florida, but my heart will always be in Fairport, NY.
Post by Tracy » Sat Oct 28, 2017 6:13 pm
Great summary! Thank you!
These users thanked the author Tracy for the post:
Return to "There Were Other Westerns?"
↳ The Board Room
↳ Bonanza Episodes
↳ Season 1
↳ Season 10
↳ Bonanza Viewpoints
↳ Bonanza: Behind The Scenes
↳ Bonanza In Print
↳ About Boomers' Fan Fiction
↳ The Writer's Workshop
↳ Ye Olde Writer's Workshop
↳ WIP ~ Fan Fic Works In Progress
↳ Completed WIPs/Abandoned WIPs
↳ Writing Prompts
↳ Poems, Drabbles & Short Stories
↳ The Reading Club
↳ NaNoWriMo
↳ NaNoWriMo Archives
↳ Fan Fiction Weekend 2019
↳ Feedback Corral
↳ Visual Arts
↳ Fun With Art
↳ The Coloring Book
↳ Modern Art
↳ Paint Me A Picture
↳ ARTastic
↳ BoomersTube
↳ Party At The Ponderosa
↳ Lorne Greene's previous birthday celebrations.
↳ Pernell Roberts previous birthday celebrations
↳ Dan Blocker's previous birthday celebrations
↳ Michael Landon's previous birthday celebrations.
↳ David Canary's previous birthday celebrations.
↳ Bonanza Conventions
↳ 10th Anniversary
↳ History Of The Old West
↳ House of Hop Sing
↳ Healthy, Wealthy & Wise
↳ Site Help
↳ Tech Help for outdated help threads
The Men of Bonanza
↳ Ben's Bunkhouse
↳ Adam's Lean-To
↳ HOSSienda
↳ Little Joe's Junction
↳ The Candy Shoppe
Supporting Cast & Guest Stars
↳ Cartwright Friends
↳ Bonanza Guest Stars
The Actors of Bonanza
↳ Lorne Greeneland
↳ Fan Fiction ~ Non Bonanza
↳ Pernell's Place
↳ Dan's Block
↳ Michael's Little House
↳ Canary's Nest
Other Westerns
↳ Zorro
↳ The High Chaparral
↳ There Were Other Westerns?
This web site is officially licensed by Bonanza Ventures, Inc. The name "BONANZA" is a registered trademark of Bonanza Ventures, Inc., and is used with permission. Bonanza Ventures, Inc., is not responsible for the content of this web site.
The names and likenesses of the characters appearing in the "BONANZA" and "THE PONDEROSA" photoplays, and any images and pictures from such photoplays, are collectively the copyrighted and trademark-protected property of Bonanza Ventures, Inc. and NBC Universal Inc. (as successor-in-interest to the National Broadcasting Company, Inc.), and are made available only for private, non-commercial use. Please take notice that any use of this material for any commercial use, or any unauthorized display, distribution, transmission or other use of this material, is expressly prohibited and constitutes a violation of the rights of Bonanza Ventures, Inc., and NBC Universal Inc. All images from "BONANZA" are Copyright © 1959-2020 Bonanza Ventures, Inc. All rights reserved. BONANZA ©, THE PONDEROSA ©, and all related indicia are trademarks of Bonanza Ventures, Inc. Used with permission. Bonanza Ventures, Inc. is the official worldwide rights holder to the television programs created by David Dortort: "BONANZA" (and its prequel, "THE PONDEROSA"), and "THE HIGH CHAPARRAL." Any person or entity interested in doing anything related to these series and/or its characters must obtain permission first, and may do so by contacting Bonanza Ventures, Inc. through its attorney:
Andrew J. Klyde
141-15 72nd Avenue
New York 11367-2331 U.S.A.
Phone: (718) 261-4128; Fax: (718) 261-4408;
email: AJKLYDE@yahoo.com


Seventeen (세븐틴) is a boy band formed by Pledis Entertainment.
Before debuting, they were originally 17 members thus the name. The group consists of thirteen members who are separated into three sub-units, a 'Hip-Hop Unit', 'Vocal Unit', and 'Performance Unit'.


This weeks article is not about a group/act or a DJ. It´s about a singer. Who can say that they've sung for Chicane, Oceanlab, Markus Schulz & Armin Van Buuren. Ladies and gentlemen. Let me present to you, the queen of vocal trance: Justine Suissa!
1:09 when the main synth starts.
1:37 when the piano comes in.
2:19 when the first break comes in.
2:33 when the main vocals start.
3:01 when the chorus start.
3:26 "… but you left me in the rain" and the main melody starts up again.
5:20 when the second chorus comes in.
Justines career started in 1999 when she did some singing for a track by Chicane called Autumn Tactics. The track did very well so Justine went on tour with Chicane on their Behind The Sun album-tour and performed at various venues/festivals all over the globe.
If you haven't listened to that album, do it now! One of the best albums ever made IMHO with track like No Ordinary Morning, Autumn Tactics, Saltwater, Halcyon and Don't Give Up. Also, listen to The Thrillseekers Remix of Autumn Tactics, absolutely magnificent.
After the touring with Chicane, Justine started working with the Above & Beyond-guys Jono, Tony & Paavo on their side-project Oceanlab. The combination of Justines voice and Oceanlabs great melodies was an instant success. What I understand, the name Oceanlab came from the waterish theme of the first single and the name of the software they used, Wavelab.
The first Oceanlab-single was the 2001-single Clear Blue Water which came with an impressive Ferry Corsten Remix. The single peaked at 48 in the UK Singles Chart.
The followup-single, Sky Falls Down was another dancefloor monster, especially the Armin Van Buuren-remix. 10 minutes and 24 seconds of pure orgazm.
The third Oceanlab-single, Beautiful Together came with a stomping Signum Remix although I prefer the smoother original.
The same year, Justine also sung on Masters & Nickson's wonderful track, Out There (5th Dimension). The track had already been released as an instrumental called 5th Dimension but Justines vocals takes this track to anoother dimension! The track was later re-released in 2008 with a banging Daniel Kandi Remix.
Their biggest Oceanlab-success came with the 2004 single Satellite. It's one of those pure classics that most trancelisteners has sung/screamed the lyrics to when played at a club: It still gives me shivers when hearing it. What I understand, the inspiration for the track came when Paavo's girlfriend was on a trip to Japan and they were missing eachother. The track peaked at no 19 in the UK Singles Chart. Justine's angelic voice together with Oceanlabs great music makes this one of the best vocal tracks ever!
The same year, another big trance anthem was released. Armin Van Buuren featuring Justine Suissa – Burned With Desire. It is another one of those tracks that always gives me chills all over the body. The smooth melody together with Justines amazing voice makes this another must-have. The track is IMHO in the same league as Oceanlab's Satellite when it comes to classic-status.
Speaking of instrumentals turned into vocal tracks, the next one is just one of those. Markus Schulz presents Elevation – Clear Blue did get a vocal-treatment called Somewhere (Clear Blue). The original instrumental is another all-time favourite and the vocals just makes it better!
The 2005 Armin Van Buuren-single Wall Of Sound was another hit, especially the Airbase Remix.
In 2008, Oceanlab released their first album, Sirens Of The Sea and also the single with the same name. The album also contained Breaking Ties, Lonely Girl and On A Good Day, all three major hits.
The album was later re-released as Sirens Of The Sea Remixed with remixes by Gareth Emery, Lange, Oliver Smith, Michael Cassette, Ronski Speed, Martin Roth and Cosmic Gate just to name a few.
In 2010, Markus Schulz did a interpretation of Cass & Slide's old progressive hit, Perception which first was instrumental but later got vocals by Justine. Even if Markus version is really good, I still prefer the original.
The same year, Myon & Shane 54 released their mashup between Oceanlab – On A Good Day & Gareth Emery – Metropolis. The mashup became a huge hit and was played by all major djs.
The last we heard from Justine was the collaboration with Boom Jinx on the smash hit Phenix From The Flame.
Justine has brought us pure quality from day one and her voice still amazes me. The last productions till gives me shivers so I'd say that Justine Suissa will be an artist that will keep on doing her thing for many more years.
Some of the other trance-singers out there have released their own albums, like Jes – High Glow, Susana – Closer & Brave and I hope that Justine Suissa will do her own thing too. She has got some real quality tunes in her baggage and I guess that there is much more to come.
2 Responses to " Classic FTW: Armin Van Buuren feat. Justine Suissa – Burned With Desire "


2) Place a large pot or a Dutch oven over medium-high heat. Season the chicken pieces with salt and pepper. When the pot is hot, add the butter and olive oil. Place the chicken pieces into the pot, skin side down so that they fit snugly yet have room to colour. Turn them after 2 mins then cook for a further 2 mins on the bottom. Remove the chicken to a plate.
3) Add the bacon and cook until golden. Reduce the heat to medium, add the sliced onion, carrot and celery and cook for 2 mins.
4) Blanch pearl onions in a 6 to 8L pot of boiling water 1 min, then drain in a colander. When onions are cool enough to handle, peel. Set aside.
6) Place the sprigs of thyme, pearl onions and the mushrooms into the pot and give them a stir, then return the chicken to the pot. Add the chicken stock and simmer for 5 mins.
7) Add the red wine and the bay leaves; cover the pot and place into the preheated oven for 1 hr and 30 mins, until the chicken is cooked through and quite tender.
8) Serve straight from the pot with parsnip and turnip mash, if desired.


There are many questions people have about filing bankruptcy. Here are five common ones that are consistently asked during the initial consultation. Remember, meeting with us is the best way to assess your situation.
1. Will anyone find out that I filed?
The easiest way for someone to know you filed bankruptcy is for you to tell them. It is a public record, but unless you are a well-known celebrity or major corporation, most people don't care enough to find out. Also, it does not carry the same stigma as before, especially since the "Great Recession." You may be surprised by how many people you already know that have filed for bankruptcy.
2. Can I eliminate all of my debts?
In many cases, you can eliminate all of your debts. However, certain types of debts, like student loans, child support and alimony, debts incurred as the result of fraud, and some taxes, usually cannot be discharged.
3. Will I lose everything I have?
The process is designed to give you a fresh start, not to leave you destitute! To that end, you are allowed "exemptions" to protect certain assets. The exemptions and their amounts vary from state to state, but you will not lose everything. On the contrary, you may be surprised by how much you can keep.
4. How long before I can buy a house, or a car, or get a credit card?
Getting a car loan is easy if you have a paycheck and a pulse, and you are willing to pay the high interest rates. Credit cards will become available soon after you file, with higher fees and rates as well. For financing a house, it can take longer, but after three years you should qualify for conventional financing. The most important thing is actively rebuilding your credit without becoming a "repeat offender." Missing payments after a bankruptcy discharge indicates financial responsibility issues. Therefore, it is imperative to pay your bills on time and work hard to build and maintain good credit.
5. Am I a "loser" for filing bankruptcy?
I have yet to meet a client who is a "loser." More often than not, people come to us after a serious life-changing event, such as a medical emergency, divorce, or job loss. They are hard working people who should have come to us long ago, before they cashed out their retirements, pawned valuables, and paid huge fees for payday loans. They want to pay their bills and be responsible for their debts. I suggest clients project their situation out one year, three years, and five years. What is going to change? Are you going to increase your income? Is a promotion or higher paying employment in the works? Are some obligations ending to ease your burden? Assessing whether you are in a short term lull or a long term abyss can help you decide what action to take.
Find out more information from one of our Manchester bankruptcy attorneys.


A one stop shop for parents by parents to help grow smart building, learning fun for kids through toys and games. We want to encourage our next generation of young engineers, artists, designers, creative thinkers, explorers, and thinking gurus!
Sign-up to receive Clever Wit tips, discount, and other information on services! We encourage kid learning by news for parents from parents!


text:
Q: I'm having trouble trying to select a  HI,

Any ideas why I can't highlight the text in the "blurbedit" or "headlineblack" divs?

I think I did a bit of sloppy coding to get the footer divs to line up horizontally, but that then meant that the top divs can't be selected, which isn't great when one of them is an input field!

check out this example to see what I mean: www.gherkin.co.nz/ff/textarea.html

You can select the text of the three divs at the bottom, but not the ones at the top.

I'm sure it's a very obvious thing but I'm having a hard time trying to spot it...

Homepage Blurb:

    <form method="post">
    <input type="hidden" name="id" value="
    1">
    <textarea name="blurb" cols="40" rows="10" class="box" id="blurbedit">

blurb edit content
    </textarea>
    <input name="update1" type="submit" class="box" id="editbutton" value="Update Article"></form>

    headline content

Footer:

       footer content

    <form method="post">
    <input type="hidden" name="id" value="
    1">
    <textarea name="footer" cols="30" rows="10" class="box" id="footeredit">
footer edit content
    </textarea>

    <input name="update2" type="submit" class="box" id="footerbutton" value="Update Article"></form>

    (footer help)

and here is the css:

.footerhelp{
    width: 300px;
    position: relative;
    left: 475px;
    margin-top:60px;
    top: -270px;
    overflow: hidden;

}
.footer {
    width: 170px;
    padding-top: 20px;
    position:absolute;
}
#blurbedit{
    font-family: Helvetica, Arial, sans-serif;
    font-size:0.8em;
    border: none;
    background:#CCC;
    color:#666;
    padding:10px;
}
#footeredit{
    font-family: Helvetica, Arial, sans-serif;
    font-size:0.8em;
    border: none;
    background:#CCC;
    color:#666;
    padding:10px;
    margin-top:20px;
    margin-left:20px;
    position: relative;
    left: 190px;
    top: 0px;
}
.headlinered {
    font-family: Helvetica, Arial, sans-serif;
    font-size: 1.7em;
    line-height: 140%;
    color: #991200;
    margin-top: 0px;
}
.headlineblack {
    font-family: Helvetica, Arial, sans-serif;
    font-size: 1.7em;
    line-height: 140%;
    margin-top: 5px;
    margin-bottom: 0px;
    width:455px;
}
.home_headline_edit{
    float:left;
    width: 360px;
    margin-right:20px;
}
.container {
    width: 835px;
    margin-right: auto;
    margin-left: auto;
    position: relative;
}
.header2cms {
    width: 455px;
    padding-left: 0px;
    padding-bottom: 40px;
    float: left;
    margin-left: -50px;
}
.bodyblack {
    font-family: Helvetica, Arial, sans-serif;
    font-size: .7em;
    line-height: 140%;
    color: #000000;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 20px;
}

A: Would you believe that it's a combination of the float: left and position: relative settings of your .home_headline_edit and .container rules that is causing this issue?
Removing the position: relative rule seems to work while retaining the visual style of the page.
Smells like a browser bug...but I can't seem to reproduce it with a trimmed down page.

A: Do you use hammer.js ?
Because Hammer.js binds the "selectstart" event to various elements.
At least that's a case i've had.


text:
package main

import (
	"bufio"
	"log"
	"os"
	"strconv"
	"strings"
	"testing"
)

func TestDayOne(t *testing.T) {
	file, err := os.Open("input_test")
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		line := strings.Split(scanner.Text(), ",")
		floor, pos, _ := dayOne(&line[0])
		expectFloor, floorErr := strconv.Atoi(line[1])
		expectPos, posErr := strconv.Atoi(line[2])
		if floorErr == nil && floor != expectFloor {
			t.Errorf("Test failed, got: '%d', expected: '%d'", floor, expectFloor)
		}
		if posErr == nil && pos != expectPos {
			t.Errorf("Test failed, got: '%d', expected: '%d'", pos, expectPos)
		}
	}

	if err := scanner.Err(); err != nil {
		log.Fatal(err)
	}
}


Yes, yes, I've been a bad blogger :oops: Let's not dwell on that, I have heaps to share, so BRACE YERSELF SHAYLA!
Kookaburra in a tree – noisy buggers!
A kookaburra fight. We were less than a metre from them, taking photos.