vue3-openlayers
Version:
OpenLayers Wrapper for Vue3
37,402 lines • 1.57 MB
JavaScript
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
import { defineComponent, inject, ref, watch, onMounted, nextTick, onUnmounted, provide, renderSlot, getCurrentInstance, reactive, toRefs, isRef, computed, openBlock, createElementBlock, shallowRef, watchEffect, createCommentVNode, mergeDefaults, useAttrs, useSlots } from "vue";
import Feature from "ol/Feature";
import Geometry from "ol/geom/Geometry";
import Geolocation from "ol/Geolocation";
import Map$1 from "ol/Map";
import Overlay from "ol/Overlay";
import { register } from "ol/proj/proj4";
import Projection$1 from "ol/proj/Projection";
import View from "ol/View";
import { Projection as Projection$2, get as get$2 } from "ol/proj";
import { Cluster } from "ol/source";
import AnimatedCluster from "ol-ext/layer/AnimatedCluster";
import HeatmapLayer from "ol/layer/Heatmap";
import ImageLayer from "ol/layer/Image";
import LayerGroup from "ol/layer/Group";
import TileLayer from "ol/layer/Tile";
import TileSource from "ol/source/Tile";
import VectorLayer from "ol/layer/Vector";
import VectorTileLayer from "ol/layer/VectorTile";
import VectorImageLayer from "ol/layer/VectorImage";
import TileLayer$1 from "ol/layer/WebGLTile";
import { Layer } from "ol/layer";
import WebGLVectorLayerRenderer from "ol/renderer/webgl/VectorLayer";
import BingMaps from "ol/source/BingMaps";
import VectorSource from "ol/source/Vector";
import ImageSource from "ol/source/Image";
import Cluster$1 from "ol/source/Cluster";
import Static from "ol/source/ImageStatic";
import ImageWMS from "ol/source/ImageWMS";
import OSM from "ol/source/OSM";
import StadiaMaps from "ol/source/StadiaMaps";
import WMTSSource from "ol/source/WMTS";
import TileGridWMTS from "ol/tilegrid/WMTS";
import TileArcGISRest from "ol/source/TileArcGISRest";
import { createXYZ } from "ol/tilegrid";
import TileDebug from "ol/source/TileDebug";
import GeoTIFF from "ol/source/GeoTIFF";
import TileJSON from "ol/source/TileJSON";
import TileWMS from "ol/source/TileWMS";
import { Collection } from "ol";
import VectorTileSource from "ol/source/VectorTile";
import XYZ from "ol/source/XYZ";
import * as extent from "ol/extent";
import { getTopLeft, getWidth } from "ol/extent";
import Attribution from "ol/control/Attribution";
import Bar from "ol-ext/control/Bar";
import Button from "ol-ext/control/Button";
import ContextMenu from "ol-contextmenu";
import FullScreen from "ol/control/FullScreen";
import LayerSwitcher from "ol-ext/control/LayerSwitcher";
import LayerSwitcherImage from "ol-ext/control/LayerSwitcherImage";
import MousePosition from "ol/control/MousePosition";
import OverviewMap from "ol/control/OverviewMap";
import PrintDialog from "ol-ext/control/PrintDialog";
import Profile from "ol-ext/control/Profile";
import Rotate$1 from "ol/control/Rotate";
import ScaleLine from "ol/control/ScaleLine";
import Search from "ol-ext/control/Search";
import Swipe from "ol-ext/control/Swipe";
import Toggle from "ol-ext/control/Toggle";
import VideoRecorder from "ol-ext/control/VideoRecorder";
import MapZone from "ol-ext/control/MapZone";
import Zoom from "ol/control/Zoom";
import ZoomSlider from "ol/control/ZoomSlider";
import ZoomToExtent from "ol/control/ZoomToExtent";
import Circle from "ol/geom/Circle";
import * as geom from "ol/geom";
import LineString from "ol/geom/LineString";
import MultiLineString from "ol/geom/MultiLineString";
import MultiPoint from "ol/geom/MultiPoint";
import MultiPolygon from "ol/geom/MultiPolygon";
import Point$2 from "ol/geom/Point";
import Polygon from "ol/geom/Polygon";
import Style from "ol/style/Style";
import Draw from "ol/interaction/Draw";
import Modify from "ol/interaction/Modify";
import CircleStyle from "ol/style/Circle";
import Fill from "ol/style/Fill";
import Stroke from "ol/style/Stroke";
import { Interaction } from "ol/interaction";
import Icon from "ol/style/Icon";
import Text from "ol/style/Text";
import FlowLine from "ol-ext/style/FlowLine";
import SelectCluster from "ol-ext/interaction/SelectCluster";
import DragBox from "ol/interaction/DragBox";
import DragRotate from "ol/interaction/DragRotate";
import DragRotateAndZoom from "ol/interaction/DragRotateAndZoom";
import Link from "ol/interaction/Link";
import Select from "ol/interaction/Select";
import Pointer from "ol/interaction/Pointer";
import Snap from "ol/interaction/Snap";
import Transform$1 from "ol-ext/interaction/Transform";
import * as selectconditions from "ol/events/condition";
import { always } from "ol/events/condition";
import MouseWheelZoom from "ol/interaction/MouseWheelZoom";
import Drop from "ol-ext/featureanimation/Drop";
import * as animations from "ol/easing";
import { easeOut } from "ol/easing";
import "ol-ext/featureanimation/FeatureAnimation";
import Fade from "ol-ext/featureanimation/Fade";
import Path from "ol-ext/featureanimation/Path";
import Shake from "ol-ext/featureanimation/Shake";
import Slide from "ol-ext/featureanimation/Slide";
import Teleport from "ol-ext/featureanimation/Teleport";
import Zoom$1 from "ol-ext/featureanimation/Zoom";
import * as format from "ol/format";
import * as loadingstrategy from "ol/loadingstrategy";
import "ol-contextmenu/ol-contextmenu.css";
import "ol-ext/dist/ol-ext.css";
import "ol/ol.css";
const _sfc_main$1l = /* @__PURE__ */ defineComponent({
__name: "OlFeature",
props: {
properties: {}
},
setup(__props, { expose: __expose }) {
const props = __props;
const vectorSource = inject("vectorSource");
const vectorLayer = inject(
"vectorLayer",
null
);
const heatmapLayer = inject("heatmapLayer", null);
const layer = heatmapLayer || vectorLayer;
const animation = inject(
"animation",
null
);
const feature = ref(
new Feature({ ...props.properties })
);
watch(
() => props.properties,
// Needed as props.properties is optional
(properties) => {
if (properties instanceof Geometry) {
feature.value.setGeometry(properties);
feature.value.setProperties({});
} else if (typeof properties !== "undefined") {
feature.value.setGeometry(void 0);
feature.value.setProperties(properties);
} else {
feature.value.setGeometry(void 0);
feature.value.setProperties({});
}
}
);
watch(
() => vectorSource,
(newVal, oldVal) => {
var _a2, _b2, _c;
(_a2 = oldVal == null ? void 0 : oldVal.value) == null ? void 0 : _a2.removeFeature(feature.value);
(_b2 = newVal == null ? void 0 : newVal.value) == null ? void 0 : _b2.addFeature(feature.value);
(_c = newVal == null ? void 0 : newVal.value) == null ? void 0 : _c.changed();
}
);
onMounted(() => {
var _a2;
if (animation == null ? void 0 : animation.value) {
(_a2 = layer == null ? void 0 : layer.value) == null ? void 0 : _a2.animateFeature(feature.value, animation.value);
}
nextTick(() => {
var _a3;
(_a3 = vectorSource == null ? void 0 : vectorSource.value) == null ? void 0 : _a3.addFeature(feature.value);
});
});
onUnmounted(() => {
var _a2;
(_a2 = vectorSource == null ? void 0 : vectorSource.value) == null ? void 0 : _a2.removeFeature(feature.value);
});
provide("feature", feature);
provide("stylable", feature);
__expose({
feature
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
function checkAndUpdateStylePropDef(options) {
if ("styles" in options) {
const { styles, ...rest } = toRefs(reactive(options));
return { style: styles, ...rest };
} else {
return options;
}
}
function usePropsAsObjectProperties(props) {
const instance = getCurrentInstance();
let globalOptions = {
debug: false
};
if (instance) {
globalOptions = inject("ol-options", globalOptions);
}
const revisedProps = checkAndUpdateStylePropDef(props);
const properties = reactive(revisedProps);
if (globalOptions == null ? void 0 : globalOptions.debug) {
console.debug("[Vue3-OpenLayers Debug] PROPS", {
in: props,
out: properties
});
}
return properties;
}
const COMMON_EVENTS = ["change", "error", "propertychange"];
const LAYER_EVENTS = [
"change:extent",
"change:maxResolution",
"change:maxZoom",
"change:minResolution",
"change:minZoom",
"change:opacity",
"change:source",
"change:visible",
"change:zIndex",
"postrender",
"prerender",
"sourceready"
];
const TILE_SOURCE_EVENTS = [
"tileloadend",
"tileloaderror",
"tileloadstart"
];
const IMAGE_SOURCE_EVENTS = [
"imageloadend",
"imageloaderror",
"imageloadstart"
];
const VECTOR_SOURCE_EVENTS = [
"addfeature",
"changefeature",
"clear",
"featuresloadend",
"featuresloaderror",
"featuresloadstart",
"removefeature"
];
function useOpenLayersEvents(feature, eventNames) {
const instance = getCurrentInstance();
let globalOptions = {
debug: false
};
if (instance) {
globalOptions = inject("ol-options", globalOptions);
}
function updateOpenLayersEventHandlers() {
[...COMMON_EVENTS, ...eventNames].forEach((eventName) => {
let unwrappedFeature;
if (isRef(feature)) {
unwrappedFeature = feature.value;
} else {
unwrappedFeature = feature;
}
unwrappedFeature.on(eventName, (...args) => {
if (globalOptions == null ? void 0 : globalOptions.debug) {
console.debug("[Vue3-OpenLayers Debug] EVENT", eventName, {
eventName,
args,
source: feature
});
}
instance == null ? void 0 : instance.emit(eventName, ...args);
});
});
}
if (instance) {
onMounted(() => {
updateOpenLayersEventHandlers();
});
}
return {
updateOpenLayersEventHandlers
};
}
const _sfc_main$1k = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlGeolocation",
props: {
tracking: { type: Boolean, default: true },
trackingOptions: { default: () => ({
enableHighAccuracy: true
}) },
projection: { default: "EPSG:3857" }
},
emits: ["change", "error", "propertychange", "change:accuracy", "change:accuracyGeometry", "change:altitude", "change:altitudeAccuracy", "change:heading", "change:position", "change:projection", "change:speed", "change:tracking", "change:trackingOptions"],
setup(__props, { expose: __expose }) {
const props = __props;
const properties = usePropsAsObjectProperties(props);
const geoLoc = computed(() => new Geolocation(properties));
useOpenLayersEvents(geoLoc, [
"change:accuracy",
"change:accuracyGeometry",
"change:altitude",
"change:altitudeAccuracy",
"change:heading",
"change:position",
"change:projection",
"change:speed",
"change:tracking",
"change:trackingOptions"
]);
const position2 = ref([]);
const accuracy = ref(0);
const altitude = ref(0);
const altitudeAccuracy = ref(0);
const speed = ref(0);
const heading = ref(0);
const accuracyGeometry = ref(null);
__expose({
geoLoc,
position: position2,
accuracy,
altitude,
altitudeAccuracy,
speed,
heading,
accuracyGeometry
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default", {
position: position2.value,
speed: speed.value,
heading: heading.value,
accuracy: accuracy.value,
altitude: altitude.value,
altitudeAccuracy: altitudeAccuracy.value,
accuracyGeometry: accuracyGeometry.value
});
};
}
});
function mergeProperties(existingProperties, newProperties) {
for (const key in newProperties) {
if (Object.prototype.hasOwnProperty.call(newProperties, key)) {
if (newProperties[key] !== void 0) {
existingProperties[key] = newProperties[key];
}
}
}
return existingProperties;
}
const _sfc_main$1j = /* @__PURE__ */ defineComponent({
__name: "OlMap",
props: {
controls: {},
pixelRatio: {},
interactions: {},
keyboardEventTarget: {},
layers: {},
maxTilesLoading: {},
moveTolerance: {},
overlays: {},
target: {},
view: {},
instance: {}
},
emits: ["change", "error", "propertychange", "change:layerGroup", "change:size", "change:target", "change:view", "click", "dblclick", "singleclick", "loadstart", "loadend", "pointerdrag", "pointermove", "movestart", "moveend", "postrender", "precompose", "postcompose", "rendercomplete"],
setup(__props, { expose: __expose, emit: __emit }) {
const props = __props;
const emit = __emit;
const properties = usePropsAsObjectProperties({
...props,
instance: void 0
});
const mapRef = ref(void 0);
let map = props.instance || new Map$1({ ...properties });
watch(
properties,
() => {
const p2 = props.instance ? mergeProperties(properties, props.instance.getProperties()) : properties;
map == null ? void 0 : map.setProperties(p2);
},
{ immediate: true }
);
onMounted(() => {
if (!props.instance) {
map == null ? void 0 : map.setTarget(mapRef.value);
}
});
onUnmounted(() => {
if (!props.instance) {
map == null ? void 0 : map.setTarget(void 0);
}
map = void 0;
});
provide("map", map);
const forEachFeatureAtPixel = (pixel, callback, options) => map == null ? void 0 : map.forEachFeatureAtPixel(pixel, callback, options);
const getCoordinateFromPixel = (pixel) => map == null ? void 0 : map.getCoordinateFromPixel(pixel);
const render = () => map == null ? void 0 : map.render();
const updateSize = () => map == null ? void 0 : map.updateSize();
map.on("change", (event) => emit("change", event));
map.on("error", (event) => emit("error", event));
map.on("propertychange", (event) => emit("propertychange", event));
map.on("click", (event) => emit("click", event));
map.on("change:size", (event) => emit("change:size", event));
map.on("change:target", (event) => emit("change:target", event));
map.on("change:view", (event) => emit("change:view", event));
map.on("dblclick", (event) => emit("dblclick", event));
map.on("singleclick", (event) => emit("singleclick", event));
map.on("pointerdrag", (event) => emit("pointerdrag", event));
map.on("pointermove", (event) => emit("pointermove", event));
map.on("movestart", (event) => emit("movestart", event));
map.on("moveend", (event) => emit("moveend", event));
map.on("postrender", (event) => emit("postrender", event));
map.on("precompose", (event) => emit("precompose", event));
map.on("postcompose", (event) => emit("postcompose", event));
map.on("rendercomplete", (event) => emit("rendercomplete", event));
map.on("loadstart", (event) => {
map == null ? void 0 : map.getTargetElement().classList.add("ol-map");
map == null ? void 0 : map.getTargetElement().classList.add("ol-map-loading");
map == null ? void 0 : map.getTargetElement().classList.remove("ol-map-fully-loaded");
emit("loadstart", event);
});
map.on("loadend", (event) => {
map == null ? void 0 : map.getTargetElement().classList.add("ol-map-fully-loaded");
map == null ? void 0 : map.getTargetElement().classList.remove("ol-map-loading");
emit("loadend", event);
});
__expose({
map,
mapRef,
forEachFeatureAtPixel,
getCoordinateFromPixel,
render,
updateSize
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
ref_key: "mapRef",
ref: mapRef
}, [
renderSlot(_ctx.$slots, "default")
], 512);
};
}
});
const _sfc_main$1i = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlOverlay",
props: {
id: {},
element: {},
offset: {},
position: {},
positioning: {},
stopEvent: { type: Boolean, default: true },
insertFirst: { type: Boolean, default: true },
autoPan: { type: [Boolean, Object] },
className: {}
},
emits: ["change", "error", "propertychange", "change:element", "change:map", "change:offset", "change:position", "change:positioning"],
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const htmlContent = ref();
const properties = usePropsAsObjectProperties(props);
const overlay = shallowRef(new Overlay(properties));
useOpenLayersEvents(overlay, [
"change:element",
"change:map",
"change:offset",
"change:position",
"change:positioning"
]);
const getOffset = () => overlay.value.getOffset();
const getPosition = () => overlay.value.getPosition();
const getPositioning = () => overlay.value.getPositioning();
const panIntoView = (optPanIntoViewOptions) => overlay.value.panIntoView(optPanIntoViewOptions);
const setElement = (element) => overlay.value.setElement(element);
const setOffset = (offset) => overlay.value.setOffset(offset);
const setPosition = (position2) => overlay.value.setPosition(position2);
const setPositioning = (positioning) => overlay.value.setPositioning(positioning);
function removeOverlay(ov) {
const removed = map == null ? void 0 : map.removeOverlay(ov);
if (!removed) {
console.warn("couldn't find matching overlay to remove", overlay.value);
}
}
onMounted(() => {
map == null ? void 0 : map.addOverlay(overlay.value);
});
onUnmounted(() => removeOverlay(overlay.value));
watch(
() => properties,
(newValue) => {
for (const key in newValue) {
const keyInObj = key;
if (newValue[keyInObj] !== void 0) {
overlay.value.set(key, newValue[keyInObj]);
}
}
},
{ deep: true }
);
watchEffect(
() => {
setElement(htmlContent.value);
},
{
flush: "post"
}
);
__expose({
overlay,
htmlContent,
getOffset,
getPosition,
getPositioning,
panIntoView,
setElement,
setOffset,
setPosition,
setPositioning
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
ref_key: "htmlContent",
ref: htmlContent
}, [
renderSlot(_ctx.$slots, "default", { position: _ctx.position })
], 512);
};
}
});
function globals(defs2) {
defs2("EPSG:4326", "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees");
defs2("EPSG:4269", "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees");
defs2("EPSG:3857", "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs");
defs2.WGS84 = defs2["EPSG:4326"];
defs2["EPSG:3785"] = defs2["EPSG:3857"];
defs2.GOOGLE = defs2["EPSG:3857"];
defs2["EPSG:900913"] = defs2["EPSG:3857"];
defs2["EPSG:102113"] = defs2["EPSG:3857"];
}
var PJD_3PARAM = 1;
var PJD_7PARAM = 2;
var PJD_GRIDSHIFT = 3;
var PJD_WGS84 = 4;
var PJD_NODATUM = 5;
var SRS_WGS84_SEMIMAJOR = 6378137;
var SRS_WGS84_SEMIMINOR = 6356752314e-3;
var SRS_WGS84_ESQUARED = 0.0066943799901413165;
var SEC_TO_RAD = 484813681109536e-20;
var HALF_PI = Math.PI / 2;
var SIXTH = 0.16666666666666666;
var RA4 = 0.04722222222222222;
var RA6 = 0.022156084656084655;
var EPSLN = 1e-10;
var D2R$1 = 0.017453292519943295;
var R2D = 57.29577951308232;
var FORTPI = Math.PI / 4;
var TWO_PI = Math.PI * 2;
var SPI = 3.14159265359;
var exports$2 = {};
exports$2.greenwich = 0;
exports$2.lisbon = -9.131906111111;
exports$2.paris = 2.337229166667;
exports$2.bogota = -74.080916666667;
exports$2.madrid = -3.687938888889;
exports$2.rome = 12.452333333333;
exports$2.bern = 7.439583333333;
exports$2.jakarta = 106.807719444444;
exports$2.ferro = -17.666666666667;
exports$2.brussels = 4.367975;
exports$2.stockholm = 18.058277777778;
exports$2.athens = 23.7163375;
exports$2.oslo = 10.722916666667;
const units = {
ft: { to_meter: 0.3048 },
"us-ft": { to_meter: 1200 / 3937 }
};
var ignoredChar = /[\s_\-\/\(\)]/g;
function match$1(obj, key) {
if (obj[key]) {
return obj[key];
}
var keys3 = Object.keys(obj);
var lkey = key.toLowerCase().replace(ignoredChar, "");
var i2 = -1;
var testkey, processedKey;
while (++i2 < keys3.length) {
testkey = keys3[i2];
processedKey = testkey.toLowerCase().replace(ignoredChar, "");
if (processedKey === lkey) {
return obj[testkey];
}
}
}
function projStr(defData) {
var self2 = {};
var paramObj = defData.split("+").map(function(v2) {
return v2.trim();
}).filter(function(a2) {
return a2;
}).reduce(function(p2, a2) {
var split2 = a2.split("=");
split2.push(true);
p2[split2[0].toLowerCase()] = split2[1];
return p2;
}, {});
var paramName, paramVal, paramOutname;
var params2 = {
proj: "projName",
datum: "datumCode",
rf: function(v2) {
self2.rf = parseFloat(v2);
},
lat_0: function(v2) {
self2.lat0 = v2 * D2R$1;
},
lat_1: function(v2) {
self2.lat1 = v2 * D2R$1;
},
lat_2: function(v2) {
self2.lat2 = v2 * D2R$1;
},
lat_ts: function(v2) {
self2.lat_ts = v2 * D2R$1;
},
lon_0: function(v2) {
self2.long0 = v2 * D2R$1;
},
lon_1: function(v2) {
self2.long1 = v2 * D2R$1;
},
lon_2: function(v2) {
self2.long2 = v2 * D2R$1;
},
alpha: function(v2) {
self2.alpha = parseFloat(v2) * D2R$1;
},
gamma: function(v2) {
self2.rectified_grid_angle = parseFloat(v2);
},
lonc: function(v2) {
self2.longc = v2 * D2R$1;
},
x_0: function(v2) {
self2.x0 = parseFloat(v2);
},
y_0: function(v2) {
self2.y0 = parseFloat(v2);
},
k_0: function(v2) {
self2.k0 = parseFloat(v2);
},
k: function(v2) {
self2.k0 = parseFloat(v2);
},
a: function(v2) {
self2.a = parseFloat(v2);
},
b: function(v2) {
self2.b = parseFloat(v2);
},
r: function(v2) {
self2.a = self2.b = parseFloat(v2);
},
r_a: function() {
self2.R_A = true;
},
zone: function(v2) {
self2.zone = parseInt(v2, 10);
},
south: function() {
self2.utmSouth = true;
},
towgs84: function(v2) {
self2.datum_params = v2.split(",").map(function(a2) {
return parseFloat(a2);
});
},
to_meter: function(v2) {
self2.to_meter = parseFloat(v2);
},
units: function(v2) {
self2.units = v2;
var unit = match$1(units, v2);
if (unit) {
self2.to_meter = unit.to_meter;
}
},
from_greenwich: function(v2) {
self2.from_greenwich = v2 * D2R$1;
},
pm: function(v2) {
var pm = match$1(exports$2, v2);
self2.from_greenwich = (pm ? pm : parseFloat(v2)) * D2R$1;
},
nadgrids: function(v2) {
if (v2 === "@null") {
self2.datumCode = "none";
} else {
self2.nadgrids = v2;
}
},
axis: function(v2) {
var legalAxis = "ewnsud";
if (v2.length === 3 && legalAxis.indexOf(v2.substr(0, 1)) !== -1 && legalAxis.indexOf(v2.substr(1, 1)) !== -1 && legalAxis.indexOf(v2.substr(2, 1)) !== -1) {
self2.axis = v2;
}
},
approx: function() {
self2.approx = true;
}
};
for (paramName in paramObj) {
paramVal = paramObj[paramName];
if (paramName in params2) {
paramOutname = params2[paramName];
if (typeof paramOutname === "function") {
paramOutname(paramVal);
} else {
self2[paramOutname] = paramVal;
}
} else {
self2[paramName] = paramVal;
}
}
if (typeof self2.datumCode === "string" && self2.datumCode !== "WGS84") {
self2.datumCode = self2.datumCode.toLowerCase();
}
return self2;
}
var NEUTRAL = 1;
var KEYWORD = 2;
var NUMBER = 3;
var QUOTED = 4;
var AFTERQUOTE = 5;
var ENDED = -1;
var whitespace = /\s/;
var latin = /[A-Za-z]/;
var keyword = /[A-Za-z84_]/;
var endThings = /[,\]]/;
var digets = /[\d\.E\-\+]/;
function Parser$2(text2) {
if (typeof text2 !== "string") {
throw new Error("not a string");
}
this.text = text2.trim();
this.level = 0;
this.place = 0;
this.root = null;
this.stack = [];
this.currentObject = null;
this.state = NEUTRAL;
}
Parser$2.prototype.readCharicter = function() {
var char = this.text[this.place++];
if (this.state !== QUOTED) {
while (whitespace.test(char)) {
if (this.place >= this.text.length) {
return;
}
char = this.text[this.place++];
}
}
switch (this.state) {
case NEUTRAL:
return this.neutral(char);
case KEYWORD:
return this.keyword(char);
case QUOTED:
return this.quoted(char);
case AFTERQUOTE:
return this.afterquote(char);
case NUMBER:
return this.number(char);
case ENDED:
return;
}
};
Parser$2.prototype.afterquote = function(char) {
if (char === '"') {
this.word += '"';
this.state = QUOTED;
return;
}
if (endThings.test(char)) {
this.word = this.word.trim();
this.afterItem(char);
return;
}
throw new Error(`havn't handled "` + char + '" in afterquote yet, index ' + this.place);
};
Parser$2.prototype.afterItem = function(char) {
if (char === ",") {
if (this.word !== null) {
this.currentObject.push(this.word);
}
this.word = null;
this.state = NEUTRAL;
return;
}
if (char === "]") {
this.level--;
if (this.word !== null) {
this.currentObject.push(this.word);
this.word = null;
}
this.state = NEUTRAL;
this.currentObject = this.stack.pop();
if (!this.currentObject) {
this.state = ENDED;
}
return;
}
};
Parser$2.prototype.number = function(char) {
if (digets.test(char)) {
this.word += char;
return;
}
if (endThings.test(char)) {
this.word = parseFloat(this.word);
this.afterItem(char);
return;
}
throw new Error(`havn't handled "` + char + '" in number yet, index ' + this.place);
};
Parser$2.prototype.quoted = function(char) {
if (char === '"') {
this.state = AFTERQUOTE;
return;
}
this.word += char;
return;
};
Parser$2.prototype.keyword = function(char) {
if (keyword.test(char)) {
this.word += char;
return;
}
if (char === "[") {
var newObjects = [];
newObjects.push(this.word);
this.level++;
if (this.root === null) {
this.root = newObjects;
} else {
this.currentObject.push(newObjects);
}
this.stack.push(this.currentObject);
this.currentObject = newObjects;
this.state = NEUTRAL;
return;
}
if (endThings.test(char)) {
this.afterItem(char);
return;
}
throw new Error(`havn't handled "` + char + '" in keyword yet, index ' + this.place);
};
Parser$2.prototype.neutral = function(char) {
if (latin.test(char)) {
this.word = char;
this.state = KEYWORD;
return;
}
if (char === '"') {
this.word = "";
this.state = QUOTED;
return;
}
if (digets.test(char)) {
this.word = char;
this.state = NUMBER;
return;
}
if (endThings.test(char)) {
this.afterItem(char);
return;
}
throw new Error(`havn't handled "` + char + '" in neutral yet, index ' + this.place);
};
Parser$2.prototype.output = function() {
while (this.place < this.text.length) {
this.readCharicter();
}
if (this.state === ENDED) {
return this.root;
}
throw new Error('unable to parse string "' + this.text + '". State is ' + this.state);
};
function parseString(txt) {
var parser = new Parser$2(txt);
return parser.output();
}
function mapit(obj, key, value) {
if (Array.isArray(key)) {
value.unshift(key);
key = null;
}
var thing = key ? {} : obj;
var out = value.reduce(function(newObj, item) {
sExpr(item, newObj);
return newObj;
}, thing);
if (key) {
obj[key] = out;
}
}
function sExpr(v2, obj) {
if (!Array.isArray(v2)) {
obj[v2] = true;
return;
}
var key = v2.shift();
if (key === "PARAMETER") {
key = v2.shift();
}
if (v2.length === 1) {
if (Array.isArray(v2[0])) {
obj[key] = {};
sExpr(v2[0], obj[key]);
return;
}
obj[key] = v2[0];
return;
}
if (!v2.length) {
obj[key] = true;
return;
}
if (key === "TOWGS84") {
obj[key] = v2;
return;
}
if (key === "AXIS") {
if (!(key in obj)) {
obj[key] = [];
}
obj[key].push(v2);
return;
}
if (!Array.isArray(key)) {
obj[key] = {};
}
var i2;
switch (key) {
case "UNIT":
case "PRIMEM":
case "VERT_DATUM":
obj[key] = {
name: v2[0].toLowerCase(),
convert: v2[1]
};
if (v2.length === 3) {
sExpr(v2[2], obj[key]);
}
return;
case "SPHEROID":
case "ELLIPSOID":
obj[key] = {
name: v2[0],
a: v2[1],
rf: v2[2]
};
if (v2.length === 4) {
sExpr(v2[3], obj[key]);
}
return;
case "PROJECTEDCRS":
case "PROJCRS":
case "GEOGCS":
case "GEOCCS":
case "PROJCS":
case "LOCAL_CS":
case "GEODCRS":
case "GEODETICCRS":
case "GEODETICDATUM":
case "EDATUM":
case "ENGINEERINGDATUM":
case "VERT_CS":
case "VERTCRS":
case "VERTICALCRS":
case "COMPD_CS":
case "COMPOUNDCRS":
case "ENGINEERINGCRS":
case "ENGCRS":
case "FITTED_CS":
case "LOCAL_DATUM":
case "DATUM":
v2[0] = ["name", v2[0]];
mapit(obj, key, v2);
return;
default:
i2 = -1;
while (++i2 < v2.length) {
if (!Array.isArray(v2[i2])) {
return sExpr(v2, obj[key]);
}
}
return mapit(obj, key, v2);
}
}
var D2R = 0.017453292519943295;
function rename(obj, params2) {
var outName = params2[0];
var inName = params2[1];
if (!(outName in obj) && inName in obj) {
obj[outName] = obj[inName];
if (params2.length === 3) {
obj[outName] = params2[2](obj[outName]);
}
}
}
function d2r(input) {
return input * D2R;
}
function cleanWKT(wkt2) {
if (wkt2.type === "GEOGCS") {
wkt2.projName = "longlat";
} else if (wkt2.type === "LOCAL_CS") {
wkt2.projName = "identity";
wkt2.local = true;
} else {
if (typeof wkt2.PROJECTION === "object") {
wkt2.projName = Object.keys(wkt2.PROJECTION)[0];
} else {
wkt2.projName = wkt2.PROJECTION;
}
}
if (wkt2.AXIS) {
var axisOrder = "";
for (var i2 = 0, ii = wkt2.AXIS.length; i2 < ii; ++i2) {
var axis = [wkt2.AXIS[i2][0].toLowerCase(), wkt2.AXIS[i2][1].toLowerCase()];
if (axis[0].indexOf("north") !== -1 || (axis[0] === "y" || axis[0] === "lat") && axis[1] === "north") {
axisOrder += "n";
} else if (axis[0].indexOf("south") !== -1 || (axis[0] === "y" || axis[0] === "lat") && axis[1] === "south") {
axisOrder += "s";
} else if (axis[0].indexOf("east") !== -1 || (axis[0] === "x" || axis[0] === "lon") && axis[1] === "east") {
axisOrder += "e";
} else if (axis[0].indexOf("west") !== -1 || (axis[0] === "x" || axis[0] === "lon") && axis[1] === "west") {
axisOrder += "w";
}
}
if (axisOrder.length === 2) {
axisOrder += "u";
}
if (axisOrder.length === 3) {
wkt2.axis = axisOrder;
}
}
if (wkt2.UNIT) {
wkt2.units = wkt2.UNIT.name.toLowerCase();
if (wkt2.units === "metre") {
wkt2.units = "meter";
}
if (wkt2.UNIT.convert) {
if (wkt2.type === "GEOGCS") {
if (wkt2.DATUM && wkt2.DATUM.SPHEROID) {
wkt2.to_meter = wkt2.UNIT.convert * wkt2.DATUM.SPHEROID.a;
}
} else {
wkt2.to_meter = wkt2.UNIT.convert;
}
}
}
var geogcs = wkt2.GEOGCS;
if (wkt2.type === "GEOGCS") {
geogcs = wkt2;
}
if (geogcs) {
if (geogcs.DATUM) {
wkt2.datumCode = geogcs.DATUM.name.toLowerCase();
} else {
wkt2.datumCode = geogcs.name.toLowerCase();
}
if (wkt2.datumCode.slice(0, 2) === "d_") {
wkt2.datumCode = wkt2.datumCode.slice(2);
}
if (wkt2.datumCode === "new_zealand_geodetic_datum_1949" || wkt2.datumCode === "new_zealand_1949") {
wkt2.datumCode = "nzgd49";
}
if (wkt2.datumCode === "wgs_1984" || wkt2.datumCode === "world_geodetic_system_1984") {
if (wkt2.PROJECTION === "Mercator_Auxiliary_Sphere") {
wkt2.sphere = true;
}
wkt2.datumCode = "wgs84";
}
if (wkt2.datumCode.slice(-6) === "_ferro") {
wkt2.datumCode = wkt2.datumCode.slice(0, -6);
}
if (wkt2.datumCode.slice(-8) === "_jakarta") {
wkt2.datumCode = wkt2.datumCode.slice(0, -8);
}
if (~wkt2.datumCode.indexOf("belge")) {
wkt2.datumCode = "rnb72";
}
if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {
wkt2.ellps = geogcs.DATUM.SPHEROID.name.replace("_19", "").replace(/[Cc]larke\_18/, "clrk");
if (wkt2.ellps.toLowerCase().slice(0, 13) === "international") {
wkt2.ellps = "intl";
}
wkt2.a = geogcs.DATUM.SPHEROID.a;
wkt2.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);
}
if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {
wkt2.datum_params = geogcs.DATUM.TOWGS84;
}
if (~wkt2.datumCode.indexOf("osgb_1936")) {
wkt2.datumCode = "osgb36";
}
if (~wkt2.datumCode.indexOf("osni_1952")) {
wkt2.datumCode = "osni52";
}
if (~wkt2.datumCode.indexOf("tm65") || ~wkt2.datumCode.indexOf("geodetic_datum_of_1965")) {
wkt2.datumCode = "ire65";
}
if (wkt2.datumCode === "ch1903+") {
wkt2.datumCode = "ch1903";
}
if (~wkt2.datumCode.indexOf("israel")) {
wkt2.datumCode = "isr93";
}
}
if (wkt2.b && !isFinite(wkt2.b)) {
wkt2.b = wkt2.a;
}
function toMeter(input) {
var ratio = wkt2.to_meter || 1;
return input * ratio;
}
var renamer = function(a2) {
return rename(wkt2, a2);
};
var list = [
["standard_parallel_1", "Standard_Parallel_1"],
["standard_parallel_1", "Latitude of 1st standard parallel"],
["standard_parallel_2", "Standard_Parallel_2"],
["standard_parallel_2", "Latitude of 2nd standard parallel"],
["false_easting", "False_Easting"],
["false_easting", "False easting"],
["false-easting", "Easting at false origin"],
["false_northing", "False_Northing"],
["false_northing", "False northing"],
["false_northing", "Northing at false origin"],
["central_meridian", "Central_Meridian"],
["central_meridian", "Longitude of natural origin"],
["central_meridian", "Longitude of false origin"],
["latitude_of_origin", "Latitude_Of_Origin"],
["latitude_of_origin", "Central_Parallel"],
["latitude_of_origin", "Latitude of natural origin"],
["latitude_of_origin", "Latitude of false origin"],
["scale_factor", "Scale_Factor"],
["k0", "scale_factor"],
["latitude_of_center", "Latitude_Of_Center"],
["latitude_of_center", "Latitude_of_center"],
["lat0", "latitude_of_center", d2r],
["longitude_of_center", "Longitude_Of_Center"],
["longitude_of_center", "Longitude_of_center"],
["longc", "longitude_of_center", d2r],
["x0", "false_easting", toMeter],
["y0", "false_northing", toMeter],
["long0", "central_meridian", d2r],
["lat0", "latitude_of_origin", d2r],
["lat0", "standard_parallel_1", d2r],
["lat1", "standard_parallel_1", d2r],
["lat2", "standard_parallel_2", d2r],
["azimuth", "Azimuth"],
["alpha", "azimuth", d2r],
["srsCode", "name"]
];
list.forEach(renamer);
if (!wkt2.long0 && wkt2.longc && (wkt2.projName === "Albers_Conic_Equal_Area" || wkt2.projName === "Lambert_Azimuthal_Equal_Area")) {
wkt2.long0 = wkt2.longc;
}
if (!wkt2.lat_ts && wkt2.lat1 && (wkt2.projName === "Stereographic_South_Pole" || wkt2.projName === "Polar Stereographic (variant B)")) {
wkt2.lat0 = d2r(wkt2.lat1 > 0 ? 90 : -90);
wkt2.lat_ts = wkt2.lat1;
} else if (!wkt2.lat_ts && wkt2.lat0 && wkt2.projName === "Polar_Stereographic") {
wkt2.lat_ts = wkt2.lat0;
wkt2.lat0 = d2r(wkt2.lat0 > 0 ? 90 : -90);
}
}
function wkt(wkt2) {
var lisp = parseString(wkt2);
var type = lisp.shift();
var name = lisp.shift();
lisp.unshift(["name", name]);
lisp.unshift(["type", type]);
var obj = {};
sExpr(lisp, obj);
cleanWKT(obj);
return obj;
}
function defs(name) {
var that = this;
if (arguments.length === 2) {
var def = arguments[1];
if (typeof def === "string") {
if (def.charAt(0) === "+") {
defs[name] = projStr(arguments[1]);
} else {
defs[name] = wkt(arguments[1]);
}
} else {
defs[name] = def;
}
} else if (arguments.length === 1) {
if (Array.isArray(name)) {
return name.map(function(v2) {
if (Array.isArray(v2)) {
defs.apply(that, v2);
} else {
defs(v2);
}
});
} else if (typeof name === "string") {
if (name in defs) {
return defs[name];
}
} else if ("EPSG" in name) {
defs["EPSG:" + name.EPSG] = name;
} else if ("ESRI" in name) {
defs["ESRI:" + name.ESRI] = name;
} else if ("IAU2000" in name) {
defs["IAU2000:" + name.IAU2000] = name;
} else {
console.log(name);
}
return;
}
}
globals(defs);
function testObj(code) {
return typeof code === "string";
}
function testDef(code) {
return code in defs;
}
var codeWords = ["PROJECTEDCRS", "PROJCRS", "GEOGCS", "GEOCCS", "PROJCS", "LOCAL_CS", "GEODCRS", "GEODETICCRS", "GEODETICDATUM", "ENGCRS", "ENGINEERINGCRS"];
function testWKT(code) {
return codeWords.some(function(word) {
return code.indexOf(word) > -1;
});
}
var codes = ["3857", "900913", "3785", "102113"];
function checkMercator(item) {
var auth = match$1(item, "authority");
if (!auth) {
return;
}
var code = match$1(auth, "epsg");
return code && codes.indexOf(code) > -1;
}
function checkProjStr(item) {
var ext = match$1(item, "extension");
if (!ext) {
return;
}
return match$1(ext, "proj4");
}
function testProj(code) {
return code[0] === "+";
}
function parse$1(code) {
if (testObj(code)) {
if (testDef(code)) {
return defs[code];
}
if (testWKT(code)) {
var out = wkt(code);
if (checkMercator(out)) {
return defs["EPSG:3857"];
}
var maybeProjStr = checkProjStr(out);
if (maybeProjStr) {
return projStr(maybeProjStr);
}
return out;
}
if (testProj(code)) {
return projStr(code);
}
} else {
return code;
}
}
function extend(destination, source) {
destination = destination || {};
var value, property;
if (!source) {
return destination;
}
for (property in source) {
value = source[property];
if (value !== void 0) {
destination[property] = value;
}
}
return destination;
}
function msfnz(eccent, sinphi, cosphi) {
var con = eccent * sinphi;
return cosphi / Math.sqrt(1 - con * con);
}
function sign(x2) {
return x2 < 0 ? -1 : 1;
}
function adjust_lon(x2) {
return Math.abs(x2) <= SPI ? x2 : x2 - sign(x2) * TWO_PI;
}
function tsfnz(eccent, phi, sinphi) {
var con = eccent * sinphi;
var com = 0.5 * eccent;
con = Math.pow((1 - con) / (1 + con), com);
return Math.tan(0.5 * (HALF_PI - phi)) / con;
}
function phi2z(eccent, ts) {
var eccnth = 0.5 * eccent;
var con, dphi;
var phi = HALF_PI - 2 * Math.atan(ts);
for (var i2 = 0; i2 <= 15; i2++) {
con = eccent * Math.sin(phi);
dphi = HALF_PI - 2 * Math.atan(ts * Math.pow((1 - con) / (1 + con), eccnth)) - phi;
phi += dphi;
if (Math.abs(dphi) <= 1e-10) {
return phi;
}
}
return -9999;
}
function init$w() {
var con = this.b / this.a;
this.es = 1 - con * con;
if (!("x0" in this)) {
this.x0 = 0;
}
if (!("y0" in this)) {
this.y0 = 0;
}
this.e = Math.sqrt(this.es);
if (this.lat_ts) {
if (this.sphere) {
this.k0 = Math.cos(this.lat_ts);
} else {
this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
}
} else {
if (!this.k0) {
if (this.k) {
this.k0 = this.k;
} else {
this.k0 = 1;
}
}
}
}
function forward$v(p2) {
var lon = p2.x;
var lat = p2.y;
if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {
return null;
}
var x2, y2;
if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
return null;
} else {
if (this.sphere) {
x2 = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
y2 = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));
} else {
var sinphi = Math.sin(lat);
var ts = tsfnz(this.e, lat, sinphi);
x2 = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);
y2 = this.y0 - this.a * this.k0 * Math.log(ts);
}
p2.x = x2;
p2.y = y2;
return p2;
}
}
function inverse$v(p2) {
var x2 = p2.x - this.x0;
var y2 = p2.y - this.y0;
var lon, lat;
if (this.sphere) {
lat = HALF_PI - 2 * Math.atan(Math.exp(-y2 / (this.a * this.k0)));
} else {
var ts = Math.exp(-y2 / (this.a * this.k0));
lat = phi2z(this.e, ts);
if (lat === -9999) {
return null;
}
}
lon = adjust_lon(this.long0 + x2 / (this.a * this.k0));
p2.x = lon;
p2.y = lat;
return p2;
}
var names$x = ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"];
const merc = {
init: init$w,
forward: forward$v,
inverse: inverse$v,
names: names$x
};
function init$v() {
}
function identity(pt2) {
return pt2;
}
var names$w = ["longlat", "identity"];
const longlat = {
init: init$v,
forward: identity,
inverse: identity,
names: names$w
};
var projs = [merc, longlat];
var names$v = {};
var projStore = [];
function add(proj, i2) {
var len = projStore.length;
if (!proj.names) {
console.log(i2);
return true;
}
projStore[len] = proj;
proj.names.forEach(function(n2) {
names$v[n2.toLowerCase()] = len;
});
return this;
}
function get$1(name) {
if (!name) {
return false;
}
var n2 = name.toLowerCase();
if (typeof names$v[n2] !== "undefined" && projStore[names$v[n2]]) {
return projStore[names$v[n2]];
}
}
function start() {
projs.forEach(add);
}
const projections = {
start,
add,
get: get$1
};
var exports$1 = {};
exports$1.MERIT = {
a: 6378137,
rf: 298.257,
ellipseName: "MERIT 1983"
};
exports$1.SGS85 = {
a: 6378136,
rf: 298.257,
ellipseName: "Soviet Geodetic System 85"
};
exports$1.GRS80 = {
a: 6378137,
rf: 298.257222101,
ellipseName: "GRS 1980(IUGG, 1980)"
};
exports$1.IAU76 = {
a: 6378140,
rf: 298.257,
ellipseName: "IAU 1976"
};
exports$1.airy = {
a: 6377563396e-3,
b: 635625691e-2,
ellipseName: "Airy 1830"
};
exports$1.APL4 = {
a: 6378137,
rf: 298.25,
ellipseName: "Appl. Physics. 1965"
};
exports$1.NWL9D = {
a: 6378145,
rf: 298.25,
ellipseName: "Naval Weapons Lab., 1965"
};
exports$1.mod_airy = {
a: 6377340189e-3,
b: 6356034446e-3,
ellipseName: "Modified Airy"
};
exports$1.andrae = {
a: 637710443e-2,
rf: 300,
ellipseName: "Andrae 1876 (Den., Iclnd.)"
};
exports$1.aust_SA = {
a: 6378160,
rf: 298.25,
ellipseName: "Australian Natl & S. Amer. 1969"
};
exports$1.GRS67 = {
a: 6378160,
rf: 298.247167427,
ellipseName: "GRS 67(IUGG 1967)"
};
exports$1.bessel = {
a: 6377397155e-3,
rf: 299.1528128,
ellipseName: "Bessel 1841"
};
exports$1.bess_nam = {
a: 6377483865e-3,
rf: 299.1528128,
ellipseName: "Bessel 1841 (Namibia)"
};
exports$1.clrk66 = {
a: 63782064e-1,
b: 63565838e-1,
ellipseName: "Clarke 1866"
};
exports$1.clrk80 = {
a: 6378249145e-3,
rf: 293.4663,
ellipseName: "Clarke 1880 mod."
};
exports$1.clrk80ign = {
a: 63782492e-1,
b: 6356515,
rf: 293.4660213,
ellipseName: "Clarke 1880 (IGN)"
};
exports$1.clrk58 = {
a: 6378293645208759e-9,
rf: 294.2606763692654,
ellipseName: "Clarke 1858"
};
exports$1.CPM = {
a: 63757387e-1,
rf: 334.29,
ellipseName: "Comm. des Poids et Mesures 1799"
};
exports$1.delmbr = {
a: 6376428,
rf: 311.5,
ellipseName: "Delambre 1810 (Belgium)"
};
exports$1.engelis = {
a: 637813605e-2,
rf: 298.2566,
ellipseName: "Engelis 1985"
};
exports$1.evrst30 = {
a: 6377276345e-3,
rf: 300.8017,
ellipseName: "Everest 1830"
};
exports$1.evrst48 = {
a: 6377304063e-3,
rf: 300.8017,
ellipseName: "Everest 1948"
};
exports$1.evrst56 = {
a: 6377301243e-3,
rf: 300.8017,
ellipseName: "Everest 1956"
};
exports$1.evrst69 = {
a: 6377295664e-3,
rf: 300.8017,
ellipseName: "Everest 1969"
};
exports$1.evrstSS = {
a: 6377298556e-3,
rf: 300.8017,
ellipseName: "Everest (Sabah & Sarawak)"
};
exports$1.fschr60 = {
a: 6378166,
rf: 298.3,
ellipseName: "Fischer (Mercury Datum) 1960"
};
exports$1.fschr60m = {
a: 6378155,
rf: 298.3,
ellipseName: "Fischer 1960"
};
exports$1.fschr68 = {
a: 6378150,
rf: 298.3,
ellipseName: "Fischer 1968"
};
exports$1.helmert = {
a: 6378200,
rf: 298.3,
ellipseName: "Helmert 1906"
};
exports$1.hough = {
a: 6378270,
rf: 297,
ellipseName: "Hough"
};
exports$1.intl = {
a: 6378388,
rf: 297,
ellipseName: "International 1909 (Hayford)"
};
exports$1.kaula = {
a: 6378163,
rf: 298.24,
ellipseName: "Kaula 1961"
};
exports$1.lerch = {
a: 6378139,
rf: 298.257,
ellipseName: "Lerch 1979"
};
exports$1.mprts = {
a: 6397300,
rf: 191,
ellipseName: "Maupertius 1738"
};
exports$1.new_intl = {
a: 63781575e-1,
b: 63567722e-1,
ellipseName: "New International 1967"
};
exports$1.plessis = {
a: 6376523,
rf: 6355863,
ellipseName: "Plessis 1817 (France)"
};
exports$1.krass = {
a: 6378245,
rf: 298.3,
ellipseName: "Krassovsky, 1942"
};
exports$1.SEasia = {
a: 6378155,
b: 63567733205e-4,
ellipseName: "Southeast Asia"
};
exports$1.walbeck = {
a: 6376896,
b: 63558348467e-4,
ellipseName: "Walbeck"
};
exports$1.WGS60 = {
a: 6378165,
rf: 298.3,
ellipseName: "WGS 60"
};
exports$1.WGS66 = {
a: 6378145,
rf: 298.25,
ellipseName: "WGS 66"
};
exports$1.WGS7 = {
a: 6378135,
rf: 298.26,
ellipseName: "WGS 72"
};
var WGS84 = exports$1.WGS84 = {
a: 6378137,
rf: 298.257223563,
ellipseName: "WGS 84"
};
exports$1.sphere = {
a: 6370997,
b: 6370997,
ellipseName: "Normal Sphere (r=6370997)"
};
function eccentricity(a2, b2, rf, R_A) {
var a22 = a2 * a2;
var b22 = b2 * b2;
var es = (a22 - b22) / a22;
var e2 = 0;
if (R_A) {
a2 *= 1 - es * (SIXTH + es * (RA4 + es * RA6));
a22 = a2 * a2;
es = 0;
} else {
e2 = Math.sqrt(es);
}
var ep2 = (a22 - b22) / b22;
return {
es,
e: e2,
ep2
};
}
function sphere(a2, b2, rf, ellps, sphere2) {
if (!a2) {
var ellipse = match$1(exports$1, ellps);
if (!ellipse) {
ellipse = WGS84;
}
a2 = ellipse.a;
b2 = ellipse.b;
rf = ellipse.rf;
}
if (rf && !b2) {
b2 = (1 - 1 / rf) * a2;
}
if (rf === 0 || Math.abs(a2 - b2) < EPSLN) {
sphere2 = true;
b2 = a2;
}
return {
a: a2,
b: b2,
rf,
sphere: sphere2
};
}
var exports = {};
exports.wgs84 = {
towgs84: "0,0,0",
ellipse: "WGS84",
datumName: "WGS84"
};
exports.ch1903 = {
towgs84: "674.374,15.056,405.346",
ellipse: "bessel",
datumName: "swiss"
};
exports.ggrs87 = {
towgs84: "-199.87,74.79,246.62",
ellipse: "GRS80",
datumName: "Greek_Geodetic_Reference_System_1987"
};
exports.nad83 = {
towgs84: "0,0,0",
ellipse: "GRS80",
datumName: "North_American_Datum_1983"
};
exports.nad27 = {
nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",
ellipse: "clrk66",
datumName: "North_American_Datum_1927"
};
exports.potsdam = {
towgs84: "598.1,73.7,418.2,0.202,0.045,-2.455,6.7",
ellipse: "bessel",
datumName: "Potsdam Rauenberg 1950 DHDN"
};
exports.carthage = {
towgs84: "-263.0,6.0,431.0",
ellipse: "clark80",
datumName: "Carthage 1934 Tunisia"
};
exports.hermannskogel = {
towgs84: "577.326,90.129,463.919,5.137,1.474,5.297,2.4232",
ellipse: "bessel",
datumName: "Hermannskogel"
};
exports.militargeographische_institut = {
towgs84: "577.326,90.129,463.919,5.137,1.474,5.297,2.4232",
ellipse: "bessel",
datumName: "Militar-Geographische Institut"
};
exports.osni52 = {
towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
ellipse: "airy",
datumName: "Irish National"
};
exports.ire65 = {
towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
ellipse: "mod_airy",
datumName: "Ireland 1965"
};
exports.rassadiran = {
towgs84: "-133.63,-157.5,-158.62",
ellipse: "intl",
datumName: "Rassadiran"
};
exports.nzgd49 = {
towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",
ellipse: "intl",
datumName: "New Zealand Geodetic Datum 1949"
};
exports.osgb36 = {
towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",
ellipse: "airy",
datumName: "Airy 1830"
};
exports.s_jtsk = {
towgs84: "589,76,480",
ellipse: "bessel",
datumName: "S-JTSK (Ferro)"
};
exports.beduaram = {
towgs84: "-106,-87,188",
ellipse: "clrk80",
datumName: "Beduaram"
};
exports.gunung_segara = {
towgs84: "-403,684,41",
ellipse: "bessel",
datumName: "Gunung Segara Jakarta"
};
exports.rnb72 = {
towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",
ellipse: "intl",
datumName: "Reseau National Belge 1972"
};
function datum(datumCode, datum_params, a2, b2, es, ep2, nadgrids) {
var out = {};
if (datumCode === void 0 || datumCode === "none") {
out.datum_type = PJD_NODATUM;
} else {
out.datum_type = PJD_WGS84;
}
if (datum_params) {
out.datum_params = datum_params.map(parseFloat);
if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {
out.datum_type = PJD_3PARAM;
}
if (out.datum_params.length > 3) {
if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {
out.datum_type = PJD_7PARAM;
out.datum_params[3] *= SEC_TO_RAD;
out.datum_params[4] *= SEC_TO_RAD;
out.datum_params[5] *= SEC_TO_RAD;
out.datum_params[6] = out.datum_params[6] / 1e6 + 1;
}
}
}
if (nadgrids) {
out.datum_type = PJD_GRIDSHIFT;
out.grids = nadgrids;
}
out.a = a2;
out.b = b2;
out.es = es;
out.ep2 = ep2;
return out;
}
var loadedNadgrids = {};
function nadgrid(key, data2) {
var view = new DataView(data2);
var isLittleEndian = detectLittleEndian(view);
var header = readHeader(view, isLittleEndian);
var subgrids = readSubgrids(view, header, isLittleEndian);
var nadgrid2 = { header, subgrids };
loadedNadgrids[key] = nadgrid2;
return nadgrid2;
}
function getNadgrids(nadgrids) {
if (nadgrids === void 0) {
return null;
}
var grids = nadgrids.split(",");
return grids.map(parseNadgridString);
}
function parseNadgridString(value) {
if (value.length === 0) {
return null;
}
var optional = value[0] === "@";
if (optional) {
value = value.slice(1);
}
if (value === "null") {
return { name: "null", mandatory: !optional, grid: null, isNull: true };
}
return {
name: value,
mandatory: !optional,
grid: loadedNadgrids[value] || null,
isNull: false
};
}
function secondsToRadians(seconds) {
return seconds / 3600 * Math.PI / 180;
}
function detectLittleEndian(view) {
var nFields = view.getInt32(8, false);
if (nFields === 11) {
return false;
}
nFields = view.getInt32(8, true);
if (nFields !== 11) {
console.warn("Failed to detect nadgrid endian-ness, defaulting to little-endian");
}
return true;
}
function readHeader(view, isLittleEndian) {
return {
nFields: view.getInt32(8, isLittleEndian),
nSubgridFields: view.getInt32(24, isLittleEndian),
nSubgrids: view.getInt32(40, isLittleEndian),
shiftType: decodeString(view, 56, 56 + 8).trim(),
fromSemiMajorAxis: view.getFloat64(120, isLittleEndian),
fromSemiMinorAxis: view.getFloat64(136, isLittleEndian),
toSemiMajorAxis: view.getFloat64(152, isLittleEndian),
toSemiMinorAxis: view.getFloat64(168, isLittleEndian)
};
}
function decodeString(view, start2, end) {
return String.fromCharCode.apply(null, new Uint8Array(view.buffer.slice(start2, end)));
}
function readSubgrids(view, header, isLittleEndian) {
var gridOffset = 176;
var grids = [];
for (var i2 = 0; i2 < header.nSubgrids; i2++) {
var subHeader = readGridHeader(view, gridOffset, isLittleEndian);
var nodes = readGridNodes(view, gridOffset, subHeader, isLittleEndian);
var lngColumnCount = Math.round(
1 + (subHeader.upperLongitude - subHeader.lowerLongitude) / subHeader.longitudeInterval
);
var latColumnCount = Math.round(
1 + (subHeader.upperLatitude - subHeader.lowerLatitude) / subHeader.latitudeInterval
);
grids.push({
ll: [secondsToRadians(subHeader.lowerLongitude), secondsToRadians(subHeader.lowerLatitude)],
del: [secondsToRadians(subHeader.longitudeInterval), secondsToRadians(subHeader.latitudeInterval)],
lim: [lngColumnCount, latColumnCount],
count: subHeader.gridNodeCount,
cvs: mapNodes(nodes)
});
gridOffset += 176 + subHeader.gridNodeCount * 16;
}
return grids;
}
function mapNodes(nodes) {
return nodes.map(function(r2) {
return [secondsToRadians(r2.longitudeShift), secondsToRadians(r2.latitudeShift)];
});
}
function readGridHeader(view, offset, isLittleEndian) {
return {
name: decodeString(view, offset + 8, offset + 16).trim(),
parent: decodeString(view, offset + 24, offset + 24 + 8).trim(),
lowerLatitude: view.getFloat64(offset + 72, isLittleEndian),
upperLatitude: view.getFloat64(offset + 88, isLittleEndian),
lowerLongitude: view.getFloat64(offset + 104, isLittleEndian),
upperLongitude: view.getFloat64(offset + 120, isLittleEndian),
latitudeInterval: view.getFloat64(offset + 136, isLittleEndian),
longitudeInterval: view.getFloat64(offset + 152, isLittleEndian),
gridNodeCount: view.getInt32(offset + 168, isLittleEndian)
};
}
function readGridNodes(view, offset, gridHeader, isLittleEndian) {
var nodesOffset = offset + 176;
var gridRecordLength = 16;
var gridShiftRecords = [];
for (var i2 = 0; i2 < gridHeader.gridNodeCount; i2++) {
var record = {
latitudeShift: view.getFloat32(nodesOffset + i2 * gridRecordLength, isLittleEndian),
longitudeShift: view.getFloat32(nodesOffset + i2 * gridRecordLength + 4, isLittleEndian),
latitudeAccuracy: view.getFloat32(nodesOffset + i2 * gridRecordLength + 8, isLittleEndian),
longitudeAccuracy: view.getFloat32(nodesOffset + i2 * gridRecordLength + 12, isLittleEndian)
};
gridShiftRecords.push(record);
}
return gridShiftRecords;
}
function Projection(srsCode, callback) {
if (!(this instanceof Projection)) {
return new Projection(srsCode);
}
callback = callback || function(error) {
if (error) {
throw error;
}
};
var json = parse$1(srsCode);
if (typeof json !== "object") {
callback(srsCode);
return;
}
var ourProj = Projection.projections.get(json.projName);
if (!ourProj) {
callback(srsCode);
return;
}
if (json.datumCode && json.datumCode !== "none") {
var datumDef = match$1(exports, json.datumCode);
if (datumDef) {
json.datum_params = json.datum_params || (datumDef.towgs84 ? datumDef.towgs84.split(",") : null);
json.ellps = datumDef.ellipse;
json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;
}
}
json.k0 = json.k0 || 1;
json.axis = json.axis || "enu";
json.ellps = json.ellps || "wgs84";
json.lat1 = json.lat1 || json.lat0;
var sphere_ = sphere(json.a, json.b, json.rf, json.ellps, json.sphere);
var ecc = eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);
var nadgrids = getNadgrids(json.nadgrids);
var datumObj = json.datum || datum(
json.datumCode,
json.datum_params,
sphere_.a,
sphere_.b,
ecc.es,
ecc.ep2,
nadgrids
);
extend(this, json);
extend(this, ourProj);
this.a = sphere_.a;
this.b = sphere_.b;
this.rf = sphere_.rf;
this.sphere = sphere_.sphere;
this.es = ecc.es;
this.e = ecc.e;
this.ep2 = ecc.ep2;
this.datum = datumObj;
this.init();
callback(null, this);
}
Projection.projections = projections;
Projection.projections.start();
function compareDatums(source, dest) {
if (source.datum_type !== dest.datum_type) {
return false;
} else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 5e-11) {
return false;
} else if (source.datum_type === PJD_3PARAM) {
return source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2];
} else if (source.datum_type === PJD_7PARAM) {
return source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6];
} else {
return true;
}
}
function geodeticToGeocentric(p2, es, a2) {
var Longitude = p2.x;
var Latitude = p2.y;
var Height = p2.z ? p2.z : 0;
var Rn;
var Sin_Lat;
var Sin2_Lat;
var Cos_Lat;
if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {
Latitude = -HALF_PI;
} else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {
Latitude = HALF_PI;
} else if (Latitude < -HALF_PI) {
return { x: -Infinity, y: -Infinity, z: p2.z };
} else if (Latitude > HALF_PI) {
return { x: Infinity, y: Infinity, z: p2.z };
}
if (Longitude > Math.PI) {
Longitude -= 2 * Math.PI;
}
Sin_Lat = Math.sin(Latitude);
Cos_Lat = Math.cos(Latitude);
Sin2_Lat = Sin_Lat * Sin_Lat;
Rn = a2 / Math.sqrt(1 - es * Sin2_Lat);
return {
x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),
y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),
z: (Rn * (1 - es) + Height) * Sin_Lat
};
}
function geocentricToGeodetic(p2, es, a2, b2) {
var genau = 1e-12;
var genau2 = genau * genau;
var maxiter = 30;
var P2;
var RR;
var CT;
var ST;
var RX;
var RK;
var RN;
var CPHI0;
var SPHI0;
var CPHI;
var SPHI;
var SDPHI;
var iter;
var X2 = p2.x;
var Y2 = p2.y;
var Z2 = p2.z ? p2.z : 0;
var Longitude;
var Latitude;
var Height;
P2 = Math.sqrt(X2 * X2 + Y2 * Y2);
RR = Math.sqrt(X2 * X2 + Y2 * Y2 + Z2 * Z2);
if (P2 / a2 < genau) {
Longitude = 0;
if (RR / a2 < genau) {
Latitude = HALF_PI;
Height = -b2;
return {
x: p2.x,
y: p2.y,
z: p2.z
};
}
} else {
Longitude = Math.atan2(Y2, X2);
}
CT = Z2 / RR;
ST = P2 / RR;
RX = 1 / Math.sqrt(1 - es * (2 - es) * ST * ST);
CPHI0 = ST * (1 - es) * RX;
SPHI0 = CT * RX;
iter = 0;
do {
iter++;
RN = a2 / Math.sqrt(1 - es * SPHI0 * SPHI0);
Height = P2 * CPHI0 + Z2 * SPHI0 - RN * (1 - es * SPHI0 * SPHI0);
RK = es * RN / (RN + Height);
RX = 1 / Math.sqrt(1 - RK * (2 - RK) * ST * ST);
CPHI = ST * (1 - RK) * RX;
SPHI = CT * RX;
SDPHI = SPHI * CPHI0 - CPHI * SPHI0;
CPHI0 = CPHI;
SPHI0 = SPHI;
} while (SDPHI * SDPHI > genau2 && iter < maxiter);
Latitude = Math.atan(SPHI / Math.abs(CPHI));
return {
x: Longitude,
y: Latitude,
z: Height
};
}
function geocentricToWgs84(p2, datum_type, datum_params) {
if (datum_type === PJD_3PARAM) {
return {
x: p2.x + datum_params[0],
y: p2.y + datum_params[1],
z: p2.z + datum_params[2]
};
} else if (datum_type === PJD_7PARAM) {
var Dx_BF = datum_params[0];
var Dy_BF = datum_params[1];
var Dz_BF = datum_params[2];
var Rx_BF = datum_params[3];
var Ry_BF = datum_params[4];
var Rz_BF = datum_params[5];
var M_BF = datum_params[6];
return {
x: M_BF * (p2.x - Rz_BF * p2.y + Ry_BF * p2.z) + Dx_BF,
y: M_BF * (Rz_BF * p2.x + p2.y - Rx_BF * p2.z) + Dy_BF,
z: M_BF * (-Ry_BF * p2.x + Rx_BF * p2.y + p2.z) + Dz_BF
};
}
}
function geocentricFromWgs84(p2, datum_type, datum_params) {
if (datum_type === PJD_3PARAM) {
return {
x: p2.x - datum_params[0],
y: p2.y - datum_params[1],
z: p2.z - datum_params[2]
};
} else if (datum_type === PJD_7PARAM) {
var Dx_BF = datum_params[0];
var Dy_BF = datum_params[1];
var Dz_BF = datum_params[2];
var Rx_BF = datum_params[3];
var Ry_BF = datum_params[4];
var Rz_BF = datum_params[5];
var M_BF = datum_params[6];
var x_tmp = (p2.x - Dx_BF) / M_BF;
var y_tmp = (p2.y - Dy_BF) / M_BF;
var z_tmp = (p2.z - Dz_BF) / M_BF;
return {
x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,
y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,
z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp
};
}
}
function checkParams(type) {
return type === PJD_3PARAM || type === PJD_7PARAM;
}
function datum_transform(source, dest, point) {
if (compareDatums(source, dest)) {
return point;
}
if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {
return point;
}
var source_a = source.a;
var source_es = source.es;
if (source.datum_type === PJD_GRIDSHIFT) {
var gridShiftCode = applyGridShift(source, false, point);
if (gridShiftCode !== 0) {
return void 0;
}
source_a = SRS_WGS84_SEMIMAJOR;
source_es = SRS_WGS84_ESQUARED;
}
var dest_a = dest.a;
var dest_b = dest.b;
var dest_es = dest.es;
if (dest.datum_type === PJD_GRIDSHIFT) {
dest_a = SRS_WGS84_SEMIMAJOR;
dest_b = SRS_WGS84_SEMIMINOR;
dest_es = SRS_WGS84_ESQUARED;
}
if (source_es === dest_es && source_a === dest_a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) {
return point;
}
point = geodeticToGeocentric(point, source_es, source_a);
if (checkParams(source.datum_type)) {
point = geocentricToWgs84(point, source.datum_type, source.datum_params);
}
if (checkParams(dest.datum_type)) {
point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);
}
point = geocentricToGeodetic(point, dest_es, dest_a, dest_b);
if (dest.datum_type === PJD_GRIDSHIFT) {
var destGridShiftResult = applyGridShift(dest, true, point);
if (destGridShiftResult !== 0) {
return void 0;
}
}
return point;
}
function applyGridShift(source, inverse2, point) {
if (source.grids === null || source.grids.length === 0) {
console.log("Grid shift grids not found");
return -1;
}
var input = { x: -point.x, y: point.y };
var output = { x: Number.NaN, y: Number.NaN };
var attemptedGrids = [];
outer:
for (var i2 = 0; i2 < source.grids.length; i2++) {
var grid = source.grids[i2];
attemptedGrids.push(grid.name);
if (grid.isNull) {
output = input;
break;
}
grid.mandatory;
if (grid.grid === null) {
if (grid.mandatory) {
console.log("Unable to find mandatory grid '" + grid.name + "'");
return -1;
}
continue;
}
var subgrids = grid.grid.subgrids;
for (var j2 = 0, jj = subgrids.length; j2 < jj; j2++) {
var subgrid = subgrids[j2];
var epsilon = (Math.abs(subgrid.del[1]) + Math.abs(subgrid.del[0])) / 1e4;
var minX = subgrid.ll[0] - epsilon;
var minY = subgrid.ll[1] - epsilon;
var maxX = subgrid.ll[0] + (subgrid.lim[0] - 1) * subgrid.del[0] + epsilon;
var maxY = subgrid.ll[1] + (subgrid.lim[1] - 1) * subgrid.del[1] + epsilon;
if (minY > input.y || minX > input.x || maxY < input.y || maxX < input.x) {
continue;
}
output = applySubgridShift(input, inverse2, subgrid);
if (!isNaN(output.x)) {
break outer;
}
}
}
if (isNaN(output.x)) {
console.log("Failed to find a grid shift table for location '" + -input.x * R2D + " " + input.y * R2D + " tried: '" + attemptedGrids + "'");
return -1;
}
point.x = -output.x;
point.y = output.y;
return 0;
}
function applySubgridShift(pin, inverse2, ct2) {
var val = { x: Number.NaN, y: Number.NaN };
if (isNaN(pin.x)) {
return val;
}
var tb = { x: pin.x, y: pin.y };
tb.x -= ct2.ll[0];
tb.y -= ct2.ll[1];
tb.x = adjust_lon(tb.x - Math.PI) + Math.PI;
var t3 = nadInterpolate(tb, ct2);
if (inverse2) {
if (isNaN(t3.x)) {
return val;
}
t3.x = tb.x - t3.x;
t3.y = tb.y - t3.y;
var i2 = 9, tol = 1e-12;
var dif, del;
do {
del = nadInterpolate(t3, ct2);
if (isNaN(del.x)) {
console.log("Inverse grid shift iteration failed, presumably at grid edge. Using first approximation.");
break;
}
dif = { x: tb.x - (del.x + t3.x), y: tb.y - (del.y + t3.y) };
t3.x += dif.x;
t3.y += dif.y;
} while (i2-- && Math.abs(dif.x) > tol && Math.abs(dif.y) > tol);
if (i2 < 0) {
console.log("Inverse grid shift iterator failed to converge.");
return val;
}
val.x = adjust_lon(t3.x + ct2.ll[0]);
val.y = t3.y + ct2.ll[1];
} else {
if (!isNaN(t3.x)) {
val.x = pin.x + t3.x;
val.y = pin.y + t3.y;
}
}
return val;
}
function nadInterpolate(pin, ct2) {
var t3 = { x: pin.x / ct2.del[0], y: pin.y / ct2.del[1] };
var indx = { x: Math.floor(t3.x), y: Math.floor(t3.y) };
var frct = { x: t3.x - 1 * indx.x, y: t3.y - 1 * indx.y };
var val = { x: Number.NaN, y: Number.NaN };
var inx;
if (indx.x < 0 || indx.x >= ct2.lim[0]) {
return val;
}
if (indx.y < 0 || indx.y >= ct2.lim[1]) {
return val;
}
inx = indx.y * ct2.lim[0] + indx.x;
var f00 = { x: ct2.cvs[inx][0], y: ct2.cvs[inx][1] };
inx++;
var f10 = { x: ct2.cvs[inx][0], y: ct2.cvs[inx][1] };
inx += ct2.lim[0];
var f11 = { x: ct2.cvs[inx][0], y: ct2.cvs[inx][1] };
inx--;
var f01 = { x: ct2.cvs[inx][0], y: ct2.cvs[inx][1] };
var m11 = frct.x * frct.y, m10 = frct.x * (1 - frct.y), m00 = (1 - frct.x) * (1 - frct.y), m01 = (1 - frct.x) * frct.y;
val.x = m00 * f00.x + m10 * f10.x + m01 * f01.x + m11 * f11.x;
val.y = m00 * f00.y + m10 * f10.y + m01 * f01.y + m11 * f11.y;
return val;
}
function adjust_axis(crs, denorm, point) {
var xin = point.x, yin = point.y, zin = point.z || 0;
var v2, t3, i2;
var out = {};
for (i2 = 0; i2 < 3; i2++) {
if (denorm && i2 === 2 && point.z === void 0) {
continue;
}
if (i2 === 0) {
v2 = xin;
if ("ew".indexOf(crs.axis[i2]) !== -1) {
t3 = "x";
} else {
t3 = "y";
}
} else if (i2 === 1) {
v2 = yin;
if ("ns".indexOf(crs.axis[i2]) !== -1) {
t3 = "y";
} else {
t3 = "x";
}
} else {
v2 = zin;
t3 = "z";
}
switch (crs.axis[i2]) {
case "e":
out[t3] = v2;
break;
case "w":
out[t3] = -v2;
break;
case "n":
out[t3] = v2;
break;
case "s":
out[t3] = -v2;
break;
case "u":
if (point[t3] !== void 0) {
out.z = v2;
}
break;
case "d":
if (point[t3] !== void 0) {
out.z = -v2;
}
break;
default:
return null;
}
}
return out;
}
function common(array) {
var out = {
x: array[0],
y: array[1]
};
if (array.length > 2) {
out.z = array[2];
}
if (array.length > 3) {
out.m = array[3];
}
return out;
}
function checkSanity(point) {
checkCoord(point.x);
checkCoord(point.y);
}
function checkCoord(num) {
if (typeof Number.isFinite === "function") {
if (Number.isFinite(num)) {
return;
}
throw new TypeError("coordinates must be finite numbers");
}
if (typeof num !== "number" || num !== num || !isFinite(num)) {
throw new TypeError("coordinates must be finite numbers");
}
}
function checkNotWGS(source, dest) {
return (source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM || source.datum.datum_type === PJD_GRIDSHIFT) && dest.datumCode !== "WGS84" || (dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM || dest.datum.datum_type === PJD_GRIDSHIFT) && source.datumCode !== "WGS84";
}
function transform$2(source, dest, point, enforceAxis) {
var wgs842;
if (Array.isArray(point)) {
point = common(point);
} else {
point = {
x: point.x,
y: point.y,
z: point.z,
m: point.m
};
}
var hasZ = point.z !== void 0;
checkSanity(point);
if (source.datum && dest.datum && checkNotWGS(source, dest)) {
wgs842 = new Projection("WGS84");
point = transform$2(source, wgs842, point, enforceAxis);
source = wgs842;
}
if (enforceAxis && source.axis !== "enu") {
point = adjust_axis(source, false, point);
}
if (source.projName === "longlat") {
point = {
x: point.x * D2R$1,
y: point.y * D2R$1,
z: point.z || 0
};
} else {
if (source.to_meter) {
point = {
x: point.x * source.to_meter,
y: point.y * source.to_meter,
z: point.z || 0
};
}
point = source.inverse(point);
if (!point) {
return;
}
}
if (source.from_greenwich) {
point.x += source.from_greenwich;
}
point = datum_transform(source.datum, dest.datum, point);
if (!point) {
return;
}
if (dest.from_greenwich) {
point = {
x: point.x - dest.from_greenwich,
y: point.y,
z: point.z || 0
};
}
if (dest.projName === "longlat") {
point = {
x: point.x * R2D,
y: point.y * R2D,
z: point.z || 0
};
} else {
point = dest.forward(point);
if (dest.to_meter) {
point = {
x: point.x / dest.to_meter,
y: point.y / dest.to_meter,
z: point.z || 0
};
}
}
if (enforceAxis && dest.axis !== "enu") {
return adjust_axis(dest, true, point);
}
if (point && !hasZ) {
delete point.z;
}
return point;
}
var wgs84 = Projection("WGS84");
function transformer(from, to, coords, enforceAxis) {
var transformedArray, out, keys3;
if (Array.isArray(coords)) {
transformedArray = transform$2(from, to, coords, enforceAxis) || { x: NaN, y: NaN };
if (coords.length > 2) {
if (typeof from.name !== "undefined" && from.name === "geocent" || typeof to.name !== "undefined" && to.name === "geocent") {
if (typeof transformedArray.z === "number") {
return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.splice(3));
} else {
return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.splice(3));
}
} else {
return [transformedArray.x, transformedArray.y].concat(coords.splice(2));
}
} else {
return [transformedArray.x, transformedArray.y];
}
} else {
out = transform$2(from, to, coords, enforceAxis);
keys3 = Object.keys(coords);
if (keys3.length === 2) {
return out;
}
keys3.forEach(function(key) {
if (typeof from.name !== "undefined" && from.name === "geocent" || typeof to.name !== "undefined" && to.name === "geocent") {
if (key === "x" || key === "y" || key === "z") {
return;
}
} else {
if (key === "x" || key === "y") {
return;
}
}
out[key] = coords[key];
});
return out;
}
}
function checkProj(item) {
if (item instanceof Projection) {
return item;
}
if (item.oProj) {
return item.oProj;
}
return Projection(item);
}
function proj4(fromProj, toProj, coord) {
fromProj = checkProj(fromProj);
var single = false;
var obj;
if (typeof toProj === "undefined") {
toProj = fromProj;
fromProj = wgs84;
single = true;
} else if (typeof toProj.x !== "undefined" || Array.isArray(toProj)) {
coord = toProj;
toProj = fromProj;
fromProj = wgs84;
single = true;
}
toProj = checkProj(toProj);
if (coord) {
return transformer(fromProj, toProj, coord);
} else {
obj = {
forward: function(coords, enforceAxis) {
return transformer(fromProj, toProj, coords, enforceAxis);
},
inverse: function(coords, enforceAxis) {
return transformer(toProj, fromProj, coords, enforceAxis);
}
};
if (single) {
obj.oProj = toProj;
}
return obj;
}
}
var NUM_100K_SETS = 6;
var SET_ORIGIN_COLUMN_LETTERS = "AJSAJS";
var SET_ORIGIN_ROW_LETTERS = "AFAFAF";
var A$2 = 65;
var I$1 = 73;
var O$2 = 79;
var V$2 = 86;
var Z$2 = 90;
const mgrs = {
forward: forward$u,
inverse: inverse$u,
toPoint
};
function forward$u(ll, accuracy) {
accuracy = accuracy || 5;
return encode(LLtoUTM({
lat: ll[1],
lon: ll[0]
}), accuracy);
}
function inverse$u(mgrs2) {
var bbox = UTMtoLL(decode$2(mgrs2.toUpperCase()));
if (bbox.lat && bbox.lon) {
return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];
}
return [bbox.left, bbox.bottom, bbox.right, bbox.top];
}
function toPoint(mgrs2) {
var bbox = UTMtoLL(decode$2(mgrs2.toUpperCase()));
if (bbox.lat && bbox.lon) {
return [bbox.lon, bbox.lat];
}
return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];
}
function degToRad(deg2) {
return deg2 * (Math.PI / 180);
}
function radToDeg(rad) {
return 180 * (rad / Math.PI);
}
function LLtoUTM(ll) {
var Lat = ll.lat;
var Long = ll.lon;
var a2 = 6378137;
var eccSquared = 669438e-8;
var k0 = 0.9996;
var LongOrigin;
var eccPrimeSquared;
var N2, T2, C2, A5, M2;
var LatRad = degToRad(Lat);
var LongRad = degToRad(Long);
var LongOriginRad;
var ZoneNumber;
ZoneNumber = Math.floor((Long + 180) / 6) + 1;
if (Long === 180) {
ZoneNumber = 60;
}
if (Lat >= 56 && Lat < 64 && Long >= 3 && Long < 12) {
ZoneNumber = 32;
}
if (Lat >= 72 && Lat < 84) {
if (Long >= 0 && Long < 9) {
ZoneNumber = 31;
} else if (Long >= 9 && Long < 21) {
ZoneNumber = 33;
} else if (Long >= 21 && Long < 33) {
ZoneNumber = 35;
} else if (Long >= 33 && Long < 42) {
ZoneNumber = 37;
}
}
LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3;
LongOriginRad = degToRad(LongOrigin);
eccPrimeSquared = eccSquared / (1 - eccSquared);
N2 = a2 / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));
T2 = Math.tan(LatRad) * Math.tan(LatRad);
C2 = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);
A5 = Math.cos(LatRad) * (LongRad - LongOriginRad);
M2 = a2 * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - 35 * eccSquared * eccSquared * eccSquared / 3072 * Math.sin(6 * LatRad));
var UTMEasting = k0 * N2 * (A5 + (1 - T2 + C2) * A5 * A5 * A5 / 6 + (5 - 18 * T2 + T2 * T2 + 72 * C2 - 58 * eccPrimeSquared) * A5 * A5 * A5 * A5 * A5 / 120) + 5e5;
var UTMNorthing = k0 * (M2 + N2 * Math.tan(LatRad) * (A5 * A5 / 2 + (5 - T2 + 9 * C2 + 4 * C2 * C2) * A5 * A5 * A5 * A5 / 24 + (61 - 58 * T2 + T2 * T2 + 600 * C2 - 330 * eccPrimeSquared) * A5 * A5 * A5 * A5 * A5 * A5 / 720));
if (Lat < 0) {
UTMNorthing += 1e7;
}
return {
northing: Math.round(UTMNorthing),
easting: Math.round(UTMEasting),
zoneNumber: ZoneNumber,
zoneLetter: getLetterDesignator(Lat)
};
}
function UTMtoLL(utm2) {
var UTMNorthing = utm2.northing;
var UTMEasting = utm2.easting;
var zoneLetter = utm2.zoneLetter;
var zoneNumber = utm2.zoneNumber;
if (zoneNumber < 0 || zoneNumber > 60) {
return null;
}
var k0 = 0.9996;
var a2 = 6378137;
var eccSquared = 669438e-8;
var eccPrimeSquared;
var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));
var N1, T1, C12, R1, D2, M2;
var LongOrigin;
var mu, phi1Rad;
var x2 = UTMEasting - 5e5;
var y2 = UTMNorthing;
if (zoneLetter < "N") {
y2 -= 1e7;
}
LongOrigin = (zoneNumber - 1) * 6 - 180 + 3;
eccPrimeSquared = eccSquared / (1 - eccSquared);
M2 = y2 / k0;
mu = M2 / (a2 * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));
phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + 151 * e1 * e1 * e1 / 96 * Math.sin(6 * mu);
N1 = a2 / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));
T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);
C12 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);
R1 = a2 * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);
D2 = x2 / (N1 * k0);
var lat = phi1Rad - N1 * Math.tan(phi1Rad) / R1 * (D2 * D2 / 2 - (5 + 3 * T1 + 10 * C12 - 4 * C12 * C12 - 9 * eccPrimeSquared) * D2 * D2 * D2 * D2 / 24 + (61 + 90 * T1 + 298 * C12 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C12 * C12) * D2 * D2 * D2 * D2 * D2 * D2 / 720);
lat = radToDeg(lat);
var lon = (D2 - (1 + 2 * T1 + C12) * D2 * D2 * D2 / 6 + (5 - 2 * C12 + 28 * T1 - 3 * C12 * C12 + 8 * eccPrimeSquared + 24 * T1 * T1) * D2 * D2 * D2 * D2 * D2 / 120) / Math.cos(phi1Rad);
lon = LongOrigin + radToDeg(lon);
var result;
if (utm2.accuracy) {
var topRight = UTMtoLL({
northing: utm2.northing + utm2.accuracy,
easting: utm2.easting + utm2.accuracy,
zoneLetter: utm2.zoneLetter,
zoneNumber: utm2.zoneNumber
});
result = {
top: topRight.lat,
right: topRight.lon,
bottom: lat,
left: lon
};
} else {
result = {
lat,
lon
};
}
return result;
}
function getLetterDesignator(lat) {
var LetterDesignator = "Z";
if (84 >= lat && lat >= 72) {
LetterDesignator = "X";
} else if (72 > lat && lat >= 64) {
LetterDesignator = "W";
} else if (64 > lat && lat >= 56) {
LetterDesignator = "V";
} else if (56 > lat && lat >= 48) {
LetterDesignator = "U";
} else if (48 > lat && lat >= 40) {
LetterDesignator = "T";
} else if (40 > lat && lat >= 32) {
LetterDesignator = "S";
} else if (32 > lat && lat >= 24) {
LetterDesignator = "R";
} else if (24 > lat && lat >= 16) {
LetterDesignator = "Q";
} else if (16 > lat && lat >= 8) {
LetterDesignator = "P";
} else if (8 > lat && lat >= 0) {
LetterDesignator = "N";
} else if (0 > lat && lat >= -8) {
LetterDesignator = "M";
} else if (-8 > lat && lat >= -16) {
LetterDesignator = "L";
} else if (-16 > lat && lat >= -24) {
LetterDesignator = "K";
} else if (-24 > lat && lat >= -32) {
LetterDesignator = "J";
} else if (-32 > lat && lat >= -40) {
LetterDesignator = "H";
} else if (-40 > lat && lat >= -48) {
LetterDesignator = "G";
} else if (-48 > lat && lat >= -56) {
LetterDesignator = "F";
} else if (-56 > lat && lat >= -64) {
LetterDesignator = "E";
} else if (-64 > lat && lat >= -72) {
LetterDesignator = "D";
} else if (-72 > lat && lat >= -80) {
LetterDesignator = "C";
}
return LetterDesignator;
}
function encode(utm2, accuracy) {
var seasting = "00000" + utm2.easting, snorthing = "00000" + utm2.northing;
return utm2.zoneNumber + utm2.zoneLetter + get100kID(utm2.easting, utm2.northing, utm2.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);
}
function get100kID(easting, northing, zoneNumber) {
var setParm = get100kSetForZone(zoneNumber);
var setColumn = Math.floor(easting / 1e5);
var setRow = Math.floor(northing / 1e5) % 20;
return getLetter100kID(setColumn, setRow, setParm);
}
function get100kSetForZone(i2) {
var setParm = i2 % NUM_100K_SETS;
if (setParm === 0) {
setParm = NUM_100K_SETS;
}
return setParm;
}
function getLetter100kID(column, row, parm) {
var index2 = parm - 1;
var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index2);
var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index2);
var colInt = colOrigin + column - 1;
var rowInt = rowOrigin + row;
var rollover = false;
if (colInt > Z$2) {
colInt = colInt - Z$2 + A$2 - 1;
rollover = true;
}
if (colInt === I$1 || colOrigin < I$1 && colInt > I$1 || (colInt > I$1 || colOrigin < I$1) && rollover) {
colInt++;
}
if (colInt === O$2 || colOrigin < O$2 && colInt > O$2 || (colInt > O$2 || colOrigin < O$2) && rollover) {
colInt++;
if (colInt === I$1) {
colInt++;
}
}
if (colInt > Z$2) {
colInt = colInt - Z$2 + A$2 - 1;
}
if (rowInt > V$2) {
rowInt = rowInt - V$2 + A$2 - 1;
rollover = true;
} else {
rollover = false;
}
if (rowInt === I$1 || rowOrigin < I$1 && rowInt > I$1 || (rowInt > I$1 || rowOrigin < I$1) && rollover) {
rowInt++;
}
if (rowInt === O$2 || rowOrigin < O$2 && rowInt > O$2 || (rowInt > O$2 || rowOrigin < O$2) && rollover) {
rowInt++;
if (rowInt === I$1) {
rowInt++;
}
}
if (rowInt > V$2) {
rowInt = rowInt - V$2 + A$2 - 1;
}
var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);
return twoLetter;
}
function decode$2(mgrsString) {
if (mgrsString && mgrsString.length === 0) {
throw "MGRSPoint coverting from nothing";
}
var length = mgrsString.length;
var hunK = null;
var sb = "";
var testChar;
var i2 = 0;
while (!/[A-Z]/.test(testChar = mgrsString.charAt(i2))) {
if (i2 >= 2) {
throw "MGRSPoint bad conversion from: " + mgrsString;
}
sb += testChar;
i2++;
}
var zoneNumber = parseInt(sb, 10);
if (i2 === 0 || i2 + 3 > length) {
throw "MGRSPoint bad conversion from: " + mgrsString;
}
var zoneLetter = mgrsString.charAt(i2++);
if (zoneLetter <= "A" || zoneLetter === "B" || zoneLetter === "Y" || zoneLetter >= "Z" || zoneLetter === "I" || zoneLetter === "O") {
throw "MGRSPoint zone letter " + zoneLetter + " not handled: " + mgrsString;
}
hunK = mgrsString.substring(i2, i2 += 2);
var set2 = get100kSetForZone(zoneNumber);
var east100k = getEastingFromChar(hunK.charAt(0), set2);
var north100k = getNorthingFromChar(hunK.charAt(1), set2);
while (north100k < getMinNorthing(zoneLetter)) {
north100k += 2e6;
}
var remainder = length - i2;
if (remainder % 2 !== 0) {
throw "MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + mgrsString;
}
var sep = remainder / 2;
var sepEasting = 0;
var sepNorthing = 0;
var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;
if (sep > 0) {
accuracyBonus = 1e5 / Math.pow(10, sep);
sepEastingString = mgrsString.substring(i2, i2 + sep);
sepEasting = parseFloat(sepEastingString) * accuracyBonus;
sepNorthingString = mgrsString.substring(i2 + sep);
sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;
}
easting = sepEasting + east100k;
northing = sepNorthing + north100k;
return {
easting,
northing,
zoneLetter,
zoneNumber,
accuracy: accuracyBonus
};
}
function getEastingFromChar(e2, set2) {
var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set2 - 1);
var eastingValue = 1e5;
var rewindMarker = false;
while (curCol !== e2.charCodeAt(0)) {
curCol++;
if (curCol === I$1) {
curCol++;
}
if (curCol === O$2) {
curCol++;
}
if (curCol > Z$2) {
if (rewindMarker) {
throw "Bad character: " + e2;
}
curCol = A$2;
rewindMarker = true;
}
eastingValue += 1e5;
}
return eastingValue;
}
function getNorthingFromChar(n2, set2) {
if (n2 > "V") {
throw "MGRSPoint given invalid Northing " + n2;
}
var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set2 - 1);
var northingValue = 0;
var rewindMarker = false;
while (curRow !== n2.charCodeAt(0)) {
curRow++;
if (curRow === I$1) {
curRow++;
}
if (curRow === O$2) {
curRow++;
}
if (curRow > V$2) {
if (rewindMarker) {
throw "Bad character: " + n2;
}
curRow = A$2;
rewindMarker = true;
}
northingValue += 1e5;
}
return northingValue;
}
function getMinNorthing(zoneLetter) {
var northing;
switch (zoneLetter) {
case "C":
northing = 11e5;
break;
case "D":
northing = 2e6;
break;
case "E":
northing = 28e5;
break;
case "F":
northing = 37e5;
break;
case "G":
northing = 46e5;
break;
case "H":
northing = 55e5;
break;
case "J":
northing = 64e5;
break;
case "K":
northing = 73e5;
break;
case "L":
northing = 82e5;
break;
case "M":
northing = 91e5;
break;
case "N":
northing = 0;
break;
case "P":
northing = 8e5;
break;
case "Q":
northing = 17e5;
break;
case "R":
northing = 26e5;
break;
case "S":
northing = 35e5;
break;
case "T":
northing = 44e5;
break;
case "U":
northing = 53e5;
break;
case "V":
northing = 62e5;
break;
case "W":
northing = 7e6;
break;
case "X":
northing = 79e5;
break;
default:
northing = -1;
}
if (northing >= 0) {
return northing;
} else {
throw "Invalid zone letter: " + zoneLetter;
}
}
function Point$1(x2, y2, z2) {
if (!(this instanceof Point$1)) {
return new Point$1(x2, y2, z2);
}
if (Array.isArray(x2)) {
this.x = x2[0];
this.y = x2[1];
this.z = x2[2] || 0;
} else if (typeof x2 === "object") {
this.x = x2.x;
this.y = x2.y;
this.z = x2.z || 0;
} else if (typeof x2 === "string" && typeof y2 === "undefined") {
var coords = x2.split(",");
this.x = parseFloat(coords[0], 10);
this.y = parseFloat(coords[1], 10);
this.z = parseFloat(coords[2], 10) || 0;
} else {
this.x = x2;
this.y = y2;
this.z = z2 || 0;
}
console.warn("proj4.Point will be removed in version 3, use proj4.toPoint");
}
Point$1.fromMGRS = function(mgrsStr) {
return new Point$1(toPoint(mgrsStr));
};
Point$1.prototype.toMGRS = function(accuracy) {
return forward$u([this.x, this.y], accuracy);
};
var C00 = 1;
var C02 = 0.25;
var C04 = 0.046875;
var C06 = 0.01953125;
var C08 = 0.01068115234375;
var C22 = 0.75;
var C44 = 0.46875;
var C46 = 0.013020833333333334;
var C48 = 0.007120768229166667;
var C66 = 0.3645833333333333;
var C68 = 0.005696614583333333;
var C88 = 0.3076171875;
function pj_enfn(es) {
var en = [];
en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));
en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));
var t3 = es * es;
en[2] = t3 * (C44 - es * (C46 + es * C48));
t3 *= es;
en[3] = t3 * (C66 - es * C68);
en[4] = t3 * es * C88;
return en;
}
function pj_mlfn(phi, sphi, cphi, en) {
cphi *= sphi;
sphi *= sphi;
return en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4])));
}
var MAX_ITER$3 = 20;
function pj_inv_mlfn(arg, es, en) {
var k2 = 1 / (1 - es);
var phi = arg;
for (var i2 = MAX_ITER$3; i2; --i2) {
var s2 = Math.sin(phi);
var t3 = 1 - es * s2 * s2;
t3 = (pj_mlfn(phi, s2, Math.cos(phi), en) - arg) * (t3 * Math.sqrt(t3)) * k2;
phi -= t3;
if (Math.abs(t3) < EPSLN) {
return phi;
}
}
return phi;
}
function init$u() {
this.x0 = this.x0 !== void 0 ? this.x0 : 0;
this.y0 = this.y0 !== void 0 ? this.y0 : 0;
this.long0 = this.long0 !== void 0 ? this.long0 : 0;
this.lat0 = this.lat0 !== void 0 ? this.lat0 : 0;
if (this.es) {
this.en = pj_enfn(this.es);
this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);
}
}
function forward$t(p2) {
var lon = p2.x;
var lat = p2.y;
var delta_lon = adjust_lon(lon - this.long0);
var con;
var x2, y2;
var sin_phi = Math.sin(lat);
var cos_phi = Math.cos(lat);
if (!this.es) {
var b2 = cos_phi * Math.sin(delta_lon);
if (Math.abs(Math.abs(b2) - 1) < EPSLN) {
return 93;
} else {
x2 = 0.5 * this.a * this.k0 * Math.log((1 + b2) / (1 - b2)) + this.x0;
y2 = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b2, 2));
b2 = Math.abs(y2);
if (b2 >= 1) {
if (b2 - 1 > EPSLN) {
return 93;
} else {
y2 = 0;
}
} else {
y2 = Math.acos(y2);
}
if (lat < 0) {
y2 = -y2;
}
y2 = this.a * this.k0 * (y2 - this.lat0) + this.y0;
}
} else {
var al = cos_phi * delta_lon;
var als = Math.pow(al, 2);
var c2 = this.ep2 * Math.pow(cos_phi, 2);
var cs = Math.pow(c2, 2);
var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;
var t3 = Math.pow(tq, 2);
var ts = Math.pow(t3, 2);
con = 1 - this.es * Math.pow(sin_phi, 2);
al = al / Math.sqrt(con);
var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);
x2 = this.a * (this.k0 * al * (1 + als / 6 * (1 - t3 + c2 + als / 20 * (5 - 18 * t3 + ts + 14 * c2 - 58 * t3 * c2 + als / 42 * (61 + 179 * ts - ts * t3 - 479 * t3))))) + this.x0;
y2 = this.a * (this.k0 * (ml - this.ml0 + sin_phi * delta_lon * al / 2 * (1 + als / 12 * (5 - t3 + 9 * c2 + 4 * cs + als / 30 * (61 + ts - 58 * t3 + 270 * c2 - 330 * t3 * c2 + als / 56 * (1385 + 543 * ts - ts * t3 - 3111 * t3)))))) + this.y0;
}
p2.x = x2;
p2.y = y2;
return p2;
}
function inverse$t(p2) {
var con, phi;
var lat, lon;
var x2 = (p2.x - this.x0) * (1 / this.a);
var y2 = (p2.y - this.y0) * (1 / this.a);
if (!this.es) {
var f2 = Math.exp(x2 / this.k0);
var g2 = 0.5 * (f2 - 1 / f2);
var temp = this.lat0 + y2 / this.k0;
var h2 = Math.cos(temp);
con = Math.sqrt((1 - Math.pow(h2, 2)) / (1 + Math.pow(g2, 2)));
lat = Math.asin(con);
if (y2 < 0) {
lat = -lat;
}
if (g2 === 0 && h2 === 0) {
lon = 0;
} else {
lon = adjust_lon(Math.atan2(g2, h2) + this.long0);
}
} else {
con = this.ml0 + y2 / this.k0;
phi = pj_inv_mlfn(con, this.es, this.en);
if (Math.abs(phi) < HALF_PI) {
var sin_phi = Math.sin(phi);
var cos_phi = Math.cos(phi);
var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;
var c2 = this.ep2 * Math.pow(cos_phi, 2);
var cs = Math.pow(c2, 2);
var t3 = Math.pow(tan_phi, 2);
var ts = Math.pow(t3, 2);
con = 1 - this.es * Math.pow(sin_phi, 2);
var d2 = x2 * Math.sqrt(con) / this.k0;
var ds = Math.pow(d2, 2);
con = con * tan_phi;
lat = phi - con * ds / (1 - this.es) * 0.5 * (1 - ds / 12 * (5 + 3 * t3 - 9 * c2 * t3 + c2 - 4 * cs - ds / 30 * (61 + 90 * t3 - 252 * c2 * t3 + 45 * ts + 46 * c2 - ds / 56 * (1385 + 3633 * t3 + 4095 * ts + 1574 * ts * t3))));
lon = adjust_lon(this.long0 + d2 * (1 - ds / 6 * (1 + 2 * t3 + c2 - ds / 20 * (5 + 28 * t3 + 24 * ts + 8 * c2 * t3 + 6 * c2 - ds / 42 * (61 + 662 * t3 + 1320 * ts + 720 * ts * t3)))) / cos_phi);
} else {
lat = HALF_PI * sign(y2);
lon = 0;
}
}
p2.x = lon;
p2.y = lat;
return p2;
}
var names$u = ["Fast_Transverse_Mercator", "Fast Transverse Mercator"];
const tmerc = {
init: init$u,
forward: forward$t,
inverse: inverse$t,
names: names$u
};
function sinh(x2) {
var r2 = Math.exp(x2);
r2 = (r2 - 1 / r2) / 2;
return r2;
}
function hypot(x2, y2) {
x2 = Math.abs(x2);
y2 = Math.abs(y2);
var a2 = Math.max(x2, y2);
var b2 = Math.min(x2, y2) / (a2 ? a2 : 1);
return a2 * Math.sqrt(1 + Math.pow(b2, 2));
}
function log1py(x2) {
var y2 = 1 + x2;
var z2 = y2 - 1;
return z2 === 0 ? x2 : x2 * Math.log(y2) / z2;
}
function asinhy(x2) {
var y2 = Math.abs(x2);
y2 = log1py(y2 * (1 + y2 / (hypot(1, y2) + 1)));
return x2 < 0 ? -y2 : y2;
}
function gatg(pp, B3) {
var cos_2B = 2 * Math.cos(2 * B3);
var i2 = pp.length - 1;
var h1 = pp[i2];
var h2 = 0;
var h3;
while (--i2 >= 0) {
h3 = -h2 + cos_2B * h1 + pp[i2];
h2 = h1;
h1 = h3;
}
return B3 + h3 * Math.sin(2 * B3);
}
function clens(pp, arg_r) {
var r2 = 2 * Math.cos(arg_r);
var i2 = pp.length - 1;
var hr1 = pp[i2];
var hr2 = 0;
var hr;
while (--i2 >= 0) {
hr = -hr2 + r2 * hr1 + pp[i2];
hr2 = hr1;
hr1 = hr;
}
return Math.sin(arg_r) * hr;
}
function cosh(x2) {
var r2 = Math.exp(x2);
r2 = (r2 + 1 / r2) / 2;
return r2;
}
function clens_cmplx(pp, arg_r, arg_i) {
var sin_arg_r = Math.sin(arg_r);
var cos_arg_r = Math.cos(arg_r);
var sinh_arg_i = sinh(arg_i);
var cosh_arg_i = cosh(arg_i);
var r2 = 2 * cos_arg_r * cosh_arg_i;
var i2 = -2 * sin_arg_r * sinh_arg_i;
var j2 = pp.length - 1;
var hr = pp[j2];
var hi1 = 0;
var hr1 = 0;
var hi = 0;
var hr2;
var hi2;
while (--j2 >= 0) {
hr2 = hr1;
hi2 = hi1;
hr1 = hr;
hi1 = hi;
hr = -hr2 + r2 * hr1 - i2 * hi1 + pp[j2];
hi = -hi2 + i2 * hr1 + r2 * hi1;
}
r2 = sin_arg_r * cosh_arg_i;
i2 = cos_arg_r * sinh_arg_i;
return [r2 * hr - i2 * hi, r2 * hi + i2 * hr];
}
function init$t() {
if (!this.approx && (isNaN(this.es) || this.es <= 0)) {
throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION["Fast_Transverse_Mercator"] in the WKT.');
}
if (this.approx) {
tmerc.init.apply(this);
this.forward = tmerc.forward;
this.inverse = tmerc.inverse;
}
this.x0 = this.x0 !== void 0 ? this.x0 : 0;
this.y0 = this.y0 !== void 0 ? this.y0 : 0;
this.long0 = this.long0 !== void 0 ? this.long0 : 0;
this.lat0 = this.lat0 !== void 0 ? this.lat0 : 0;
this.cgb = [];
this.cbg = [];
this.utg = [];
this.gtu = [];
var f2 = this.es / (1 + Math.sqrt(1 - this.es));
var n2 = f2 / (2 - f2);
var np = n2;
this.cgb[0] = n2 * (2 + n2 * (-2 / 3 + n2 * (-2 + n2 * (116 / 45 + n2 * (26 / 45 + n2 * (-2854 / 675))))));
this.cbg[0] = n2 * (-2 + n2 * (2 / 3 + n2 * (4 / 3 + n2 * (-82 / 45 + n2 * (32 / 45 + n2 * (4642 / 4725))))));
np = np * n2;
this.cgb[1] = np * (7 / 3 + n2 * (-8 / 5 + n2 * (-227 / 45 + n2 * (2704 / 315 + n2 * (2323 / 945)))));
this.cbg[1] = np * (5 / 3 + n2 * (-16 / 15 + n2 * (-13 / 9 + n2 * (904 / 315 + n2 * (-1522 / 945)))));
np = np * n2;
this.cgb[2] = np * (56 / 15 + n2 * (-136 / 35 + n2 * (-1262 / 105 + n2 * (73814 / 2835))));
this.cbg[2] = np * (-26 / 15 + n2 * (34 / 21 + n2 * (8 / 5 + n2 * (-12686 / 2835))));
np = np * n2;
this.cgb[3] = np * (4279 / 630 + n2 * (-332 / 35 + n2 * (-399572 / 14175)));
this.cbg[3] = np * (1237 / 630 + n2 * (-12 / 5 + n2 * (-24832 / 14175)));
np = np * n2;
this.cgb[4] = np * (4174 / 315 + n2 * (-144838 / 6237));
this.cbg[4] = np * (-734 / 315 + n2 * (109598 / 31185));
np = np * n2;
this.cgb[5] = np * (601676 / 22275);
this.cbg[5] = np * (444337 / 155925);
np = Math.pow(n2, 2);
this.Qn = this.k0 / (1 + n2) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));
this.utg[0] = n2 * (-0.5 + n2 * (2 / 3 + n2 * (-37 / 96 + n2 * (1 / 360 + n2 * (81 / 512 + n2 * (-96199 / 604800))))));
this.gtu[0] = n2 * (0.5 + n2 * (-2 / 3 + n2 * (5 / 16 + n2 * (41 / 180 + n2 * (-127 / 288 + n2 * (7891 / 37800))))));
this.utg[1] = np * (-1 / 48 + n2 * (-1 / 15 + n2 * (437 / 1440 + n2 * (-46 / 105 + n2 * (1118711 / 3870720)))));
this.gtu[1] = np * (13 / 48 + n2 * (-3 / 5 + n2 * (557 / 1440 + n2 * (281 / 630 + n2 * (-1983433 / 1935360)))));
np = np * n2;
this.utg[2] = np * (-17 / 480 + n2 * (37 / 840 + n2 * (209 / 4480 + n2 * (-5569 / 90720))));
this.gtu[2] = np * (61 / 240 + n2 * (-103 / 140 + n2 * (15061 / 26880 + n2 * (167603 / 181440))));
np = np * n2;
this.utg[3] = np * (-4397 / 161280 + n2 * (11 / 504 + n2 * (830251 / 7257600)));
this.gtu[3] = np * (49561 / 161280 + n2 * (-179 / 168 + n2 * (6601661 / 7257600)));
np = np * n2;
this.utg[4] = np * (-4583 / 161280 + n2 * (108847 / 3991680));
this.gtu[4] = np * (34729 / 80640 + n2 * (-3418889 / 1995840));
np = np * n2;
this.utg[5] = np * (-20648693 / 638668800);
this.gtu[5] = np * (212378941 / 319334400);
var Z2 = gatg(this.cbg, this.lat0);
this.Zb = -this.Qn * (Z2 + clens(this.gtu, 2 * Z2));
}
function forward$s(p2) {
var Ce = adjust_lon(p2.x - this.long0);
var Cn = p2.y;
Cn = gatg(this.cbg, Cn);
var sin_Cn = Math.sin(Cn);
var cos_Cn = Math.cos(Cn);
var sin_Ce = Math.sin(Ce);
var cos_Ce = Math.cos(Ce);
Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);
Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));
Ce = asinhy(Math.tan(Ce));
var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);
Cn = Cn + tmp[0];
Ce = Ce + tmp[1];
var x2;
var y2;
if (Math.abs(Ce) <= 2.623395162778) {
x2 = this.a * (this.Qn * Ce) + this.x0;
y2 = this.a * (this.Qn * Cn + this.Zb) + this.y0;
} else {
x2 = Infinity;
y2 = Infinity;
}
p2.x = x2;
p2.y = y2;
return p2;
}
function inverse$s(p2) {
var Ce = (p2.x - this.x0) * (1 / this.a);
var Cn = (p2.y - this.y0) * (1 / this.a);
Cn = (Cn - this.Zb) / this.Qn;
Ce = Ce / this.Qn;
var lon;
var lat;
if (Math.abs(Ce) <= 2.623395162778) {
var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);
Cn = Cn + tmp[0];
Ce = Ce + tmp[1];
Ce = Math.atan(sinh(Ce));
var sin_Cn = Math.sin(Cn);
var cos_Cn = Math.cos(Cn);
var sin_Ce = Math.sin(Ce);
var cos_Ce = Math.cos(Ce);
Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));
Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);
lon = adjust_lon(Ce + this.long0);
lat = gatg(this.cgb, Cn);
} else {
lon = Infinity;
lat = Infinity;
}
p2.x = lon;
p2.y = lat;
return p2;
}
var names$t = ["Extended_Transverse_Mercator", "Extended Transverse Mercator", "etmerc", "Transverse_Mercator", "Transverse Mercator", "Gauss Kruger", "Gauss_Kruger", "tmerc"];
const etmerc = {
init: init$t,
forward: forward$s,
inverse: inverse$s,
names: names$t
};
function adjust_zone(zone, lon) {
if (zone === void 0) {
zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;
if (zone < 0) {
return 0;
} else if (zone > 60) {
return 60;
}
}
return zone;
}
var dependsOn = "etmerc";
function init$s() {
var zone = adjust_zone(this.zone, this.long0);
if (zone === void 0) {
throw new Error("unknown utm zone");
}
this.lat0 = 0;
this.long0 = (6 * Math.abs(zone) - 183) * D2R$1;
this.x0 = 5e5;
this.y0 = this.utmSouth ? 1e7 : 0;
this.k0 = 0.9996;
etmerc.init.apply(this);
this.forward = etmerc.forward;
this.inverse = etmerc.inverse;
}
var names$s = ["Universal Transverse Mercator System", "utm"];
const utm = {
init: init$s,
names: names$s,
dependsOn
};
function srat(esinp, exp) {
return Math.pow((1 - esinp) / (1 + esinp), exp);
}
var MAX_ITER$2 = 20;
function init$r() {
var sphi = Math.sin(this.lat0);
var cphi = Math.cos(this.lat0);
cphi *= cphi;
this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);
this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));
this.phic0 = Math.asin(sphi / this.C);
this.ratexp = 0.5 * this.C * this.e;
this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));
}
function forward$r(p2) {
var lon = p2.x;
var lat = p2.y;
p2.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;
p2.x = this.C * lon;
return p2;
}
function inverse$r(p2) {
var DEL_TOL = 1e-14;
var lon = p2.x / this.C;
var lat = p2.y;
var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);
for (var i2 = MAX_ITER$2; i2 > 0; --i2) {
lat = 2 * Math.atan(num * srat(this.e * Math.sin(p2.y), -0.5 * this.e)) - HALF_PI;
if (Math.abs(lat - p2.y) < DEL_TOL) {
break;
}
p2.y = lat;
}
if (!i2) {
return null;
}
p2.x = lon;
p2.y = lat;
return p2;
}
var names$r = ["gauss"];
const gauss = {
init: init$r,
forward: forward$r,
inverse: inverse$r,
names: names$r
};
function init$q() {
gauss.init.apply(this);
if (!this.rc) {
return;
}
this.sinc0 = Math.sin(this.phic0);
this.cosc0 = Math.cos(this.phic0);
this.R2 = 2 * this.rc;
if (!this.title) {
this.title = "Oblique Stereographic Alternative";
}
}
function forward$q(p2) {
var sinc, cosc, cosl, k2;
p2.x = adjust_lon(p2.x - this.long0);
gauss.forward.apply(this, [p2]);
sinc = Math.sin(p2.y);
cosc = Math.cos(p2.y);
cosl = Math.cos(p2.x);
k2 = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);
p2.x = k2 * cosc * Math.sin(p2.x);
p2.y = k2 * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);
p2.x = this.a * p2.x + this.x0;
p2.y = this.a * p2.y + this.y0;
return p2;
}
function inverse$q(p2) {
var sinc, cosc, lon, lat, rho;
p2.x = (p2.x - this.x0) / this.a;
p2.y = (p2.y - this.y0) / this.a;
p2.x /= this.k0;
p2.y /= this.k0;
if (rho = hypot(p2.x, p2.y)) {
var c2 = 2 * Math.atan2(rho, this.R2);
sinc = Math.sin(c2);
cosc = Math.cos(c2);
lat = Math.asin(cosc * this.sinc0 + p2.y * sinc * this.cosc0 / rho);
lon = Math.atan2(p2.x * sinc, rho * this.cosc0 * cosc - p2.y * this.sinc0 * sinc);
} else {
lat = this.phic0;
lon = 0;
}
p2.x = lon;
p2.y = lat;
gauss.inverse.apply(this, [p2]);
p2.x = adjust_lon(p2.x + this.long0);
return p2;
}
var names$q = ["Stereographic_North_Pole", "Oblique_Stereographic", "sterea", "Oblique Stereographic Alternative", "Double_Stereographic"];
const sterea = {
init: init$q,
forward: forward$q,
inverse: inverse$q,
names: names$q
};
function ssfn_(phit, sinphi, eccen) {
sinphi *= eccen;
return Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen);
}
function init$p() {
this.x0 = this.x0 || 0;
this.y0 = this.y0 || 0;
this.lat0 = this.lat0 || 0;
this.long0 = this.long0 || 0;
this.coslat0 = Math.cos(this.lat0);
this.sinlat0 = Math.sin(this.lat0);
if (this.sphere) {
if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {
this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));
}
} else {
if (Math.abs(this.coslat0) <= EPSLN) {
if (this.lat0 > 0) {
this.con = 1;
} else {
this.con = -1;
}
}
this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));
if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN && Math.abs(Math.cos(this.lat_ts)) > EPSLN) {
this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));
}
this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);
this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;
this.cosX0 = Math.cos(this.X0);
this.sinX0 = Math.sin(this.X0);
}
}
function forward$p(p2) {
var lon = p2.x;
var lat = p2.y;
var sinlat = Math.sin(lat);
var coslat = Math.cos(lat);
var A5, X2, sinX, cosX, ts, rh;
var dlon = adjust_lon(lon - this.long0);
if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {
p2.x = NaN;
p2.y = NaN;
return p2;
}
if (this.sphere) {
A5 = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));
p2.x = this.a * A5 * coslat * Math.sin(dlon) + this.x0;
p2.y = this.a * A5 * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;
return p2;
} else {
X2 = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;
cosX = Math.cos(X2);
sinX = Math.sin(X2);
if (Math.abs(this.coslat0) <= EPSLN) {
ts = tsfnz(this.e, lat * this.con, this.con * sinlat);
rh = 2 * this.a * this.k0 * ts / this.cons;
p2.x = this.x0 + rh * Math.sin(lon - this.long0);
p2.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);
return p2;
} else if (Math.abs(this.sinlat0) < EPSLN) {
A5 = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));
p2.y = A5 * sinX;
} else {
A5 = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));
p2.y = A5 * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;
}
p2.x = A5 * cosX * Math.sin(dlon) + this.x0;
}
return p2;
}
function inverse$p(p2) {
p2.x -= this.x0;
p2.y -= this.y0;
var lon, lat, ts, ce2, Chi;
var rh = Math.sqrt(p2.x * p2.x + p2.y * p2.y);
if (this.sphere) {
var c2 = 2 * Math.atan(rh / (2 * this.a * this.k0));
lon = this.long0;
lat = this.lat0;
if (rh <= EPSLN) {
p2.x = lon;
p2.y = lat;
return p2;
}
lat = Math.asin(Math.cos(c2) * this.sinlat0 + p2.y * Math.sin(c2) * this.coslat0 / rh);
if (Math.abs(this.coslat0) < EPSLN) {
if (this.lat0 > 0) {
lon = adjust_lon(this.long0 + Math.atan2(p2.x, -1 * p2.y));
} else {
lon = adjust_lon(this.long0 + Math.atan2(p2.x, p2.y));
}
} else {
lon = adjust_lon(this.long0 + Math.atan2(p2.x * Math.sin(c2), rh * this.coslat0 * Math.cos(c2) - p2.y * this.sinlat0 * Math.sin(c2)));
}
p2.x = lon;
p2.y = lat;
return p2;
} else {
if (Math.abs(this.coslat0) <= EPSLN) {
if (rh <= EPSLN) {
lat = this.lat0;
lon = this.long0;
p2.x = lon;
p2.y = lat;
return p2;
}
p2.x *= this.con;
p2.y *= this.con;
ts = rh * this.cons / (2 * this.a * this.k0);
lat = this.con * phi2z(this.e, ts);
lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p2.x, -1 * p2.y));
} else {
ce2 = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));
lon = this.long0;
if (rh <= EPSLN) {
Chi = this.X0;
} else {
Chi = Math.asin(Math.cos(ce2) * this.sinX0 + p2.y * Math.sin(ce2) * this.cosX0 / rh);
lon = adjust_lon(this.long0 + Math.atan2(p2.x * Math.sin(ce2), rh * this.cosX0 * Math.cos(ce2) - p2.y * this.sinX0 * Math.sin(ce2)));
}
lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));
}
}
p2.x = lon;
p2.y = lat;
return p2;
}
var names$p = ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)", "Polar_Stereographic"];
const stere = {
init: init$p,
forward: forward$p,
inverse: inverse$p,
names: names$p,
ssfn_
};
function init$o() {
var phy0 = this.lat0;
this.lambda0 = this.long0;
var sinPhy0 = Math.sin(phy0);
var semiMajorAxis = this.a;
var invF = this.rf;
var flattening = 1 / invF;
var e2 = 2 * flattening - Math.pow(flattening, 2);
var e3 = this.e = Math.sqrt(e2);
this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));
this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));
this.b0 = Math.asin(sinPhy0 / this.alpha);
var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));
var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));
var k3 = Math.log((1 + e3 * sinPhy0) / (1 - e3 * sinPhy0));
this.K = k1 - this.alpha * k2 + this.alpha * e3 / 2 * k3;
}
function forward$o(p2) {
var Sa1 = Math.log(Math.tan(Math.PI / 4 - p2.y / 2));
var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p2.y)) / (1 - this.e * Math.sin(p2.y)));
var S2 = -this.alpha * (Sa1 + Sa2) + this.K;
var b2 = 2 * (Math.atan(Math.exp(S2)) - Math.PI / 4);
var I2 = this.alpha * (p2.x - this.lambda0);
var rotI = Math.atan(Math.sin(I2) / (Math.sin(this.b0) * Math.tan(b2) + Math.cos(this.b0) * Math.cos(I2)));
var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b2) - Math.sin(this.b0) * Math.cos(b2) * Math.cos(I2));
p2.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;
p2.x = this.R * rotI + this.x0;
return p2;
}
function inverse$o(p2) {
var Y2 = p2.x - this.x0;
var X2 = p2.y - this.y0;
var rotI = Y2 / this.R;
var rotB = 2 * (Math.atan(Math.exp(X2 / this.R)) - Math.PI / 4);
var b2 = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));
var I2 = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));
var lambda = this.lambda0 + I2 / this.alpha;
var S2 = 0;
var phy = b2;
var prevPhy = -1e3;
var iteration = 0;
while (Math.abs(phy - prevPhy) > 1e-7) {
if (++iteration > 20) {
return;
}
S2 = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b2 / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));
prevPhy = phy;
phy = 2 * Math.atan(Math.exp(S2)) - Math.PI / 2;
}
p2.x = lambda;
p2.y = phy;
return p2;
}
var names$o = ["somerc"];
const somerc = {
init: init$o,
forward: forward$o,
inverse: inverse$o,
names: names$o
};
var TOL = 1e-7;
function isTypeA(P2) {
var typeAProjections = ["Hotine_Oblique_Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin"];
var projectionName = typeof P2.PROJECTION === "object" ? Object.keys(P2.PROJECTION)[0] : P2.PROJECTION;
return "no_uoff" in P2 || "no_off" in P2 || typeAProjections.indexOf(projectionName) !== -1;
}
function init$n() {
var con, com, cosph0, D2, F2, H4, L2, sinph0, p2, J2, gamma = 0, gamma0, lamc = 0, lam1 = 0, lam2 = 0, phi1 = 0, phi2 = 0, alpha_c = 0;
this.no_off = isTypeA(this);
this.no_rot = "no_rot" in this;
var alp = false;
if ("alpha" in this) {
alp = true;
}
var gam = false;
if ("rectified_grid_angle" in this) {
gam = true;
}
if (alp) {
alpha_c = this.alpha;
}
if (gam) {
gamma = this.rectified_grid_angle * D2R$1;
}
if (alp || gam) {
lamc = this.longc;
} else {
lam1 = this.long1;
phi1 = this.lat1;
lam2 = this.long2;
phi2 = this.lat2;
if (Math.abs(phi1 - phi2) <= TOL || (con = Math.abs(phi1)) <= TOL || Math.abs(con - HALF_PI) <= TOL || Math.abs(Math.abs(this.lat0) - HALF_PI) <= TOL || Math.abs(Math.abs(phi2) - HALF_PI) <= TOL) {
throw new Error();
}
}
var one_es = 1 - this.es;
com = Math.sqrt(one_es);
if (Math.abs(this.lat0) > EPSLN) {
sinph0 = Math.sin(this.lat0);
cosph0 = Math.cos(this.lat0);
con = 1 - this.es * sinph0 * sinph0;
this.B = cosph0 * cosph0;
this.B = Math.sqrt(1 + this.es * this.B * this.B / one_es);
this.A = this.B * this.k0 * com / con;
D2 = this.B * com / (cosph0 * Math.sqrt(con));
F2 = D2 * D2 - 1;
if (F2 <= 0) {
F2 = 0;
} else {
F2 = Math.sqrt(F2);
if (this.lat0 < 0) {
F2 = -F2;
}
}
this.E = F2 += D2;
this.E *= Math.pow(tsfnz(this.e, this.lat0, sinph0), this.B);
} else {
this.B = 1 / com;
this.A = this.k0;
this.E = D2 = F2 = 1;
}
if (alp || gam) {
if (alp) {
gamma0 = Math.asin(Math.sin(alpha_c) / D2);
if (!gam) {
gamma = alpha_c;
}
} else {
gamma0 = gamma;
alpha_c = Math.asin(D2 * Math.sin(gamma0));
}
this.lam0 = lamc - Math.asin(0.5 * (F2 - 1 / F2) * Math.tan(gamma0)) / this.B;
} else {
H4 = Math.pow(tsfnz(this.e, phi1, Math.sin(phi1)), this.B);
L2 = Math.pow(tsfnz(this.e, phi2, Math.sin(phi2)), this.B);
F2 = this.E / H4;
p2 = (L2 - H4) / (L2 + H4);
J2 = this.E * this.E;
J2 = (J2 - L2 * H4) / (J2 + L2 * H4);
con = lam1 - lam2;
if (con < -Math.pi) {
lam2 -= TWO_PI;
} else if (con > Math.pi) {
lam2 += TWO_PI;
}
this.lam0 = adjust_lon(0.5 * (lam1 + lam2) - Math.atan(J2 * Math.tan(0.5 * this.B * (lam1 - lam2)) / p2) / this.B);
gamma0 = Math.atan(2 * Math.sin(this.B * adjust_lon(lam1 - this.lam0)) / (F2 - 1 / F2));
gamma = alpha_c = Math.asin(D2 * Math.sin(gamma0));
}
this.singam = Math.sin(gamma0);
this.cosgam = Math.cos(gamma0);
this.sinrot = Math.sin(gamma);
this.cosrot = Math.cos(gamma);
this.rB = 1 / this.B;
this.ArB = this.A * this.rB;
this.BrA = 1 / this.ArB;
this.A * this.B;
if (this.no_off) {
this.u_0 = 0;
} else {
this.u_0 = Math.abs(this.ArB * Math.atan(Math.sqrt(D2 * D2 - 1) / Math.cos(alpha_c)));
if (this.lat0 < 0) {
this.u_0 = -this.u_0;
}
}
F2 = 0.5 * gamma0;
this.v_pole_n = this.ArB * Math.log(Math.tan(FORTPI - F2));
this.v_pole_s = this.ArB * Math.log(Math.tan(FORTPI + F2));
}
function forward$n(p2) {
var coords = {};
var S2, T2, U2, V2, W2, temp, u2, v2;
p2.x = p2.x - this.lam0;
if (Math.abs(Math.abs(p2.y) - HALF_PI) > EPSLN) {
W2 = this.E / Math.pow(tsfnz(this.e, p2.y, Math.sin(p2.y)), this.B);
temp = 1 / W2;
S2 = 0.5 * (W2 - temp);
T2 = 0.5 * (W2 + temp);
V2 = Math.sin(this.B * p2.x);
U2 = (S2 * this.singam - V2 * this.cosgam) / T2;
if (Math.abs(Math.abs(U2) - 1) < EPSLN) {
throw new Error();
}
v2 = 0.5 * this.ArB * Math.log((1 - U2) / (1 + U2));
temp = Math.cos(this.B * p2.x);
if (Math.abs(temp) < TOL) {
u2 = this.A * p2.x;
} else {
u2 = this.ArB * Math.atan2(S2 * this.cosgam + V2 * this.singam, temp);
}
} else {
v2 = p2.y > 0 ? this.v_pole_n : this.v_pole_s;
u2 = this.ArB * p2.y;
}
if (this.no_rot) {
coords.x = u2;
coords.y = v2;
} else {
u2 -= this.u_0;
coords.x = v2 * this.cosrot + u2 * this.sinrot;
coords.y = u2 * this.cosrot - v2 * this.sinrot;
}
coords.x = this.a * coords.x + this.x0;
coords.y = this.a * coords.y + this.y0;
return coords;
}
function inverse$n(p2) {
var u2, v2, Qp, Sp, Tp, Vp, Up;
var coords = {};
p2.x = (p2.x - this.x0) * (1 / this.a);
p2.y = (p2.y - this.y0) * (1 / this.a);
if (this.no_rot) {
v2 = p2.y;
u2 = p2.x;
} else {
v2 = p2.x * this.cosrot - p2.y * this.sinrot;
u2 = p2.y * this.cosrot + p2.x * this.sinrot + this.u_0;
}
Qp = Math.exp(-this.BrA * v2);
Sp = 0.5 * (Qp - 1 / Qp);
Tp = 0.5 * (Qp + 1 / Qp);
Vp = Math.sin(this.BrA * u2);
Up = (Vp * this.cosgam + Sp * this.singam) / Tp;
if (Math.abs(Math.abs(Up) - 1) < EPSLN) {
coords.x = 0;
coords.y = Up < 0 ? -HALF_PI : HALF_PI;
} else {
coords.y = this.E / Math.sqrt((1 + Up) / (1 - Up));
coords.y = phi2z(this.e, Math.pow(coords.y, 1 / this.B));
if (coords.y === Infinity) {
throw new Error();
}
coords.x = -this.rB * Math.atan2(Sp * this.cosgam - Vp * this.singam, Math.cos(this.BrA * u2));
}
coords.x += this.lam0;
return coords;
}
var names$n = ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Two_Point_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "Oblique_Mercator", "omerc"];
const omerc = {
init: init$n,
forward: forward$n,
inverse: inverse$n,
names: names$n
};
function init$m() {
if (!this.lat2) {
this.lat2 = this.lat1;
}
if (!this.k0) {
this.k0 = 1;
}
this.x0 = this.x0 || 0;
this.y0 = this.y0 || 0;
if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
return;
}
var temp = this.b / this.a;
this.e = Math.sqrt(1 - temp * temp);
var sin1 = Math.sin(this.lat1);
var cos1 = Math.cos(this.lat1);
var ms1 = msfnz(this.e, sin1, cos1);
var ts1 = tsfnz(this.e, this.lat1, sin1);
var sin2 = Math.sin(this.lat2);
var cos2 = Math.cos(this.lat2);
var ms2 = msfnz(this.e, sin2, cos2);
var ts2 = tsfnz(this.e, this.lat2, sin2);
var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));
if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);
} else {
this.ns = sin1;
}
if (isNaN(this.ns)) {
this.ns = sin1;
}
this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));
this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);
if (!this.title) {
this.title = "Lambert Conformal Conic";
}
}
function forward$m(p2) {
var lon = p2.x;
var lat = p2.y;
if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {
lat = sign(lat) * (HALF_PI - 2 * EPSLN);
}
var con = Math.abs(Math.abs(lat) - HALF_PI);
var ts, rh1;
if (con > EPSLN) {
ts = tsfnz(this.e, lat, Math.sin(lat));
rh1 = this.a * this.f0 * Math.pow(ts, this.ns);
} else {
con = lat * this.ns;
if (con <= 0) {
return null;
}
rh1 = 0;
}
var theta = this.ns * adjust_lon(lon - this.long0);
p2.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;
p2.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;
return p2;
}
function inverse$m(p2) {
var rh1, con, ts;
var lat, lon;
var x2 = (p2.x - this.x0) / this.k0;
var y2 = this.rh - (p2.y - this.y0) / this.k0;
if (this.ns > 0) {
rh1 = Math.sqrt(x2 * x2 + y2 * y2);
con = 1;
} else {
rh1 = -Math.sqrt(x2 * x2 + y2 * y2);
con = -1;
}
var theta = 0;
if (rh1 !== 0) {
theta = Math.atan2(con * x2, con * y2);
}
if (rh1 !== 0 || this.ns > 0) {
con = 1 / this.ns;
ts = Math.pow(rh1 / (this.a * this.f0), con);
lat = phi2z(this.e, ts);
if (lat === -9999) {
return null;
}
} else {
lat = -HALF_PI;
}
lon = adjust_lon(theta / this.ns + this.long0);
p2.x = lon;
p2.y = lat;
return p2;
}
var names$m = [
"Lambert Tangential Conformal Conic Projection",
"Lambert_Conformal_Conic",
"Lambert_Conformal_Conic_1SP",
"Lambert_Conformal_Conic_2SP",
"lcc",
"Lambert Conic Conformal (1SP)",
"Lambert Conic Conformal (2SP)"
];
const lcc = {
init: init$m,
forward: forward$m,
inverse: inverse$m,
names: names$m
};
function init$l() {
this.a = 6377397155e-3;
this.es = 0.006674372230614;
this.e = Math.sqrt(this.es);
if (!this.lat0) {
this.lat0 = 0.863937979737193;
}
if (!this.long0) {
this.long0 = 0.7417649320975901 - 0.308341501185665;
}
if (!this.k0) {
this.k0 = 0.9999;
}
this.s45 = 0.785398163397448;
this.s90 = 2 * this.s45;
this.fi0 = this.lat0;
this.e2 = this.es;
this.e = Math.sqrt(this.e2);
this.alfa = Math.sqrt(1 + this.e2 * Math.pow(Math.cos(this.fi0), 4) / (1 - this.e2));
this.uq = 1.04216856380474;
this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);
this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);
this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;
this.k1 = this.k0;
this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));
this.s0 = 1.37008346281555;
this.n = Math.sin(this.s0);
this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);
this.ad = this.s90 - this.uq;
}
function forward$l(p2) {
var gfi, u2, deltav, s2, d2, eps, ro;
var lon = p2.x;
var lat = p2.y;
var delta_lon = adjust_lon(lon - this.long0);
gfi = Math.pow((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat)), this.alfa * this.e / 2);
u2 = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);
deltav = -delta_lon * this.alfa;
s2 = Math.asin(Math.cos(this.ad) * Math.sin(u2) + Math.sin(this.ad) * Math.cos(u2) * Math.cos(deltav));
d2 = Math.asin(Math.cos(u2) * Math.sin(deltav) / Math.cos(s2));
eps = this.n * d2;
ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s2 / 2 + this.s45), this.n);
p2.y = ro * Math.cos(eps) / 1;
p2.x = ro * Math.sin(eps) / 1;
if (!this.czech) {
p2.y *= -1;
p2.x *= -1;
}
return p2;
}
function inverse$l(p2) {
var u2, deltav, s2, d2, eps, ro, fi1;
var ok;
var tmp = p2.x;
p2.x = p2.y;
p2.y = tmp;
if (!this.czech) {
p2.y *= -1;
p2.x *= -1;
}
ro = Math.sqrt(p2.x * p2.x + p2.y * p2.y);
eps = Math.atan2(p2.y, p2.x);
d2 = eps / Math.sin(this.s0);
s2 = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);
u2 = Math.asin(Math.cos(this.ad) * Math.sin(s2) - Math.sin(this.ad) * Math.cos(s2) * Math.cos(d2));
deltav = Math.asin(Math.cos(s2) * Math.sin(d2) / Math.cos(u2));
p2.x = this.long0 - deltav / this.alfa;
fi1 = u2;
ok = 0;
var iter = 0;
do {
p2.y = 2 * (Math.atan(Math.pow(this.k, -1 / this.alfa) * Math.pow(Math.tan(u2 / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);
if (Math.abs(fi1 - p2.y) < 1e-10) {
ok = 1;
}
fi1 = p2.y;
iter += 1;
} while (ok === 0 && iter < 15);
if (iter >= 15) {
return null;
}
return p2;
}
var names$l = ["Krovak", "krovak"];
const krovak = {
init: init$l,
forward: forward$l,
inverse: inverse$l,
names: names$l
};
function mlfn(e0, e1, e2, e3, phi) {
return e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi);
}
function e0fn(x2) {
return 1 - 0.25 * x2 * (1 + x2 / 16 * (3 + 1.25 * x2));
}
function e1fn(x2) {
return 0.375 * x2 * (1 + 0.25 * x2 * (1 + 0.46875 * x2));
}
function e2fn(x2) {
return 0.05859375 * x2 * x2 * (1 + 0.75 * x2);
}
function e3fn(x2) {
return x2 * x2 * x2 * (35 / 3072);
}
function gN(a2, e2, sinphi) {
var temp = e2 * sinphi;
return a2 / Math.sqrt(1 - temp * temp);
}
function adjust_lat(x2) {
return Math.abs(x2) < HALF_PI ? x2 : x2 - sign(x2) * Math.PI;
}
function imlfn(ml, e0, e1, e2, e3) {
var phi;
var dphi;
phi = ml / e0;
for (var i2 = 0; i2 < 15; i2++) {
dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));
phi += dphi;
if (Math.abs(dphi) <= 1e-10) {
return phi;
}
}
return NaN;
}
function init$k() {
if (!this.sphere) {
this.e0 = e0fn(this.es);
this.e1 = e1fn(this.es);
this.e2 = e2fn(this.es);
this.e3 = e3fn(this.es);
this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
}
}
function forward$k(p2) {
var x2, y2;
var lam = p2.x;
var phi = p2.y;
lam = adjust_lon(lam - this.long0);
if (this.sphere) {
x2 = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));
y2 = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);
} else {
var sinphi = Math.sin(phi);
var cosphi = Math.cos(phi);
var nl = gN(this.a, this.e, sinphi);
var tl = Math.tan(phi) * Math.tan(phi);
var al = lam * Math.cos(phi);
var asq = al * al;
var cl = this.es * cosphi * cosphi / (1 - this.es);
var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
x2 = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));
y2 = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);
}
p2.x = x2 + this.x0;
p2.y = y2 + this.y0;
return p2;
}
function inverse$k(p2) {
p2.x -= this.x0;
p2.y -= this.y0;
var x2 = p2.x / this.a;
var y2 = p2.y / this.a;
var phi, lam;
if (this.sphere) {
var dd = y2 + this.lat0;
phi = Math.asin(Math.sin(dd) * Math.cos(x2));
lam = Math.atan2(Math.tan(x2), Math.cos(dd));
} else {
var ml1 = this.ml0 / this.a + y2;
var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);
if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {
p2.x = this.long0;
p2.y = HALF_PI;
if (y2 < 0) {
p2.y *= -1;
}
return p2;
}
var nl1 = gN(this.a, this.e, Math.sin(phi1));
var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);
var tl1 = Math.pow(Math.tan(phi1), 2);
var dl = x2 * this.a / nl1;
var dsq = dl * dl;
phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);
lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);
}
p2.x = adjust_lon(lam + this.long0);
p2.y = adjust_lat(phi);
return p2;
}
var names$k = ["Cassini", "Cassini_Soldner", "cass"];
const cass = {
init: init$k,
forward: forward$k,
inverse: inverse$k,
names: names$k
};
function qsfnz(eccent, sinphi) {
var con;
if (eccent > 1e-7) {
con = eccent * sinphi;
return (1 - eccent * eccent) * (sinphi / (1 - con * con) - 0.5 / eccent * Math.log((1 - con) / (1 + con)));
} else {
return 2 * sinphi;
}
}
var S_POLE = 1;
var N_POLE = 2;
var EQUIT = 3;
var OBLIQ = 4;
function init$j() {
var t3 = Math.abs(this.lat0);
if (Math.abs(t3 - HALF_PI) < EPSLN) {
this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;
} else if (Math.abs(t3) < EPSLN) {
this.mode = this.EQUIT;
} else {
this.mode = this.OBLIQ;
}
if (this.es > 0) {
var sinphi;
this.qp = qsfnz(this.e, 1);
this.mmf = 0.5 / (1 - this.es);
this.apa = authset(this.es);
switch (this.mode) {
case this.N_POLE:
this.dd = 1;
break;
case this.S_POLE:
this.dd = 1;
break;
case this.EQUIT:
this.rq = Math.sqrt(0.5 * this.qp);
this.dd = 1 / this.rq;
this.xmf = 1;
this.ymf = 0.5 * this.qp;
break;
case this.OBLIQ:
this.rq = Math.sqrt(0.5 * this.qp);
sinphi = Math.sin(this.lat0);
this.sinb1 = qsfnz(this.e, sinphi) / this.qp;
this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);
this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);
this.ymf = (this.xmf = this.rq) / this.dd;
this.xmf *= this.dd;
break;
}
} else {
if (this.mode === this.OBLIQ) {
this.sinph0 = Math.sin(this.lat0);
this.cosph0 = Math.cos(this.lat0);
}
}
}
function forward$j(p2) {
var x2, y2, coslam, sinlam, sinphi, q2, sinb, cosb, b2, cosphi;
var lam = p2.x;
var phi = p2.y;
lam = adjust_lon(lam - this.long0);
if (this.sphere) {
sinphi = Math.sin(phi);
cosphi = Math.cos(phi);
coslam = Math.cos(lam);
if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
y2 = this.mode === this.EQUIT ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;
if (y2 <= EPSLN) {
return null;
}
y2 = Math.sqrt(2 / y2);
x2 = y2 * cosphi * Math.sin(lam);
y2 *= this.mode === this.EQUIT ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;
} else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
if (this.mode === this.N_POLE) {
coslam = -coslam;
}
if (Math.abs(phi + this.lat0) < EPSLN) {
return null;
}
y2 = FORTPI - phi * 0.5;
y2 = 2 * (this.mode === this.S_POLE ? Math.cos(y2) : Math.sin(y2));
x2 = y2 * Math.sin(lam);
y2 *= coslam;
}
} else {
sinb = 0;
cosb = 0;
b2 = 0;
coslam = Math.cos(lam);
sinlam = Math.sin(lam);
sinphi = Math.sin(phi);
q2 = qsfnz(this.e, sinphi);
if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
sinb = q2 / this.qp;
cosb = Math.sqrt(1 - sinb * sinb);
}
switch (this.mode) {
case this.OBLIQ:
b2 = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;
break;
case this.EQUIT:
b2 = 1 + cosb * coslam;
break;
case this.N_POLE:
b2 = HALF_PI + phi;
q2 = this.qp - q2;
break;
case this.S_POLE:
b2 = phi - HALF_PI;
q2 = this.qp + q2;
break;
}
if (Math.abs(b2) < EPSLN) {
return null;
}
switch (this.mode) {
case this.OBLIQ:
case this.EQUIT:
b2 = Math.sqrt(2 / b2);
if (this.mode === this.OBLIQ) {
y2 = this.ymf * b2 * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);
} else {
y2 = (b2 = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;
}
x2 = this.xmf * b2 * cosb * sinlam;
break;
case this.N_POLE:
case this.S_POLE:
if (q2 >= 0) {
x2 = (b2 = Math.sqrt(q2)) * sinlam;
y2 = coslam * (this.mode === this.S_POLE ? b2 : -b2);
} else {
x2 = y2 = 0;
}
break;
}
}
p2.x = this.a * x2 + this.x0;
p2.y = this.a * y2 + this.y0;
return p2;
}
function inverse$j(p2) {
p2.x -= this.x0;
p2.y -= this.y0;
var x2 = p2.x / this.a;
var y2 = p2.y / this.a;
var lam, phi, cCe, sCe, q2, rho, ab;
if (this.sphere) {
var cosz = 0, rh, sinz = 0;
rh = Math.sqrt(x2 * x2 + y2 * y2);
phi = rh * 0.5;
if (phi > 1) {
return null;
}
phi = 2 * Math.asin(phi);
if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
sinz = Math.sin(phi);
cosz = Math.cos(phi);
}
switch (this.mode) {
case this.EQUIT:
phi = Math.abs(rh) <= EPSLN ? 0 : Math.asin(y2 * sinz / rh);
x2 *= sinz;
y2 = cosz * rh;
break;
case this.OBLIQ:
phi = Math.abs(rh) <= EPSLN ? this.lat0 : Math.asin(cosz * this.sinph0 + y2 * sinz * this.cosph0 / rh);
x2 *= sinz * this.cosph0;
y2 = (cosz - Math.sin(phi) * this.sinph0) * rh;
break;
case this.N_POLE:
y2 = -y2;
phi = HALF_PI - phi;
break;
case this.S_POLE:
phi -= HALF_PI;
break;
}
lam = y2 === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ) ? 0 : Math.atan2(x2, y2);
} else {
ab = 0;
if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {
x2 /= this.dd;
y2 *= this.dd;
rho = Math.sqrt(x2 * x2 + y2 * y2);
if (rho < EPSLN) {
p2.x = this.long0;
p2.y = this.lat0;
return p2;
}
sCe = 2 * Math.asin(0.5 * rho / this.rq);
cCe = Math.cos(sCe);
x2 *= sCe = Math.sin(sCe);
if (this.mode === this.OBLIQ) {
ab = cCe * this.sinb1 + y2 * sCe * this.cosb1 / rho;
q2 = this.qp * ab;
y2 = rho * this.cosb1 * cCe - y2 * this.sinb1 * sCe;
} else {
ab = y2 * sCe / rho;
q2 = this.qp * ab;
y2 = rho * cCe;
}
} else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
if (this.mode === this.N_POLE) {
y2 = -y2;
}
q2 = x2 * x2 + y2 * y2;
if (!q2) {
p2.x = this.long0;
p2.y = this.lat0;
return p2;
}
ab = 1 - q2 / this.qp;
if (this.mode === this.S_POLE) {
ab = -ab;
}
}
lam = Math.atan2(x2, y2);
phi = authlat(Math.asin(ab), this.apa);
}
p2.x = adjust_lon(this.long0 + lam);
p2.y = phi;
return p2;
}
var P00 = 0.3333333333333333;
var P01 = 0.17222222222222222;
var P02 = 0.10257936507936508;
var P10 = 0.06388888888888888;
var P11 = 0.0664021164021164;
var P20 = 0.016415012942191543;
function authset(es) {
var t3;
var APA = [];
APA[0] = es * P00;
t3 = es * es;
APA[0] += t3 * P01;
APA[1] = t3 * P10;
t3 *= es;
APA[0] += t3 * P02;
APA[1] += t3 * P11;
APA[2] = t3 * P20;
return APA;
}
function authlat(beta, APA) {
var t3 = beta + beta;
return beta + APA[0] * Math.sin(t3) + APA[1] * Math.sin(t3 + t3) + APA[2] * Math.sin(t3 + t3 + t3);
}
var names$j = ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"];
const laea = {
init: init$j,
forward: forward$j,
inverse: inverse$j,
names: names$j,
S_POLE,
N_POLE,
EQUIT,
OBLIQ
};
function asinz(x2) {
if (Math.abs(x2) > 1) {
x2 = x2 > 1 ? 1 : -1;
}
return Math.asin(x2);
}
function init$i() {
if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
return;
}
this.temp = this.b / this.a;
this.es = 1 - Math.pow(this.temp, 2);
this.e3 = Math.sqrt(this.es);
this.sin_po = Math.sin(this.lat1);
this.cos_po = Math.cos(this.lat1);
this.t1 = this.sin_po;
this.con = this.sin_po;
this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);
this.qs1 = qsfnz(this.e3, this.sin_po);
this.sin_po = Math.sin(this.lat2);
this.cos_po = Math.cos(this.lat2);
this.t2 = this.sin_po;
this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);
this.qs2 = qsfnz(this.e3, this.sin_po);
this.sin_po = Math.sin(this.lat0);
this.cos_po = Math.cos(this.lat0);
this.t3 = this.sin_po;
this.qs0 = qsfnz(this.e3, this.sin_po);
if (Math.abs(this.lat1 - this.lat2) > EPSLN) {
this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);
} else {
this.ns0 = this.con;
}
this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;
this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;
}
function forward$i(p2) {
var lon = p2.x;
var lat = p2.y;
this.sin_phi = Math.sin(lat);
this.cos_phi = Math.cos(lat);
var qs = qsfnz(this.e3, this.sin_phi);
var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;
var theta = this.ns0 * adjust_lon(lon - this.long0);
var x2 = rh1 * Math.sin(theta) + this.x0;
var y2 = this.rh - rh1 * Math.cos(theta) + this.y0;
p2.x = x2;
p2.y = y2;
return p2;
}
function inverse$i(p2) {
var rh1, qs, con, theta, lon, lat;
p2.x -= this.x0;
p2.y = this.rh - p2.y + this.y0;
if (this.ns0 >= 0) {
rh1 = Math.sqrt(p2.x * p2.x + p2.y * p2.y);
con = 1;
} else {
rh1 = -Math.sqrt(p2.x * p2.x + p2.y * p2.y);
con = -1;
}
theta = 0;
if (rh1 !== 0) {
theta = Math.atan2(con * p2.x, con * p2.y);
}
con = rh1 * this.ns0 / this.a;
if (this.sphere) {
lat = Math.asin((this.c - con * con) / (2 * this.ns0));
} else {
qs = (this.c - con * con) / this.ns0;
lat = this.phi1z(this.e3, qs);
}
lon = adjust_lon(theta / this.ns0 + this.long0);
p2.x = lon;
p2.y = lat;
return p2;
}
function phi1z(eccent, qs) {
var sinphi, cosphi, con, com, dphi;
var phi = asinz(0.5 * qs);
if (eccent < EPSLN) {
return phi;
}
var eccnts = eccent * eccent;
for (var i2 = 1; i2 <= 25; i2++) {
sinphi = Math.sin(phi);
cosphi = Math.cos(phi);
con = eccent * sinphi;
com = 1 - con * con;
dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
phi = phi + dphi;
if (Math.abs(dphi) <= 1e-7) {
return phi;
}
}
return null;
}
var names$i = ["Albers_Conic_Equal_Area", "Albers", "aea"];
const aea = {
init: init$i,
forward: forward$i,
inverse: inverse$i,
names: names$i,
phi1z
};
function init$h() {
this.sin_p14 = Math.sin(this.lat0);
this.cos_p14 = Math.cos(this.lat0);
this.infinity_dist = 1e3 * this.a;
this.rc = 1;
}
function forward$h(p2) {
var sinphi, cosphi;
var dlon;
var coslon;
var ksp;
var g2;
var x2, y2;
var lon = p2.x;
var lat = p2.y;
dlon = adjust_lon(lon - this.long0);
sinphi = Math.sin(lat);
cosphi = Math.cos(lat);
coslon = Math.cos(dlon);
g2 = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;
ksp = 1;
if (g2 > 0 || Math.abs(g2) <= EPSLN) {
x2 = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g2;
y2 = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g2;
} else {
x2 = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);
y2 = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);
}
p2.x = x2;
p2.y = y2;
return p2;
}
function inverse$h(p2) {
var rh;
var sinc, cosc;
var c2;
var lon, lat;
p2.x = (p2.x - this.x0) / this.a;
p2.y = (p2.y - this.y0) / this.a;
p2.x /= this.k0;
p2.y /= this.k0;
if (rh = Math.sqrt(p2.x * p2.x + p2.y * p2.y)) {
c2 = Math.atan2(rh, this.rc);
sinc = Math.sin(c2);
cosc = Math.cos(c2);
lat = asinz(cosc * this.sin_p14 + p2.y * sinc * this.cos_p14 / rh);
lon = Math.atan2(p2.x * sinc, rh * this.cos_p14 * cosc - p2.y * this.sin_p14 * sinc);
lon = adjust_lon(this.long0 + lon);
} else {
lat = this.phic0;
lon = 0;
}
p2.x = lon;
p2.y = lat;
return p2;
}
var names$h = ["gnom"];
const gnom = {
init: init$h,
forward: forward$h,
inverse: inverse$h,
names: names$h
};
function iqsfnz(eccent, q2) {
var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));
if (Math.abs(Math.abs(q2) - temp) < 1e-6) {
if (q2 < 0) {
return -1 * HALF_PI;
} else {
return HALF_PI;
}
}
var phi = Math.asin(0.5 * q2);
var dphi;
var sin_phi;
var cos_phi;
var con;
for (var i2 = 0; i2 < 30; i2++) {
sin_phi = Math.sin(phi);
cos_phi = Math.cos(phi);
con = eccent * sin_phi;
dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q2 / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));
phi += dphi;
if (Math.abs(dphi) <= 1e-10) {
return phi;
}
}
return NaN;
}
function init$g() {
if (!this.sphere) {
this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
}
}
function forward$g(p2) {
var lon = p2.x;
var lat = p2.y;
var x2, y2;
var dlon = adjust_lon(lon - this.long0);
if (this.sphere) {
x2 = this.x0 + this.a * dlon * Math.cos(this.lat_ts);
y2 = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);
} else {
var qs = qsfnz(this.e, Math.sin(lat));
x2 = this.x0 + this.a * this.k0 * dlon;
y2 = this.y0 + this.a * qs * 0.5 / this.k0;
}
p2.x = x2;
p2.y = y2;
return p2;
}
function inverse$g(p2) {
p2.x -= this.x0;
p2.y -= this.y0;
var lon, lat;
if (this.sphere) {
lon = adjust_lon(this.long0 + p2.x / this.a / Math.cos(this.lat_ts));
lat = Math.asin(p2.y / this.a * Math.cos(this.lat_ts));
} else {
lat = iqsfnz(this.e, 2 * p2.y * this.k0 / this.a);
lon = adjust_lon(this.long0 + p2.x / (this.a * this.k0));
}
p2.x = lon;
p2.y = lat;
return p2;
}
var names$g = ["cea"];
const cea = {
init: init$g,
forward: forward$g,
inverse: inverse$g,
names: names$g
};
function init$f() {
this.x0 = this.x0 || 0;
this.y0 = this.y0 || 0;
this.lat0 = this.lat0 || 0;
this.long0 = this.long0 || 0;
this.lat_ts = this.lat_ts || 0;
this.title = this.title || "Equidistant Cylindrical (Plate Carre)";
this.rc = Math.cos(this.lat_ts);
}
function forward$f(p2) {
var lon = p2.x;
var lat = p2.y;
var dlon = adjust_lon(lon - this.long0);
var dlat = adjust_lat(lat - this.lat0);
p2.x = this.x0 + this.a * dlon * this.rc;
p2.y = this.y0 + this.a * dlat;
return p2;
}
function inverse$f(p2) {
var x2 = p2.x;
var y2 = p2.y;
p2.x = adjust_lon(this.long0 + (x2 - this.x0) / (this.a * this.rc));
p2.y = adjust_lat(this.lat0 + (y2 - this.y0) / this.a);
return p2;
}
var names$f = ["Equirectangular", "Equidistant_Cylindrical", "eqc"];
const eqc = {
init: init$f,
forward: forward$f,
inverse: inverse$f,
names: names$f
};
var MAX_ITER$1 = 20;
function init$e() {
this.temp = this.b / this.a;
this.es = 1 - Math.pow(this.temp, 2);
this.e = Math.sqrt(this.es);
this.e0 = e0fn(this.es);
this.e1 = e1fn(this.es);
this.e2 = e2fn(this.es);
this.e3 = e3fn(this.es);
this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
}
function forward$e(p2) {
var lon = p2.x;
var lat = p2.y;
var x2, y2, el;
var dlon = adjust_lon(lon - this.long0);
el = dlon * Math.sin(lat);
if (this.sphere) {
if (Math.abs(lat) <= EPSLN) {
x2 = this.a * dlon;
y2 = -1 * this.a * this.lat0;
} else {
x2 = this.a * Math.sin(el) / Math.tan(lat);
y2 = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));
}
} else {
if (Math.abs(lat) <= EPSLN) {
x2 = this.a * dlon;
y2 = -1 * this.ml0;
} else {
var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);
x2 = nl * Math.sin(el);
y2 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));
}
}
p2.x = x2 + this.x0;
p2.y = y2 + this.y0;
return p2;
}
function inverse$e(p2) {
var lon, lat, x2, y2, i2;
var al, bl;
var phi, dphi;
x2 = p2.x - this.x0;
y2 = p2.y - this.y0;
if (this.sphere) {
if (Math.abs(y2 + this.a * this.lat0) <= EPSLN) {
lon = adjust_lon(x2 / this.a + this.long0);
lat = 0;
} else {
al = this.lat0 + y2 / this.a;
bl = x2 * x2 / this.a / this.a + al * al;
phi = al;
var tanphi;
for (i2 = MAX_ITER$1; i2; --i2) {
tanphi = Math.tan(phi);
dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);
phi += dphi;
if (Math.abs(dphi) <= EPSLN) {
lat = phi;
break;
}
}
lon = adjust_lon(this.long0 + Math.asin(x2 * Math.tan(phi) / this.a) / Math.sin(lat));
}
} else {
if (Math.abs(y2 + this.ml0) <= EPSLN) {
lat = 0;
lon = adjust_lon(this.long0 + x2 / this.a);
} else {
al = (this.ml0 + y2) / this.a;
bl = x2 * x2 / this.a / this.a + al * al;
phi = al;
var cl, mln, mlnp, ma;
var con;
for (i2 = MAX_ITER$1; i2; --i2) {
con = this.e * Math.sin(phi);
cl = Math.sqrt(1 - con * con) * Math.tan(phi);
mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);
mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);
ma = mln / this.a;
dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);
phi -= dphi;
if (Math.abs(dphi) <= EPSLN) {
lat = phi;
break;
}
}
cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);
lon = adjust_lon(this.long0 + Math.asin(x2 * cl / this.a) / Math.sin(lat));
}
}
p2.x = lon;
p2.y = lat;
return p2;
}
var names$e = ["Polyconic", "poly"];
const poly = {
init: init$e,
forward: forward$e,
inverse: inverse$e,
names: names$e
};
function init$d() {
this.A = [];
this.A[1] = 0.6399175073;
this.A[2] = -0.1358797613;
this.A[3] = 0.063294409;
this.A[4] = -0.02526853;
this.A[5] = 0.0117879;
this.A[6] = -55161e-7;
this.A[7] = 26906e-7;
this.A[8] = -1333e-6;
this.A[9] = 67e-5;
this.A[10] = -34e-5;
this.B_re = [];
this.B_im = [];
this.B_re[1] = 0.7557853228;
this.B_im[1] = 0;
this.B_re[2] = 0.249204646;
this.B_im[2] = 3371507e-9;
this.B_re[3] = -1541739e-9;
this.B_im[3] = 0.04105856;
this.B_re[4] = -0.10162907;
this.B_im[4] = 0.01727609;
this.B_re[5] = -0.26623489;
this.B_im[5] = -0.36249218;
this.B_re[6] = -0.6870983;
this.B_im[6] = -1.1651967;
this.C_re = [];
this.C_im = [];
this.C_re[1] = 1.3231270439;
this.C_im[1] = 0;
this.C_re[2] = -0.577245789;
this.C_im[2] = -7809598e-9;
this.C_re[3] = 0.508307513;
this.C_im[3] = -0.112208952;
this.C_re[4] = -0.15094762;
this.C_im[4] = 0.18200602;
this.C_re[5] = 1.01418179;
this.C_im[5] = 1.64497696;
this.C_re[6] = 1.9660549;
this.C_im[6] = 2.5127645;
this.D = [];
this.D[1] = 1.5627014243;
this.D[2] = 0.5185406398;
this.D[3] = -0.03333098;
this.D[4] = -0.1052906;
this.D[5] = -0.0368594;
this.D[6] = 7317e-6;
this.D[7] = 0.0122;
this.D[8] = 394e-5;
this.D[9] = -13e-4;
}
function forward$d(p2) {
var n2;
var lon = p2.x;
var lat = p2.y;
var delta_lat = lat - this.lat0;
var delta_lon = lon - this.long0;
var d_phi = delta_lat / SEC_TO_RAD * 1e-5;
var d_lambda = delta_lon;
var d_phi_n = 1;
var d_psi = 0;
for (n2 = 1; n2 <= 10; n2++) {
d_phi_n = d_phi_n * d_phi;
d_psi = d_psi + this.A[n2] * d_phi_n;
}
var th_re = d_psi;
var th_im = d_lambda;
var th_n_re = 1;
var th_n_im = 0;
var th_n_re1;
var th_n_im1;
var z_re = 0;
var z_im = 0;
for (n2 = 1; n2 <= 6; n2++) {
th_n_re1 = th_n_re * th_re - th_n_im * th_im;
th_n_im1 = th_n_im * th_re + th_n_re * th_im;
th_n_re = th_n_re1;
th_n_im = th_n_im1;
z_re = z_re + this.B_re[n2] * th_n_re - this.B_im[n2] * th_n_im;
z_im = z_im + this.B_im[n2] * th_n_re + this.B_re[n2] * th_n_im;
}
p2.x = z_im * this.a + this.x0;
p2.y = z_re * this.a + this.y0;
return p2;
}
function inverse$d(p2) {
var n2;
var x2 = p2.x;
var y2 = p2.y;
var delta_x = x2 - this.x0;
var delta_y = y2 - this.y0;
var z_re = delta_y / this.a;
var z_im = delta_x / this.a;
var z_n_re = 1;
var z_n_im = 0;
var z_n_re1;
var z_n_im1;
var th_re = 0;
var th_im = 0;
for (n2 = 1; n2 <= 6; n2++) {
z_n_re1 = z_n_re * z_re - z_n_im * z_im;
z_n_im1 = z_n_im * z_re + z_n_re * z_im;
z_n_re = z_n_re1;
z_n_im = z_n_im1;
th_re = th_re + this.C_re[n2] * z_n_re - this.C_im[n2] * z_n_im;
th_im = th_im + this.C_im[n2] * z_n_re + this.C_re[n2] * z_n_im;
}
for (var i2 = 0; i2 < this.iterations; i2++) {
var th_n_re = th_re;
var th_n_im = th_im;
var th_n_re1;
var th_n_im1;
var num_re = z_re;
var num_im = z_im;
for (n2 = 2; n2 <= 6; n2++) {
th_n_re1 = th_n_re * th_re - th_n_im * th_im;
th_n_im1 = th_n_im * th_re + th_n_re * th_im;
th_n_re = th_n_re1;
th_n_im = th_n_im1;
num_re = num_re + (n2 - 1) * (this.B_re[n2] * th_n_re - this.B_im[n2] * th_n_im);
num_im = num_im + (n2 - 1) * (this.B_im[n2] * th_n_re + this.B_re[n2] * th_n_im);
}
th_n_re = 1;
th_n_im = 0;
var den_re = this.B_re[1];
var den_im = this.B_im[1];
for (n2 = 2; n2 <= 6; n2++) {
th_n_re1 = th_n_re * th_re - th_n_im * th_im;
th_n_im1 = th_n_im * th_re + th_n_re * th_im;
th_n_re = th_n_re1;
th_n_im = th_n_im1;
den_re = den_re + n2 * (this.B_re[n2] * th_n_re - this.B_im[n2] * th_n_im);
den_im = den_im + n2 * (this.B_im[n2] * th_n_re + this.B_re[n2] * th_n_im);
}
var den2 = den_re * den_re + den_im * den_im;
th_re = (num_re * den_re + num_im * den_im) / den2;
th_im = (num_im * den_re - num_re * den_im) / den2;
}
var d_psi = th_re;
var d_lambda = th_im;
var d_psi_n = 1;
var d_phi = 0;
for (n2 = 1; n2 <= 9; n2++) {
d_psi_n = d_psi_n * d_psi;
d_phi = d_phi + this.D[n2] * d_psi_n;
}
var lat = this.lat0 + d_phi * SEC_TO_RAD * 1e5;
var lon = this.long0 + d_lambda;
p2.x = lon;
p2.y = lat;
return p2;
}
var names$d = ["New_Zealand_Map_Grid", "nzmg"];
const nzmg = {
init: init$d,
forward: forward$d,
inverse: inverse$d,
names: names$d
};
function init$c() {
}
function forward$c(p2) {
var lon = p2.x;
var lat = p2.y;
var dlon = adjust_lon(lon - this.long0);
var x2 = this.x0 + this.a * dlon;
var y2 = this.y0 + this.a * Math.log(Math.tan(Math.PI / 4 + lat / 2.5)) * 1.25;
p2.x = x2;
p2.y = y2;
return p2;
}
function inverse$c(p2) {
p2.x -= this.x0;
p2.y -= this.y0;
var lon = adjust_lon(this.long0 + p2.x / this.a);
var lat = 2.5 * (Math.atan(Math.exp(0.8 * p2.y / this.a)) - Math.PI / 4);
p2.x = lon;
p2.y = lat;
return p2;
}
var names$c = ["Miller_Cylindrical", "mill"];
const mill = {
init: init$c,
forward: forward$c,
inverse: inverse$c,
names: names$c
};
var MAX_ITER = 20;
function init$b() {
if (!this.sphere) {
this.en = pj_enfn(this.es);
} else {
this.n = 1;
this.m = 0;
this.es = 0;
this.C_y = Math.sqrt((this.m + 1) / this.n);
this.C_x = this.C_y / (this.m + 1);
}
}
function forward$b(p2) {
var x2, y2;
var lon = p2.x;
var lat = p2.y;
lon = adjust_lon(lon - this.long0);
if (this.sphere) {
if (!this.m) {
lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;
} else {
var k2 = this.n * Math.sin(lat);
for (var i2 = MAX_ITER; i2; --i2) {
var V2 = (this.m * lat + Math.sin(lat) - k2) / (this.m + Math.cos(lat));
lat -= V2;
if (Math.abs(V2) < EPSLN) {
break;
}
}
}
x2 = this.a * this.C_x * lon * (this.m + Math.cos(lat));
y2 = this.a * this.C_y * lat;
} else {
var s2 = Math.sin(lat);
var c2 = Math.cos(lat);
y2 = this.a * pj_mlfn(lat, s2, c2, this.en);
x2 = this.a * lon * c2 / Math.sqrt(1 - this.es * s2 * s2);
}
p2.x = x2;
p2.y = y2;
return p2;
}
function inverse$b(p2) {
var lat, temp, lon, s2;
p2.x -= this.x0;
lon = p2.x / this.a;
p2.y -= this.y0;
lat = p2.y / this.a;
if (this.sphere) {
lat /= this.C_y;
lon = lon / (this.C_x * (this.m + Math.cos(lat)));
if (this.m) {
lat = asinz((this.m * lat + Math.sin(lat)) / this.n);
} else if (this.n !== 1) {
lat = asinz(Math.sin(lat) / this.n);
}
lon = adjust_lon(lon + this.long0);
lat = adjust_lat(lat);
} else {
lat = pj_inv_mlfn(p2.y / this.a, this.es, this.en);
s2 = Math.abs(lat);
if (s2 < HALF_PI) {
s2 = Math.sin(lat);
temp = this.long0 + p2.x * Math.sqrt(1 - this.es * s2 * s2) / (this.a * Math.cos(lat));
lon = adjust_lon(temp);
} else if (s2 - EPSLN < HALF_PI) {
lon = this.long0;
}
}
p2.x = lon;
p2.y = lat;
return p2;
}
var names$b = ["Sinusoidal", "sinu"];
const sinu = {
init: init$b,
forward: forward$b,
inverse: inverse$b,
names: names$b
};
function init$a() {
}
function forward$a(p2) {
var lon = p2.x;
var lat = p2.y;
var delta_lon = adjust_lon(lon - this.long0);
var theta = lat;
var con = Math.PI * Math.sin(lat);
while (true) {
var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));
theta += delta_theta;
if (Math.abs(delta_theta) < EPSLN) {
break;
}
}
theta /= 2;
if (Math.PI / 2 - Math.abs(lat) < EPSLN) {
delta_lon = 0;
}
var x2 = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;
var y2 = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;
p2.x = x2;
p2.y = y2;
return p2;
}
function inverse$a(p2) {
var theta;
var arg;
p2.x -= this.x0;
p2.y -= this.y0;
arg = p2.y / (1.4142135623731 * this.a);
if (Math.abs(arg) > 0.999999999999) {
arg = 0.999999999999;
}
theta = Math.asin(arg);
var lon = adjust_lon(this.long0 + p2.x / (0.900316316158 * this.a * Math.cos(theta)));
if (lon < -Math.PI) {
lon = -Math.PI;
}
if (lon > Math.PI) {
lon = Math.PI;
}
arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;
if (Math.abs(arg) > 1) {
arg = 1;
}
var lat = Math.asin(arg);
p2.x = lon;
p2.y = lat;
return p2;
}
var names$a = ["Mollweide", "moll"];
const moll = {
init: init$a,
forward: forward$a,
inverse: inverse$a,
names: names$a
};
function init$9() {
if (Math.abs(this.lat1 + this.lat2) < EPSLN) {
return;
}
this.lat2 = this.lat2 || this.lat1;
this.temp = this.b / this.a;
this.es = 1 - Math.pow(this.temp, 2);
this.e = Math.sqrt(this.es);
this.e0 = e0fn(this.es);
this.e1 = e1fn(this.es);
this.e2 = e2fn(this.es);
this.e3 = e3fn(this.es);
this.sinphi = Math.sin(this.lat1);
this.cosphi = Math.cos(this.lat1);
this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);
this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);
if (Math.abs(this.lat1 - this.lat2) < EPSLN) {
this.ns = this.sinphi;
} else {
this.sinphi = Math.sin(this.lat2);
this.cosphi = Math.cos(this.lat2);
this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);
this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);
this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);
}
this.g = this.ml1 + this.ms1 / this.ns;
this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);
this.rh = this.a * (this.g - this.ml0);
}
function forward$9(p2) {
var lon = p2.x;
var lat = p2.y;
var rh1;
if (this.sphere) {
rh1 = this.a * (this.g - lat);
} else {
var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);
rh1 = this.a * (this.g - ml);
}
var theta = this.ns * adjust_lon(lon - this.long0);
var x2 = this.x0 + rh1 * Math.sin(theta);
var y2 = this.y0 + this.rh - rh1 * Math.cos(theta);
p2.x = x2;
p2.y = y2;
return p2;
}
function inverse$9(p2) {
p2.x -= this.x0;
p2.y = this.rh - p2.y + this.y0;
var con, rh1, lat, lon;
if (this.ns >= 0) {
rh1 = Math.sqrt(p2.x * p2.x + p2.y * p2.y);
con = 1;
} else {
rh1 = -Math.sqrt(p2.x * p2.x + p2.y * p2.y);
con = -1;
}
var theta = 0;
if (rh1 !== 0) {
theta = Math.atan2(con * p2.x, con * p2.y);
}
if (this.sphere) {
lon = adjust_lon(this.long0 + theta / this.ns);
lat = adjust_lat(this.g - rh1 / this.a);
p2.x = lon;
p2.y = lat;
return p2;
} else {
var ml = this.g - rh1 / this.a;
lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);
lon = adjust_lon(this.long0 + theta / this.ns);
p2.x = lon;
p2.y = lat;
return p2;
}
}
var names$9 = ["Equidistant_Conic", "eqdc"];
const eqdc = {
init: init$9,
forward: forward$9,
inverse: inverse$9,
names: names$9
};
function init$8() {
this.R = this.a;
}
function forward$8(p2) {
var lon = p2.x;
var lat = p2.y;
var dlon = adjust_lon(lon - this.long0);
var x2, y2;
if (Math.abs(lat) <= EPSLN) {
x2 = this.x0 + this.R * dlon;
y2 = this.y0;
}
var theta = asinz(2 * Math.abs(lat / Math.PI));
if (Math.abs(dlon) <= EPSLN || Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {
x2 = this.x0;
if (lat >= 0) {
y2 = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);
} else {
y2 = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);
}
}
var al = 0.5 * Math.abs(Math.PI / dlon - dlon / Math.PI);
var asq = al * al;
var sinth = Math.sin(theta);
var costh = Math.cos(theta);
var g2 = costh / (sinth + costh - 1);
var gsq = g2 * g2;
var m2 = g2 * (2 / sinth - 1);
var msq = m2 * m2;
var con = Math.PI * this.R * (al * (g2 - msq) + Math.sqrt(asq * (g2 - msq) * (g2 - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);
if (dlon < 0) {
con = -con;
}
x2 = this.x0 + con;
var q2 = asq + g2;
con = Math.PI * this.R * (m2 * q2 - al * Math.sqrt((msq + asq) * (asq + 1) - q2 * q2)) / (msq + asq);
if (lat >= 0) {
y2 = this.y0 + con;
} else {
y2 = this.y0 - con;
}
p2.x = x2;
p2.y = y2;
return p2;
}
function inverse$8(p2) {
var lon, lat;
var xx, yy, xys, c1, c2, c3;
var a1;
var m1;
var con;
var th1;
var d2;
p2.x -= this.x0;
p2.y -= this.y0;
con = Math.PI * this.R;
xx = p2.x / con;
yy = p2.y / con;
xys = xx * xx + yy * yy;
c1 = -Math.abs(yy) * (1 + xys);
c2 = c1 - 2 * yy * yy + xx * xx;
c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;
d2 = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;
a1 = (c1 - c2 * c2 / 3 / c3) / c3;
m1 = 2 * Math.sqrt(-a1 / 3);
con = 3 * d2 / a1 / m1;
if (Math.abs(con) > 1) {
if (con >= 0) {
con = 1;
} else {
con = -1;
}
}
th1 = Math.acos(con) / 3;
if (p2.y >= 0) {
lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
} else {
lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;
}
if (Math.abs(xx) < EPSLN) {
lon = this.long0;
} else {
lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);
}
p2.x = lon;
p2.y = lat;
return p2;
}
var names$8 = ["Van_der_Grinten_I", "VanDerGrinten", "vandg"];
const vandg = {
init: init$8,
forward: forward$8,
inverse: inverse$8,
names: names$8
};
function init$7() {
this.sin_p12 = Math.sin(this.lat0);
this.cos_p12 = Math.cos(this.lat0);
}
function forward$7(p2) {
var lon = p2.x;
var lat = p2.y;
var sinphi = Math.sin(p2.y);
var cosphi = Math.cos(p2.y);
var dlon = adjust_lon(lon - this.long0);
var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G2, H4, GH, Hs, c2, kp, cos_c, s2, s22, s3, s4, s5;
if (this.sphere) {
if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
p2.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);
p2.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);
return p2;
} else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
p2.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);
p2.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);
return p2;
} else {
cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);
c2 = Math.acos(cos_c);
kp = c2 ? c2 / Math.sin(c2) : 1;
p2.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);
p2.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));
return p2;
}
} else {
e0 = e0fn(this.es);
e1 = e1fn(this.es);
e2 = e2fn(this.es);
e3 = e3fn(this.es);
if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
Ml = this.a * mlfn(e0, e1, e2, e3, lat);
p2.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);
p2.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);
return p2;
} else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
Ml = this.a * mlfn(e0, e1, e2, e3, lat);
p2.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);
p2.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);
return p2;
} else {
tanphi = sinphi / cosphi;
Nl1 = gN(this.a, this.e, this.sin_p12);
Nl = gN(this.a, this.e, sinphi);
psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));
Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));
if (Az === 0) {
s2 = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
} else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {
s2 = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));
} else {
s2 = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));
}
G2 = this.e * this.sin_p12 / Math.sqrt(1 - this.es);
H4 = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);
GH = G2 * H4;
Hs = H4 * H4;
s22 = s2 * s2;
s3 = s22 * s2;
s4 = s3 * s2;
s5 = s4 * s2;
c2 = Nl1 * s2 * (1 - s22 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G2 * G2 * (1 - 7 * Hs)) - s5 / 48 * GH);
p2.x = this.x0 + c2 * Math.sin(Az);
p2.y = this.y0 + c2 * Math.cos(Az);
return p2;
}
}
}
function inverse$7(p2) {
p2.x -= this.x0;
p2.y -= this.y0;
var rh, z2, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M2, N1, psi, Az, cosAz, tmp, A5, B3, D2, Ee, F2, sinpsi;
if (this.sphere) {
rh = Math.sqrt(p2.x * p2.x + p2.y * p2.y);
if (rh > 2 * HALF_PI * this.a) {
return;
}
z2 = rh / this.a;
sinz = Math.sin(z2);
cosz = Math.cos(z2);
lon = this.long0;
if (Math.abs(rh) <= EPSLN) {
lat = this.lat0;
} else {
lat = asinz(cosz * this.sin_p12 + p2.y * sinz * this.cos_p12 / rh);
con = Math.abs(this.lat0) - HALF_PI;
if (Math.abs(con) <= EPSLN) {
if (this.lat0 >= 0) {
lon = adjust_lon(this.long0 + Math.atan2(p2.x, -p2.y));
} else {
lon = adjust_lon(this.long0 - Math.atan2(-p2.x, p2.y));
}
} else {
lon = adjust_lon(this.long0 + Math.atan2(p2.x * sinz, rh * this.cos_p12 * cosz - p2.y * this.sin_p12 * sinz));
}
}
p2.x = lon;
p2.y = lat;
return p2;
} else {
e0 = e0fn(this.es);
e1 = e1fn(this.es);
e2 = e2fn(this.es);
e3 = e3fn(this.es);
if (Math.abs(this.sin_p12 - 1) <= EPSLN) {
Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
rh = Math.sqrt(p2.x * p2.x + p2.y * p2.y);
M2 = Mlp - rh;
lat = imlfn(M2 / this.a, e0, e1, e2, e3);
lon = adjust_lon(this.long0 + Math.atan2(p2.x, -1 * p2.y));
p2.x = lon;
p2.y = lat;
return p2;
} else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {
Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);
rh = Math.sqrt(p2.x * p2.x + p2.y * p2.y);
M2 = rh - Mlp;
lat = imlfn(M2 / this.a, e0, e1, e2, e3);
lon = adjust_lon(this.long0 + Math.atan2(p2.x, p2.y));
p2.x = lon;
p2.y = lat;
return p2;
} else {
rh = Math.sqrt(p2.x * p2.x + p2.y * p2.y);
Az = Math.atan2(p2.x, p2.y);
N1 = gN(this.a, this.e, this.sin_p12);
cosAz = Math.cos(Az);
tmp = this.e * this.cos_p12 * cosAz;
A5 = -tmp * tmp / (1 - this.es);
B3 = 3 * this.es * (1 - A5) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);
D2 = rh / N1;
Ee = D2 - A5 * (1 + A5) * Math.pow(D2, 3) / 6 - B3 * (1 + 3 * A5) * Math.pow(D2, 4) / 24;
F2 = 1 - A5 * Ee * Ee / 2 - D2 * Ee * Ee * Ee / 6;
psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);
lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));
sinpsi = Math.sin(psi);
lat = Math.atan2((sinpsi - this.es * F2 * this.sin_p12) * Math.tan(psi), sinpsi * (1 - this.es));
p2.x = lon;
p2.y = lat;
return p2;
}
}
}
var names$7 = ["Azimuthal_Equidistant", "aeqd"];
const aeqd = {
init: init$7,
forward: forward$7,
inverse: inverse$7,
names: names$7
};
function init$6() {
this.sin_p14 = Math.sin(this.lat0);
this.cos_p14 = Math.cos(this.lat0);
}
function forward$6(p2) {
var sinphi, cosphi;
var dlon;
var coslon;
var ksp;
var g2, x2, y2;
var lon = p2.x;
var lat = p2.y;
dlon = adjust_lon(lon - this.long0);
sinphi = Math.sin(lat);
cosphi = Math.cos(lat);
coslon = Math.cos(dlon);
g2 = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;
ksp = 1;
if (g2 > 0 || Math.abs(g2) <= EPSLN) {
x2 = this.a * ksp * cosphi * Math.sin(dlon);
y2 = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);
}
p2.x = x2;
p2.y = y2;
return p2;
}
function inverse$6(p2) {
var rh;
var z2;
var sinz, cosz;
var con;
var lon, lat;
p2.x -= this.x0;
p2.y -= this.y0;
rh = Math.sqrt(p2.x * p2.x + p2.y * p2.y);
z2 = asinz(rh / this.a);
sinz = Math.sin(z2);
cosz = Math.cos(z2);
lon = this.long0;
if (Math.abs(rh) <= EPSLN) {
lat = this.lat0;
p2.x = lon;
p2.y = lat;
return p2;
}
lat = asinz(cosz * this.sin_p14 + p2.y * sinz * this.cos_p14 / rh);
con = Math.abs(this.lat0) - HALF_PI;
if (Math.abs(con) <= EPSLN) {
if (this.lat0 >= 0) {
lon = adjust_lon(this.long0 + Math.atan2(p2.x, -p2.y));
} else {
lon = adjust_lon(this.long0 - Math.atan2(-p2.x, p2.y));
}
p2.x = lon;
p2.y = lat;
return p2;
}
lon = adjust_lon(this.long0 + Math.atan2(p2.x * sinz, rh * this.cos_p14 * cosz - p2.y * this.sin_p14 * sinz));
p2.x = lon;
p2.y = lat;
return p2;
}
var names$6 = ["ortho"];
const ortho = {
init: init$6,
forward: forward$6,
inverse: inverse$6,
names: names$6
};
var FACE_ENUM = {
FRONT: 1,
RIGHT: 2,
BACK: 3,
LEFT: 4,
TOP: 5,
BOTTOM: 6
};
var AREA_ENUM = {
AREA_0: 1,
AREA_1: 2,
AREA_2: 3,
AREA_3: 4
};
function init$5() {
this.x0 = this.x0 || 0;
this.y0 = this.y0 || 0;
this.lat0 = this.lat0 || 0;
this.long0 = this.long0 || 0;
this.lat_ts = this.lat_ts || 0;
this.title = this.title || "Quadrilateralized Spherical Cube";
if (this.lat0 >= HALF_PI - FORTPI / 2) {
this.face = FACE_ENUM.TOP;
} else if (this.lat0 <= -(HALF_PI - FORTPI / 2)) {
this.face = FACE_ENUM.BOTTOM;
} else if (Math.abs(this.long0) <= FORTPI) {
this.face = FACE_ENUM.FRONT;
} else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {
this.face = this.long0 > 0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;
} else {
this.face = FACE_ENUM.BACK;
}
if (this.es !== 0) {
this.one_minus_f = 1 - (this.a - this.b) / this.a;
this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;
}
}
function forward$5(p2) {
var xy = { x: 0, y: 0 };
var lat, lon;
var theta, phi;
var t3, mu;
var area = { value: 0 };
p2.x -= this.long0;
if (this.es !== 0) {
lat = Math.atan(this.one_minus_f_squared * Math.tan(p2.y));
} else {
lat = p2.y;
}
lon = p2.x;
if (this.face === FACE_ENUM.TOP) {
phi = HALF_PI - lat;
if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {
area.value = AREA_ENUM.AREA_0;
theta = lon - HALF_PI;
} else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {
area.value = AREA_ENUM.AREA_1;
theta = lon > 0 ? lon - SPI : lon + SPI;
} else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {
area.value = AREA_ENUM.AREA_2;
theta = lon + HALF_PI;
} else {
area.value = AREA_ENUM.AREA_3;
theta = lon;
}
} else if (this.face === FACE_ENUM.BOTTOM) {
phi = HALF_PI + lat;
if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {
area.value = AREA_ENUM.AREA_0;
theta = -lon + HALF_PI;
} else if (lon < FORTPI && lon >= -FORTPI) {
area.value = AREA_ENUM.AREA_1;
theta = -lon;
} else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {
area.value = AREA_ENUM.AREA_2;
theta = -lon - HALF_PI;
} else {
area.value = AREA_ENUM.AREA_3;
theta = lon > 0 ? -lon + SPI : -lon - SPI;
}
} else {
var q2, r2, s2;
var sinlat, coslat;
var sinlon, coslon;
if (this.face === FACE_ENUM.RIGHT) {
lon = qsc_shift_lon_origin(lon, +HALF_PI);
} else if (this.face === FACE_ENUM.BACK) {
lon = qsc_shift_lon_origin(lon, +SPI);
} else if (this.face === FACE_ENUM.LEFT) {
lon = qsc_shift_lon_origin(lon, -HALF_PI);
}
sinlat = Math.sin(lat);
coslat = Math.cos(lat);
sinlon = Math.sin(lon);
coslon = Math.cos(lon);
q2 = coslat * coslon;
r2 = coslat * sinlon;
s2 = sinlat;
if (this.face === FACE_ENUM.FRONT) {
phi = Math.acos(q2);
theta = qsc_fwd_equat_face_theta(phi, s2, r2, area);
} else if (this.face === FACE_ENUM.RIGHT) {
phi = Math.acos(r2);
theta = qsc_fwd_equat_face_theta(phi, s2, -q2, area);
} else if (this.face === FACE_ENUM.BACK) {
phi = Math.acos(-q2);
theta = qsc_fwd_equat_face_theta(phi, s2, -r2, area);
} else if (this.face === FACE_ENUM.LEFT) {
phi = Math.acos(-r2);
theta = qsc_fwd_equat_face_theta(phi, s2, q2, area);
} else {
phi = theta = 0;
area.value = AREA_ENUM.AREA_0;
}
}
mu = Math.atan(12 / SPI * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));
t3 = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));
if (area.value === AREA_ENUM.AREA_1) {
mu += HALF_PI;
} else if (area.value === AREA_ENUM.AREA_2) {
mu += SPI;
} else if (area.value === AREA_ENUM.AREA_3) {
mu += 1.5 * SPI;
}
xy.x = t3 * Math.cos(mu);
xy.y = t3 * Math.sin(mu);
xy.x = xy.x * this.a + this.x0;
xy.y = xy.y * this.a + this.y0;
p2.x = xy.x;
p2.y = xy.y;
return p2;
}
function inverse$5(p2) {
var lp = { lam: 0, phi: 0 };
var mu, nu, cosmu, tannu;
var tantheta, theta, cosphi, phi;
var t3;
var area = { value: 0 };
p2.x = (p2.x - this.x0) / this.a;
p2.y = (p2.y - this.y0) / this.a;
nu = Math.atan(Math.sqrt(p2.x * p2.x + p2.y * p2.y));
mu = Math.atan2(p2.y, p2.x);
if (p2.x >= 0 && p2.x >= Math.abs(p2.y)) {
area.value = AREA_ENUM.AREA_0;
} else if (p2.y >= 0 && p2.y >= Math.abs(p2.x)) {
area.value = AREA_ENUM.AREA_1;
mu -= HALF_PI;
} else if (p2.x < 0 && -p2.x >= Math.abs(p2.y)) {
area.value = AREA_ENUM.AREA_2;
mu = mu < 0 ? mu + SPI : mu - SPI;
} else {
area.value = AREA_ENUM.AREA_3;
mu += HALF_PI;
}
t3 = SPI / 12 * Math.tan(mu);
tantheta = Math.sin(t3) / (Math.cos(t3) - 1 / Math.sqrt(2));
theta = Math.atan(tantheta);
cosmu = Math.cos(mu);
tannu = Math.tan(nu);
cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));
if (cosphi < -1) {
cosphi = -1;
} else if (cosphi > 1) {
cosphi = 1;
}
if (this.face === FACE_ENUM.TOP) {
phi = Math.acos(cosphi);
lp.phi = HALF_PI - phi;
if (area.value === AREA_ENUM.AREA_0) {
lp.lam = theta + HALF_PI;
} else if (area.value === AREA_ENUM.AREA_1) {
lp.lam = theta < 0 ? theta + SPI : theta - SPI;
} else if (area.value === AREA_ENUM.AREA_2) {
lp.lam = theta - HALF_PI;
} else {
lp.lam = theta;
}
} else if (this.face === FACE_ENUM.BOTTOM) {
phi = Math.acos(cosphi);
lp.phi = phi - HALF_PI;
if (area.value === AREA_ENUM.AREA_0) {
lp.lam = -theta + HALF_PI;
} else if (area.value === AREA_ENUM.AREA_1) {
lp.lam = -theta;
} else if (area.value === AREA_ENUM.AREA_2) {
lp.lam = -theta - HALF_PI;
} else {
lp.lam = theta < 0 ? -theta - SPI : -theta + SPI;
}
} else {
var q2, r2, s2;
q2 = cosphi;
t3 = q2 * q2;
if (t3 >= 1) {
s2 = 0;
} else {
s2 = Math.sqrt(1 - t3) * Math.sin(theta);
}
t3 += s2 * s2;
if (t3 >= 1) {
r2 = 0;
} else {
r2 = Math.sqrt(1 - t3);
}
if (area.value === AREA_ENUM.AREA_1) {
t3 = r2;
r2 = -s2;
s2 = t3;
} else if (area.value === AREA_ENUM.AREA_2) {
r2 = -r2;
s2 = -s2;
} else if (area.value === AREA_ENUM.AREA_3) {
t3 = r2;
r2 = s2;
s2 = -t3;
}
if (this.face === FACE_ENUM.RIGHT) {
t3 = q2;
q2 = -r2;
r2 = t3;
} else if (this.face === FACE_ENUM.BACK) {
q2 = -q2;
r2 = -r2;
} else if (this.face === FACE_ENUM.LEFT) {
t3 = q2;
q2 = r2;
r2 = -t3;
}
lp.phi = Math.acos(-s2) - HALF_PI;
lp.lam = Math.atan2(r2, q2);
if (this.face === FACE_ENUM.RIGHT) {
lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);
} else if (this.face === FACE_ENUM.BACK) {
lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);
} else if (this.face === FACE_ENUM.LEFT) {
lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);
}
}
if (this.es !== 0) {
var invert_sign;
var tanphi, xa;
invert_sign = lp.phi < 0 ? 1 : 0;
tanphi = Math.tan(lp.phi);
xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);
lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));
if (invert_sign) {
lp.phi = -lp.phi;
}
}
lp.lam += this.long0;
p2.x = lp.lam;
p2.y = lp.phi;
return p2;
}
function qsc_fwd_equat_face_theta(phi, y2, x2, area) {
var theta;
if (phi < EPSLN) {
area.value = AREA_ENUM.AREA_0;
theta = 0;
} else {
theta = Math.atan2(y2, x2);
if (Math.abs(theta) <= FORTPI) {
area.value = AREA_ENUM.AREA_0;
} else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {
area.value = AREA_ENUM.AREA_1;
theta -= HALF_PI;
} else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {
area.value = AREA_ENUM.AREA_2;
theta = theta >= 0 ? theta - SPI : theta + SPI;
} else {
area.value = AREA_ENUM.AREA_3;
theta += HALF_PI;
}
}
return theta;
}
function qsc_shift_lon_origin(lon, offset) {
var slon = lon + offset;
if (slon < -SPI) {
slon += TWO_PI;
} else if (slon > +SPI) {
slon -= TWO_PI;
}
return slon;
}
var names$5 = ["Quadrilateralized Spherical Cube", "Quadrilateralized_Spherical_Cube", "qsc"];
const qsc = {
init: init$5,
forward: forward$5,
inverse: inverse$5,
names: names$5
};
var COEFS_X = [
[1, 22199e-21, -715515e-10, 31103e-10],
[0.9986, -482243e-9, -24897e-9, -13309e-10],
[0.9954, -83103e-8, -448605e-10, -986701e-12],
[0.99, -135364e-8, -59661e-9, 36777e-10],
[0.9822, -167442e-8, -449547e-11, -572411e-11],
[0.973, -214868e-8, -903571e-10, 18736e-12],
[0.96, -305085e-8, -900761e-10, 164917e-11],
[0.9427, -382792e-8, -653386e-10, -26154e-10],
[0.9216, -467746e-8, -10457e-8, 481243e-11],
[0.8962, -536223e-8, -323831e-10, -543432e-11],
[0.8679, -609363e-8, -113898e-9, 332484e-11],
[0.835, -698325e-8, -640253e-10, 934959e-12],
[0.7986, -755338e-8, -500009e-10, 935324e-12],
[0.7597, -798324e-8, -35971e-9, -227626e-11],
[0.7186, -851367e-8, -701149e-10, -86303e-10],
[0.6732, -986209e-8, -199569e-9, 191974e-10],
[0.6213, -0.010418, 883923e-10, 624051e-11],
[0.5722, -906601e-8, 182e-6, 624051e-11],
[0.5322, -677797e-8, 275608e-9, 624051e-11]
];
var COEFS_Y = [
[-520417e-23, 0.0124, 121431e-23, -845284e-16],
[0.062, 0.0124, -126793e-14, 422642e-15],
[0.124, 0.0124, 507171e-14, -160604e-14],
[0.186, 0.0123999, -190189e-13, 600152e-14],
[0.248, 0.0124002, 710039e-13, -224e-10],
[0.31, 0.0123992, -264997e-12, 835986e-13],
[0.372, 0.0124029, 988983e-12, -311994e-12],
[0.434, 0.0123893, -369093e-11, -435621e-12],
[0.4958, 0.0123198, -102252e-10, -345523e-12],
[0.5571, 0.0121916, -154081e-10, -582288e-12],
[0.6176, 0.0119938, -241424e-10, -525327e-12],
[0.6769, 0.011713, -320223e-10, -516405e-12],
[0.7346, 0.0113541, -397684e-10, -609052e-12],
[0.7903, 0.0109107, -489042e-10, -104739e-11],
[0.8435, 0.0103431, -64615e-9, -140374e-14],
[0.8936, 969686e-8, -64636e-9, -8547e-9],
[0.9394, 840947e-8, -192841e-9, -42106e-10],
[0.9761, 616527e-8, -256e-6, -42106e-10],
[1, 328947e-8, -319159e-9, -42106e-10]
];
var FXC = 0.8487;
var FYC = 1.3523;
var C1 = R2D / 5;
var RC1 = 1 / C1;
var NODES = 18;
var poly3_val = function(coefs, x2) {
return coefs[0] + x2 * (coefs[1] + x2 * (coefs[2] + x2 * coefs[3]));
};
var poly3_der = function(coefs, x2) {
return coefs[1] + x2 * (2 * coefs[2] + x2 * 3 * coefs[3]);
};
function newton_rapshon(f_df, start2, max_err, iters) {
var x2 = start2;
for (; iters; --iters) {
var upd = f_df(x2);
x2 -= upd;
if (Math.abs(upd) < max_err) {
break;
}
}
return x2;
}
function init$4() {
this.x0 = this.x0 || 0;
this.y0 = this.y0 || 0;
this.long0 = this.long0 || 0;
this.es = 0;
this.title = this.title || "Robinson";
}
function forward$4(ll) {
var lon = adjust_lon(ll.x - this.long0);
var dphi = Math.abs(ll.y);
var i2 = Math.floor(dphi * C1);
if (i2 < 0) {
i2 = 0;
} else if (i2 >= NODES) {
i2 = NODES - 1;
}
dphi = R2D * (dphi - RC1 * i2);
var xy = {
x: poly3_val(COEFS_X[i2], dphi) * lon,
y: poly3_val(COEFS_Y[i2], dphi)
};
if (ll.y < 0) {
xy.y = -xy.y;
}
xy.x = xy.x * this.a * FXC + this.x0;
xy.y = xy.y * this.a * FYC + this.y0;
return xy;
}
function inverse$4(xy) {
var ll = {
x: (xy.x - this.x0) / (this.a * FXC),
y: Math.abs(xy.y - this.y0) / (this.a * FYC)
};
if (ll.y >= 1) {
ll.x /= COEFS_X[NODES][0];
ll.y = xy.y < 0 ? -HALF_PI : HALF_PI;
} else {
var i2 = Math.floor(ll.y * NODES);
if (i2 < 0) {
i2 = 0;
} else if (i2 >= NODES) {
i2 = NODES - 1;
}
for (; ; ) {
if (COEFS_Y[i2][0] > ll.y) {
--i2;
} else if (COEFS_Y[i2 + 1][0] <= ll.y) {
++i2;
} else {
break;
}
}
var coefs = COEFS_Y[i2];
var t3 = 5 * (ll.y - coefs[0]) / (COEFS_Y[i2 + 1][0] - coefs[0]);
t3 = newton_rapshon(function(x2) {
return (poly3_val(coefs, x2) - ll.y) / poly3_der(coefs, x2);
}, t3, EPSLN, 100);
ll.x /= poly3_val(COEFS_X[i2], t3);
ll.y = (5 * i2 + t3) * D2R$1;
if (xy.y < 0) {
ll.y = -ll.y;
}
}
ll.x = adjust_lon(ll.x + this.long0);
return ll;
}
var names$4 = ["Robinson", "robin"];
const robin = {
init: init$4,
forward: forward$4,
inverse: inverse$4,
names: names$4
};
function init$3() {
this.name = "geocent";
}
function forward$3(p2) {
var point = geodeticToGeocentric(p2, this.es, this.a);
return point;
}
function inverse$3(p2) {
var point = geocentricToGeodetic(p2, this.es, this.a, this.b);
return point;
}
var names$3 = ["Geocentric", "geocentric", "geocent", "Geocent"];
const geocent = {
init: init$3,
forward: forward$3,
inverse: inverse$3,
names: names$3
};
var mode = {
N_POLE: 0,
S_POLE: 1,
EQUIT: 2,
OBLIQ: 3
};
var params = {
h: { def: 1e5, num: true },
// default is Karman line, no default in PROJ.7
azi: { def: 0, num: true, degrees: true },
// default is North
tilt: { def: 0, num: true, degrees: true },
// default is Nadir
long0: { def: 0, num: true },
// default is Greenwich, conversion to rad is automatic
lat0: { def: 0, num: true }
// default is Equator, conversion to rad is automatic
};
function init$2() {
Object.keys(params).forEach((function(p2) {
if (typeof this[p2] === "undefined") {
this[p2] = params[p2].def;
} else if (params[p2].num && isNaN(this[p2])) {
throw new Error("Invalid parameter value, must be numeric " + p2 + " = " + this[p2]);
} else if (params[p2].num) {
this[p2] = parseFloat(this[p2]);
}
if (params[p2].degrees) {
this[p2] = this[p2] * D2R$1;
}
}).bind(this));
if (Math.abs(Math.abs(this.lat0) - HALF_PI) < EPSLN) {
this.mode = this.lat0 < 0 ? mode.S_POLE : mode.N_POLE;
} else if (Math.abs(this.lat0) < EPSLN) {
this.mode = mode.EQUIT;
} else {
this.mode = mode.OBLIQ;
this.sinph0 = Math.sin(this.lat0);
this.cosph0 = Math.cos(this.lat0);
}
this.pn1 = this.h / this.a;
if (this.pn1 <= 0 || this.pn1 > 1e10) {
throw new Error("Invalid height");
}
this.p = 1 + this.pn1;
this.rp = 1 / this.p;
this.h1 = 1 / this.pn1;
this.pfact = (this.p + 1) * this.h1;
this.es = 0;
var omega = this.tilt;
var gamma = this.azi;
this.cg = Math.cos(gamma);
this.sg = Math.sin(gamma);
this.cw = Math.cos(omega);
this.sw = Math.sin(omega);
}
function forward$2(p2) {
p2.x -= this.long0;
var sinphi = Math.sin(p2.y);
var cosphi = Math.cos(p2.y);
var coslam = Math.cos(p2.x);
var x2, y2;
switch (this.mode) {
case mode.OBLIQ:
y2 = this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;
break;
case mode.EQUIT:
y2 = cosphi * coslam;
break;
case mode.S_POLE:
y2 = -sinphi;
break;
case mode.N_POLE:
y2 = sinphi;
break;
}
y2 = this.pn1 / (this.p - y2);
x2 = y2 * cosphi * Math.sin(p2.x);
switch (this.mode) {
case mode.OBLIQ:
y2 *= this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;
break;
case mode.EQUIT:
y2 *= sinphi;
break;
case mode.N_POLE:
y2 *= -(cosphi * coslam);
break;
case mode.S_POLE:
y2 *= cosphi * coslam;
break;
}
var yt2, ba;
yt2 = y2 * this.cg + x2 * this.sg;
ba = 1 / (yt2 * this.sw * this.h1 + this.cw);
x2 = (x2 * this.cg - y2 * this.sg) * this.cw * ba;
y2 = yt2 * ba;
p2.x = x2 * this.a;
p2.y = y2 * this.a;
return p2;
}
function inverse$2(p2) {
p2.x /= this.a;
p2.y /= this.a;
var r2 = { x: p2.x, y: p2.y };
var bm, bq, yt2;
yt2 = 1 / (this.pn1 - p2.y * this.sw);
bm = this.pn1 * p2.x * yt2;
bq = this.pn1 * p2.y * this.cw * yt2;
p2.x = bm * this.cg + bq * this.sg;
p2.y = bq * this.cg - bm * this.sg;
var rh = hypot(p2.x, p2.y);
if (Math.abs(rh) < EPSLN) {
r2.x = 0;
r2.y = p2.y;
} else {
var cosz, sinz;
sinz = 1 - rh * rh * this.pfact;
sinz = (this.p - Math.sqrt(sinz)) / (this.pn1 / rh + rh / this.pn1);
cosz = Math.sqrt(1 - sinz * sinz);
switch (this.mode) {
case mode.OBLIQ:
r2.y = Math.asin(cosz * this.sinph0 + p2.y * sinz * this.cosph0 / rh);
p2.y = (cosz - this.sinph0 * Math.sin(r2.y)) * rh;
p2.x *= sinz * this.cosph0;
break;
case mode.EQUIT:
r2.y = Math.asin(p2.y * sinz / rh);
p2.y = cosz * rh;
p2.x *= sinz;
break;
case mode.N_POLE:
r2.y = Math.asin(cosz);
p2.y = -p2.y;
break;
case mode.S_POLE:
r2.y = -Math.asin(cosz);
break;
}
r2.x = Math.atan2(p2.x, p2.y);
}
p2.x = r2.x + this.long0;
p2.y = r2.y;
return p2;
}
var names$2 = ["Tilted_Perspective", "tpers"];
const tpers = {
init: init$2,
forward: forward$2,
inverse: inverse$2,
names: names$2
};
function init$1() {
this.flip_axis = this.sweep === "x" ? 1 : 0;
this.h = Number(this.h);
this.radius_g_1 = this.h / this.a;
if (this.radius_g_1 <= 0 || this.radius_g_1 > 1e10) {
throw new Error();
}
this.radius_g = 1 + this.radius_g_1;
this.C = this.radius_g * this.radius_g - 1;
if (this.es !== 0) {
var one_es = 1 - this.es;
var rone_es = 1 / one_es;
this.radius_p = Math.sqrt(one_es);
this.radius_p2 = one_es;
this.radius_p_inv2 = rone_es;
this.shape = "ellipse";
} else {
this.radius_p = 1;
this.radius_p2 = 1;
this.radius_p_inv2 = 1;
this.shape = "sphere";
}
if (!this.title) {
this.title = "Geostationary Satellite View";
}
}
function forward$1(p2) {
var lon = p2.x;
var lat = p2.y;
var tmp, v_x, v_y, v_z;
lon = lon - this.long0;
if (this.shape === "ellipse") {
lat = Math.atan(this.radius_p2 * Math.tan(lat));
var r2 = this.radius_p / hypot(this.radius_p * Math.cos(lat), Math.sin(lat));
v_x = r2 * Math.cos(lon) * Math.cos(lat);
v_y = r2 * Math.sin(lon) * Math.cos(lat);
v_z = r2 * Math.sin(lat);
if ((this.radius_g - v_x) * v_x - v_y * v_y - v_z * v_z * this.radius_p_inv2 < 0) {
p2.x = Number.NaN;
p2.y = Number.NaN;
return p2;
}
tmp = this.radius_g - v_x;
if (this.flip_axis) {
p2.x = this.radius_g_1 * Math.atan(v_y / hypot(v_z, tmp));
p2.y = this.radius_g_1 * Math.atan(v_z / tmp);
} else {
p2.x = this.radius_g_1 * Math.atan(v_y / tmp);
p2.y = this.radius_g_1 * Math.atan(v_z / hypot(v_y, tmp));
}
} else if (this.shape === "sphere") {
tmp = Math.cos(lat);
v_x = Math.cos(lon) * tmp;
v_y = Math.sin(lon) * tmp;
v_z = Math.sin(lat);
tmp = this.radius_g - v_x;
if (this.flip_axis) {
p2.x = this.radius_g_1 * Math.atan(v_y / hypot(v_z, tmp));
p2.y = this.radius_g_1 * Math.atan(v_z / tmp);
} else {
p2.x = this.radius_g_1 * Math.atan(v_y / tmp);
p2.y = this.radius_g_1 * Math.atan(v_z / hypot(v_y, tmp));
}
}
p2.x = p2.x * this.a;
p2.y = p2.y * this.a;
return p2;
}
function inverse$1(p2) {
var v_x = -1;
var v_y = 0;
var v_z = 0;
var a2, b2, det, k2;
p2.x = p2.x / this.a;
p2.y = p2.y / this.a;
if (this.shape === "ellipse") {
if (this.flip_axis) {
v_z = Math.tan(p2.y / this.radius_g_1);
v_y = Math.tan(p2.x / this.radius_g_1) * hypot(1, v_z);
} else {
v_y = Math.tan(p2.x / this.radius_g_1);
v_z = Math.tan(p2.y / this.radius_g_1) * hypot(1, v_y);
}
var v_zp = v_z / this.radius_p;
a2 = v_y * v_y + v_zp * v_zp + v_x * v_x;
b2 = 2 * this.radius_g * v_x;
det = b2 * b2 - 4 * a2 * this.C;
if (det < 0) {
p2.x = Number.NaN;
p2.y = Number.NaN;
return p2;
}
k2 = (-b2 - Math.sqrt(det)) / (2 * a2);
v_x = this.radius_g + k2 * v_x;
v_y *= k2;
v_z *= k2;
p2.x = Math.atan2(v_y, v_x);
p2.y = Math.atan(v_z * Math.cos(p2.x) / v_x);
p2.y = Math.atan(this.radius_p_inv2 * Math.tan(p2.y));
} else if (this.shape === "sphere") {
if (this.flip_axis) {
v_z = Math.tan(p2.y / this.radius_g_1);
v_y = Math.tan(p2.x / this.radius_g_1) * Math.sqrt(1 + v_z * v_z);
} else {
v_y = Math.tan(p2.x / this.radius_g_1);
v_z = Math.tan(p2.y / this.radius_g_1) * Math.sqrt(1 + v_y * v_y);
}
a2 = v_y * v_y + v_z * v_z + v_x * v_x;
b2 = 2 * this.radius_g * v_x;
det = b2 * b2 - 4 * a2 * this.C;
if (det < 0) {
p2.x = Number.NaN;
p2.y = Number.NaN;
return p2;
}
k2 = (-b2 - Math.sqrt(det)) / (2 * a2);
v_x = this.radius_g + k2 * v_x;
v_y *= k2;
v_z *= k2;
p2.x = Math.atan2(v_y, v_x);
p2.y = Math.atan(v_z * Math.cos(p2.x) / v_x);
}
p2.x = p2.x + this.long0;
return p2;
}
var names$1 = ["Geostationary Satellite View", "Geostationary_Satellite", "geos"];
const geos = {
init: init$1,
forward: forward$1,
inverse: inverse$1,
names: names$1
};
var A1 = 1.340264, A2 = -0.081106, A3 = 893e-6, A4 = 3796e-6, M$1 = Math.sqrt(3) / 2;
function init() {
this.es = 0;
this.long0 = this.long0 !== void 0 ? this.long0 : 0;
}
function forward(p2) {
var lam = adjust_lon(p2.x - this.long0);
var phi = p2.y;
var paramLat = Math.asin(M$1 * Math.sin(phi)), paramLatSq = paramLat * paramLat, paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;
p2.x = lam * Math.cos(paramLat) / (M$1 * (A1 + 3 * A2 * paramLatSq + paramLatPow6 * (7 * A3 + 9 * A4 * paramLatSq)));
p2.y = paramLat * (A1 + A2 * paramLatSq + paramLatPow6 * (A3 + A4 * paramLatSq));
p2.x = this.a * p2.x + this.x0;
p2.y = this.a * p2.y + this.y0;
return p2;
}
function inverse(p2) {
p2.x = (p2.x - this.x0) / this.a;
p2.y = (p2.y - this.y0) / this.a;
var EPS = 1e-9, NITER = 12, paramLat = p2.y, paramLatSq, paramLatPow6, fy, fpy, dlat, i2;
for (i2 = 0; i2 < NITER; ++i2) {
paramLatSq = paramLat * paramLat;
paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;
fy = paramLat * (A1 + A2 * paramLatSq + paramLatPow6 * (A3 + A4 * paramLatSq)) - p2.y;
fpy = A1 + 3 * A2 * paramLatSq + paramLatPow6 * (7 * A3 + 9 * A4 * paramLatSq);
paramLat -= dlat = fy / fpy;
if (Math.abs(dlat) < EPS) {
break;
}
}
paramLatSq = paramLat * paramLat;
paramLatPow6 = paramLatSq * paramLatSq * paramLatSq;
p2.x = M$1 * p2.x * (A1 + 3 * A2 * paramLatSq + paramLatPow6 * (7 * A3 + 9 * A4 * paramLatSq)) / Math.cos(paramLat);
p2.y = Math.asin(Math.sin(paramLat) / M$1);
p2.x = adjust_lon(p2.x + this.long0);
return p2;
}
var names = ["eqearth", "Equal Earth", "Equal_Earth"];
const eqearth = {
init,
forward,
inverse,
names
};
function includedProjections(proj42) {
proj42.Proj.projections.add(tmerc);
proj42.Proj.projections.add(etmerc);
proj42.Proj.projections.add(utm);
proj42.Proj.projections.add(sterea);
proj42.Proj.projections.add(stere);
proj42.Proj.projections.add(somerc);
proj42.Proj.projections.add(omerc);
proj42.Proj.projections.add(lcc);
proj42.Proj.projections.add(krovak);
proj42.Proj.projections.add(cass);
proj42.Proj.projections.add(laea);
proj42.Proj.projections.add(aea);
proj42.Proj.projections.add(gnom);
proj42.Proj.projections.add(cea);
proj42.Proj.projections.add(eqc);
proj42.Proj.projections.add(poly);
proj42.Proj.projections.add(nzmg);
proj42.Proj.projections.add(mill);
proj42.Proj.projections.add(sinu);
proj42.Proj.projections.add(moll);
proj42.Proj.projections.add(eqdc);
proj42.Proj.projections.add(vandg);
proj42.Proj.projections.add(aeqd);
proj42.Proj.projections.add(ortho);
proj42.Proj.projections.add(qsc);
proj42.Proj.projections.add(robin);
proj42.Proj.projections.add(geocent);
proj42.Proj.projections.add(tpers);
proj42.Proj.projections.add(geos);
proj42.Proj.projections.add(eqearth);
}
proj4.defaultDatum = "WGS84";
proj4.Proj = Projection;
proj4.WGS84 = new proj4.Proj("WGS84");
proj4.Point = Point$1;
proj4.toPoint = common;
proj4.defs = defs;
proj4.nadgrid = nadgrid;
proj4.transform = transform$2;
proj4.mgrs = mgrs;
proj4.version = "__VERSION__";
includedProjections(proj4);
const _sfc_main$1h = /* @__PURE__ */ defineComponent({
__name: "OlProjectionRegister",
props: {
projectionName: {},
projectionDef: {},
projectionExtent: {}
},
setup(__props, { expose: __expose }) {
const props = __props;
const { projectionName, projectionDef, projectionExtent } = toRefs(props);
proj4.defs(projectionName.value, projectionDef.value);
register(proj4);
const projection = new Projection$1({
code: projectionName.value,
extent: projectionExtent.value
});
__expose({
projection
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
function projectionFromProperties(projection) {
if (!projection) return;
if (typeof projection === "string") return projection;
if (projection instanceof Projection$2) return projection;
return new Projection$2(projection);
}
const _sfc_main$1g = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlView",
props: {
center: {},
constrainRotation: { type: [Number, Boolean] },
enableRotation: { type: Boolean, default: true },
extent: {},
constrainOnlyCenter: { type: Boolean },
smoothExtentConstraint: { type: Boolean, default: true },
maxResolution: {},
minResolution: {},
maxZoom: {},
minZoom: {},
multiWorld: { type: Boolean },
constrainResolution: { type: Boolean },
smoothResolutionConstraint: { type: Boolean, default: true },
showFullExtent: { type: Boolean },
projection: {},
resolution: {},
resolutions: {},
rotation: {},
zoom: {},
zoomFactor: {},
padding: {}
},
emits: ["change", "error", "propertychange", "change:center", "change:resolution", "change:rotation"],
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const properties = usePropsAsObjectProperties(props);
const createProp = () => ({
...properties,
projection: projectionFromProperties(properties.projection)
});
const view = new View(createProp());
useOpenLayersEvents(view, [
"change:center",
"change:resolution",
"change:rotation"
]);
onMounted(() => {
map == null ? void 0 : map.setView(view);
});
watch(properties, () => {
const pr = createProp();
view.setProperties(pr);
view.applyOptions_(pr);
});
const adjustCenter = (deltaCoordinates) => view.adjustCenter(deltaCoordinates);
const adjustResolution = (ratio, optAnchor) => view.adjustResolution(ratio, optAnchor);
const adjustRotation = (delta, optAnchor) => view.adjustRotation(delta, optAnchor);
const adjustZoom = (delta, optAnchor) => view.adjustZoom(delta, optAnchor);
const animate = (...args) => view.animate(...args);
const beginInteraction = () => view.beginInteraction();
const calculateExtent = (optSize) => view.calculateExtent(optSize);
const cancelAnimations = () => view.cancelAnimations();
const centerOn = (coordinate, size, position2) => view.centerOn(coordinate, size, position2);
const changed = () => view.changed();
const dispatchEvent2 = (event) => view.dispatchEvent(event);
const endInteraction = (optDuration, optResolutionDirection, optAnchor) => view.endInteraction(optDuration, optResolutionDirection, optAnchor);
const fit = (geometryOrExtent, options) => view.fit(geometryOrExtent, options);
const get2 = (key) => view.get(key);
const getAnimating = () => view.getAnimating();
const getCenter = () => view.getCenter();
const getInteracting = () => view.getInteracting();
const getKeys = () => view.getKeys();
const getMaxResolution = () => view.getMaxResolution();
const getMaxZoom = () => view.getMaxZoom();
const getMinResolution = () => view.getMinResolution();
const getMinZoom = () => view.getMinZoom();
const getProjection = () => view.getProjection();
const getProperties = () => view.getProperties();
const getResolution = () => view.getResolution();
const getResolutionForExtent = (extent2, size) => view.getResolutionForExtent(extent2, size);
const getResolutionForZoom = (zoom) => view.getResolutionForZoom(zoom);
const getResolutions = () => view.getResolutions();
const getRevision = () => view.getRevision();
const getRotation = () => view.getRotation();
const getZoom = () => view.getZoom();
const getZoomForResolution = (resolution) => view.getZoomForResolution(resolution);
const setCenter = (center) => view.setCenter(center);
const setConstrainResolution = (enabled) => view.setConstrainResolution(enabled);
const setMaxZoom = (zoom) => view.setMaxZoom(zoom);
const setMinZoom = (zoom) => view.setMinZoom(zoom);
const setResolution = (resolution) => view.setResolution(resolution);
const setRotation = (rotation) => view.setRotation(rotation);
const setZoom = (zoom) => view.setZoom(zoom);
__expose({
view,
adjustCenter,
adjustResolution,
adjustRotation,
adjustZoom,
animate,
beginInteraction,
calculateExtent,
cancelAnimations,
centerOn,
changed,
dispatchEvent: dispatchEvent2,
endInteraction,
fit,
get: get2,
getAnimating,
getCenter,
getInteracting,
getKeys,
getMaxResolution,
getMaxZoom,
getMinResolution,
getMinZoom,
getProjection,
getProperties,
getResolution,
getResolutionForExtent,
getResolutionForZoom,
getResolutions,
getRevision,
getRotation,
getZoom,
getZoomForResolution,
setCenter,
setConstrainResolution,
setMaxZoom,
setMinZoom,
setResolution,
setRotation,
setZoom
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
function install$9(app, options) {
app.component("OlFeature", _sfc_main$1l);
app.component("OlGeolocation", _sfc_main$1k);
app.component("OlMap", _sfc_main$1j);
app.component("OlOverlay", _sfc_main$1i);
app.component("OlProjectionRegister", _sfc_main$1h);
app.component("OlView", _sfc_main$1g);
if (options) {
app.provide("ol-options", options);
}
}
const index$8 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
OlFeature: _sfc_main$1l,
OlGeolocation: _sfc_main$1k,
OlMap: _sfc_main$1j,
OlOverlay: _sfc_main$1i,
OlProjectionRegister: _sfc_main$1h,
OlView: _sfc_main$1g,
default: install$9,
install: install$9
}, Symbol.toStringTag, { value: "Module" }));
const layersCommonDefaultProps = {
className: "ol-layer",
opacity: 1,
visible: true,
properties: () => ({}),
displayInLayerSwitcher: true
};
function useDefaults$1(overrides) {
return { ...layersCommonDefaultProps, ...overrides };
}
function useLayer(LayerClass, props, eventsToHandle = []) {
const properties = usePropsAsObjectProperties(props);
const layer = shallowRef(new LayerClass(properties));
useOpenLayersEvents(layer, [...LAYER_EVENTS, ...eventsToHandle]);
const map = inject("map");
const layerGroup = inject("layerGroup", null);
const overviewMap = inject(
"overviewMap",
null
);
const layerAdded = ref(false);
function updateLayers() {
var _a2;
for (const key in properties) {
const keyInObj = key;
if (properties[keyInObj] !== void 0) {
layer.value.set(key, properties[keyInObj]);
}
}
layer.value.setOpacity(properties.opacity);
layer.value.setVisible(properties.visible);
if (!layerAdded.value) {
if (layerGroup) {
const layerCollection = layerGroup.getLayers();
layerCollection.push(layer.value);
layerGroup.setLayers(layerCollection);
} else if (overviewMap == null ? void 0 : overviewMap.value) {
(_a2 = overviewMap.value) == null ? void 0 : _a2.getOverviewMap().addLayer(layer.value);
} else {
map == null ? void 0 : map.addLayer(layer.value);
}
layerAdded.value = true;
}
}
function removeLayer() {
var _a2, _b2;
if (layerGroup) {
layerGroup.getLayers().remove(layer.value);
} else if (overviewMap == null ? void 0 : overviewMap.value) {
(_a2 = overviewMap.value) == null ? void 0 : _a2.getOverviewMap().removeLayer(layer.value);
(_b2 = overviewMap.value) == null ? void 0 : _b2.changed();
} else {
map == null ? void 0 : map.removeLayer(layer.value);
}
layerAdded.value = false;
}
onUnmounted(removeLayer);
watch(() => properties, updateLayers, { deep: true, immediate: true });
if (overviewMap == null ? void 0 : overviewMap.value) {
watch(overviewMap, () => {
removeLayer();
updateLayers();
});
}
return {
layer,
map
};
}
const _sfc_main$1f = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlAnimatedClusterlayer",
props: /* @__PURE__ */ mergeDefaults({
distance: {},
animationDuration: {},
easingFunction: { type: Function },
animationMethod: { type: Function },
className: {},
opacity: {},
visible: { type: Boolean },
extent: {},
zIndex: {},
minResolution: {},
maxResolution: {},
minZoom: {},
maxZoom: {},
renderOrder: { type: Function },
renderBuffer: {},
source: {},
map: {},
declutter: { type: [String, Number, Boolean] },
style: { type: [Object, Array, Function, null] },
background: { type: [String, Function] },
updateWhileAnimating: { type: Boolean },
updateWhileInteracting: { type: Boolean },
properties: {},
openInLayerSwitcher: { type: Boolean },
title: {},
name: {},
allwaysOnTop: { type: Boolean },
baseLayer: { type: Boolean },
displayInLayerSwitcher: { type: Boolean }
}, useDefaults$1()),
emits: ["sourceready", "change", "error", "propertychange", "change:extent", "change:maxResolution", "change:maxZoom", "change:minResolution", "change:minZoom", "change:opacity", "change:source", "change:visible", "change:zIndex", "postrender", "prerender", "addfeature", "changefeature", "clear", "featuresloadend", "featuresloaderror", "featuresloadstart", "removefeature"],
setup(__props, { expose: __expose }) {
const props = __props;
const clusterSource = shallowRef(
new Cluster({
distance: props.distance,
geometryFunction: (feature) => feature.getGeometry()
})
);
const { layer, map } = useLayer(
AnimatedCluster,
{
...props,
source: clusterSource.value
},
VECTOR_SOURCE_EVENTS
);
watch(
() => props.distance,
(newValue) => {
clusterSource.value.setDistance(newValue);
}
);
provide("vectorLayer", clusterSource);
provide("stylable", layer);
__expose({
vectorLayer: layer,
map
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$1e = /* @__PURE__ */ defineComponent({
__name: "OlHeatmapLayer",
props: /* @__PURE__ */ mergeDefaults({
className: {},
opacity: {},
visible: { type: Boolean },
extent: {},
zIndex: {},
minResolution: {},
maxResolution: {},
minZoom: {},
maxZoom: {},
source: {},
map: {},
render: { type: Function },
properties: {},
gradient: {},
radius: {},
blur: {},
weight: { type: [String, Function] },
openInLayerSwitcher: { type: Boolean },
title: {},
name: {},
allwaysOnTop: { type: Boolean },
baseLayer: { type: Boolean },
displayInLayerSwitcher: { type: Boolean }
}, useDefaults$1()),
emits: ["sourceready", "change", "error", "propertychange", "change:extent", "change:maxResolution", "change:maxZoom", "change:minResolution", "change:minZoom", "change:opacity", "change:source", "change:visible", "change:zIndex", "postrender", "prerender", "change:blur", "change:gradient", "change:radius"],
setup(__props, { expose: __expose }) {
const props = __props;
const { layer } = useLayer(HeatmapLayer, props, [
"change:blur",
"change:extent",
"change:gradient",
"change:radius"
]);
provide("heatmapLayer", layer);
provide("stylable", layer);
__expose({
heatmapLayer: layer
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$1d = /* @__PURE__ */ defineComponent({
__name: "OlImageLayer",
props: /* @__PURE__ */ mergeDefaults({
className: {},
opacity: {},
visible: { type: Boolean },
extent: {},
zIndex: {},
minResolution: {},
maxResolution: {},
minZoom: {},
maxZoom: {},
map: {},
source: {},
properties: {},
openInLayerSwitcher: { type: Boolean },
title: {},
name: {},
allwaysOnTop: { type: Boolean },
baseLayer: { type: Boolean },
displayInLayerSwitcher: { type: Boolean }
}, useDefaults$1()),
emits: ["sourceready", "change", "error", "propertychange", "change:extent", "change:maxResolution", "change:maxZoom", "change:minResolution", "change:minZoom", "change:opacity", "change:source", "change:visible", "change:zIndex", "postrender", "prerender"],
setup(__props, { expose: __expose }) {
const props = __props;
const { layer } = useLayer(ImageLayer, props);
provide("imageLayer", layer);
__expose({
imageLayer: layer
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$1c = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlLayerGroup",
props: {
opacity: { default: 1 },
visible: { type: Boolean, default: true },
extent: {},
zIndex: {},
minResolution: {},
maxResolution: {},
minZoom: {},
maxZoom: {},
layers: {},
properties: { default: () => ({}) },
openInLayerSwitcher: { type: Boolean },
title: {},
name: {},
allwaysOnTop: { type: Boolean },
baseLayer: { type: Boolean },
displayInLayerSwitcher: { type: Boolean, default: true }
},
emits: ["change", "error", "propertychange", "change:extent", "change:maxResolution", "change:maxZoom", "change:minResolution", "change:minZoom", "change:opacity", "change:source", "change:visible", "change:zIndex", "postrender", "prerender", "change:layers"],
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const properties = usePropsAsObjectProperties(props);
const layerGroup = shallowRef(new LayerGroup(properties));
useOpenLayersEvents(layerGroup, [
"change:extent",
"change:layers",
"change:maxResolution",
"change:maxZoom",
"change:minResolution",
"change:minZoom",
"change:opacity",
"change:visible",
"change:zIndex"
]);
const parentLayerGroup = inject("layerGroup", null);
watch(
() => properties,
(newValue) => {
for (const key in newValue) {
const keyInObj = key;
if (newValue[keyInObj] !== void 0) {
layerGroup.value.set(key, newValue[keyInObj]);
}
}
},
{ deep: true }
);
onMounted(() => {
map == null ? void 0 : map.addLayer(layerGroup.value);
if (parentLayerGroup) {
const layerCollection = parentLayerGroup.getLayers();
layerCollection.push(layerGroup.value);
parentLayerGroup.setLayers(layerCollection);
}
});
onUnmounted(() => {
map == null ? void 0 : map.removeLayer(layerGroup.value);
});
provide("layerGroup", layerGroup.value);
__expose({
layerGroup: layerGroup.value
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$1b = /* @__PURE__ */ defineComponent({
__name: "OlTileLayer",
props: /* @__PURE__ */ mergeDefaults({
className: {},
opacity: {},
visible: { type: Boolean },
extent: {},
zIndex: {},
minResolution: {},
maxResolution: {},
minZoom: {},
maxZoom: {},
preload: {},
source: {},
map: {},
useInterimTilesOnError: { type: Boolean },
properties: {},
cacheSize: {},
openInLayerSwitcher: { type: Boolean },
title: {},
name: {},
allwaysOnTop: { type: Boolean },
baseLayer: { type: Boolean },
displayInLayerSwitcher: { type: Boolean }
}, useDefaults$1({
preload: 1
})),
emits: ["sourceready", "change", "error", "propertychange", "change:extent", "change:maxResolution", "change:maxZoom", "change:minResolution", "change:minZoom", "change:opacity", "change:source", "change:visible", "change:zIndex", "postrender", "prerender", "change:useInterimTilesOnError", "change:preload"],
setup(__props, { expose: __expose }) {
const props = __props;
const { layer } = useLayer(TileLayer, toRefs(props), [
"change:useInterimTilesOnError",
"change:preload"
]);
provide("tileLayer", layer);
__expose({
tileLayer: layer
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$1a = /* @__PURE__ */ defineComponent({
__name: "OlVectorLayer",
props: /* @__PURE__ */ mergeDefaults({
className: {},
opacity: {},
visible: { type: Boolean },
extent: {},
zIndex: {},
minResolution: {},
maxResolution: {},
minZoom: {},
maxZoom: {},
renderOrder: { type: Function },
renderBuffer: {},
source: {},
map: {},
declutter: { type: [String, Number, Boolean] },
style: { type: [Object, Array, Function, null] },
background: { type: [String, Function] },
updateWhileAnimating: { type: Boolean },
updateWhileInteracting: { type: Boolean },
properties: {},
openInLayerSwitcher: { type: Boolean },
title: {},
name: {},
allwaysOnTop: { type: Boolean },
baseLayer: { type: Boolean },
displayInLayerSwitcher: { type: Boolean }
}, useDefaults$1()),
emits: ["sourceready", "change", "error", "propertychange", "change:extent", "change:maxResolution", "change:maxZoom", "change:minResolution", "change:minZoom", "change:opacity", "change:source", "change:visible", "change:zIndex", "postrender", "prerender"],
setup(__props, { expose: __expose }) {
const props = __props;
const { layer } = useLayer(VectorLayer, props);
provide("vectorLayer", layer);
provide("stylable", layer);
__expose({
vectorLayer: layer
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$19 = /* @__PURE__ */ defineComponent({
__name: "OlVectorTileLayer",
props: /* @__PURE__ */ mergeDefaults({
className: {},
opacity: {},
visible: { type: Boolean },
extent: {},
zIndex: {},
minResolution: {},
maxResolution: {},
minZoom: {},
maxZoom: {},
renderOrder: { type: Function },
renderBuffer: {},
renderMode: {},
source: {},
map: {},
declutter: { type: [String, Number, Boolean] },
style: { type: [Object, Array, Function, null] },
background: { type: [String, Function] },
updateWhileAnimating: { type: Boolean },
updateWhileInteracting: { type: Boolean },
preload: {},
useInterimTilesOnError: { type: Boolean },
properties: {},
cacheSize: {},
openInLayerSwitcher: { type: Boolean },
title: {},
name: {},
allwaysOnTop: { type: Boolean },
baseLayer: { type: Boolean },
displayInLayerSwitcher: { type: Boolean }
}, useDefaults$1()),
emits: ["sourceready", "change", "error", "propertychange", "change:extent", "change:maxResolution", "change:maxZoom", "change:minResolution", "change:minZoom", "change:opacity", "change:source", "change:visible", "change:zIndex", "postrender", "prerender"],
setup(__props, { expose: __expose }) {
const props = __props;
const { layer } = useLayer(VectorTileLayer, props);
provide("vectorTileLayer", layer);
provide("stylable", layer);
__expose({
vectorTileLayer: layer
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$18 = /* @__PURE__ */ defineComponent({
__name: "OlVectorImageLayer",
props: /* @__PURE__ */ mergeDefaults({
className: {},
opacity: {},
visible: { type: Boolean },
extent: {},
zIndex: {},
minResolution: {},
maxResolution: {},
minZoom: {},
maxZoom: {},
renderOrder: { type: Function },
renderBuffer: {},
source: {},
map: {},
declutter: { type: [String, Number, Boolean] },
style: { type: [Object, Array, Function, null] },
background: { type: [String, Function] },
imageRatio: {},
properties: {},
openInLayerSwitcher: { type: Boolean },
title: {},
name: {},
allwaysOnTop: { type: Boolean },
baseLayer: { type: Boolean },
displayInLayerSwitcher: { type: Boolean }
}, useDefaults$1()),
emits: ["sourceready", "change", "error", "propertychange", "change:extent", "change:maxResolution", "change:maxZoom", "change:minResolution", "change:minZoom", "change:opacity", "change:source", "change:visible", "change:zIndex", "postrender", "prerender"],
setup(__props, { expose: __expose }) {
const props = __props;
const { layer } = useLayer(VectorImageLayer, props);
provide("vectorLayer", layer);
provide("stylable", layer);
__expose({
vectorImageLayer: layer
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$17 = /* @__PURE__ */ defineComponent({
__name: "OlWebglTileLayer",
props: /* @__PURE__ */ mergeDefaults({
style: {},
className: {},
opacity: {},
visible: { type: Boolean },
extent: {},
zIndex: {},
minResolution: {},
maxResolution: {},
minZoom: {},
maxZoom: {},
preload: {},
source: {},
sources: { type: [Array, Function] },
map: {},
useInterimTilesOnError: { type: Boolean },
cacheSize: {},
properties: {},
openInLayerSwitcher: { type: Boolean },
title: {},
name: {},
allwaysOnTop: { type: Boolean },
baseLayer: { type: Boolean },
displayInLayerSwitcher: { type: Boolean }
}, useDefaults$1()),
emits: ["sourceready", "change", "error", "propertychange", "change:extent", "change:maxResolution", "change:maxZoom", "change:minResolution", "change:minZoom", "change:opacity", "change:source", "change:visible", "change:zIndex", "postrender", "prerender", "change:useInterimTilesOnError", "change:preload"],
setup(__props, { expose: __expose }) {
const props = __props;
const { layer } = useLayer(TileLayer$1, props, [
"change:useInterimTilesOnError",
"change:preload"
]);
provide("tileLayer", layer);
__expose({
tileLayer: layer
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _WebGLVectorLayer = class _WebGLVectorLayer extends Layer {
constructor(opts) {
_WebGLVectorLayer.options = opts;
super(opts);
}
createRenderer() {
return new WebGLVectorLayerRenderer(this, {
className: this.getClassName(),
style: this.getProperties().style
});
}
};
__publicField(_WebGLVectorLayer, "options", {});
let WebGLVectorLayer = _WebGLVectorLayer;
const _sfc_main$16 = /* @__PURE__ */ defineComponent({
__name: "OlWebglVectorLayer",
props: {
className: {},
opacity: {},
visible: { type: Boolean },
extent: {},
zIndex: {},
minResolution: {},
maxResolution: {},
minZoom: {},
maxZoom: {},
source: {},
map: {},
render: {},
properties: {},
disableHitDetection: { type: Boolean, default: false },
styles: { default: () => ({
"shape-points": 1,
"shape-radius": 10,
"shape-opacity": 0.5,
"shape-fill-color": "blue"
}) },
openInLayerSwitcher: { type: Boolean },
title: {},
name: {},
allwaysOnTop: { type: Boolean },
baseLayer: { type: Boolean },
displayInLayerSwitcher: { type: Boolean }
},
emits: ["sourceready", "change", "error", "propertychange", "change:extent", "change:maxResolution", "change:maxZoom", "change:minResolution", "change:minZoom", "change:opacity", "change:source", "change:visible", "change:zIndex", "postrender", "prerender"],
setup(__props, { expose: __expose }) {
const props = __props;
const { layer } = useLayer(WebGLVectorLayer, props);
provide("webglVectorLayer", layer);
__expose({
webglVectorLayer: layer
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
function install$8(app, options) {
app.component("OlAnimatedClusterlayer", _sfc_main$1f);
app.component("OlHeatmapLayer", _sfc_main$1e);
app.component("OlImageLayer", _sfc_main$1d);
app.component("OlLayerGroup", _sfc_main$1c);
app.component("OlTileLayer", _sfc_main$1b);
app.component("OlVectorImageLayer", _sfc_main$18);
app.component("OlVectorLayer", _sfc_main$1a);
app.component("OlVectorTileLayer", _sfc_main$19);
app.component("OlWebglTileLayer", _sfc_main$17);
app.component("OlWebglVectorLayer", _sfc_main$16);
if (options) {
app.provide("ol-options", options);
}
}
const index$7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
OlAnimatedClusterlayer: _sfc_main$1f,
OlHeatmapLayer: _sfc_main$1e,
OlImageLayer: _sfc_main$1d,
OlLayerGroup: _sfc_main$1c,
OlTileLayer: _sfc_main$1b,
OlVectorImageLayer: _sfc_main$18,
OlVectorLayer: _sfc_main$1a,
OlVectorTileLayer: _sfc_main$19,
OlWebglTileLayer: _sfc_main$17,
OlWebglVectorLayer: _sfc_main$16,
default: install$8,
install: install$8,
layersCommonDefaultProps,
useLayerDefaults: useDefaults$1
}, Symbol.toStringTag, { value: "Module" }));
function useSource(SourceClass, layer, props, eventsToHandle = [], sourceUpdateActions) {
function getProperties() {
return usePropsAsObjectProperties({
...props,
...props.projection ? {
projection: projectionFromProperties(
props.projection
)
} : {}
});
}
const source = shallowRef(new SourceClass(getProperties()));
updateSource();
function updateSource() {
var _a2, _b2;
(_a2 = layer == null ? void 0 : layer.value) == null ? void 0 : _a2.setSource(null);
const properties = getProperties();
source.value.setProperties(properties);
for (const key in properties) {
const keyInObj = key;
if (properties[keyInObj] !== void 0) {
source.value.set(key, properties[keyInObj]);
}
}
if (sourceUpdateActions) {
sourceUpdateActions(source.value);
}
(_b2 = layer == null ? void 0 : layer.value) == null ? void 0 : _b2.setSource(source.value);
useOpenLayersEvents(source, [
...COMMON_EVENTS,
...getSourceEvents(),
...eventsToHandle
]);
return source;
}
function getSourceEvents() {
const src = source.value;
if (src instanceof VectorSource) {
return VECTOR_SOURCE_EVENTS;
} else if (src instanceof TileSource) {
return TILE_SOURCE_EVENTS;
} else if (src instanceof ImageSource) {
return IMAGE_SOURCE_EVENTS;
}
return [];
}
function removeSource() {
var _a2;
(_a2 = layer == null ? void 0 : layer.value) == null ? void 0 : _a2.setSource(null);
}
onUnmounted(removeSource);
watch(source, updateSource);
watch(() => layer, updateSource);
watch(() => props, updateSource, { deep: true });
return {
source,
updateSource,
removeSource
};
}
const _sfc_main$15 = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceBingmaps",
props: {
cacheSize: {},
hidpi: { type: Boolean },
culture: {},
imagerySet: {},
interpolate: { type: Boolean, default: true },
maxZoom: {},
reprojectionErrorThreshold: {},
tileLoadFunction: {},
wrapX: { type: Boolean, default: true },
transition: {},
zDirection: {},
placeholderTiles: { type: Boolean },
apiKey: {}
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("tileLayer");
const { source } = useSource(BingMaps, layer, {
...props,
key: props.apiKey
});
__expose({
layer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$14 = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceCluster",
props: {
attributions: {},
distance: {},
minDistance: {},
geometryFunction: {},
createCluster: {},
source: {},
wrapX: { type: Boolean, default: true }
},
emits: ["addfeature", "changefeature", "clear", "featuresloadend", "featuresloaderror", "featuresloadstart", "removefeature", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("vectorLayer");
const { source } = useSource(Cluster$1, layer, props);
provide("vectorLayer", source);
__expose({
layer,
source
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$13 = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceImageStatic",
props: {
attributions: {},
crossOrigin: {},
imageExtent: {},
imageLoadFunction: {},
interpolate: { type: Boolean, default: true },
projection: {},
url: {}
},
emits: ["imageloadend", "imageloaderror", "imageloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("imageLayer");
const { source } = useSource(Static, layer, props);
__expose({
layer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$12 = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceImageWms",
props: {
attributions: {},
crossOrigin: {},
hidpi: { type: Boolean, default: true },
serverType: { default: "mapserver" },
imageLoadFunction: {},
interpolate: { type: Boolean, default: true },
params: {},
projection: {},
ratio: { default: 1 },
resolutions: {},
url: {},
layers: {},
styles: { default: "" },
time: {}
},
emits: ["imageloadend", "imageloaderror", "imageloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("imageLayer");
const { source } = useSource(ImageWMS, layer, {
...props,
params: {
...props.params,
LAYERS: props.layers,
STYLES: props.styles,
TIME: props.time
}
});
__expose({
layer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$11 = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceOsm",
props: {
attributions: {},
cacheSize: {},
crossOrigin: {},
interpolate: { type: Boolean, default: true },
maxZoom: {},
reprojectionErrorThreshold: {},
tileLoadFunction: {},
transition: {},
url: {},
wrapX: { type: Boolean, default: true },
zDirection: {}
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("tileLayer");
const { source } = useSource(OSM, layer, props);
__expose({
layer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$10 = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceStadiaMaps",
props: {
cacheSize: {},
interpolate: { type: Boolean, default: true },
layer: {},
minZoom: {},
maxZoom: {},
reprojectionErrorThreshold: {},
tileLoadFunction: {},
transition: {},
url: {},
wrapX: { type: Boolean, default: true },
zDirection: {},
apiKey: {},
retina: { type: Boolean }
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("tileLayer");
const { source } = useSource(StadiaMaps, layer, props);
__expose({
layer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _Tianditu = class _Tianditu extends WMTSSource {
constructor(opts) {
_Tianditu.layerLabelMap = {
vec: "cva",
ter: "cta",
img: "cia"
};
_Tianditu.layerZoomMap = {
vec: 18,
ter: 14,
img: 18
};
const options = { ...opts };
options.layerType = options.layerType || "vec";
options.layerType = options.isLabel ? _Tianditu.layerLabelMap[options.layerType] : options.layerType;
options.matrixSet = options.projection === "EPSG:4326" || options.projection === "EPSG:4490" ? "c" : "w";
if (!options.url && !options.urls) {
options.url = "https://t{0-7}.tianditu.gov.cn/{layer}_{proj}/wmts?";
}
if (options.tk) {
options.url = `${options.url}tk=${options.tk}`;
}
options.url = (options.url || "").replace("{layer}", options.layerType).replace("{proj}", options.matrixSet);
const tileGrid = options.tileGrid || _Tianditu.getTileGrid(options.projection);
const crossOrigin = options.crossOrigin !== void 0 ? options.crossOrigin : "anonymous";
const superOptions = {
version: options.version || "1.0.0",
format: options.format || "tiles",
dimensions: options.dimensions || {},
layer: options.layerType,
matrixSet: options.matrixSet,
tileGrid,
style: options.style || "default",
cacheSize: options.cacheSize,
crossOrigin,
maxZoom: _Tianditu.layerZoomMap[options.layerType],
reprojectionErrorThreshold: options.reprojectionErrorThreshold,
url: options.url,
urls: options.urls,
projection: options.projection || "EPSG:3857",
wrapX: options.wrapX
};
if (options.tileProxy) {
_Tianditu.tileProxy = options.tileProxy;
superOptions.tileLoadFunction = (imageTile, src) => {
imageTile.getImage().src = _Tianditu.tileProxy + encodeURIComponent(src);
};
}
super(superOptions);
}
static getTileGrid(projection) {
if (projection === "EPSG:4326" || projection === "EPSG:4490") {
return _Tianditu.default4326TileGrid();
}
return _Tianditu.default3857TileGrid();
}
static default4326TileGrid() {
const tdt_WGS84_resolutions = [];
const matrixIds = [];
for (let i2 = 1; i2 < 19; i2++) {
tdt_WGS84_resolutions.push(0.703125 * 2 / 2 ** i2);
matrixIds.push(i2.toString());
}
const tileGird = new TileGridWMTS({
extent: [-180, -90, 180, 90],
resolutions: tdt_WGS84_resolutions,
origin: [-180, 90],
matrixIds
});
return tileGird;
}
static default3857TileGrid() {
const tdt_Mercator_resolutions = [];
const matrixIds = [];
for (let i2 = 1; i2 < 19; i2++) {
tdt_Mercator_resolutions.push(78271.51696402031 * 2 / 2 ** i2);
matrixIds.push(i2.toString());
}
const tileGird = new TileGridWMTS({
extent: [
-200375083427892e-7,
-200375083427892e-7,
200375083427892e-7,
200375083427892e-7
],
resolutions: tdt_Mercator_resolutions,
matrixIds,
origin: [-200375083427892e-7, 200375083427892e-7]
});
return tileGird;
}
};
__publicField(_Tianditu, "layerLabelMap", {});
__publicField(_Tianditu, "layerZoomMap", {});
__publicField(_Tianditu, "tileProxy");
let Tianditu = _Tianditu;
const _sfc_main$$ = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceTianditu",
props: {
attributions: {},
attributionsCollapsible: { type: Boolean },
cacheSize: {},
crossOrigin: {},
interpolate: { type: Boolean },
tileGrid: {},
projection: { default: "EPSG:3857" },
reprojectionErrorThreshold: {},
requestEncoding: { default: "KVP" },
layer: {},
style: {},
tileClass: {},
tilePixelRatio: {},
format: {},
version: { default: "1.0.0" },
matrixSet: {},
dimensions: { default: () => ({}) },
url: {},
tileLoadFunction: { type: Function, default: (imageTile, src) => {
imageTile.getImage().src = src;
} },
urls: {},
wrapX: { type: Boolean, default: true },
transition: {},
zDirection: {},
tileProxy: {},
layerType: { default: "img" },
tk: {},
isLabel: { type: Boolean, default: false },
maxZoom: { default: 21 }
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("tileLayer");
const { source } = useSource(Tianditu, layer, props);
__expose({
layer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$_ = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceTileArcgisRest",
props: {
attributions: {},
cacheSize: {},
crossOrigin: {},
interpolate: { type: Boolean, default: true },
params: {},
hidpi: { type: Boolean, default: true },
tileGrid: {},
projection: {},
reprojectionErrorThreshold: {},
tileLoadFunction: {},
url: {},
wrapX: { type: Boolean, default: true },
transition: {},
urls: {},
zDirection: {},
tileSize: { default: () => [256, 256] }
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const tileLayer = inject("tileLayer");
const tileGrid = computed(() => {
return props.tileGrid || createXYZ({
tileSize: props.tileSize
});
});
const { source } = useSource(TileArcGISRest, tileLayer, {
...props,
tileGrid: tileGrid.value
});
__expose({
tileLayer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$Z = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceTileDebug",
props: {
projection: {},
tileGrid: {},
wrapX: { type: Boolean, default: true },
zDirection: {},
template: {}
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("tileLayer");
const { source } = useSource(TileDebug, layer, props);
__expose({
layer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$Y = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceGeoTiff",
props: {
sources: {},
sourceOptions: {},
convertToRGB: { type: [Boolean, String] },
normalize: { type: Boolean, default: true },
projection: {},
transition: {},
wrapX: { type: Boolean },
interpolate: { type: Boolean, default: true }
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("tileLayer");
const { source } = useSource(GeoTIFF, layer, props);
__expose({
layer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$X = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceTileJson",
props: {
attributions: {},
cacheSize: {},
crossOrigin: {},
interpolate: { type: Boolean, default: true },
jsonp: { type: Boolean },
reprojectionErrorThreshold: {},
tileJSON: {},
tileLoadFunction: {},
tileSize: {},
url: {},
wrapX: { type: Boolean, default: true },
transition: {},
zDirection: {}
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("tileLayer");
const { source } = useSource(TileJSON, layer, props);
__expose({
layer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$W = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceTileWms",
props: {
attributions: {},
attributionsCollapsible: { type: Boolean, default: true },
cacheSize: {},
crossOrigin: {},
interpolate: { type: Boolean, default: true },
params: {},
gutter: {},
hidpi: { type: Boolean, default: true },
projection: { default: "EPSG:3857" },
reprojectionErrorThreshold: {},
tileClass: {},
tileGrid: {},
serverType: {},
tileLoadFunction: {},
url: {},
urls: {},
wrapX: { type: Boolean, default: true },
transition: {},
zDirection: {},
layers: {},
styles: { default: "" }
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("tileLayer");
const { source } = useSource(TileWMS, layer, {
...props,
params: {
...props.params,
LAYERS: props.layers,
STYLES: props.styles
},
tileGrid: props.tileGrid
});
__expose({
layer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$V = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceVector",
props: {
attributions: {},
features: {},
format: {},
loader: {},
overlaps: { type: Boolean, default: true },
strategy: {},
url: {},
useSpatialIndex: { type: Boolean, default: true },
wrapX: { type: Boolean, default: true }
},
emits: ["addfeature", "changefeature", "clear", "featuresloadend", "featuresloaderror", "featuresloadstart", "removefeature", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const vectorLayer = inject(
"vectorLayer",
null
);
const heatmapLayer = inject("heatmapLayer", null);
const webglVectorLayer = inject(
"webglVectorLayer",
null
);
const layer = heatmapLayer || vectorLayer || webglVectorLayer;
const { source, updateSource } = useSource(VectorSource, layer, props);
watch(
() => props.features,
(updatedFeatures, oldFeatures) => {
if (updatedFeatures !== oldFeatures) {
source.value.clear();
if (updatedFeatures) {
const featureArray = updatedFeatures instanceof Collection ? updatedFeatures.getArray() : updatedFeatures;
source.value.addFeatures(featureArray);
}
}
updateSource();
},
{ deep: true }
);
watch(
() => props.url,
(updatedUrl, newUrl) => {
if (updatedUrl !== newUrl) {
source.value.clear();
if (updatedUrl) {
source.value.setUrl(updatedUrl);
source.value.refresh();
}
}
updateSource();
}
);
provide("vectorSource", source);
__expose({
layer,
source
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$U = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceVectorTile",
props: {
attributions: {},
attributionsCollapsible: { type: Boolean, default: true },
cacheSize: {},
extent: {},
format: {},
overlaps: { type: Boolean, default: true },
projection: {},
state: {},
tileClass: {},
maxZoom: {},
minZoom: {},
tileSize: {},
maxResolution: {},
tileGrid: {},
tileLoadFunction: {},
tileUrlFunction: {},
url: {},
transition: {},
urls: {},
wrapX: { type: Boolean, default: true },
zDirection: {}
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const vectorTileLayer = inject(
"vectorTileLayer",
null
);
const { source } = useSource(VectorTileSource, vectorTileLayer, props);
provide("vectorSource", source);
__expose({
vectorTileLayer,
source
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$T = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceXyz",
props: {
attributions: {},
attributionsCollapsible: { type: Boolean, default: true },
cacheSize: {},
crossOrigin: {},
interpolate: { type: Boolean, default: true },
projection: {},
reprojectionErrorThreshold: {},
maxZoom: {},
minZoom: {},
maxResolution: {},
tileGrid: {},
tileLoadFunction: {},
tilePixelRatio: {},
tileSize: {},
gutter: {},
tileUrlFunction: {},
url: {},
urls: {},
wrapX: { type: Boolean, default: true },
transition: {},
zDirection: {}
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const layer = inject("tileLayer");
const { source, updateSource } = useSource(XYZ, layer, props, [], (source2) => {
if (props.url) {
source2.setUrl(props.url);
}
});
watch(
() => props.url,
() => updateSource()
);
__expose({
layer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$S = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSourceWmts",
props: {
attributions: {},
attributionsCollapsible: { type: Boolean, default: true },
cacheSize: {},
crossOrigin: {},
interpolate: { type: Boolean, default: true },
projection: {},
reprojectionErrorThreshold: {},
requestEncoding: {},
layer: {},
tileClass: {},
tilePixelRatio: {},
format: {},
version: {},
matrixSet: {},
dimensions: {},
url: {},
tileLoadFunction: {},
urls: {},
wrapX: { type: Boolean },
transition: {},
zDirection: {},
tileGrid: {},
styles: {},
tileZoomLevel: { default: 30 },
tileMatrixPrefix: { default: "" }
},
emits: ["tileloadend", "tileloaderror", "tileloadstart", "change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const tileLayer = inject("tileLayer");
const extent2 = computed(() => {
var _a2;
return (_a2 = get$2(props.projection)) == null ? void 0 : _a2.getExtent();
});
const origin = computed(() => {
return extent2.value ? getTopLeft(extent2.value) : void 0;
});
const size = computed(() => {
return extent2.value ? getWidth(extent2.value) / 256 : 0;
});
const tileGrid = computed(() => {
if (props.tileGrid) {
return props.tileGrid;
}
const resolutions = [props.tileZoomLevel];
const matrixIds = [`${props.tileZoomLevel}`];
for (let z2 = 0; z2 < props.tileZoomLevel; ++z2) {
resolutions[z2] = size.value / Math.pow(2, z2);
matrixIds[z2] = props.tileMatrixPrefix + z2;
}
return new TileGridWMTS({
origin: origin.value,
resolutions,
matrixIds
});
});
const { source } = useSource(WMTSSource, tileLayer, {
...props,
style: props.styles,
tileGrid: tileGrid.value
});
__expose({
tileLayer,
source
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
function install$7(app, options) {
app.component("OlSourceBingmaps", _sfc_main$15);
app.component("OlSourceCluster", _sfc_main$14);
app.component("OlSourceImageStatic", _sfc_main$13);
app.component("OlSourceImageWms", _sfc_main$12);
app.component("OlSourceOsm", _sfc_main$11);
app.component("OlSourceStadiaMaps", _sfc_main$10);
app.component("OlSourceTianditu", _sfc_main$$);
app.component("OlSourceTileArcgisRest", _sfc_main$_);
app.component("OlSourceTileDebug", _sfc_main$Z);
app.component("OlSourceGeoTiff", _sfc_main$Y);
app.component("OlSourceTileJson", _sfc_main$X);
app.component("OlSourceTileWms", _sfc_main$W);
app.component("OlSourceVector", _sfc_main$V);
app.component("OlSourceVectorTile", _sfc_main$U);
app.component("OlSourceXyz", _sfc_main$T);
app.component("OlSourceWmts", _sfc_main$S);
if (options) {
app.provide("ol-options", options);
}
}
const index$6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
OlSourceBingmaps: _sfc_main$15,
OlSourceCluster: _sfc_main$14,
OlSourceGeoTiff: _sfc_main$Y,
OlSourceImageStatic: _sfc_main$13,
OlSourceImageWms: _sfc_main$12,
OlSourceOsm: _sfc_main$11,
OlSourceStadiaMaps: _sfc_main$10,
OlSourceTianditu: _sfc_main$$,
OlSourceTileArcgisRest: _sfc_main$_,
OlSourceTileDebug: _sfc_main$Z,
OlSourceTileJson: _sfc_main$X,
OlSourceTileWms: _sfc_main$W,
OlSourceVector: _sfc_main$V,
OlSourceVectorTile: _sfc_main$U,
OlSourceWmts: _sfc_main$S,
OlSourceXyz: _sfc_main$T,
default: install$7,
install: install$7
}, Symbol.toStringTag, { value: "Module" }));
function useControl(ControlType, properties, attrs, eventsToHandle = []) {
const map = inject("map");
const controlBar = inject(
"controlBar",
null
);
const parent = controlBar !== null ? controlBar == null ? void 0 : controlBar.value : map;
const control = computed(
() => new ControlType({ ...properties })
);
useOpenLayersEvents(control, eventsToHandle);
control.value.set("order", attrs.order === void 0 ? 0 : attrs.order);
watch(control, (newVal, oldVal) => {
if (parent) {
if (parent instanceof Map$1) {
parent.removeControl(oldVal);
parent.addControl(newVal);
} else if (parent instanceof Bar) {
if (parent == null ? void 0 : parent.controls_) {
const index2 = parent == null ? void 0 : parent.controls_.findIndex((a2) => a2 === control.value);
if (index2) {
parent == null ? void 0 : parent.controls_.splice(index2, 1);
}
}
parent.addControl(newVal);
}
map == null ? void 0 : map.changed();
}
});
onMounted(() => {
if (parent && (parent instanceof Map$1 || parent instanceof Bar)) {
parent.addControl(control.value);
}
if ((parent == null ? void 0 : parent.controls_) !== void 0) {
const sortedControls = [...parent.controls_];
sortedControls.sort(
(a2, b2) => a2.get("order") - b2.get("order")
);
parent.controls_ = [];
if (parent && (parent instanceof Map$1 || parent instanceof Bar)) {
sortedControls.forEach((c2) => {
parent.addControl(c2);
});
}
parent.changed();
}
map == null ? void 0 : map.changed();
});
onUnmounted(() => {
if (parent && parent instanceof Map$1) {
parent == null ? void 0 : parent.getControls().getArray().forEach((c2) => {
if (c2 instanceof ControlType) {
parent.removeControl(c2);
}
});
} else {
if (parent == null ? void 0 : parent.controls_) {
const index2 = parent == null ? void 0 : parent.controls_.findIndex((a2) => a2 === control.value);
if (index2) {
parent == null ? void 0 : parent.controls_.splice(index2, 1);
}
}
}
control.value.dispose();
map == null ? void 0 : map.changed();
});
return {
map,
control
};
}
const _sfc_main$R = /* @__PURE__ */ defineComponent({
__name: "OlAttributionControl",
props: {
className: {},
target: {},
collapsible: { type: Boolean },
collapsed: { type: Boolean, default: true },
tipLabel: {},
label: {},
expandClassName: {},
collapseLabel: {},
collapseClassName: {},
render: {}
},
emits: ["change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Attribution, properties, attrs);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$Q = /* @__PURE__ */ defineComponent({
__name: "OlButtonControl",
props: {
className: {},
title: {},
name: {},
html: {},
handleClick: { type: Function },
element: {},
render: { type: Function },
target: {}
},
emits: ["change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Button, properties, attrs);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$P = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlContextMenuControl",
props: {
width: { default: 150 },
scrollAt: {},
eventType: { default: "contextmenu" },
defaultItems: { type: Boolean, default: true },
items: { default: () => [] }
},
emits: ["change", "error", "propertychange", "beforeopen", "open", "close"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(ContextMenu, properties, attrs, [
"beforeopen",
"open",
"close"
]);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$O = /* @__PURE__ */ defineComponent({
__name: "OlControlBar",
props: {
className: {},
group: { type: Boolean, default: true },
toggleOne: { type: Boolean, default: true },
autoDeactivate: { type: Boolean },
controls: {},
element: {},
render: {},
target: {}
},
emits: ["change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Bar, properties, attrs);
provide("controlBar", control);
__expose({
control
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$N = /* @__PURE__ */ defineComponent({
__name: "OlFullscreenControl",
props: {
className: {},
label: {},
labelActive: {},
activeClassName: {},
inactiveClassName: {},
tipLabel: {},
keys: { type: Boolean },
target: {},
source: {}
},
emits: ["change", "error", "propertychange", "enterfullscreen", "leavefullscreen"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(FullScreen, properties, attrs, [
"enterfullscreen",
"leavefullscreen"
]);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$M = /* @__PURE__ */ defineComponent({
__name: "OlLayerswitcherControl",
props: {
displayInLayerSwitcher: {},
show_progress: { type: Boolean },
mouseover: { type: Boolean },
reordering: { type: Boolean, default: true },
trash: { type: Boolean },
oninfo: {},
extent: { type: Boolean },
onExtent: {},
drawDelay: {},
collapsed: { type: Boolean, default: true },
layerGroup: {},
noScroll: { type: Boolean },
onchangeCheck: {},
element: {},
render: {},
target: {}
},
emits: ["change", "error", "propertychange", "drawlist", "layer:visible", "layer:opacity", "toggle", "reorder-start", "reorder-end"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(LayerSwitcher, properties, attrs, [
"drawlist",
"layer:visible",
"layer:opacity",
"toggle",
"reorder-start",
"reorder-end"
]);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$L = /* @__PURE__ */ defineComponent({
__name: "OlLayerswitcherimageControl",
props: {
displayInLayerSwitcher: {},
show_progress: { type: Boolean },
mouseover: { type: Boolean },
reordering: { type: Boolean, default: true },
trash: { type: Boolean },
oninfo: {},
extent: { type: Boolean },
onExtent: {},
drawDelay: {},
collapsed: { type: Boolean, default: true },
layerGroup: {},
noScroll: { type: Boolean },
onchangeCheck: {},
element: {},
render: {},
target: {}
},
emits: ["change", "error", "propertychange", "drawlist", "layer:visible", "layer:opacity", "toggle", "reorder-start", "reorder-end"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(LayerSwitcherImage, properties, attrs, [
"drawlist",
"layer:visible",
"layer:opacity",
"toggle",
"reorder-start",
"reorder-end"
]);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$K = /* @__PURE__ */ defineComponent({
__name: "OlMousepositionControl",
props: {
className: {},
coordinateFormat: {},
projection: {},
render: {},
target: {},
placeholder: {},
wrapX: { type: Boolean, default: true }
},
emits: ["change", "error", "propertychange", "change:coordinateFormat", "change:projection"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(MousePosition, properties, attrs, [
"change:coordinateFormat",
"change:projection"
]);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$J = /* @__PURE__ */ defineComponent({
__name: "OlOverviewmapControl",
props: {
className: {},
collapsed: { type: Boolean, default: true },
collapseLabel: {},
collapsible: { type: Boolean, default: true },
label: {},
layers: {},
render: {},
rotateWithView: { type: Boolean },
target: {},
tipLabel: {},
view: {}
},
emits: ["change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(OverviewMap, properties, attrs);
provide("overviewMap", control);
__expose({
control
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
function getDefaultExportFromCjs(x2) {
return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
}
var FileSaver_min = { exports: {} };
(function(module, exports2) {
(function(a2, b2) {
b2();
})(commonjsGlobal, function() {
function b2(a3, b3) {
return "undefined" == typeof b3 ? b3 = { autoBom: false } : "object" != typeof b3 && (console.warn("Deprecated: Expected third argument to be a object"), b3 = { autoBom: !b3 }), b3.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a3.type) ? new Blob(["\uFEFF", a3], { type: a3.type }) : a3;
}
function c2(a3, b3, c3) {
var d3 = new XMLHttpRequest();
d3.open("GET", a3), d3.responseType = "blob", d3.onload = function() {
g2(d3.response, b3, c3);
}, d3.onerror = function() {
console.error("could not download file");
}, d3.send();
}
function d2(a3) {
var b3 = new XMLHttpRequest();
b3.open("HEAD", a3, false);
try {
b3.send();
} catch (a4) {
}
return 200 <= b3.status && 299 >= b3.status;
}
function e2(a3) {
try {
a3.dispatchEvent(new MouseEvent("click"));
} catch (c3) {
var b3 = document.createEvent("MouseEvents");
b3.initMouseEvent("click", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null), a3.dispatchEvent(b3);
}
}
var f2 = "object" == typeof window && window.window === window ? window : "object" == typeof self && self.self === self ? self : "object" == typeof commonjsGlobal && commonjsGlobal.global === commonjsGlobal ? commonjsGlobal : void 0, a2 = f2.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent), g2 = f2.saveAs || ("object" != typeof window || window !== f2 ? function() {
} : "download" in HTMLAnchorElement.prototype && !a2 ? function(b3, g3, h2) {
var i2 = f2.URL || f2.webkitURL, j2 = document.createElement("a");
g3 = g3 || b3.name || "download", j2.download = g3, j2.rel = "noopener", "string" == typeof b3 ? (j2.href = b3, j2.origin === location.origin ? e2(j2) : d2(j2.href) ? c2(b3, g3, h2) : e2(j2, j2.target = "_blank")) : (j2.href = i2.createObjectURL(b3), setTimeout(function() {
i2.revokeObjectURL(j2.href);
}, 4e4), setTimeout(function() {
e2(j2);
}, 0));
} : "msSaveOrOpenBlob" in navigator ? function(f3, g3, h2) {
if (g3 = g3 || f3.name || "download", "string" != typeof f3) navigator.msSaveOrOpenBlob(b2(f3, h2), g3);
else if (d2(f3)) c2(f3, g3, h2);
else {
var i2 = document.createElement("a");
i2.href = f3, i2.target = "_blank", setTimeout(function() {
e2(i2);
});
}
} : function(b3, d3, e3, g3) {
if (g3 = g3 || open("", "_blank"), g3 && (g3.document.title = g3.document.body.innerText = "downloading..."), "string" == typeof b3) return c2(b3, d3, e3);
var h2 = "application/octet-stream" === b3.type, i2 = /constructor/i.test(f2.HTMLElement) || f2.safari, j2 = /CriOS\/[\d]+/.test(navigator.userAgent);
if ((j2 || h2 && i2 || a2) && "undefined" != typeof FileReader) {
var k2 = new FileReader();
k2.onloadend = function() {
var a3 = k2.result;
a3 = j2 ? a3 : a3.replace(/^data:[^;]*;/, "data:attachment/file;"), g3 ? g3.location.href = a3 : location = a3, g3 = null;
}, k2.readAsDataURL(b3);
} else {
var l2 = f2.URL || f2.webkitURL, m2 = l2.createObjectURL(b3);
g3 ? g3.location = m2 : location.href = m2, g3 = null, setTimeout(function() {
l2.revokeObjectURL(m2);
}, 4e4);
}
});
f2.saveAs = g2.saveAs = g2, module.exports = g2;
});
})(FileSaver_min);
var FileSaver_minExports = FileSaver_min.exports;
function _typeof$2(o2) {
"@babel/helpers - typeof";
return _typeof$2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o3) {
return typeof o3;
} : function(o3) {
return o3 && "function" == typeof Symbol && o3.constructor === Symbol && o3 !== Symbol.prototype ? "symbol" : typeof o3;
}, _typeof$2(o2);
}
var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;
var fleb = new u8([
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
1,
2,
2,
2,
2,
3,
3,
3,
3,
4,
4,
4,
4,
5,
5,
5,
5,
0,
/* unused */
0,
0,
/* impossible */
0
]);
var fdeb = new u8([
0,
0,
0,
0,
1,
1,
2,
2,
3,
3,
4,
4,
5,
5,
6,
6,
7,
7,
8,
8,
9,
9,
10,
10,
11,
11,
12,
12,
13,
13,
/* unused */
0,
0
]);
var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
var freb = function(eb, start2) {
var b2 = new u16(31);
for (var i2 = 0; i2 < 31; ++i2) {
b2[i2] = start2 += 1 << eb[i2 - 1];
}
var r2 = new i32(b2[30]);
for (var i2 = 1; i2 < 30; ++i2) {
for (var j2 = b2[i2]; j2 < b2[i2 + 1]; ++j2) {
r2[j2] = j2 - b2[i2] << 5 | i2;
}
}
return { b: b2, r: r2 };
};
var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;
fl[28] = 258, revfl[258] = 28;
var _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;
var rev = new u16(32768);
for (var i$6 = 0; i$6 < 32768; ++i$6) {
var x$1 = (i$6 & 43690) >> 1 | (i$6 & 21845) << 1;
x$1 = (x$1 & 52428) >> 2 | (x$1 & 13107) << 2;
x$1 = (x$1 & 61680) >> 4 | (x$1 & 3855) << 4;
rev[i$6] = ((x$1 & 65280) >> 8 | (x$1 & 255) << 8) >> 1;
}
var hMap = function(cd, mb, r2) {
var s2 = cd.length;
var i2 = 0;
var l2 = new u16(mb);
for (; i2 < s2; ++i2) {
if (cd[i2])
++l2[cd[i2] - 1];
}
var le2 = new u16(mb);
for (i2 = 1; i2 < mb; ++i2) {
le2[i2] = le2[i2 - 1] + l2[i2 - 1] << 1;
}
var co;
if (r2) {
co = new u16(1 << mb);
var rvb = 15 - mb;
for (i2 = 0; i2 < s2; ++i2) {
if (cd[i2]) {
var sv = i2 << 4 | cd[i2];
var r_1 = mb - cd[i2];
var v2 = le2[cd[i2] - 1]++ << r_1;
for (var m2 = v2 | (1 << r_1) - 1; v2 <= m2; ++v2) {
co[rev[v2] >> rvb] = sv;
}
}
}
} else {
co = new u16(s2);
for (i2 = 0; i2 < s2; ++i2) {
if (cd[i2]) {
co[i2] = rev[le2[cd[i2] - 1]++] >> 15 - cd[i2];
}
}
}
return co;
};
var flt = new u8(288);
for (var i$6 = 0; i$6 < 144; ++i$6)
flt[i$6] = 8;
for (var i$6 = 144; i$6 < 256; ++i$6)
flt[i$6] = 9;
for (var i$6 = 256; i$6 < 280; ++i$6)
flt[i$6] = 7;
for (var i$6 = 280; i$6 < 288; ++i$6)
flt[i$6] = 8;
var fdt = new u8(32);
for (var i$6 = 0; i$6 < 32; ++i$6)
fdt[i$6] = 5;
var flm = /* @__PURE__ */ hMap(flt, 9, 0), flrm = /* @__PURE__ */ hMap(flt, 9, 1);
var fdm = /* @__PURE__ */ hMap(fdt, 5, 0), fdrm = /* @__PURE__ */ hMap(fdt, 5, 1);
var max$2 = function(a2) {
var m2 = a2[0];
for (var i2 = 1; i2 < a2.length; ++i2) {
if (a2[i2] > m2)
m2 = a2[i2];
}
return m2;
};
var bits = function(d2, p2, m2) {
var o2 = p2 / 8 | 0;
return (d2[o2] | d2[o2 + 1] << 8) >> (p2 & 7) & m2;
};
var bits16 = function(d2, p2) {
var o2 = p2 / 8 | 0;
return (d2[o2] | d2[o2 + 1] << 8 | d2[o2 + 2] << 16) >> (p2 & 7);
};
var shft = function(p2) {
return (p2 + 7) / 8 | 0;
};
var slc = function(v2, s2, e2) {
if (s2 == null || s2 < 0)
s2 = 0;
if (e2 == null || e2 > v2.length)
e2 = v2.length;
return new u8(v2.subarray(s2, e2));
};
var ec = [
"unexpected EOF",
"invalid block type",
"invalid length/literal",
"invalid distance",
"stream finished",
"no stream handler",
,
"no callback",
"invalid UTF-8 data",
"extra field too long",
"date not in range 1980-2099",
"filename too long",
"stream finishing",
"invalid zip data"
// determined by unknown compression method
];
var err = function(ind, msg, nt2) {
var e2 = new Error(msg || ec[ind]);
e2.code = ind;
if (Error.captureStackTrace)
Error.captureStackTrace(e2, err);
if (!nt2)
throw e2;
return e2;
};
var inflt = function(dat, st2, buf, dict) {
var sl = dat.length, dl = dict ? dict.length : 0;
if (!sl || st2.f && !st2.l)
return buf || new u8(0);
var noBuf = !buf;
var resize = noBuf || st2.i != 2;
var noSt = st2.i;
if (noBuf)
buf = new u8(sl * 3);
var cbuf = function(l3) {
var bl = buf.length;
if (l3 > bl) {
var nbuf = new u8(Math.max(bl * 2, l3));
nbuf.set(buf);
buf = nbuf;
}
};
var final = st2.f || 0, pos = st2.p || 0, bt2 = st2.b || 0, lm = st2.l, dm = st2.d, lbt = st2.m, dbt = st2.n;
var tbts = sl * 8;
do {
if (!lm) {
final = bits(dat, pos, 1);
var type = bits(dat, pos + 1, 3);
pos += 3;
if (!type) {
var s2 = shft(pos) + 4, l2 = dat[s2 - 4] | dat[s2 - 3] << 8, t3 = s2 + l2;
if (t3 > sl) {
if (noSt)
err(0);
break;
}
if (resize)
cbuf(bt2 + l2);
buf.set(dat.subarray(s2, t3), bt2);
st2.b = bt2 += l2, st2.p = pos = t3 * 8, st2.f = final;
continue;
} else if (type == 1)
lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
else if (type == 2) {
var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
var tl = hLit + bits(dat, pos + 5, 31) + 1;
pos += 14;
var ldt = new u8(tl);
var clt = new u8(19);
for (var i2 = 0; i2 < hcLen; ++i2) {
clt[clim[i2]] = bits(dat, pos + i2 * 3, 7);
}
pos += hcLen * 3;
var clb = max$2(clt), clbmsk = (1 << clb) - 1;
var clm = hMap(clt, clb, 1);
for (var i2 = 0; i2 < tl; ) {
var r2 = clm[bits(dat, pos, clbmsk)];
pos += r2 & 15;
var s2 = r2 >> 4;
if (s2 < 16) {
ldt[i2++] = s2;
} else {
var c2 = 0, n2 = 0;
if (s2 == 16)
n2 = 3 + bits(dat, pos, 3), pos += 2, c2 = ldt[i2 - 1];
else if (s2 == 17)
n2 = 3 + bits(dat, pos, 7), pos += 3;
else if (s2 == 18)
n2 = 11 + bits(dat, pos, 127), pos += 7;
while (n2--)
ldt[i2++] = c2;
}
}
var lt2 = ldt.subarray(0, hLit), dt2 = ldt.subarray(hLit);
lbt = max$2(lt2);
dbt = max$2(dt2);
lm = hMap(lt2, lbt, 1);
dm = hMap(dt2, dbt, 1);
} else
err(1);
if (pos > tbts) {
if (noSt)
err(0);
break;
}
}
if (resize)
cbuf(bt2 + 131072);
var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
var lpos = pos;
for (; ; lpos = pos) {
var c2 = lm[bits16(dat, pos) & lms], sym = c2 >> 4;
pos += c2 & 15;
if (pos > tbts) {
if (noSt)
err(0);
break;
}
if (!c2)
err(2);
if (sym < 256)
buf[bt2++] = sym;
else if (sym == 256) {
lpos = pos, lm = null;
break;
} else {
var add2 = sym - 254;
if (sym > 264) {
var i2 = sym - 257, b2 = fleb[i2];
add2 = bits(dat, pos, (1 << b2) - 1) + fl[i2];
pos += b2;
}
var d2 = dm[bits16(dat, pos) & dms], dsym = d2 >> 4;
if (!d2)
err(3);
pos += d2 & 15;
var dt2 = fd[dsym];
if (dsym > 3) {
var b2 = fdeb[dsym];
dt2 += bits16(dat, pos) & (1 << b2) - 1, pos += b2;
}
if (pos > tbts) {
if (noSt)
err(0);
break;
}
if (resize)
cbuf(bt2 + 131072);
var end = bt2 + add2;
if (bt2 < dt2) {
var shift = dl - dt2, dend = Math.min(dt2, end);
if (shift + bt2 < 0)
err(3);
for (; bt2 < dend; ++bt2)
buf[bt2] = dict[shift + bt2];
}
for (; bt2 < end; ++bt2)
buf[bt2] = buf[bt2 - dt2];
}
}
st2.l = lm, st2.p = lpos, st2.b = bt2, st2.f = final;
if (lm)
final = 1, st2.m = lbt, st2.d = dm, st2.n = dbt;
} while (!final);
return bt2 != buf.length && noBuf ? slc(buf, 0, bt2) : buf.subarray(0, bt2);
};
var wbits = function(d2, p2, v2) {
v2 <<= p2 & 7;
var o2 = p2 / 8 | 0;
d2[o2] |= v2;
d2[o2 + 1] |= v2 >> 8;
};
var wbits16 = function(d2, p2, v2) {
v2 <<= p2 & 7;
var o2 = p2 / 8 | 0;
d2[o2] |= v2;
d2[o2 + 1] |= v2 >> 8;
d2[o2 + 2] |= v2 >> 16;
};
var hTree = function(d2, mb) {
var t3 = [];
for (var i2 = 0; i2 < d2.length; ++i2) {
if (d2[i2])
t3.push({ s: i2, f: d2[i2] });
}
var s2 = t3.length;
var t22 = t3.slice();
if (!s2)
return { t: et$1, l: 0 };
if (s2 == 1) {
var v2 = new u8(t3[0].s + 1);
v2[t3[0].s] = 1;
return { t: v2, l: 1 };
}
t3.sort(function(a2, b2) {
return a2.f - b2.f;
});
t3.push({ s: -1, f: 25001 });
var l2 = t3[0], r2 = t3[1], i0 = 0, i1 = 1, i22 = 2;
t3[0] = { s: -1, f: l2.f + r2.f, l: l2, r: r2 };
while (i1 != s2 - 1) {
l2 = t3[t3[i0].f < t3[i22].f ? i0++ : i22++];
r2 = t3[i0 != i1 && t3[i0].f < t3[i22].f ? i0++ : i22++];
t3[i1++] = { s: -1, f: l2.f + r2.f, l: l2, r: r2 };
}
var maxSym = t22[0].s;
for (var i2 = 1; i2 < s2; ++i2) {
if (t22[i2].s > maxSym)
maxSym = t22[i2].s;
}
var tr = new u16(maxSym + 1);
var mbt = ln(t3[i1 - 1], tr, 0);
if (mbt > mb) {
var i2 = 0, dt2 = 0;
var lft = mbt - mb, cst = 1 << lft;
t22.sort(function(a2, b2) {
return tr[b2.s] - tr[a2.s] || a2.f - b2.f;
});
for (; i2 < s2; ++i2) {
var i2_1 = t22[i2].s;
if (tr[i2_1] > mb) {
dt2 += cst - (1 << mbt - tr[i2_1]);
tr[i2_1] = mb;
} else
break;
}
dt2 >>= lft;
while (dt2 > 0) {
var i2_2 = t22[i2].s;
if (tr[i2_2] < mb)
dt2 -= 1 << mb - tr[i2_2]++ - 1;
else
++i2;
}
for (; i2 >= 0 && dt2; --i2) {
var i2_3 = t22[i2].s;
if (tr[i2_3] == mb) {
--tr[i2_3];
++dt2;
}
}
mbt = mb;
}
return { t: new u8(tr), l: mbt };
};
var ln = function(n2, l2, d2) {
return n2.s == -1 ? Math.max(ln(n2.l, l2, d2 + 1), ln(n2.r, l2, d2 + 1)) : l2[n2.s] = d2;
};
var lc = function(c2) {
var s2 = c2.length;
while (s2 && !c2[--s2])
;
var cl = new u16(++s2);
var cli = 0, cln = c2[0], cls = 1;
var w2 = function(v2) {
cl[cli++] = v2;
};
for (var i2 = 1; i2 <= s2; ++i2) {
if (c2[i2] == cln && i2 != s2)
++cls;
else {
if (!cln && cls > 2) {
for (; cls > 138; cls -= 138)
w2(32754);
if (cls > 2) {
w2(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);
cls = 0;
}
} else if (cls > 3) {
w2(cln), --cls;
for (; cls > 6; cls -= 6)
w2(8304);
if (cls > 2)
w2(cls - 3 << 5 | 8208), cls = 0;
}
while (cls--)
w2(cln);
cls = 1;
cln = c2[i2];
}
}
return { c: cl.subarray(0, cli), n: s2 };
};
var clen = function(cf, cl) {
var l2 = 0;
for (var i2 = 0; i2 < cl.length; ++i2)
l2 += cf[i2] * cl[i2];
return l2;
};
var wfblk = function(out, pos, dat) {
var s2 = dat.length;
var o2 = shft(pos + 2);
out[o2] = s2 & 255;
out[o2 + 1] = s2 >> 8;
out[o2 + 2] = out[o2] ^ 255;
out[o2 + 3] = out[o2 + 1] ^ 255;
for (var i2 = 0; i2 < s2; ++i2)
out[o2 + i2 + 4] = dat[i2];
return (o2 + 4 + s2) * 8;
};
var wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p2) {
wbits(out, p2++, final);
++lf[256];
var _a2 = hTree(lf, 15), dlt = _a2.t, mlb = _a2.l;
var _b2 = hTree(df, 15), ddt = _b2.t, mdb = _b2.l;
var _c = lc(dlt), lclt = _c.c, nlc = _c.n;
var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;
var lcfreq = new u16(19);
for (var i2 = 0; i2 < lclt.length; ++i2)
++lcfreq[lclt[i2] & 31];
for (var i2 = 0; i2 < lcdt.length; ++i2)
++lcfreq[lcdt[i2] & 31];
var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;
var nlcc = 19;
for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
;
var flen = bl + 5 << 3;
var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];
if (bs >= 0 && flen <= ftlen && flen <= dtlen)
return wfblk(out, p2, dat.subarray(bs, bs + bl));
var lm, ll, dm, dl;
wbits(out, p2, 1 + (dtlen < ftlen)), p2 += 2;
if (dtlen < ftlen) {
lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
var llm = hMap(lct, mlcb, 0);
wbits(out, p2, nlc - 257);
wbits(out, p2 + 5, ndc - 1);
wbits(out, p2 + 10, nlcc - 4);
p2 += 14;
for (var i2 = 0; i2 < nlcc; ++i2)
wbits(out, p2 + 3 * i2, lct[clim[i2]]);
p2 += 3 * nlcc;
var lcts = [lclt, lcdt];
for (var it2 = 0; it2 < 2; ++it2) {
var clct = lcts[it2];
for (var i2 = 0; i2 < clct.length; ++i2) {
var len = clct[i2] & 31;
wbits(out, p2, llm[len]), p2 += lct[len];
if (len > 15)
wbits(out, p2, clct[i2] >> 5 & 127), p2 += clct[i2] >> 12;
}
}
} else {
lm = flm, ll = flt, dm = fdm, dl = fdt;
}
for (var i2 = 0; i2 < li; ++i2) {
var sym = syms[i2];
if (sym > 255) {
var len = sym >> 18 & 31;
wbits16(out, p2, lm[len + 257]), p2 += ll[len + 257];
if (len > 7)
wbits(out, p2, sym >> 23 & 31), p2 += fleb[len];
var dst = sym & 31;
wbits16(out, p2, dm[dst]), p2 += dl[dst];
if (dst > 3)
wbits16(out, p2, sym >> 5 & 8191), p2 += fdeb[dst];
} else {
wbits16(out, p2, lm[sym]), p2 += ll[sym];
}
}
wbits16(out, p2, lm[256]);
return p2 + ll[256];
};
var deo = /* @__PURE__ */ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
var et$1 = /* @__PURE__ */ new u8(0);
var dflt = function(dat, lvl, plvl, pre, post, st2) {
var s2 = st2.z || dat.length;
var o2 = new u8(pre + s2 + 5 * (1 + Math.ceil(s2 / 7e3)) + post);
var w2 = o2.subarray(pre, o2.length - post);
var lst = st2.l;
var pos = (st2.r || 0) & 7;
if (lvl) {
if (pos)
w2[0] = st2.r >> 3;
var opt = deo[lvl - 1];
var n2 = opt >> 13, c2 = opt & 8191;
var msk_1 = (1 << plvl) - 1;
var prev = st2.p || new u16(32768), head = st2.h || new u16(msk_1 + 1);
var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
var hsh = function(i3) {
return (dat[i3] ^ dat[i3 + 1] << bs1_1 ^ dat[i3 + 2] << bs2_1) & msk_1;
};
var syms = new i32(25e3);
var lf = new u16(288), df = new u16(32);
var lc_1 = 0, eb = 0, i2 = st2.i || 0, li = 0, wi = st2.w || 0, bs = 0;
for (; i2 + 2 < s2; ++i2) {
var hv = hsh(i2);
var imod = i2 & 32767, pimod = head[hv];
prev[imod] = pimod;
head[hv] = imod;
if (wi <= i2) {
var rem = s2 - i2;
if ((lc_1 > 7e3 || li > 24576) && (rem > 423 || !lst)) {
pos = wblk(dat, w2, 0, syms, lf, df, eb, li, bs, i2 - bs, pos);
li = lc_1 = eb = 0, bs = i2;
for (var j2 = 0; j2 < 286; ++j2)
lf[j2] = 0;
for (var j2 = 0; j2 < 30; ++j2)
df[j2] = 0;
}
var l2 = 2, d2 = 0, ch_1 = c2, dif = imod - pimod & 32767;
if (rem > 2 && hv == hsh(i2 - dif)) {
var maxn = Math.min(n2, rem) - 1;
var maxd = Math.min(32767, i2);
var ml = Math.min(258, rem);
while (dif <= maxd && --ch_1 && imod != pimod) {
if (dat[i2 + l2] == dat[i2 + l2 - dif]) {
var nl = 0;
for (; nl < ml && dat[i2 + nl] == dat[i2 + nl - dif]; ++nl)
;
if (nl > l2) {
l2 = nl, d2 = dif;
if (nl > maxn)
break;
var mmd = Math.min(dif, nl - 2);
var md = 0;
for (var j2 = 0; j2 < mmd; ++j2) {
var ti = i2 - dif + j2 & 32767;
var pti = prev[ti];
var cd = ti - pti & 32767;
if (cd > md)
md = cd, pimod = ti;
}
}
}
imod = pimod, pimod = prev[imod];
dif += imod - pimod & 32767;
}
}
if (d2) {
syms[li++] = 268435456 | revfl[l2] << 18 | revfd[d2];
var lin = revfl[l2] & 31, din = revfd[d2] & 31;
eb += fleb[lin] + fdeb[din];
++lf[257 + lin];
++df[din];
wi = i2 + l2;
++lc_1;
} else {
syms[li++] = dat[i2];
++lf[dat[i2]];
}
}
}
for (i2 = Math.max(i2, wi); i2 < s2; ++i2) {
syms[li++] = dat[i2];
++lf[dat[i2]];
}
pos = wblk(dat, w2, lst, syms, lf, df, eb, li, bs, i2 - bs, pos);
if (!lst) {
st2.r = pos & 7 | w2[pos / 8 | 0] << 3;
pos -= 7;
st2.h = head, st2.p = prev, st2.i = i2, st2.w = wi;
}
} else {
for (var i2 = st2.w || 0; i2 < s2 + lst; i2 += 65535) {
var e2 = i2 + 65535;
if (e2 >= s2) {
w2[pos / 8 | 0] = lst;
e2 = s2;
}
pos = wfblk(w2, pos + 1, dat.subarray(i2, e2));
}
st2.i = s2;
}
return slc(o2, 0, pre + shft(pos) + post);
};
var adler = function() {
var a2 = 1, b2 = 0;
return {
p: function(d2) {
var n2 = a2, m2 = b2;
var l2 = d2.length | 0;
for (var i2 = 0; i2 != l2; ) {
var e2 = Math.min(i2 + 2655, l2);
for (; i2 < e2; ++i2)
m2 += n2 += d2[i2];
n2 = (n2 & 65535) + 15 * (n2 >> 16), m2 = (m2 & 65535) + 15 * (m2 >> 16);
}
a2 = n2, b2 = m2;
},
d: function() {
a2 %= 65521, b2 %= 65521;
return (a2 & 255) << 24 | (a2 & 65280) << 8 | (b2 & 255) << 8 | b2 >> 8;
}
};
};
var dopt = function(dat, opt, pre, post, st2) {
if (!st2) {
st2 = { l: 1 };
if (opt.dictionary) {
var dict = opt.dictionary.subarray(-32768);
var newDat = new u8(dict.length + dat.length);
newDat.set(dict);
newDat.set(dat, dict.length);
dat = newDat;
st2.w = dict.length;
}
}
return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? st2.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20 : 12 + opt.mem, pre, post, st2);
};
var wbytes = function(d2, b2, v2) {
for (; v2; ++b2)
d2[b2] = v2, v2 >>>= 8;
};
var zlh = function(c2, o2) {
var lv = o2.level, fl2 = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;
c2[0] = 120, c2[1] = fl2 << 6 | (o2.dictionary && 32);
c2[1] |= 31 - (c2[0] << 8 | c2[1]) % 31;
if (o2.dictionary) {
var h2 = adler();
h2.p(o2.dictionary);
wbytes(c2, 2, h2.d());
}
};
var zls = function(d2, dict) {
if ((d2[0] & 15) != 8 || d2[0] >> 4 > 7 || (d2[0] << 8 | d2[1]) % 31)
err(6, "invalid zlib data");
if ((d2[1] >> 5 & 1) == +!dict)
err(6, "invalid zlib data: " + (d2[1] & 32 ? "need" : "unexpected") + " dictionary");
return (d2[1] >> 3 & 4) + 2;
};
function zlibSync(data2, opts) {
if (!opts)
opts = {};
var a2 = adler();
a2.p(data2);
var d2 = dopt(data2, opts, opts.dictionary ? 6 : 2, 4);
return zlh(d2, opts), wbytes(d2, d2.length - 4, a2.d()), d2;
}
function unzlibSync(data2, opts) {
return inflt(data2.subarray(zls(data2, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);
}
var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder();
var tds = 0;
try {
td.decode(et$1, { stream: true });
tds = 1;
} catch (e2) {
}
/** @license
*
* jsPDF - PDF Document creation from JavaScript
* Version 2.5.2 Built on 2024-09-17T13:29:57.859Z
* CommitID 00000000
*
* Copyright (c) 2010-2021 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
* 2015-2021 yWorks GmbH, http://www.yworks.com
* 2015-2021 Lukas Holländer <lukas.hollaender@yworks.com>, https://github.com/HackbrettXXX
* 2016-2018 Aras Abbasi <aras.abbasi@gmail.com>
* 2010 Aaron Spike, https://github.com/acspike
* 2012 Willow Systems Corporation, https://github.com/willowsystems
* 2012 Pablo Hess, https://github.com/pablohess
* 2012 Florian Jenett, https://github.com/fjenett
* 2013 Warren Weckesser, https://github.com/warrenweckesser
* 2013 Youssef Beddad, https://github.com/lifof
* 2013 Lee Driscoll, https://github.com/lsdriscoll
* 2013 Stefan Slonevskiy, https://github.com/stefslon
* 2013 Jeremy Morel, https://github.com/jmorel
* 2013 Christoph Hartmann, https://github.com/chris-rock
* 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
* 2014 James Makes, https://github.com/dollaruw
* 2014 Diego Casorran, https://github.com/diegocr
* 2014 Steven Spungin, https://github.com/Flamenco
* 2014 Kenneth Glassey, https://github.com/Gavvers
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Contributor(s):
* siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
* kim3er, mfo, alnorth, Flamenco
*/
var n$1 = /* @__PURE__ */ function() {
return "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this;
}();
function i$5() {
n$1.console && "function" == typeof n$1.console.log && n$1.console.log.apply(n$1.console, arguments);
}
var a$2 = { log: i$5, warn: function(t3) {
n$1.console && ("function" == typeof n$1.console.warn ? n$1.console.warn.apply(n$1.console, arguments) : i$5.call(null, arguments));
}, error: function(t3) {
n$1.console && ("function" == typeof n$1.console.error ? n$1.console.error.apply(n$1.console, arguments) : i$5(t3));
} };
function o$1(t3, e2, r2) {
var n2 = new XMLHttpRequest();
n2.open("GET", t3), n2.responseType = "blob", n2.onload = function() {
l$1(n2.response, e2, r2);
}, n2.onerror = function() {
a$2.error("could not download file");
}, n2.send();
}
function s$1(t3) {
var e2 = new XMLHttpRequest();
e2.open("HEAD", t3, false);
try {
e2.send();
} catch (t4) {
}
return e2.status >= 200 && e2.status <= 299;
}
function c$2(t3) {
try {
t3.dispatchEvent(new MouseEvent("click"));
} catch (r2) {
var e2 = document.createEvent("MouseEvents");
e2.initMouseEvent("click", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null), t3.dispatchEvent(e2);
}
}
var u$2, h$1, l$1 = n$1.saveAs || ("object" !== ("undefined" == typeof window ? "undefined" : _typeof$2(window)) || window !== n$1 ? function() {
} : "undefined" != typeof HTMLAnchorElement && "download" in HTMLAnchorElement.prototype ? function(t3, e2, r2) {
var i2 = n$1.URL || n$1.webkitURL, a2 = document.createElement("a");
e2 = e2 || t3.name || "download", a2.download = e2, a2.rel = "noopener", "string" == typeof t3 ? (a2.href = t3, a2.origin !== location.origin ? s$1(a2.href) ? o$1(t3, e2, r2) : c$2(a2, a2.target = "_blank") : c$2(a2)) : (a2.href = i2.createObjectURL(t3), setTimeout(function() {
i2.revokeObjectURL(a2.href);
}, 4e4), setTimeout(function() {
c$2(a2);
}, 0));
} : "msSaveOrOpenBlob" in navigator ? function(e2, r2, n2) {
if (r2 = r2 || e2.name || "download", "string" == typeof e2) if (s$1(e2)) o$1(e2, r2, n2);
else {
var i2 = document.createElement("a");
i2.href = e2, i2.target = "_blank", setTimeout(function() {
c$2(i2);
});
}
else navigator.msSaveOrOpenBlob(function(e3, r3) {
return void 0 === r3 ? r3 = { autoBom: false } : "object" !== _typeof$2(r3) && (a$2.warn("Deprecated: Expected third argument to be a object"), r3 = { autoBom: !r3 }), r3.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e3.type) ? new Blob([String.fromCharCode(65279), e3], { type: e3.type }) : e3;
}(e2, n2), r2);
} : function(e2, r2, i2, a2) {
if ((a2 = a2 || open("", "_blank")) && (a2.document.title = a2.document.body.innerText = "downloading..."), "string" == typeof e2) return o$1(e2, r2, i2);
var s2 = "application/octet-stream" === e2.type, c2 = /constructor/i.test(n$1.HTMLElement) || n$1.safari, u2 = /CriOS\/[\d]+/.test(navigator.userAgent);
if ((u2 || s2 && c2) && "object" === ("undefined" == typeof FileReader ? "undefined" : _typeof$2(FileReader))) {
var h2 = new FileReader();
h2.onloadend = function() {
var t3 = h2.result;
t3 = u2 ? t3 : t3.replace(/^data:[^;]*;/, "data:attachment/file;"), a2 ? a2.location.href = t3 : location = t3, a2 = null;
}, h2.readAsDataURL(e2);
} else {
var l2 = n$1.URL || n$1.webkitURL, f2 = l2.createObjectURL(e2);
a2 ? a2.location = f2 : location.href = f2, a2 = null, setTimeout(function() {
l2.revokeObjectURL(f2);
}, 4e4);
}
});
/**
* A class to parse color values
* @author Stoyan Stefanov <sstoo@gmail.com>
* {@link http://www.phpied.com/rgb-color-parser-in-javascript/}
* @license Use it if you like it
*/
function f$2(t3) {
var e2;
t3 = t3 || "", this.ok = false, "#" == t3.charAt(0) && (t3 = t3.substr(1, 6));
t3 = { 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", feldspar: "d19275", 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", lightslateblue: "8470ff", 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", 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", violetred: "d02090", wheat: "f5deb3", white: "ffffff", whitesmoke: "f5f5f5", yellow: "ffff00", yellowgreen: "9acd32" }[t3 = (t3 = t3.replace(/ /g, "")).toLowerCase()] || t3;
for (var r2 = [{ re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, example: ["rgb(123, 234, 45)", "rgb(255,234,245)"], process: function(t4) {
return [parseInt(t4[1]), parseInt(t4[2]), parseInt(t4[3])];
} }, { re: /^(\w{2})(\w{2})(\w{2})$/, example: ["#00ff00", "336699"], process: function(t4) {
return [parseInt(t4[1], 16), parseInt(t4[2], 16), parseInt(t4[3], 16)];
} }, { re: /^(\w{1})(\w{1})(\w{1})$/, example: ["#fb0", "f0f"], process: function(t4) {
return [parseInt(t4[1] + t4[1], 16), parseInt(t4[2] + t4[2], 16), parseInt(t4[3] + t4[3], 16)];
} }], n2 = 0; n2 < r2.length; n2++) {
var i2 = r2[n2].re, a2 = r2[n2].process, o2 = i2.exec(t3);
o2 && (e2 = a2(o2), this.r = e2[0], this.g = e2[1], this.b = e2[2], this.ok = true);
}
this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r, this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g, this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b, this.toRGB = function() {
return "rgb(" + this.r + ", " + this.g + ", " + this.b + ")";
}, this.toHex = function() {
var t4 = this.r.toString(16), e3 = this.g.toString(16), r3 = this.b.toString(16);
return 1 == t4.length && (t4 = "0" + t4), 1 == e3.length && (e3 = "0" + e3), 1 == r3.length && (r3 = "0" + r3), "#" + t4 + e3 + r3;
};
}
/**
* @license
* Joseph Myers does not specify a particular license for his work.
*
* Author: Joseph Myers
* Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js
*
* Modified by: Owen Leong
*/
function d(t3, e2) {
var r2 = t3[0], n2 = t3[1], i2 = t3[2], a2 = t3[3];
r2 = g(r2, n2, i2, a2, e2[0], 7, -680876936), a2 = g(a2, r2, n2, i2, e2[1], 12, -389564586), i2 = g(i2, a2, r2, n2, e2[2], 17, 606105819), n2 = g(n2, i2, a2, r2, e2[3], 22, -1044525330), r2 = g(r2, n2, i2, a2, e2[4], 7, -176418897), a2 = g(a2, r2, n2, i2, e2[5], 12, 1200080426), i2 = g(i2, a2, r2, n2, e2[6], 17, -1473231341), n2 = g(n2, i2, a2, r2, e2[7], 22, -45705983), r2 = g(r2, n2, i2, a2, e2[8], 7, 1770035416), a2 = g(a2, r2, n2, i2, e2[9], 12, -1958414417), i2 = g(i2, a2, r2, n2, e2[10], 17, -42063), n2 = g(n2, i2, a2, r2, e2[11], 22, -1990404162), r2 = g(r2, n2, i2, a2, e2[12], 7, 1804603682), a2 = g(a2, r2, n2, i2, e2[13], 12, -40341101), i2 = g(i2, a2, r2, n2, e2[14], 17, -1502002290), r2 = m$2(r2, n2 = g(n2, i2, a2, r2, e2[15], 22, 1236535329), i2, a2, e2[1], 5, -165796510), a2 = m$2(a2, r2, n2, i2, e2[6], 9, -1069501632), i2 = m$2(i2, a2, r2, n2, e2[11], 14, 643717713), n2 = m$2(n2, i2, a2, r2, e2[0], 20, -373897302), r2 = m$2(r2, n2, i2, a2, e2[5], 5, -701558691), a2 = m$2(a2, r2, n2, i2, e2[10], 9, 38016083), i2 = m$2(i2, a2, r2, n2, e2[15], 14, -660478335), n2 = m$2(n2, i2, a2, r2, e2[4], 20, -405537848), r2 = m$2(r2, n2, i2, a2, e2[9], 5, 568446438), a2 = m$2(a2, r2, n2, i2, e2[14], 9, -1019803690), i2 = m$2(i2, a2, r2, n2, e2[3], 14, -187363961), n2 = m$2(n2, i2, a2, r2, e2[8], 20, 1163531501), r2 = m$2(r2, n2, i2, a2, e2[13], 5, -1444681467), a2 = m$2(a2, r2, n2, i2, e2[2], 9, -51403784), i2 = m$2(i2, a2, r2, n2, e2[7], 14, 1735328473), r2 = v$1(r2, n2 = m$2(n2, i2, a2, r2, e2[12], 20, -1926607734), i2, a2, e2[5], 4, -378558), a2 = v$1(a2, r2, n2, i2, e2[8], 11, -2022574463), i2 = v$1(i2, a2, r2, n2, e2[11], 16, 1839030562), n2 = v$1(n2, i2, a2, r2, e2[14], 23, -35309556), r2 = v$1(r2, n2, i2, a2, e2[1], 4, -1530992060), a2 = v$1(a2, r2, n2, i2, e2[4], 11, 1272893353), i2 = v$1(i2, a2, r2, n2, e2[7], 16, -155497632), n2 = v$1(n2, i2, a2, r2, e2[10], 23, -1094730640), r2 = v$1(r2, n2, i2, a2, e2[13], 4, 681279174), a2 = v$1(a2, r2, n2, i2, e2[0], 11, -358537222), i2 = v$1(i2, a2, r2, n2, e2[3], 16, -722521979), n2 = v$1(n2, i2, a2, r2, e2[6], 23, 76029189), r2 = v$1(r2, n2, i2, a2, e2[9], 4, -640364487), a2 = v$1(a2, r2, n2, i2, e2[12], 11, -421815835), i2 = v$1(i2, a2, r2, n2, e2[15], 16, 530742520), r2 = b(r2, n2 = v$1(n2, i2, a2, r2, e2[2], 23, -995338651), i2, a2, e2[0], 6, -198630844), a2 = b(a2, r2, n2, i2, e2[7], 10, 1126891415), i2 = b(i2, a2, r2, n2, e2[14], 15, -1416354905), n2 = b(n2, i2, a2, r2, e2[5], 21, -57434055), r2 = b(r2, n2, i2, a2, e2[12], 6, 1700485571), a2 = b(a2, r2, n2, i2, e2[3], 10, -1894986606), i2 = b(i2, a2, r2, n2, e2[10], 15, -1051523), n2 = b(n2, i2, a2, r2, e2[1], 21, -2054922799), r2 = b(r2, n2, i2, a2, e2[8], 6, 1873313359), a2 = b(a2, r2, n2, i2, e2[15], 10, -30611744), i2 = b(i2, a2, r2, n2, e2[6], 15, -1560198380), n2 = b(n2, i2, a2, r2, e2[13], 21, 1309151649), r2 = b(r2, n2, i2, a2, e2[4], 6, -145523070), a2 = b(a2, r2, n2, i2, e2[11], 10, -1120210379), i2 = b(i2, a2, r2, n2, e2[2], 15, 718787259), n2 = b(n2, i2, a2, r2, e2[9], 21, -343485551), t3[0] = _$1(r2, t3[0]), t3[1] = _$1(n2, t3[1]), t3[2] = _$1(i2, t3[2]), t3[3] = _$1(a2, t3[3]);
}
function p$1(t3, e2, r2, n2, i2, a2) {
return e2 = _$1(_$1(e2, t3), _$1(n2, a2)), _$1(e2 << i2 | e2 >>> 32 - i2, r2);
}
function g(t3, e2, r2, n2, i2, a2, o2) {
return p$1(e2 & r2 | ~e2 & n2, t3, e2, i2, a2, o2);
}
function m$2(t3, e2, r2, n2, i2, a2, o2) {
return p$1(e2 & n2 | r2 & ~n2, t3, e2, i2, a2, o2);
}
function v$1(t3, e2, r2, n2, i2, a2, o2) {
return p$1(e2 ^ r2 ^ n2, t3, e2, i2, a2, o2);
}
function b(t3, e2, r2, n2, i2, a2, o2) {
return p$1(r2 ^ (e2 | ~n2), t3, e2, i2, a2, o2);
}
function y$1(t3) {
var e2, r2 = t3.length, n2 = [1732584193, -271733879, -1732584194, 271733878];
for (e2 = 64; e2 <= t3.length; e2 += 64) d(n2, w(t3.substring(e2 - 64, e2)));
t3 = t3.substring(e2 - 64);
var i2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
for (e2 = 0; e2 < t3.length; e2++) i2[e2 >> 2] |= t3.charCodeAt(e2) << (e2 % 4 << 3);
if (i2[e2 >> 2] |= 128 << (e2 % 4 << 3), e2 > 55) for (d(n2, i2), e2 = 0; e2 < 16; e2++) i2[e2] = 0;
return i2[14] = 8 * r2, d(n2, i2), n2;
}
function w(t3) {
var e2, r2 = [];
for (e2 = 0; e2 < 64; e2 += 4) r2[e2 >> 2] = t3.charCodeAt(e2) + (t3.charCodeAt(e2 + 1) << 8) + (t3.charCodeAt(e2 + 2) << 16) + (t3.charCodeAt(e2 + 3) << 24);
return r2;
}
u$2 = n$1.atob.bind(n$1), h$1 = n$1.btoa.bind(n$1);
var N$1 = "0123456789abcdef".split("");
function L$1(t3) {
for (var e2 = "", r2 = 0; r2 < 4; r2++) e2 += N$1[t3 >> 8 * r2 + 4 & 15] + N$1[t3 >> 8 * r2 & 15];
return e2;
}
function A$1(t3) {
return String.fromCharCode((255 & t3) >> 0, (65280 & t3) >> 8, (16711680 & t3) >> 16, (4278190080 & t3) >> 24);
}
function x(t3) {
return y$1(t3).map(A$1).join("");
}
var S = "5d41402abc4b2a76b9719d911017c592" != function(t3) {
for (var e2 = 0; e2 < t3.length; e2++) t3[e2] = L$1(t3[e2]);
return t3.join("");
}(y$1("hello"));
function _$1(t3, e2) {
if (S) {
var r2 = (65535 & t3) + (65535 & e2);
return (t3 >> 16) + (e2 >> 16) + (r2 >> 16) << 16 | 65535 & r2;
}
return t3 + e2 & 4294967295;
}
/**
* @license
* FPDF is released under a permissive license: there is no usage restriction.
* You may embed it freely in your application (commercial or not), with or
* without modifications.
*
* Reference: http://www.fpdf.org/en/script/script37.php
*/
function P(t3, e2) {
var r2, n2, i2, a2;
if (t3 !== r2) {
for (var o2 = (i2 = t3, a2 = 1 + (256 / t3.length >> 0), new Array(a2 + 1).join(i2)), s2 = [], c2 = 0; c2 < 256; c2++) s2[c2] = c2;
var u2 = 0;
for (c2 = 0; c2 < 256; c2++) {
var h2 = s2[c2];
u2 = (u2 + h2 + o2.charCodeAt(c2)) % 256, s2[c2] = s2[u2], s2[u2] = h2;
}
r2 = t3, n2 = s2;
} else s2 = n2;
var l2 = e2.length, f2 = 0, d2 = 0, p2 = "";
for (c2 = 0; c2 < l2; c2++) d2 = (d2 + (h2 = s2[f2 = (f2 + 1) % 256])) % 256, s2[f2] = s2[d2], s2[d2] = h2, o2 = s2[(s2[f2] + s2[d2]) % 256], p2 += String.fromCharCode(e2.charCodeAt(c2) ^ o2);
return p2;
}
/**
* @license
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
* Author: Owen Leong (@owenl131)
* Date: 15 Oct 2020
* References:
* https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt
* https://github.com/foliojs/pdfkit/blob/master/lib/security.js
* http://www.fpdf.org/en/script/script37.php
*/
var k = { print: 4, modify: 8, copy: 16, "annot-forms": 32 };
function I(t3, e2, r2, n2) {
this.v = 1, this.r = 2;
var i2 = 192;
t3.forEach(function(t4) {
if (void 0 !== k.perm) throw new Error("Invalid permission: " + t4);
i2 += k[t4];
}), this.padding = "(¿N^NuAd\0NVÿú\b..\0¶Ðh>/\f©þdSiz";
var a2 = (e2 + this.padding).substr(0, 32), o2 = (r2 + this.padding).substr(0, 32);
this.O = this.processOwnerPassword(a2, o2), this.P = -(1 + (255 ^ i2)), this.encryptionKey = x(a2 + this.O + this.lsbFirstWord(this.P) + this.hexToBytes(n2)).substr(0, 5), this.U = P(this.encryptionKey, this.padding);
}
function F$1(t3) {
if (/[^\u0000-\u00ff]/.test(t3)) throw new Error("Invalid PDF Name Object: " + t3 + ", Only accept ASCII characters.");
for (var e2 = "", r2 = t3.length, n2 = 0; n2 < r2; n2++) {
var i2 = t3.charCodeAt(n2);
if (i2 < 33 || 35 === i2 || 37 === i2 || 40 === i2 || 41 === i2 || 47 === i2 || 60 === i2 || 62 === i2 || 91 === i2 || 93 === i2 || 123 === i2 || 125 === i2 || i2 > 126) e2 += "#" + ("0" + i2.toString(16)).slice(-2);
else e2 += t3[n2];
}
return e2;
}
function C(e2) {
if ("object" !== _typeof$2(e2)) throw new Error("Invalid Context passed to initialize PubSub (jsPDF-module)");
var r2 = {};
this.subscribe = function(t3, e3, n2) {
if (n2 = n2 || false, "string" != typeof t3 || "function" != typeof e3 || "boolean" != typeof n2) throw new Error("Invalid arguments passed to PubSub.subscribe (jsPDF-module)");
r2.hasOwnProperty(t3) || (r2[t3] = {});
var i2 = Math.random().toString(35);
return r2[t3][i2] = [e3, !!n2], i2;
}, this.unsubscribe = function(t3) {
for (var e3 in r2) if (r2[e3][t3]) return delete r2[e3][t3], 0 === Object.keys(r2[e3]).length && delete r2[e3], true;
return false;
}, this.publish = function(t3) {
if (r2.hasOwnProperty(t3)) {
var i2 = Array.prototype.slice.call(arguments, 1), o2 = [];
for (var s2 in r2[t3]) {
var c2 = r2[t3][s2];
try {
c2[0].apply(e2, i2);
} catch (t4) {
n$1.console && a$2.error("jsPDF PubSub Error", t4.message, t4);
}
c2[1] && o2.push(s2);
}
o2.length && o2.forEach(this.unsubscribe);
}
}, this.getTopics = function() {
return r2;
};
}
function j(t3) {
if (!(this instanceof j)) return new j(t3);
var e2 = "opacity,stroke-opacity".split(",");
for (var r2 in t3) t3.hasOwnProperty(r2) && e2.indexOf(r2) >= 0 && (this[r2] = t3[r2]);
this.id = "", this.objectNumber = -1;
}
function O$1(t3, e2) {
this.gState = t3, this.matrix = e2, this.id = "", this.objectNumber = -1;
}
function B(t3, e2, r2, n2, i2) {
if (!(this instanceof B)) return new B(t3, e2, r2, n2, i2);
this.type = "axial" === t3 ? 2 : 3, this.coords = e2, this.colors = r2, O$1.call(this, n2, i2);
}
function M(t3, e2, r2, n2, i2) {
if (!(this instanceof M)) return new M(t3, e2, r2, n2, i2);
this.boundingBox = t3, this.xStep = e2, this.yStep = r2, this.stream = "", this.cloneIndex = 0, O$1.call(this, n2, i2);
}
function E$1(e2) {
var r2, i2 = "string" == typeof arguments[0] ? arguments[0] : "p", o2 = arguments[1], s2 = arguments[2], c2 = arguments[3], u2 = [], d2 = 1, p2 = 16, g2 = "S", m2 = null;
"object" === _typeof$2(e2 = e2 || {}) && (i2 = e2.orientation, o2 = e2.unit || o2, s2 = e2.format || s2, c2 = e2.compress || e2.compressPdf || c2, null !== (m2 = e2.encryption || null) && (m2.userPassword = m2.userPassword || "", m2.ownerPassword = m2.ownerPassword || "", m2.userPermissions = m2.userPermissions || []), d2 = "number" == typeof e2.userUnit ? Math.abs(e2.userUnit) : 1, void 0 !== e2.precision && (r2 = e2.precision), void 0 !== e2.floatPrecision && (p2 = e2.floatPrecision), g2 = e2.defaultPathOperation || "S"), u2 = e2.filters || (true === c2 ? ["FlateEncode"] : u2), o2 = o2 || "mm", i2 = ("" + (i2 || "P")).toLowerCase();
var v2 = e2.putOnlyUsedFonts || false, b2 = {}, y2 = { internal: {}, __private__: {} };
y2.__private__.PubSub = C;
var w2 = "1.3", N2 = y2.__private__.getPdfVersion = function() {
return w2;
};
y2.__private__.setPdfVersion = function(t3) {
w2 = t3;
};
var L2 = { a0: [2383.94, 3370.39], a1: [1683.78, 2383.94], a2: [1190.55, 1683.78], a3: [841.89, 1190.55], a4: [595.28, 841.89], a5: [419.53, 595.28], a6: [297.64, 419.53], a7: [209.76, 297.64], a8: [147.4, 209.76], a9: [104.88, 147.4], a10: [73.7, 104.88], b0: [2834.65, 4008.19], b1: [2004.09, 2834.65], b2: [1417.32, 2004.09], b3: [1000.63, 1417.32], b4: [708.66, 1000.63], b5: [498.9, 708.66], b6: [354.33, 498.9], b7: [249.45, 354.33], b8: [175.75, 249.45], b9: [124.72, 175.75], b10: [87.87, 124.72], c0: [2599.37, 3676.54], c1: [1836.85, 2599.37], c2: [1298.27, 1836.85], c3: [918.43, 1298.27], c4: [649.13, 918.43], c5: [459.21, 649.13], c6: [323.15, 459.21], c7: [229.61, 323.15], c8: [161.57, 229.61], c9: [113.39, 161.57], c10: [79.37, 113.39], dl: [311.81, 623.62], letter: [612, 792], "government-letter": [576, 756], legal: [612, 1008], "junior-legal": [576, 360], ledger: [1224, 792], tabloid: [792, 1224], "credit-card": [153, 243] };
y2.__private__.getPageFormats = function() {
return L2;
};
var A5 = y2.__private__.getPageFormat = function(t3) {
return L2[t3];
};
s2 = s2 || "a4";
var x2 = { COMPAT: "compat", ADVANCED: "advanced" }, S2 = x2.COMPAT;
function _2() {
this.saveGraphicsState(), lt2(new Vt2(_t2, 0, 0, -_t2, 0, Rr() * _t2).toString() + " cm"), this.setFontSize(this.getFontSize() / _t2), g2 = "n", S2 = x2.ADVANCED;
}
function P2() {
this.restoreGraphicsState(), g2 = "S", S2 = x2.COMPAT;
}
var k2 = y2.__private__.combineFontStyleAndFontWeight = function(t3, e3) {
if ("bold" == t3 && "normal" == e3 || "bold" == t3 && 400 == e3 || "normal" == t3 && "italic" == e3 || "bold" == t3 && "italic" == e3) throw new Error("Invalid Combination of fontweight and fontstyle");
return e3 && (t3 = 400 == e3 || "normal" === e3 ? "italic" === t3 ? "italic" : "normal" : 700 != e3 && "bold" !== e3 || "normal" !== t3 ? (700 == e3 ? "bold" : e3) + "" + t3 : "bold"), t3;
};
y2.advancedAPI = function(t3) {
var e3 = S2 === x2.COMPAT;
return e3 && _2.call(this), "function" != typeof t3 || (t3(this), e3 && P2.call(this)), this;
}, y2.compatAPI = function(t3) {
var e3 = S2 === x2.ADVANCED;
return e3 && P2.call(this), "function" != typeof t3 || (t3(this), e3 && _2.call(this)), this;
}, y2.isAdvancedAPI = function() {
return S2 === x2.ADVANCED;
};
var O2, q2 = function(t3) {
if (S2 !== x2.ADVANCED) throw new Error(t3 + " is only available in 'advanced' API mode. You need to call advancedAPI() first.");
}, D2 = y2.roundToPrecision = y2.__private__.roundToPrecision = function(t3, e3) {
var n2 = r2 || e3;
if (isNaN(t3) || isNaN(n2)) throw new Error("Invalid argument passed to jsPDF.roundToPrecision");
return t3.toFixed(n2).replace(/0+$/, "");
};
O2 = y2.hpf = y2.__private__.hpf = "number" == typeof p2 ? function(t3) {
if (isNaN(t3)) throw new Error("Invalid argument passed to jsPDF.hpf");
return D2(t3, p2);
} : "smart" === p2 ? function(t3) {
if (isNaN(t3)) throw new Error("Invalid argument passed to jsPDF.hpf");
return D2(t3, t3 > -1 && t3 < 1 ? 16 : 5);
} : function(t3) {
if (isNaN(t3)) throw new Error("Invalid argument passed to jsPDF.hpf");
return D2(t3, 16);
};
var R2 = y2.f2 = y2.__private__.f2 = function(t3) {
if (isNaN(t3)) throw new Error("Invalid argument passed to jsPDF.f2");
return D2(t3, 2);
}, T2 = y2.__private__.f3 = function(t3) {
if (isNaN(t3)) throw new Error("Invalid argument passed to jsPDF.f3");
return D2(t3, 3);
}, U2 = y2.scale = y2.__private__.scale = function(t3) {
if (isNaN(t3)) throw new Error("Invalid argument passed to jsPDF.scale");
return S2 === x2.COMPAT ? t3 * _t2 : S2 === x2.ADVANCED ? t3 : void 0;
}, z2 = function(t3) {
return S2 === x2.COMPAT ? Rr() - t3 : S2 === x2.ADVANCED ? t3 : void 0;
}, H4 = function(t3) {
return U2(z2(t3));
};
y2.__private__.setPrecision = y2.setPrecision = function(t3) {
"number" == typeof parseInt(t3, 10) && (r2 = parseInt(t3, 10));
};
var W2, V2 = "00000000000000000000000000000000", G2 = y2.__private__.getFileId = function() {
return V2;
}, Y2 = y2.__private__.setFileId = function(t3) {
return V2 = void 0 !== t3 && /^[a-fA-F0-9]{32}$/.test(t3) ? t3.toUpperCase() : V2.split("").map(function() {
return "ABCDEF0123456789".charAt(Math.floor(16 * Math.random()));
}).join(""), null !== m2 && (Ye = new I(m2.userPermissions, m2.userPassword, m2.ownerPassword, V2)), V2;
};
y2.setFileId = function(t3) {
return Y2(t3), this;
}, y2.getFileId = function() {
return G2();
};
var J2 = y2.__private__.convertDateToPDFDate = function(t3) {
var e3 = t3.getTimezoneOffset(), r3 = e3 < 0 ? "+" : "-", n2 = Math.floor(Math.abs(e3 / 60)), i3 = Math.abs(e3 % 60), a2 = [r3, Q2(n2), "'", Q2(i3), "'"].join("");
return ["D:", t3.getFullYear(), Q2(t3.getMonth() + 1), Q2(t3.getDate()), Q2(t3.getHours()), Q2(t3.getMinutes()), Q2(t3.getSeconds()), a2].join("");
}, X2 = y2.__private__.convertPDFDateToDate = function(t3) {
var e3 = parseInt(t3.substr(2, 4), 10), r3 = parseInt(t3.substr(6, 2), 10) - 1, n2 = parseInt(t3.substr(8, 2), 10), i3 = parseInt(t3.substr(10, 2), 10), a2 = parseInt(t3.substr(12, 2), 10), o3 = parseInt(t3.substr(14, 2), 10);
return new Date(e3, r3, n2, i3, a2, o3, 0);
}, K2 = y2.__private__.setCreationDate = function(t3) {
var e3;
if (void 0 === t3 && (t3 = /* @__PURE__ */ new Date()), t3 instanceof Date) e3 = J2(t3);
else {
if (!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/.test(t3)) throw new Error("Invalid argument passed to jsPDF.setCreationDate");
e3 = t3;
}
return W2 = e3;
}, Z2 = y2.__private__.getCreationDate = function(t3) {
var e3 = W2;
return "jsDate" === t3 && (e3 = X2(W2)), e3;
};
y2.setCreationDate = function(t3) {
return K2(t3), this;
}, y2.getCreationDate = function(t3) {
return Z2(t3);
};
var $2, Q2 = y2.__private__.padd2 = function(t3) {
return ("0" + parseInt(t3)).slice(-2);
}, tt2 = y2.__private__.padd2Hex = function(t3) {
return ("00" + (t3 = t3.toString())).substr(t3.length);
}, et2 = 0, rt2 = [], nt2 = [], it2 = 0, at2 = [], ot2 = [], st2 = false, ct2 = nt2, ut2 = function() {
et2 = 0, it2 = 0, nt2 = [], rt2 = [], at2 = [], Qt2 = Kt2(), te2 = Kt2();
};
y2.__private__.setCustomOutputDestination = function(t3) {
st2 = true, ct2 = t3;
};
var ht2 = function(t3) {
st2 || (ct2 = t3);
};
y2.__private__.resetCustomOutputDestination = function() {
st2 = false, ct2 = nt2;
};
var lt2 = y2.__private__.out = function(t3) {
return t3 = t3.toString(), it2 += t3.length + 1, ct2.push(t3), ct2;
}, ft2 = y2.__private__.write = function(t3) {
return lt2(1 === arguments.length ? t3.toString() : Array.prototype.join.call(arguments, " "));
}, dt2 = y2.__private__.getArrayBuffer = function(t3) {
for (var e3 = t3.length, r3 = new ArrayBuffer(e3), n2 = new Uint8Array(r3); e3--; ) n2[e3] = t3.charCodeAt(e3);
return r3;
}, pt2 = [["Helvetica", "helvetica", "normal", "WinAnsiEncoding"], ["Helvetica-Bold", "helvetica", "bold", "WinAnsiEncoding"], ["Helvetica-Oblique", "helvetica", "italic", "WinAnsiEncoding"], ["Helvetica-BoldOblique", "helvetica", "bolditalic", "WinAnsiEncoding"], ["Courier", "courier", "normal", "WinAnsiEncoding"], ["Courier-Bold", "courier", "bold", "WinAnsiEncoding"], ["Courier-Oblique", "courier", "italic", "WinAnsiEncoding"], ["Courier-BoldOblique", "courier", "bolditalic", "WinAnsiEncoding"], ["Times-Roman", "times", "normal", "WinAnsiEncoding"], ["Times-Bold", "times", "bold", "WinAnsiEncoding"], ["Times-Italic", "times", "italic", "WinAnsiEncoding"], ["Times-BoldItalic", "times", "bolditalic", "WinAnsiEncoding"], ["ZapfDingbats", "zapfdingbats", "normal", null], ["Symbol", "symbol", "normal", null]];
y2.__private__.getStandardFonts = function() {
return pt2;
};
var gt2 = e2.fontSize || 16;
y2.__private__.setFontSize = y2.setFontSize = function(t3) {
return gt2 = S2 === x2.ADVANCED ? t3 / _t2 : t3, this;
};
var mt2, vt2 = y2.__private__.getFontSize = y2.getFontSize = function() {
return S2 === x2.COMPAT ? gt2 : gt2 * _t2;
}, bt2 = e2.R2L || false;
y2.__private__.setR2L = y2.setR2L = function(t3) {
return bt2 = t3, this;
}, y2.__private__.getR2L = y2.getR2L = function() {
return bt2;
};
var yt2, wt2 = y2.__private__.setZoomMode = function(t3) {
var e3 = [void 0, null, "fullwidth", "fullheight", "fullpage", "original"];
if (/^(?:\d+\.\d*|\d*\.\d+|\d+)%$/.test(t3)) mt2 = t3;
else if (isNaN(t3)) {
if (-1 === e3.indexOf(t3)) throw new Error('zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. "' + t3 + '" is not recognized.');
mt2 = t3;
} else mt2 = parseInt(t3, 10);
};
y2.__private__.getZoomMode = function() {
return mt2;
};
var Nt2, Lt2 = y2.__private__.setPageMode = function(t3) {
if (-1 == [void 0, null, "UseNone", "UseOutlines", "UseThumbs", "FullScreen"].indexOf(t3)) throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "' + t3 + '" is not recognized.');
yt2 = t3;
};
y2.__private__.getPageMode = function() {
return yt2;
};
var At2 = y2.__private__.setLayoutMode = function(t3) {
if (-1 == [void 0, null, "continuous", "single", "twoleft", "tworight", "two"].indexOf(t3)) throw new Error('Layout mode must be one of continuous, single, twoleft, tworight. "' + t3 + '" is not recognized.');
Nt2 = t3;
};
y2.__private__.getLayoutMode = function() {
return Nt2;
}, y2.__private__.setDisplayMode = y2.setDisplayMode = function(t3, e3, r3) {
return wt2(t3), At2(e3), Lt2(r3), this;
};
var xt2 = { title: "", subject: "", author: "", keywords: "", creator: "" };
y2.__private__.getDocumentProperty = function(t3) {
if (-1 === Object.keys(xt2).indexOf(t3)) throw new Error("Invalid argument passed to jsPDF.getDocumentProperty");
return xt2[t3];
}, y2.__private__.getDocumentProperties = function() {
return xt2;
}, y2.__private__.setDocumentProperties = y2.setProperties = y2.setDocumentProperties = function(t3) {
for (var e3 in xt2) xt2.hasOwnProperty(e3) && t3[e3] && (xt2[e3] = t3[e3]);
return this;
}, y2.__private__.setDocumentProperty = function(t3, e3) {
if (-1 === Object.keys(xt2).indexOf(t3)) throw new Error("Invalid arguments passed to jsPDF.setDocumentProperty");
return xt2[t3] = e3;
};
var St, _t2, Pt2, kt2, It2, Ft2 = {}, Ct2 = {}, jt2 = [], Ot2 = {}, Bt2 = {}, Mt2 = {}, Et2 = {}, qt2 = null, Dt2 = 0, Rt2 = [], Tt2 = new C(y2), Ut2 = e2.hotfixes || [], zt2 = {}, Ht2 = {}, Wt2 = [], Vt2 = function t3(e3, r3, n2, i3, a2, o3) {
if (!(this instanceof t3)) return new t3(e3, r3, n2, i3, a2, o3);
isNaN(e3) && (e3 = 1), isNaN(r3) && (r3 = 0), isNaN(n2) && (n2 = 0), isNaN(i3) && (i3 = 1), isNaN(a2) && (a2 = 0), isNaN(o3) && (o3 = 0), this._matrix = [e3, r3, n2, i3, a2, o3];
};
Object.defineProperty(Vt2.prototype, "sx", { get: function() {
return this._matrix[0];
}, set: function(t3) {
this._matrix[0] = t3;
} }), Object.defineProperty(Vt2.prototype, "shy", { get: function() {
return this._matrix[1];
}, set: function(t3) {
this._matrix[1] = t3;
} }), Object.defineProperty(Vt2.prototype, "shx", { get: function() {
return this._matrix[2];
}, set: function(t3) {
this._matrix[2] = t3;
} }), Object.defineProperty(Vt2.prototype, "sy", { get: function() {
return this._matrix[3];
}, set: function(t3) {
this._matrix[3] = t3;
} }), Object.defineProperty(Vt2.prototype, "tx", { get: function() {
return this._matrix[4];
}, set: function(t3) {
this._matrix[4] = t3;
} }), Object.defineProperty(Vt2.prototype, "ty", { get: function() {
return this._matrix[5];
}, set: function(t3) {
this._matrix[5] = t3;
} }), Object.defineProperty(Vt2.prototype, "a", { get: function() {
return this._matrix[0];
}, set: function(t3) {
this._matrix[0] = t3;
} }), Object.defineProperty(Vt2.prototype, "b", { get: function() {
return this._matrix[1];
}, set: function(t3) {
this._matrix[1] = t3;
} }), Object.defineProperty(Vt2.prototype, "c", { get: function() {
return this._matrix[2];
}, set: function(t3) {
this._matrix[2] = t3;
} }), Object.defineProperty(Vt2.prototype, "d", { get: function() {
return this._matrix[3];
}, set: function(t3) {
this._matrix[3] = t3;
} }), Object.defineProperty(Vt2.prototype, "e", { get: function() {
return this._matrix[4];
}, set: function(t3) {
this._matrix[4] = t3;
} }), Object.defineProperty(Vt2.prototype, "f", { get: function() {
return this._matrix[5];
}, set: function(t3) {
this._matrix[5] = t3;
} }), Object.defineProperty(Vt2.prototype, "rotation", { get: function() {
return Math.atan2(this.shx, this.sx);
} }), Object.defineProperty(Vt2.prototype, "scaleX", { get: function() {
return this.decompose().scale.sx;
} }), Object.defineProperty(Vt2.prototype, "scaleY", { get: function() {
return this.decompose().scale.sy;
} }), Object.defineProperty(Vt2.prototype, "isIdentity", { get: function() {
return 1 === this.sx && (0 === this.shy && (0 === this.shx && (1 === this.sy && (0 === this.tx && 0 === this.ty))));
} }), Vt2.prototype.join = function(t3) {
return [this.sx, this.shy, this.shx, this.sy, this.tx, this.ty].map(O2).join(t3);
}, Vt2.prototype.multiply = function(t3) {
var e3 = t3.sx * this.sx + t3.shy * this.shx, r3 = t3.sx * this.shy + t3.shy * this.sy, n2 = t3.shx * this.sx + t3.sy * this.shx, i3 = t3.shx * this.shy + t3.sy * this.sy, a2 = t3.tx * this.sx + t3.ty * this.shx + this.tx, o3 = t3.tx * this.shy + t3.ty * this.sy + this.ty;
return new Vt2(e3, r3, n2, i3, a2, o3);
}, Vt2.prototype.decompose = function() {
var t3 = this.sx, e3 = this.shy, r3 = this.shx, n2 = this.sy, i3 = this.tx, a2 = this.ty, o3 = Math.sqrt(t3 * t3 + e3 * e3), s3 = (t3 /= o3) * r3 + (e3 /= o3) * n2;
r3 -= t3 * s3, n2 -= e3 * s3;
var c3 = Math.sqrt(r3 * r3 + n2 * n2);
return s3 /= c3, t3 * (n2 /= c3) < e3 * (r3 /= c3) && (t3 = -t3, e3 = -e3, s3 = -s3, o3 = -o3), { scale: new Vt2(o3, 0, 0, c3, 0, 0), translate: new Vt2(1, 0, 0, 1, i3, a2), rotate: new Vt2(t3, e3, -e3, t3, 0, 0), skew: new Vt2(1, 0, s3, 1, 0, 0) };
}, Vt2.prototype.toString = function(t3) {
return this.join(" ");
}, Vt2.prototype.inversed = function() {
var t3 = this.sx, e3 = this.shy, r3 = this.shx, n2 = this.sy, i3 = this.tx, a2 = this.ty, o3 = 1 / (t3 * n2 - e3 * r3), s3 = n2 * o3, c3 = -e3 * o3, u3 = -r3 * o3, h2 = t3 * o3;
return new Vt2(s3, c3, u3, h2, -s3 * i3 - u3 * a2, -c3 * i3 - h2 * a2);
}, Vt2.prototype.applyToPoint = function(t3) {
var e3 = t3.x * this.sx + t3.y * this.shx + this.tx, r3 = t3.x * this.shy + t3.y * this.sy + this.ty;
return new Cr(e3, r3);
}, Vt2.prototype.applyToRectangle = function(t3) {
var e3 = this.applyToPoint(t3), r3 = this.applyToPoint(new Cr(t3.x + t3.w, t3.y + t3.h));
return new jr(e3.x, e3.y, r3.x - e3.x, r3.y - e3.y);
}, Vt2.prototype.clone = function() {
var t3 = this.sx, e3 = this.shy, r3 = this.shx, n2 = this.sy, i3 = this.tx, a2 = this.ty;
return new Vt2(t3, e3, r3, n2, i3, a2);
}, y2.Matrix = Vt2;
var Gt2 = y2.matrixMult = function(t3, e3) {
return e3.multiply(t3);
}, Yt2 = new Vt2(1, 0, 0, 1, 0, 0);
y2.unitMatrix = y2.identityMatrix = Yt2;
var Jt2 = function(t3, e3) {
if (!Bt2[t3]) {
var r3 = (e3 instanceof B ? "Sh" : "P") + (Object.keys(Ot2).length + 1).toString(10);
e3.id = r3, Bt2[t3] = r3, Ot2[r3] = e3, Tt2.publish("addPattern", e3);
}
};
y2.ShadingPattern = B, y2.TilingPattern = M, y2.addShadingPattern = function(t3, e3) {
return q2("addShadingPattern()"), Jt2(t3, e3), this;
}, y2.beginTilingPattern = function(t3) {
q2("beginTilingPattern()"), Br(t3.boundingBox[0], t3.boundingBox[1], t3.boundingBox[2] - t3.boundingBox[0], t3.boundingBox[3] - t3.boundingBox[1], t3.matrix);
}, y2.endTilingPattern = function(t3, e3) {
q2("endTilingPattern()"), e3.stream = ot2[$2].join("\n"), Jt2(t3, e3), Tt2.publish("endTilingPattern", e3), Wt2.pop().restore();
};
var Xt2 = y2.__private__.newObject = function() {
var t3 = Kt2();
return Zt2(t3, true), t3;
}, Kt2 = y2.__private__.newObjectDeferred = function() {
return et2++, rt2[et2] = function() {
return it2;
}, et2;
}, Zt2 = function(t3, e3) {
return e3 = "boolean" == typeof e3 && e3, rt2[t3] = it2, e3 && lt2(t3 + " 0 obj"), t3;
}, $t2 = y2.__private__.newAdditionalObject = function() {
var t3 = { objId: Kt2(), content: "" };
return at2.push(t3), t3;
}, Qt2 = Kt2(), te2 = Kt2(), ee2 = y2.__private__.decodeColorString = function(t3) {
var e3 = t3.split(" ");
if (2 !== e3.length || "g" !== e3[1] && "G" !== e3[1]) {
if (5 === e3.length && ("k" === e3[4] || "K" === e3[4])) {
e3 = [(1 - e3[0]) * (1 - e3[3]), (1 - e3[1]) * (1 - e3[3]), (1 - e3[2]) * (1 - e3[3]), "r"];
}
} else {
var r3 = parseFloat(e3[0]);
e3 = [r3, r3, r3, "r"];
}
for (var n2 = "#", i3 = 0; i3 < 3; i3++) n2 += ("0" + Math.floor(255 * parseFloat(e3[i3])).toString(16)).slice(-2);
return n2;
}, re2 = y2.__private__.encodeColorString = function(e3) {
var r3;
"string" == typeof e3 && (e3 = { ch1: e3 });
var n2 = e3.ch1, i3 = e3.ch2, a2 = e3.ch3, o3 = e3.ch4, s3 = "draw" === e3.pdfColorType ? ["G", "RG", "K"] : ["g", "rg", "k"];
if ("string" == typeof n2 && "#" !== n2.charAt(0)) {
var c3 = new f$2(n2);
if (c3.ok) n2 = c3.toHex();
else if (!/^\d*\.?\d*$/.test(n2)) throw new Error('Invalid color "' + n2 + '" passed to jsPDF.encodeColorString.');
}
if ("string" == typeof n2 && /^#[0-9A-Fa-f]{3}$/.test(n2) && (n2 = "#" + n2[1] + n2[1] + n2[2] + n2[2] + n2[3] + n2[3]), "string" == typeof n2 && /^#[0-9A-Fa-f]{6}$/.test(n2)) {
var u3 = parseInt(n2.substr(1), 16);
n2 = u3 >> 16 & 255, i3 = u3 >> 8 & 255, a2 = 255 & u3;
}
if (void 0 === i3 || void 0 === o3 && n2 === i3 && i3 === a2) if ("string" == typeof n2) r3 = n2 + " " + s3[0];
else switch (e3.precision) {
case 2:
r3 = R2(n2 / 255) + " " + s3[0];
break;
case 3:
default:
r3 = T2(n2 / 255) + " " + s3[0];
}
else if (void 0 === o3 || "object" === _typeof$2(o3)) {
if (o3 && !isNaN(o3.a) && 0 === o3.a) return r3 = ["1.", "1.", "1.", s3[1]].join(" ");
if ("string" == typeof n2) r3 = [n2, i3, a2, s3[1]].join(" ");
else switch (e3.precision) {
case 2:
r3 = [R2(n2 / 255), R2(i3 / 255), R2(a2 / 255), s3[1]].join(" ");
break;
default:
case 3:
r3 = [T2(n2 / 255), T2(i3 / 255), T2(a2 / 255), s3[1]].join(" ");
}
} else if ("string" == typeof n2) r3 = [n2, i3, a2, o3, s3[2]].join(" ");
else switch (e3.precision) {
case 2:
r3 = [R2(n2), R2(i3), R2(a2), R2(o3), s3[2]].join(" ");
break;
case 3:
default:
r3 = [T2(n2), T2(i3), T2(a2), T2(o3), s3[2]].join(" ");
}
return r3;
}, ne2 = y2.__private__.getFilters = function() {
return u2;
}, ie2 = y2.__private__.putStream = function(t3) {
var e3 = (t3 = t3 || {}).data || "", r3 = t3.filters || ne2(), n2 = t3.alreadyAppliedFilters || [], i3 = t3.addLength1 || false, a2 = e3.length, o3 = t3.objectId, s3 = function(t4) {
return t4;
};
if (null !== m2 && void 0 === o3) throw new Error("ObjectId must be passed to putStream for file encryption");
null !== m2 && (s3 = Ye.encryptor(o3, 0));
var c3 = {};
true === r3 && (r3 = ["FlateEncode"]);
var u3 = t3.additionalKeyValues || [], h2 = (c3 = void 0 !== E$1.API.processDataByFilters ? E$1.API.processDataByFilters(e3, r3) : { data: e3, reverseChain: [] }).reverseChain + (Array.isArray(n2) ? n2.join(" ") : n2.toString());
if (0 !== c3.data.length && (u3.push({ key: "Length", value: c3.data.length }), true === i3 && u3.push({ key: "Length1", value: a2 })), 0 != h2.length) if (h2.split("/").length - 1 == 1) u3.push({ key: "Filter", value: h2 });
else {
u3.push({ key: "Filter", value: "[" + h2 + "]" });
for (var l2 = 0; l2 < u3.length; l2 += 1) if ("DecodeParms" === u3[l2].key) {
for (var f2 = [], d3 = 0; d3 < c3.reverseChain.split("/").length - 1; d3 += 1) f2.push("null");
f2.push(u3[l2].value), u3[l2].value = "[" + f2.join(" ") + "]";
}
}
lt2("<<");
for (var p3 = 0; p3 < u3.length; p3++) lt2("/" + u3[p3].key + " " + u3[p3].value);
lt2(">>"), 0 !== c3.data.length && (lt2("stream"), lt2(s3(c3.data)), lt2("endstream"));
}, ae2 = y2.__private__.putPage = function(t3) {
var e3 = t3.number, r3 = t3.data, n2 = t3.objId, i3 = t3.contentsObjId;
Zt2(n2, true), lt2("<</Type /Page"), lt2("/Parent " + t3.rootDictionaryObjId + " 0 R"), lt2("/Resources " + t3.resourceDictionaryObjId + " 0 R"), lt2("/MediaBox [" + parseFloat(O2(t3.mediaBox.bottomLeftX)) + " " + parseFloat(O2(t3.mediaBox.bottomLeftY)) + " " + O2(t3.mediaBox.topRightX) + " " + O2(t3.mediaBox.topRightY) + "]"), null !== t3.cropBox && lt2("/CropBox [" + O2(t3.cropBox.bottomLeftX) + " " + O2(t3.cropBox.bottomLeftY) + " " + O2(t3.cropBox.topRightX) + " " + O2(t3.cropBox.topRightY) + "]"), null !== t3.bleedBox && lt2("/BleedBox [" + O2(t3.bleedBox.bottomLeftX) + " " + O2(t3.bleedBox.bottomLeftY) + " " + O2(t3.bleedBox.topRightX) + " " + O2(t3.bleedBox.topRightY) + "]"), null !== t3.trimBox && lt2("/TrimBox [" + O2(t3.trimBox.bottomLeftX) + " " + O2(t3.trimBox.bottomLeftY) + " " + O2(t3.trimBox.topRightX) + " " + O2(t3.trimBox.topRightY) + "]"), null !== t3.artBox && lt2("/ArtBox [" + O2(t3.artBox.bottomLeftX) + " " + O2(t3.artBox.bottomLeftY) + " " + O2(t3.artBox.topRightX) + " " + O2(t3.artBox.topRightY) + "]"), "number" == typeof t3.userUnit && 1 !== t3.userUnit && lt2("/UserUnit " + t3.userUnit), Tt2.publish("putPage", { objId: n2, pageContext: Rt2[e3], pageNumber: e3, page: r3 }), lt2("/Contents " + i3 + " 0 R"), lt2(">>"), lt2("endobj");
var a2 = r3.join("\n");
return S2 === x2.ADVANCED && (a2 += "\nQ"), Zt2(i3, true), ie2({ data: a2, filters: ne2(), objectId: i3 }), lt2("endobj"), n2;
}, oe2 = y2.__private__.putPages = function() {
var t3, e3, r3 = [];
for (t3 = 1; t3 <= Dt2; t3++) Rt2[t3].objId = Kt2(), Rt2[t3].contentsObjId = Kt2();
for (t3 = 1; t3 <= Dt2; t3++) r3.push(ae2({ number: t3, data: ot2[t3], objId: Rt2[t3].objId, contentsObjId: Rt2[t3].contentsObjId, mediaBox: Rt2[t3].mediaBox, cropBox: Rt2[t3].cropBox, bleedBox: Rt2[t3].bleedBox, trimBox: Rt2[t3].trimBox, artBox: Rt2[t3].artBox, userUnit: Rt2[t3].userUnit, rootDictionaryObjId: Qt2, resourceDictionaryObjId: te2 }));
Zt2(Qt2, true), lt2("<</Type /Pages");
var n2 = "/Kids [";
for (e3 = 0; e3 < Dt2; e3++) n2 += r3[e3] + " 0 R ";
lt2(n2 + "]"), lt2("/Count " + Dt2), lt2(">>"), lt2("endobj"), Tt2.publish("postPutPages");
}, se2 = function(t3) {
Tt2.publish("putFont", { font: t3, out: lt2, newObject: Xt2, putStream: ie2 }), true !== t3.isAlreadyPutted && (t3.objectNumber = Xt2(), lt2("<<"), lt2("/Type /Font"), lt2("/BaseFont /" + F$1(t3.postScriptName)), lt2("/Subtype /Type1"), "string" == typeof t3.encoding && lt2("/Encoding /" + t3.encoding), lt2("/FirstChar 32"), lt2("/LastChar 255"), lt2(">>"), lt2("endobj"));
}, ce2 = function() {
for (var t3 in Ft2) Ft2.hasOwnProperty(t3) && (false === v2 || true === v2 && b2.hasOwnProperty(t3)) && se2(Ft2[t3]);
}, ue2 = function(t3) {
t3.objectNumber = Xt2();
var e3 = [];
e3.push({ key: "Type", value: "/XObject" }), e3.push({ key: "Subtype", value: "/Form" }), e3.push({ key: "BBox", value: "[" + [O2(t3.x), O2(t3.y), O2(t3.x + t3.width), O2(t3.y + t3.height)].join(" ") + "]" }), e3.push({ key: "Matrix", value: "[" + t3.matrix.toString() + "]" });
var r3 = t3.pages[1].join("\n");
ie2({ data: r3, additionalKeyValues: e3, objectId: t3.objectNumber }), lt2("endobj");
}, he2 = function() {
for (var t3 in zt2) zt2.hasOwnProperty(t3) && ue2(zt2[t3]);
}, le2 = function(t3, e3) {
var r3, n2 = [], i3 = 1 / (e3 - 1);
for (r3 = 0; r3 < 1; r3 += i3) n2.push(r3);
if (n2.push(1), 0 != t3[0].offset) {
var a2 = { offset: 0, color: t3[0].color };
t3.unshift(a2);
}
if (1 != t3[t3.length - 1].offset) {
var o3 = { offset: 1, color: t3[t3.length - 1].color };
t3.push(o3);
}
for (var s3 = "", c3 = 0, u3 = 0; u3 < n2.length; u3++) {
for (r3 = n2[u3]; r3 > t3[c3 + 1].offset; ) c3++;
var h2 = t3[c3].offset, l2 = (r3 - h2) / (t3[c3 + 1].offset - h2), f2 = t3[c3].color, d3 = t3[c3 + 1].color;
s3 += tt2(Math.round((1 - l2) * f2[0] + l2 * d3[0]).toString(16)) + tt2(Math.round((1 - l2) * f2[1] + l2 * d3[1]).toString(16)) + tt2(Math.round((1 - l2) * f2[2] + l2 * d3[2]).toString(16));
}
return s3.trim();
}, fe2 = function(t3, e3) {
e3 || (e3 = 21);
var r3 = Xt2(), n2 = le2(t3.colors, e3), i3 = [];
i3.push({ key: "FunctionType", value: "0" }), i3.push({ key: "Domain", value: "[0.0 1.0]" }), i3.push({ key: "Size", value: "[" + e3 + "]" }), i3.push({ key: "BitsPerSample", value: "8" }), i3.push({ key: "Range", value: "[0.0 1.0 0.0 1.0 0.0 1.0]" }), i3.push({ key: "Decode", value: "[0.0 1.0 0.0 1.0 0.0 1.0]" }), ie2({ data: n2, additionalKeyValues: i3, alreadyAppliedFilters: ["/ASCIIHexDecode"], objectId: r3 }), lt2("endobj"), t3.objectNumber = Xt2(), lt2("<< /ShadingType " + t3.type), lt2("/ColorSpace /DeviceRGB");
var a2 = "/Coords [" + O2(parseFloat(t3.coords[0])) + " " + O2(parseFloat(t3.coords[1])) + " ";
2 === t3.type ? a2 += O2(parseFloat(t3.coords[2])) + " " + O2(parseFloat(t3.coords[3])) : a2 += O2(parseFloat(t3.coords[2])) + " " + O2(parseFloat(t3.coords[3])) + " " + O2(parseFloat(t3.coords[4])) + " " + O2(parseFloat(t3.coords[5])), lt2(a2 += "]"), t3.matrix && lt2("/Matrix [" + t3.matrix.toString() + "]"), lt2("/Function " + r3 + " 0 R"), lt2("/Extend [true true]"), lt2(">>"), lt2("endobj");
}, de2 = function(t3, e3) {
var r3 = Kt2(), n2 = Xt2();
e3.push({ resourcesOid: r3, objectOid: n2 }), t3.objectNumber = n2;
var i3 = [];
i3.push({ key: "Type", value: "/Pattern" }), i3.push({ key: "PatternType", value: "1" }), i3.push({ key: "PaintType", value: "1" }), i3.push({ key: "TilingType", value: "1" }), i3.push({ key: "BBox", value: "[" + t3.boundingBox.map(O2).join(" ") + "]" }), i3.push({ key: "XStep", value: O2(t3.xStep) }), i3.push({ key: "YStep", value: O2(t3.yStep) }), i3.push({ key: "Resources", value: r3 + " 0 R" }), t3.matrix && i3.push({ key: "Matrix", value: "[" + t3.matrix.toString() + "]" }), ie2({ data: t3.stream, additionalKeyValues: i3, objectId: t3.objectNumber }), lt2("endobj");
}, pe2 = function(t3) {
var e3;
for (e3 in Ot2) Ot2.hasOwnProperty(e3) && (Ot2[e3] instanceof B ? fe2(Ot2[e3]) : Ot2[e3] instanceof M && de2(Ot2[e3], t3));
}, ge2 = function(t3) {
for (var e3 in t3.objectNumber = Xt2(), lt2("<<"), t3) switch (e3) {
case "opacity":
lt2("/ca " + R2(t3[e3]));
break;
case "stroke-opacity":
lt2("/CA " + R2(t3[e3]));
}
lt2(">>"), lt2("endobj");
}, me2 = function() {
var t3;
for (t3 in Mt2) Mt2.hasOwnProperty(t3) && ge2(Mt2[t3]);
}, ve2 = function() {
for (var t3 in lt2("/XObject <<"), zt2) zt2.hasOwnProperty(t3) && zt2[t3].objectNumber >= 0 && lt2("/" + t3 + " " + zt2[t3].objectNumber + " 0 R");
Tt2.publish("putXobjectDict"), lt2(">>");
}, be2 = function() {
Ye.oid = Xt2(), lt2("<<"), lt2("/Filter /Standard"), lt2("/V " + Ye.v), lt2("/R " + Ye.r), lt2("/U <" + Ye.toHexString(Ye.U) + ">"), lt2("/O <" + Ye.toHexString(Ye.O) + ">"), lt2("/P " + Ye.P), lt2(">>"), lt2("endobj");
}, ye2 = function() {
for (var t3 in lt2("/Font <<"), Ft2) Ft2.hasOwnProperty(t3) && (false === v2 || true === v2 && b2.hasOwnProperty(t3)) && lt2("/" + t3 + " " + Ft2[t3].objectNumber + " 0 R");
lt2(">>");
}, we2 = function() {
if (Object.keys(Ot2).length > 0) {
for (var t3 in lt2("/Shading <<"), Ot2) Ot2.hasOwnProperty(t3) && Ot2[t3] instanceof B && Ot2[t3].objectNumber >= 0 && lt2("/" + t3 + " " + Ot2[t3].objectNumber + " 0 R");
Tt2.publish("putShadingPatternDict"), lt2(">>");
}
}, Ne2 = function(t3) {
if (Object.keys(Ot2).length > 0) {
for (var e3 in lt2("/Pattern <<"), Ot2) Ot2.hasOwnProperty(e3) && Ot2[e3] instanceof y2.TilingPattern && Ot2[e3].objectNumber >= 0 && Ot2[e3].objectNumber < t3 && lt2("/" + e3 + " " + Ot2[e3].objectNumber + " 0 R");
Tt2.publish("putTilingPatternDict"), lt2(">>");
}
}, Le2 = function() {
if (Object.keys(Mt2).length > 0) {
var t3;
for (t3 in lt2("/ExtGState <<"), Mt2) Mt2.hasOwnProperty(t3) && Mt2[t3].objectNumber >= 0 && lt2("/" + t3 + " " + Mt2[t3].objectNumber + " 0 R");
Tt2.publish("putGStateDict"), lt2(">>");
}
}, Ae = function(t3) {
Zt2(t3.resourcesOid, true), lt2("<<"), lt2("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"), ye2(), we2(), Ne2(t3.objectOid), Le2(), ve2(), lt2(">>"), lt2("endobj");
}, xe = function() {
var t3 = [];
ce2(), me2(), he2(), pe2(t3), Tt2.publish("putResources"), t3.forEach(Ae), Ae({ resourcesOid: te2, objectOid: Number.MAX_SAFE_INTEGER }), Tt2.publish("postPutResources");
}, Se = function() {
Tt2.publish("putAdditionalObjects");
for (var t3 = 0; t3 < at2.length; t3++) {
var e3 = at2[t3];
Zt2(e3.objId, true), lt2(e3.content), lt2("endobj");
}
Tt2.publish("postPutAdditionalObjects");
}, _e = function(t3) {
Ct2[t3.fontName] = Ct2[t3.fontName] || {}, Ct2[t3.fontName][t3.fontStyle] = t3.id;
}, Pe = function(t3, e3, r3, n2, i3) {
var a2 = { id: "F" + (Object.keys(Ft2).length + 1).toString(10), postScriptName: t3, fontName: e3, fontStyle: r3, encoding: n2, isStandardFont: i3 || false, metadata: {} };
return Tt2.publish("addFont", { font: a2, instance: this }), Ft2[a2.id] = a2, _e(a2), a2.id;
}, ke = function(t3) {
for (var e3 = 0, r3 = pt2.length; e3 < r3; e3++) {
var n2 = Pe.call(this, t3[e3][0], t3[e3][1], t3[e3][2], pt2[e3][3], true);
false === v2 && (b2[n2] = true);
var i3 = t3[e3][0].split("-");
_e({ id: n2, fontName: i3[0], fontStyle: i3[1] || "" });
}
Tt2.publish("addFonts", { fonts: Ft2, dictionary: Ct2 });
}, Ie = function(t3) {
return t3.foo = function() {
try {
return t3.apply(this, arguments);
} catch (t4) {
var e3 = t4.stack || "";
~e3.indexOf(" at ") && (e3 = e3.split(" at ")[1]);
var r3 = "Error in function " + e3.split("\n")[0].split("<")[0] + ": " + t4.message;
if (!n$1.console) throw new Error(r3);
n$1.console.error(r3, t4), n$1.alert && alert(r3);
}
}, t3.foo.bar = t3, t3.foo;
}, Fe = function(t3, e3) {
var r3, n2, i3, a2, o3, s3, c3, u3, h2;
if (i3 = (e3 = e3 || {}).sourceEncoding || "Unicode", o3 = e3.outputEncoding, (e3.autoencode || o3) && Ft2[St].metadata && Ft2[St].metadata[i3] && Ft2[St].metadata[i3].encoding && (a2 = Ft2[St].metadata[i3].encoding, !o3 && Ft2[St].encoding && (o3 = Ft2[St].encoding), !o3 && a2.codePages && (o3 = a2.codePages[0]), "string" == typeof o3 && (o3 = a2[o3]), o3)) {
for (c3 = false, s3 = [], r3 = 0, n2 = t3.length; r3 < n2; r3++) (u3 = o3[t3.charCodeAt(r3)]) ? s3.push(String.fromCharCode(u3)) : s3.push(t3[r3]), s3[r3].charCodeAt(0) >> 8 && (c3 = true);
t3 = s3.join("");
}
for (r3 = t3.length; void 0 === c3 && 0 !== r3; ) t3.charCodeAt(r3 - 1) >> 8 && (c3 = true), r3--;
if (!c3) return t3;
for (s3 = e3.noBOM ? [] : [254, 255], r3 = 0, n2 = t3.length; r3 < n2; r3++) {
if ((h2 = (u3 = t3.charCodeAt(r3)) >> 8) >> 8) throw new Error("Character at position " + r3 + " of string '" + t3 + "' exceeds 16bits. Cannot be encoded into UCS-2 BE");
s3.push(h2), s3.push(u3 - (h2 << 8));
}
return String.fromCharCode.apply(void 0, s3);
}, Ce = y2.__private__.pdfEscape = y2.pdfEscape = function(t3, e3) {
return Fe(t3, e3).replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)");
}, je = y2.__private__.beginPage = function(t3) {
ot2[++Dt2] = [], Rt2[Dt2] = { objId: 0, contentsObjId: 0, userUnit: Number(d2), artBox: null, bleedBox: null, cropBox: null, trimBox: null, mediaBox: { bottomLeftX: 0, bottomLeftY: 0, topRightX: Number(t3[0]), topRightY: Number(t3[1]) } }, Me(Dt2), ht2(ot2[$2]);
}, Oe = function(t3, e3) {
var r3, n2, o3;
switch (i2 = e3 || i2, "string" == typeof t3 && (r3 = A5(t3.toLowerCase()), Array.isArray(r3) && (n2 = r3[0], o3 = r3[1])), Array.isArray(t3) && (n2 = t3[0] * _t2, o3 = t3[1] * _t2), isNaN(n2) && (n2 = s2[0], o3 = s2[1]), (n2 > 14400 || o3 > 14400) && (a$2.warn("A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400"), n2 = Math.min(14400, n2), o3 = Math.min(14400, o3)), s2 = [n2, o3], i2.substr(0, 1)) {
case "l":
o3 > n2 && (s2 = [o3, n2]);
break;
case "p":
n2 > o3 && (s2 = [o3, n2]);
}
je(s2), pr(fr), lt2(Lr), 0 !== kr && lt2(kr + " J"), 0 !== Ir && lt2(Ir + " j"), Tt2.publish("addPage", { pageNumber: Dt2 });
}, Be = function(t3) {
t3 > 0 && t3 <= Dt2 && (ot2.splice(t3, 1), Rt2.splice(t3, 1), Dt2--, $2 > Dt2 && ($2 = Dt2), this.setPage($2));
}, Me = function(t3) {
t3 > 0 && t3 <= Dt2 && ($2 = t3);
}, Ee = y2.__private__.getNumberOfPages = y2.getNumberOfPages = function() {
return ot2.length - 1;
}, qe = function(t3, e3, r3) {
var n2, i3 = void 0;
return r3 = r3 || {}, t3 = void 0 !== t3 ? t3 : Ft2[St].fontName, e3 = void 0 !== e3 ? e3 : Ft2[St].fontStyle, n2 = t3.toLowerCase(), void 0 !== Ct2[n2] && void 0 !== Ct2[n2][e3] ? i3 = Ct2[n2][e3] : void 0 !== Ct2[t3] && void 0 !== Ct2[t3][e3] ? i3 = Ct2[t3][e3] : false === r3.disableWarning && a$2.warn("Unable to look up font label for font '" + t3 + "', '" + e3 + "'. Refer to getFontList() for available fonts."), i3 || r3.noFallback || null == (i3 = Ct2.times[e3]) && (i3 = Ct2.times.normal), i3;
}, De = y2.__private__.putInfo = function() {
var t3 = Xt2(), e3 = function(t4) {
return t4;
};
for (var r3 in null !== m2 && (e3 = Ye.encryptor(t3, 0)), lt2("<<"), lt2("/Producer (" + Ce(e3("jsPDF " + E$1.version)) + ")"), xt2) xt2.hasOwnProperty(r3) && xt2[r3] && lt2("/" + r3.substr(0, 1).toUpperCase() + r3.substr(1) + " (" + Ce(e3(xt2[r3])) + ")");
lt2("/CreationDate (" + Ce(e3(W2)) + ")"), lt2(">>"), lt2("endobj");
}, Re = y2.__private__.putCatalog = function(t3) {
var e3 = (t3 = t3 || {}).rootDictionaryObjId || Qt2;
switch (Xt2(), lt2("<<"), lt2("/Type /Catalog"), lt2("/Pages " + e3 + " 0 R"), mt2 || (mt2 = "fullwidth"), mt2) {
case "fullwidth":
lt2("/OpenAction [3 0 R /FitH null]");
break;
case "fullheight":
lt2("/OpenAction [3 0 R /FitV null]");
break;
case "fullpage":
lt2("/OpenAction [3 0 R /Fit]");
break;
case "original":
lt2("/OpenAction [3 0 R /XYZ null null 1]");
break;
default:
var r3 = "" + mt2;
"%" === r3.substr(r3.length - 1) && (mt2 = parseInt(mt2) / 100), "number" == typeof mt2 && lt2("/OpenAction [3 0 R /XYZ null null " + R2(mt2) + "]");
}
switch (Nt2 || (Nt2 = "continuous"), Nt2) {
case "continuous":
lt2("/PageLayout /OneColumn");
break;
case "single":
lt2("/PageLayout /SinglePage");
break;
case "two":
case "twoleft":
lt2("/PageLayout /TwoColumnLeft");
break;
case "tworight":
lt2("/PageLayout /TwoColumnRight");
}
yt2 && lt2("/PageMode /" + yt2), Tt2.publish("putCatalog"), lt2(">>"), lt2("endobj");
}, Te = y2.__private__.putTrailer = function() {
lt2("trailer"), lt2("<<"), lt2("/Size " + (et2 + 1)), lt2("/Root " + et2 + " 0 R"), lt2("/Info " + (et2 - 1) + " 0 R"), null !== m2 && lt2("/Encrypt " + Ye.oid + " 0 R"), lt2("/ID [ <" + V2 + "> <" + V2 + "> ]"), lt2(">>");
}, Ue = y2.__private__.putHeader = function() {
lt2("%PDF-" + w2), lt2("%ºß¬à");
}, ze = y2.__private__.putXRef = function() {
var t3 = "0000000000";
lt2("xref"), lt2("0 " + (et2 + 1)), lt2("0000000000 65535 f ");
for (var e3 = 1; e3 <= et2; e3++) {
"function" == typeof rt2[e3] ? lt2((t3 + rt2[e3]()).slice(-10) + " 00000 n ") : void 0 !== rt2[e3] ? lt2((t3 + rt2[e3]).slice(-10) + " 00000 n ") : lt2("0000000000 00000 n ");
}
}, He = y2.__private__.buildDocument = function() {
ut2(), ht2(nt2), Tt2.publish("buildDocument"), Ue(), oe2(), Se(), xe(), null !== m2 && be2(), De(), Re();
var t3 = it2;
return ze(), Te(), lt2("startxref"), lt2("" + t3), lt2("%%EOF"), ht2(ot2[$2]), nt2.join("\n");
}, We = y2.__private__.getBlob = function(t3) {
return new Blob([dt2(t3)], { type: "application/pdf" });
}, Ve = y2.output = y2.__private__.output = Ie(function(t3, e3) {
switch ("string" == typeof (e3 = e3 || {}) ? e3 = { filename: e3 } : e3.filename = e3.filename || "generated.pdf", t3) {
case void 0:
return He();
case "save":
y2.save(e3.filename);
break;
case "arraybuffer":
return dt2(He());
case "blob":
return We(He());
case "bloburi":
case "bloburl":
if (void 0 !== n$1.URL && "function" == typeof n$1.URL.createObjectURL) return n$1.URL && n$1.URL.createObjectURL(We(He())) || void 0;
a$2.warn("bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.");
break;
case "datauristring":
case "dataurlstring":
var r3 = "", i3 = He();
try {
r3 = h$1(i3);
} catch (t4) {
r3 = h$1(unescape(encodeURIComponent(i3)));
}
return "data:application/pdf;filename=" + e3.filename + ";base64," + r3;
case "pdfobjectnewwindow":
if ("[object Window]" === Object.prototype.toString.call(n$1)) {
var o3 = "https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js", s3 = ' integrity="sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==" crossorigin="anonymous"';
e3.pdfObjectUrl && (o3 = e3.pdfObjectUrl, s3 = "");
var c3 = '<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><script src="' + o3 + '"' + s3 + '><\/script><script >PDFObject.embed("' + this.output("dataurlstring") + '", ' + JSON.stringify(e3) + ");<\/script></body></html>", u3 = n$1.open();
return null !== u3 && u3.document.write(c3), u3;
}
throw new Error("The option pdfobjectnewwindow just works in a browser-environment.");
case "pdfjsnewwindow":
if ("[object Window]" === Object.prototype.toString.call(n$1)) {
var l2 = '<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><iframe id="pdfViewer" src="' + (e3.pdfJsUrl || "examples/PDF.js/web/viewer.html") + "?file=&downloadName=" + e3.filename + '" width="500px" height="400px" /></body></html>', f2 = n$1.open();
if (null !== f2) {
f2.document.write(l2);
var d3 = this;
f2.document.documentElement.querySelector("#pdfViewer").onload = function() {
f2.document.title = e3.filename, f2.document.documentElement.querySelector("#pdfViewer").contentWindow.PDFViewerApplication.open(d3.output("bloburl"));
};
}
return f2;
}
throw new Error("The option pdfjsnewwindow just works in a browser-environment.");
case "dataurlnewwindow":
if ("[object Window]" !== Object.prototype.toString.call(n$1)) throw new Error("The option dataurlnewwindow just works in a browser-environment.");
var p3 = '<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><iframe src="' + this.output("datauristring", e3) + '"></iframe></body></html>', g3 = n$1.open();
if (null !== g3 && (g3.document.write(p3), g3.document.title = e3.filename), g3 || "undefined" == typeof safari) return g3;
break;
case "datauri":
case "dataurl":
return n$1.document.location.href = this.output("datauristring", e3);
default:
return null;
}
}), Ge = function(t3) {
return true === Array.isArray(Ut2) && Ut2.indexOf(t3) > -1;
};
switch (o2) {
case "pt":
_t2 = 1;
break;
case "mm":
_t2 = 72 / 25.4;
break;
case "cm":
_t2 = 72 / 2.54;
break;
case "in":
_t2 = 72;
break;
case "px":
_t2 = 1 == Ge("px_scaling") ? 0.75 : 96 / 72;
break;
case "pc":
case "em":
_t2 = 12;
break;
case "ex":
_t2 = 6;
break;
default:
if ("number" != typeof o2) throw new Error("Invalid unit: " + o2);
_t2 = o2;
}
var Ye = null;
K2(), Y2();
var Je = function(t3) {
return null !== m2 ? Ye.encryptor(t3, 0) : function(t4) {
return t4;
};
}, Xe = y2.__private__.getPageInfo = y2.getPageInfo = function(t3) {
if (isNaN(t3) || t3 % 1 != 0) throw new Error("Invalid argument passed to jsPDF.getPageInfo");
return { objId: Rt2[t3].objId, pageNumber: t3, pageContext: Rt2[t3] };
}, Ke = y2.__private__.getPageInfoByObjId = function(t3) {
if (isNaN(t3) || t3 % 1 != 0) throw new Error("Invalid argument passed to jsPDF.getPageInfoByObjId");
for (var e3 in Rt2) if (Rt2[e3].objId === t3) break;
return Xe(e3);
}, Ze = y2.__private__.getCurrentPageInfo = y2.getCurrentPageInfo = function() {
return { objId: Rt2[$2].objId, pageNumber: $2, pageContext: Rt2[$2] };
};
y2.addPage = function() {
return Oe.apply(this, arguments), this;
}, y2.setPage = function() {
return Me.apply(this, arguments), ht2.call(this, ot2[$2]), this;
}, y2.insertPage = function(t3) {
return this.addPage(), this.movePage($2, t3), this;
}, y2.movePage = function(t3, e3) {
var r3, n2;
if (t3 > e3) {
r3 = ot2[t3], n2 = Rt2[t3];
for (var i3 = t3; i3 > e3; i3--) ot2[i3] = ot2[i3 - 1], Rt2[i3] = Rt2[i3 - 1];
ot2[e3] = r3, Rt2[e3] = n2, this.setPage(e3);
} else if (t3 < e3) {
r3 = ot2[t3], n2 = Rt2[t3];
for (var a2 = t3; a2 < e3; a2++) ot2[a2] = ot2[a2 + 1], Rt2[a2] = Rt2[a2 + 1];
ot2[e3] = r3, Rt2[e3] = n2, this.setPage(e3);
}
return this;
}, y2.deletePage = function() {
return Be.apply(this, arguments), this;
}, y2.__private__.text = y2.text = function(e3, r3, n2, i3, a2) {
var o3, s3, c3, u3, h2, l2, f2, d3, p3, g3 = (i3 = i3 || {}).scope || this;
if ("number" == typeof e3 && "number" == typeof r3 && ("string" == typeof n2 || Array.isArray(n2))) {
var m3 = n2;
n2 = r3, r3 = e3, e3 = m3;
}
if (arguments[3] instanceof Vt2 == false ? (c3 = arguments[4], u3 = arguments[5], "object" === _typeof$2(f2 = arguments[3]) && null !== f2 || ("string" == typeof c3 && (u3 = c3, c3 = null), "string" == typeof f2 && (u3 = f2, f2 = null), "number" == typeof f2 && (c3 = f2, f2 = null), i3 = { flags: f2, angle: c3, align: u3 })) : (q2("The transform parameter of text() with a Matrix value"), p3 = a2), isNaN(r3) || isNaN(n2) || null == e3) throw new Error("Invalid arguments passed to jsPDF.text");
if (0 === e3.length) return g3;
var v3 = "", y3 = false, w3 = "number" == typeof i3.lineHeightFactor ? i3.lineHeightFactor : lr, N3 = g3.internal.scaleFactor;
function L3(t3) {
return t3 = t3.split(" ").join(Array(i3.TabLen || 9).join(" ")), Ce(t3, f2);
}
function A6(t3) {
for (var e4, r4 = t3.concat(), n3 = [], i4 = r4.length; i4--; ) "string" == typeof (e4 = r4.shift()) ? n3.push(e4) : Array.isArray(t3) && (1 === e4.length || void 0 === e4[1] && void 0 === e4[2]) ? n3.push(e4[0]) : n3.push([e4[0], e4[1], e4[2]]);
return n3;
}
function _3(t3, e4) {
var r4;
if ("string" == typeof t3) r4 = e4(t3)[0];
else if (Array.isArray(t3)) {
for (var n3, i4, a3 = t3.concat(), o4 = [], s4 = a3.length; s4--; ) "string" == typeof (n3 = a3.shift()) ? o4.push(e4(n3)[0]) : Array.isArray(n3) && "string" == typeof n3[0] && (i4 = e4(n3[0], n3[1], n3[2]), o4.push([i4[0], i4[1], i4[2]]));
r4 = o4;
}
return r4;
}
var P3 = false, k3 = true;
if ("string" == typeof e3) P3 = true;
else if (Array.isArray(e3)) {
var I2 = e3.concat();
s3 = [];
for (var F2, C2 = I2.length; C2--; ) ("string" != typeof (F2 = I2.shift()) || Array.isArray(F2) && "string" != typeof F2[0]) && (k3 = false);
P3 = k3;
}
if (false === P3) throw new Error('Type of text must be string or Array. "' + e3 + '" is not recognized.');
"string" == typeof e3 && (e3 = e3.match(/[\r?\n]/) ? e3.split(/\r\n|\r|\n/g) : [e3]);
var j2 = gt2 / g3.internal.scaleFactor, B3 = j2 * (w3 - 1);
switch (i3.baseline) {
case "bottom":
n2 -= B3;
break;
case "top":
n2 += j2 - B3;
break;
case "hanging":
n2 += j2 - 2 * B3;
break;
case "middle":
n2 += j2 / 2 - B3;
}
if ((l2 = i3.maxWidth || 0) > 0 && ("string" == typeof e3 ? e3 = g3.splitTextToSize(e3, l2) : "[object Array]" === Object.prototype.toString.call(e3) && (e3 = e3.reduce(function(t3, e4) {
return t3.concat(g3.splitTextToSize(e4, l2));
}, []))), o3 = { text: e3, x: r3, y: n2, options: i3, mutex: { pdfEscape: Ce, activeFontKey: St, fonts: Ft2, activeFontSize: gt2 } }, Tt2.publish("preProcessText", o3), e3 = o3.text, c3 = (i3 = o3.options).angle, p3 instanceof Vt2 == false && c3 && "number" == typeof c3) {
c3 *= Math.PI / 180, 0 === i3.rotationDirection && (c3 = -c3), S2 === x2.ADVANCED && (c3 = -c3);
var M2 = Math.cos(c3), E2 = Math.sin(c3);
p3 = new Vt2(M2, E2, -E2, M2, 0, 0);
} else c3 && c3 instanceof Vt2 && (p3 = c3);
S2 !== x2.ADVANCED || p3 || (p3 = Yt2), void 0 !== (h2 = i3.charSpace || _r) && (v3 += O2(U2(h2)) + " Tc\n", this.setCharSpace(this.getCharSpace() || 0)), void 0 !== (d3 = i3.horizontalScale) && (v3 += O2(100 * d3) + " Tz\n");
i3.lang;
var D3 = -1, R3 = void 0 !== i3.renderingMode ? i3.renderingMode : i3.stroke, T3 = g3.internal.getCurrentPageInfo().pageContext;
switch (R3) {
case 0:
case false:
case "fill":
D3 = 0;
break;
case 1:
case true:
case "stroke":
D3 = 1;
break;
case 2:
case "fillThenStroke":
D3 = 2;
break;
case 3:
case "invisible":
D3 = 3;
break;
case 4:
case "fillAndAddForClipping":
D3 = 4;
break;
case 5:
case "strokeAndAddPathForClipping":
D3 = 5;
break;
case 6:
case "fillThenStrokeAndAddToPathForClipping":
D3 = 6;
break;
case 7:
case "addToPathForClipping":
D3 = 7;
}
var z3 = void 0 !== T3.usedRenderingMode ? T3.usedRenderingMode : -1;
-1 !== D3 ? v3 += D3 + " Tr\n" : -1 !== z3 && (v3 += "0 Tr\n"), -1 !== D3 && (T3.usedRenderingMode = D3), u3 = i3.align || "left";
var H5, W3 = gt2 * w3, V3 = g3.internal.pageSize.getWidth(), G3 = Ft2[St];
h2 = i3.charSpace || _r, l2 = i3.maxWidth || 0, f2 = Object.assign({ autoencode: true, noBOM: true }, i3.flags);
var Y3 = [], J3 = function(t3) {
return g3.getStringUnitWidth(t3, { font: G3, charSpace: h2, fontSize: gt2, doKerning: false }) * gt2 / N3;
};
if ("[object Array]" === Object.prototype.toString.call(e3)) {
var X3;
s3 = A6(e3), "left" !== u3 && (H5 = s3.map(J3));
var K3, Z3 = 0;
if ("right" === u3) {
r3 -= H5[0], e3 = [], C2 = s3.length;
for (var $3 = 0; $3 < C2; $3++) 0 === $3 ? (K3 = br(r3), X3 = yr(n2)) : (K3 = U2(Z3 - H5[$3]), X3 = -W3), e3.push([s3[$3], K3, X3]), Z3 = H5[$3];
} else if ("center" === u3) {
r3 -= H5[0] / 2, e3 = [], C2 = s3.length;
for (var Q3 = 0; Q3 < C2; Q3++) 0 === Q3 ? (K3 = br(r3), X3 = yr(n2)) : (K3 = U2((Z3 - H5[Q3]) / 2), X3 = -W3), e3.push([s3[Q3], K3, X3]), Z3 = H5[Q3];
} else if ("left" === u3) {
e3 = [], C2 = s3.length;
for (var tt3 = 0; tt3 < C2; tt3++) e3.push(s3[tt3]);
} else if ("justify" === u3 && "Identity-H" === G3.encoding) {
e3 = [], C2 = s3.length, l2 = 0 !== l2 ? l2 : V3;
for (var et3 = 0, rt3 = 0; rt3 < C2; rt3++) if (X3 = 0 === rt3 ? yr(n2) : -W3, K3 = 0 === rt3 ? br(r3) : et3, rt3 < C2 - 1) {
var nt3 = U2((l2 - H5[rt3]) / (s3[rt3].split(" ").length - 1)), it3 = s3[rt3].split(" ");
e3.push([it3[0] + " ", K3, X3]), et3 = 0;
for (var at3 = 1; at3 < it3.length; at3++) {
var ot3 = (J3(it3[at3 - 1] + " " + it3[at3]) - J3(it3[at3])) * N3 + nt3;
at3 == it3.length - 1 ? e3.push([it3[at3], ot3, 0]) : e3.push([it3[at3] + " ", ot3, 0]), et3 -= ot3;
}
} else e3.push([s3[rt3], K3, X3]);
e3.push(["", et3, 0]);
} else {
if ("justify" !== u3) throw new Error('Unrecognized alignment option, use "left", "center", "right" or "justify".');
e3 = [], C2 = s3.length, l2 = 0 !== l2 ? l2 : V3;
for (rt3 = 0; rt3 < C2; rt3++) X3 = 0 === rt3 ? yr(n2) : -W3, K3 = 0 === rt3 ? br(r3) : 0, rt3 < C2 - 1 ? Y3.push(O2(U2((l2 - H5[rt3]) / (s3[rt3].split(" ").length - 1)))) : Y3.push(0), e3.push([s3[rt3], K3, X3]);
}
}
var st3 = "boolean" == typeof i3.R2L ? i3.R2L : bt2;
true === st3 && (e3 = _3(e3, function(t3, e4, r4) {
return [t3.split("").reverse().join(""), e4, r4];
})), o3 = { text: e3, x: r3, y: n2, options: i3, mutex: { pdfEscape: Ce, activeFontKey: St, fonts: Ft2, activeFontSize: gt2 } }, Tt2.publish("postProcessText", o3), e3 = o3.text, y3 = o3.mutex.isHex || false;
var ct3 = Ft2[St].encoding;
"WinAnsiEncoding" !== ct3 && "StandardEncoding" !== ct3 || (e3 = _3(e3, function(t3, e4, r4) {
return [L3(t3), e4, r4];
})), s3 = A6(e3), e3 = [];
for (var ut3, ht3, ft3, dt3 = 0, pt3 = 1, mt3 = Array.isArray(s3[0]) ? pt3 : dt3, vt3 = "", yt3 = function(t3, e4, r4) {
var n3 = "";
return r4 instanceof Vt2 ? (r4 = "number" == typeof i3.angle ? Gt2(r4, new Vt2(1, 0, 0, 1, t3, e4)) : Gt2(new Vt2(1, 0, 0, 1, t3, e4), r4), S2 === x2.ADVANCED && (r4 = Gt2(new Vt2(1, 0, 0, -1, 0, 0), r4)), n3 = r4.join(" ") + " Tm\n") : n3 = O2(t3) + " " + O2(e4) + " Td\n", n3;
}, wt3 = 0; wt3 < s3.length; wt3++) {
switch (vt3 = "", mt3) {
case pt3:
ft3 = (y3 ? "<" : "(") + s3[wt3][0] + (y3 ? ">" : ")"), ut3 = parseFloat(s3[wt3][1]), ht3 = parseFloat(s3[wt3][2]);
break;
case dt3:
ft3 = (y3 ? "<" : "(") + s3[wt3] + (y3 ? ">" : ")"), ut3 = br(r3), ht3 = yr(n2);
}
void 0 !== Y3 && void 0 !== Y3[wt3] && (vt3 = Y3[wt3] + " Tw\n"), 0 === wt3 ? e3.push(vt3 + yt3(ut3, ht3, p3) + ft3) : mt3 === dt3 ? e3.push(vt3 + ft3) : mt3 === pt3 && e3.push(vt3 + yt3(ut3, ht3, p3) + ft3);
}
e3 = mt3 === dt3 ? e3.join(" Tj\nT* ") : e3.join(" Tj\n"), e3 += " Tj\n";
var Nt3 = "BT\n/";
return Nt3 += St + " " + gt2 + " Tf\n", Nt3 += O2(gt2 * w3) + " TL\n", Nt3 += xr + "\n", Nt3 += v3, Nt3 += e3, lt2(Nt3 += "ET"), b2[St] = true, g3;
};
var $e = y2.__private__.clip = y2.clip = function(t3) {
return lt2("evenodd" === t3 ? "W*" : "W"), this;
};
y2.clipEvenOdd = function() {
return $e("evenodd");
}, y2.__private__.discardPath = y2.discardPath = function() {
return lt2("n"), this;
};
var Qe = y2.__private__.isValidStyle = function(t3) {
var e3 = false;
return -1 !== [void 0, null, "S", "D", "F", "DF", "FD", "f", "f*", "B", "B*", "n"].indexOf(t3) && (e3 = true), e3;
};
y2.__private__.setDefaultPathOperation = y2.setDefaultPathOperation = function(t3) {
return Qe(t3) && (g2 = t3), this;
};
var tr = y2.__private__.getStyle = y2.getStyle = function(t3) {
var e3 = g2;
switch (t3) {
case "D":
case "S":
e3 = "S";
break;
case "F":
e3 = "f";
break;
case "FD":
case "DF":
e3 = "B";
break;
case "f":
case "f*":
case "B":
case "B*":
e3 = t3;
}
return e3;
}, er = y2.close = function() {
return lt2("h"), this;
};
y2.stroke = function() {
return lt2("S"), this;
}, y2.fill = function(t3) {
return rr("f", t3), this;
}, y2.fillEvenOdd = function(t3) {
return rr("f*", t3), this;
}, y2.fillStroke = function(t3) {
return rr("B", t3), this;
}, y2.fillStrokeEvenOdd = function(t3) {
return rr("B*", t3), this;
};
var rr = function(e3, r3) {
"object" === _typeof$2(r3) ? ar(r3, e3) : lt2(e3);
}, nr = function(t3) {
null === t3 || S2 === x2.ADVANCED && void 0 === t3 || (t3 = tr(t3), lt2(t3));
};
function ir(t3, e3, r3, n2, i3) {
var a2 = new M(e3 || this.boundingBox, r3 || this.xStep, n2 || this.yStep, this.gState, i3 || this.matrix);
a2.stream = this.stream;
var o3 = t3 + "$$" + this.cloneIndex++ + "$$";
return Jt2(o3, a2), a2;
}
var ar = function(t3, e3) {
var r3 = Bt2[t3.key], n2 = Ot2[r3];
if (n2 instanceof B) lt2("q"), lt2(or(e3)), n2.gState && y2.setGState(n2.gState), lt2(t3.matrix.toString() + " cm"), lt2("/" + r3 + " sh"), lt2("Q");
else if (n2 instanceof M) {
var i3 = new Vt2(1, 0, 0, -1, 0, Rr());
t3.matrix && (i3 = i3.multiply(t3.matrix || Yt2), r3 = ir.call(n2, t3.key, t3.boundingBox, t3.xStep, t3.yStep, i3).id), lt2("q"), lt2("/Pattern cs"), lt2("/" + r3 + " scn"), n2.gState && y2.setGState(n2.gState), lt2(e3), lt2("Q");
}
}, or = function(t3) {
switch (t3) {
case "f":
case "F":
return "W n";
case "f*":
return "W* n";
case "B":
return "W S";
case "B*":
return "W* S";
case "S":
return "W S";
case "n":
return "W n";
}
}, sr = y2.moveTo = function(t3, e3) {
return lt2(O2(U2(t3)) + " " + O2(H4(e3)) + " m"), this;
}, cr = y2.lineTo = function(t3, e3) {
return lt2(O2(U2(t3)) + " " + O2(H4(e3)) + " l"), this;
}, ur = y2.curveTo = function(t3, e3, r3, n2, i3, a2) {
return lt2([O2(U2(t3)), O2(H4(e3)), O2(U2(r3)), O2(H4(n2)), O2(U2(i3)), O2(H4(a2)), "c"].join(" ")), this;
};
y2.__private__.line = y2.line = function(t3, e3, r3, n2, i3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n2) || !Qe(i3)) throw new Error("Invalid arguments passed to jsPDF.line");
return S2 === x2.COMPAT ? this.lines([[r3 - t3, n2 - e3]], t3, e3, [1, 1], i3 || "S") : this.lines([[r3 - t3, n2 - e3]], t3, e3, [1, 1]).stroke();
}, y2.__private__.lines = y2.lines = function(t3, e3, r3, n2, i3, a2) {
var o3, s3, c3, u3, h2, l2, f2, d3, p3, g3, m3, v3;
if ("number" == typeof t3 && (v3 = r3, r3 = e3, e3 = t3, t3 = v3), n2 = n2 || [1, 1], a2 = a2 || false, isNaN(e3) || isNaN(r3) || !Array.isArray(t3) || !Array.isArray(n2) || !Qe(i3) || "boolean" != typeof a2) throw new Error("Invalid arguments passed to jsPDF.lines");
for (sr(e3, r3), o3 = n2[0], s3 = n2[1], u3 = t3.length, g3 = e3, m3 = r3, c3 = 0; c3 < u3; c3++) 2 === (h2 = t3[c3]).length ? (g3 = h2[0] * o3 + g3, m3 = h2[1] * s3 + m3, cr(g3, m3)) : (l2 = h2[0] * o3 + g3, f2 = h2[1] * s3 + m3, d3 = h2[2] * o3 + g3, p3 = h2[3] * s3 + m3, g3 = h2[4] * o3 + g3, m3 = h2[5] * s3 + m3, ur(l2, f2, d3, p3, g3, m3));
return a2 && er(), nr(i3), this;
}, y2.path = function(t3) {
for (var e3 = 0; e3 < t3.length; e3++) {
var r3 = t3[e3], n2 = r3.c;
switch (r3.op) {
case "m":
sr(n2[0], n2[1]);
break;
case "l":
cr(n2[0], n2[1]);
break;
case "c":
ur.apply(this, n2);
break;
case "h":
er();
}
}
return this;
}, y2.__private__.rect = y2.rect = function(t3, e3, r3, n2, i3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n2) || !Qe(i3)) throw new Error("Invalid arguments passed to jsPDF.rect");
return S2 === x2.COMPAT && (n2 = -n2), lt2([O2(U2(t3)), O2(H4(e3)), O2(U2(r3)), O2(U2(n2)), "re"].join(" ")), nr(i3), this;
}, y2.__private__.triangle = y2.triangle = function(t3, e3, r3, n2, i3, a2, o3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n2) || isNaN(i3) || isNaN(a2) || !Qe(o3)) throw new Error("Invalid arguments passed to jsPDF.triangle");
return this.lines([[r3 - t3, n2 - e3], [i3 - r3, a2 - n2], [t3 - i3, e3 - a2]], t3, e3, [1, 1], o3, true), this;
}, y2.__private__.roundedRect = y2.roundedRect = function(t3, e3, r3, n2, i3, a2, o3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n2) || isNaN(i3) || isNaN(a2) || !Qe(o3)) throw new Error("Invalid arguments passed to jsPDF.roundedRect");
var s3 = 4 / 3 * (Math.SQRT2 - 1);
return i3 = Math.min(i3, 0.5 * r3), a2 = Math.min(a2, 0.5 * n2), this.lines([[r3 - 2 * i3, 0], [i3 * s3, 0, i3, a2 - a2 * s3, i3, a2], [0, n2 - 2 * a2], [0, a2 * s3, -i3 * s3, a2, -i3, a2], [2 * i3 - r3, 0], [-i3 * s3, 0, -i3, -a2 * s3, -i3, -a2], [0, 2 * a2 - n2], [0, -a2 * s3, i3 * s3, -a2, i3, -a2]], t3 + i3, e3, [1, 1], o3, true), this;
}, y2.__private__.ellipse = y2.ellipse = function(t3, e3, r3, n2, i3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n2) || !Qe(i3)) throw new Error("Invalid arguments passed to jsPDF.ellipse");
var a2 = 4 / 3 * (Math.SQRT2 - 1) * r3, o3 = 4 / 3 * (Math.SQRT2 - 1) * n2;
return sr(t3 + r3, e3), ur(t3 + r3, e3 - o3, t3 + a2, e3 - n2, t3, e3 - n2), ur(t3 - a2, e3 - n2, t3 - r3, e3 - o3, t3 - r3, e3), ur(t3 - r3, e3 + o3, t3 - a2, e3 + n2, t3, e3 + n2), ur(t3 + a2, e3 + n2, t3 + r3, e3 + o3, t3 + r3, e3), nr(i3), this;
}, y2.__private__.circle = y2.circle = function(t3, e3, r3, n2) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || !Qe(n2)) throw new Error("Invalid arguments passed to jsPDF.circle");
return this.ellipse(t3, e3, r3, r3, n2);
}, y2.setFont = function(t3, e3, r3) {
return r3 && (e3 = k2(e3, r3)), St = qe(t3, e3, { disableWarning: false }), this;
};
var hr = y2.__private__.getFont = y2.getFont = function() {
return Ft2[qe.apply(y2, arguments)];
};
y2.__private__.getFontList = y2.getFontList = function() {
var t3, e3, r3 = {};
for (t3 in Ct2) if (Ct2.hasOwnProperty(t3)) for (e3 in r3[t3] = [], Ct2[t3]) Ct2[t3].hasOwnProperty(e3) && r3[t3].push(e3);
return r3;
}, y2.addFont = function(t3, e3, r3, n2, i3) {
var a2 = ["StandardEncoding", "MacRomanEncoding", "Identity-H", "WinAnsiEncoding"];
return arguments[3] && -1 !== a2.indexOf(arguments[3]) ? i3 = arguments[3] : arguments[3] && -1 == a2.indexOf(arguments[3]) && (r3 = k2(r3, n2)), i3 = i3 || "Identity-H", Pe.call(this, t3, e3, r3, i3);
};
var lr, fr = e2.lineWidth || 0.200025, dr = y2.__private__.getLineWidth = y2.getLineWidth = function() {
return fr;
}, pr = y2.__private__.setLineWidth = y2.setLineWidth = function(t3) {
return fr = t3, lt2(O2(U2(t3)) + " w"), this;
};
y2.__private__.setLineDash = E$1.API.setLineDash = E$1.API.setLineDashPattern = function(t3, e3) {
if (t3 = t3 || [], e3 = e3 || 0, isNaN(e3) || !Array.isArray(t3)) throw new Error("Invalid arguments passed to jsPDF.setLineDash");
return t3 = t3.map(function(t4) {
return O2(U2(t4));
}).join(" "), e3 = O2(U2(e3)), lt2("[" + t3 + "] " + e3 + " d"), this;
};
var gr = y2.__private__.getLineHeight = y2.getLineHeight = function() {
return gt2 * lr;
};
y2.__private__.getLineHeight = y2.getLineHeight = function() {
return gt2 * lr;
};
var mr = y2.__private__.setLineHeightFactor = y2.setLineHeightFactor = function(t3) {
return "number" == typeof (t3 = t3 || 1.15) && (lr = t3), this;
}, vr = y2.__private__.getLineHeightFactor = y2.getLineHeightFactor = function() {
return lr;
};
mr(e2.lineHeight);
var br = y2.__private__.getHorizontalCoordinate = function(t3) {
return U2(t3);
}, yr = y2.__private__.getVerticalCoordinate = function(t3) {
return S2 === x2.ADVANCED ? t3 : Rt2[$2].mediaBox.topRightY - Rt2[$2].mediaBox.bottomLeftY - U2(t3);
}, wr = y2.__private__.getHorizontalCoordinateString = y2.getHorizontalCoordinateString = function(t3) {
return O2(br(t3));
}, Nr = y2.__private__.getVerticalCoordinateString = y2.getVerticalCoordinateString = function(t3) {
return O2(yr(t3));
}, Lr = e2.strokeColor || "0 G";
y2.__private__.getStrokeColor = y2.getDrawColor = function() {
return ee2(Lr);
}, y2.__private__.setStrokeColor = y2.setDrawColor = function(t3, e3, r3, n2) {
return Lr = re2({ ch1: t3, ch2: e3, ch3: r3, ch4: n2, pdfColorType: "draw", precision: 2 }), lt2(Lr), this;
};
var Ar = e2.fillColor || "0 g";
y2.__private__.getFillColor = y2.getFillColor = function() {
return ee2(Ar);
}, y2.__private__.setFillColor = y2.setFillColor = function(t3, e3, r3, n2) {
return Ar = re2({ ch1: t3, ch2: e3, ch3: r3, ch4: n2, pdfColorType: "fill", precision: 2 }), lt2(Ar), this;
};
var xr = e2.textColor || "0 g", Sr = y2.__private__.getTextColor = y2.getTextColor = function() {
return ee2(xr);
};
y2.__private__.setTextColor = y2.setTextColor = function(t3, e3, r3, n2) {
return xr = re2({ ch1: t3, ch2: e3, ch3: r3, ch4: n2, pdfColorType: "text", precision: 3 }), this;
};
var _r = e2.charSpace, Pr = y2.__private__.getCharSpace = y2.getCharSpace = function() {
return parseFloat(_r || 0);
};
y2.__private__.setCharSpace = y2.setCharSpace = function(t3) {
if (isNaN(t3)) throw new Error("Invalid argument passed to jsPDF.setCharSpace");
return _r = t3, this;
};
var kr = 0;
y2.CapJoinStyles = { 0: 0, butt: 0, but: 0, miter: 0, 1: 1, round: 1, rounded: 1, circle: 1, 2: 2, projecting: 2, project: 2, square: 2, bevel: 2 }, y2.__private__.setLineCap = y2.setLineCap = function(t3) {
var e3 = y2.CapJoinStyles[t3];
if (void 0 === e3) throw new Error("Line cap style of '" + t3 + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
return kr = e3, lt2(e3 + " J"), this;
};
var Ir = 0;
y2.__private__.setLineJoin = y2.setLineJoin = function(t3) {
var e3 = y2.CapJoinStyles[t3];
if (void 0 === e3) throw new Error("Line join style of '" + t3 + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
return Ir = e3, lt2(e3 + " j"), this;
}, y2.__private__.setLineMiterLimit = y2.__private__.setMiterLimit = y2.setLineMiterLimit = y2.setMiterLimit = function(t3) {
if (t3 = t3 || 0, isNaN(t3)) throw new Error("Invalid argument passed to jsPDF.setLineMiterLimit");
return lt2(O2(U2(t3)) + " M"), this;
}, y2.GState = j, y2.setGState = function(t3) {
(t3 = "string" == typeof t3 ? Mt2[Et2[t3]] : Fr(null, t3)).equals(qt2) || (lt2("/" + t3.id + " gs"), qt2 = t3);
};
var Fr = function(t3, e3) {
if (!t3 || !Et2[t3]) {
var r3 = false;
for (var n2 in Mt2) if (Mt2.hasOwnProperty(n2) && Mt2[n2].equals(e3)) {
r3 = true;
break;
}
if (r3) e3 = Mt2[n2];
else {
var i3 = "GS" + (Object.keys(Mt2).length + 1).toString(10);
Mt2[i3] = e3, e3.id = i3;
}
return t3 && (Et2[t3] = e3.id), Tt2.publish("addGState", e3), e3;
}
};
y2.addGState = function(t3, e3) {
return Fr(t3, e3), this;
}, y2.saveGraphicsState = function() {
return lt2("q"), jt2.push({ key: St, size: gt2, color: xr }), this;
}, y2.restoreGraphicsState = function() {
lt2("Q");
var t3 = jt2.pop();
return St = t3.key, gt2 = t3.size, xr = t3.color, qt2 = null, this;
}, y2.setCurrentTransformationMatrix = function(t3) {
return lt2(t3.toString() + " cm"), this;
}, y2.comment = function(t3) {
return lt2("#" + t3), this;
};
var Cr = function(t3, e3) {
var r3 = t3 || 0;
Object.defineProperty(this, "x", { enumerable: true, get: function() {
return r3;
}, set: function(t4) {
isNaN(t4) || (r3 = parseFloat(t4));
} });
var n2 = e3 || 0;
Object.defineProperty(this, "y", { enumerable: true, get: function() {
return n2;
}, set: function(t4) {
isNaN(t4) || (n2 = parseFloat(t4));
} });
var i3 = "pt";
return Object.defineProperty(this, "type", { enumerable: true, get: function() {
return i3;
}, set: function(t4) {
i3 = t4.toString();
} }), this;
}, jr = function(t3, e3, r3, n2) {
Cr.call(this, t3, e3), this.type = "rect";
var i3 = r3 || 0;
Object.defineProperty(this, "w", { enumerable: true, get: function() {
return i3;
}, set: function(t4) {
isNaN(t4) || (i3 = parseFloat(t4));
} });
var a2 = n2 || 0;
return Object.defineProperty(this, "h", { enumerable: true, get: function() {
return a2;
}, set: function(t4) {
isNaN(t4) || (a2 = parseFloat(t4));
} }), this;
}, Or = function() {
this.page = Dt2, this.currentPage = $2, this.pages = ot2.slice(0), this.pagesContext = Rt2.slice(0), this.x = Pt2, this.y = kt2, this.matrix = It2, this.width = qr($2), this.height = Rr($2), this.outputDestination = ct2, this.id = "", this.objectNumber = -1;
};
Or.prototype.restore = function() {
Dt2 = this.page, $2 = this.currentPage, Rt2 = this.pagesContext, ot2 = this.pages, Pt2 = this.x, kt2 = this.y, It2 = this.matrix, Dr($2, this.width), Tr($2, this.height), ct2 = this.outputDestination;
};
var Br = function(t3, e3, r3, n2, i3) {
Wt2.push(new Or()), Dt2 = $2 = 0, ot2 = [], Pt2 = t3, kt2 = e3, It2 = i3, je([r3, n2]);
}, Mr = function(t3) {
if (Ht2[t3]) Wt2.pop().restore();
else {
var e3 = new Or(), r3 = "Xo" + (Object.keys(zt2).length + 1).toString(10);
e3.id = r3, Ht2[t3] = r3, zt2[r3] = e3, Tt2.publish("addFormObject", e3), Wt2.pop().restore();
}
};
for (var Er in y2.beginFormObject = function(t3, e3, r3, n2, i3) {
return Br(t3, e3, r3, n2, i3), this;
}, y2.endFormObject = function(t3) {
return Mr(t3), this;
}, y2.doFormObject = function(t3, e3) {
var r3 = zt2[Ht2[t3]];
return lt2("q"), lt2(e3.toString() + " cm"), lt2("/" + r3.id + " Do"), lt2("Q"), this;
}, y2.getFormObject = function(t3) {
var e3 = zt2[Ht2[t3]];
return { x: e3.x, y: e3.y, width: e3.width, height: e3.height, matrix: e3.matrix };
}, y2.save = function(t3, e3) {
return t3 = t3 || "generated.pdf", (e3 = e3 || {}).returnPromise = e3.returnPromise || false, false === e3.returnPromise ? (l$1(We(He()), t3), "function" == typeof l$1.unload && n$1.setTimeout && setTimeout(l$1.unload, 911), this) : new Promise(function(e4, r3) {
try {
var i3 = l$1(We(He()), t3);
"function" == typeof l$1.unload && n$1.setTimeout && setTimeout(l$1.unload, 911), e4(i3);
} catch (t4) {
r3(t4.message);
}
});
}, E$1.API) E$1.API.hasOwnProperty(Er) && ("events" === Er && E$1.API.events.length ? function(t3, e3) {
var r3, n2, i3;
for (i3 = e3.length - 1; -1 !== i3; i3--) r3 = e3[i3][0], n2 = e3[i3][1], t3.subscribe.apply(t3, [r3].concat("function" == typeof n2 ? [n2] : n2));
}(Tt2, E$1.API.events) : y2[Er] = E$1.API[Er]);
var qr = y2.getPageWidth = function(t3) {
return (Rt2[t3 = t3 || $2].mediaBox.topRightX - Rt2[t3].mediaBox.bottomLeftX) / _t2;
}, Dr = y2.setPageWidth = function(t3, e3) {
Rt2[t3].mediaBox.topRightX = e3 * _t2 + Rt2[t3].mediaBox.bottomLeftX;
}, Rr = y2.getPageHeight = function(t3) {
return (Rt2[t3 = t3 || $2].mediaBox.topRightY - Rt2[t3].mediaBox.bottomLeftY) / _t2;
}, Tr = y2.setPageHeight = function(t3, e3) {
Rt2[t3].mediaBox.topRightY = e3 * _t2 + Rt2[t3].mediaBox.bottomLeftY;
};
return y2.internal = { pdfEscape: Ce, getStyle: tr, getFont: hr, getFontSize: vt2, getCharSpace: Pr, getTextColor: Sr, getLineHeight: gr, getLineHeightFactor: vr, getLineWidth: dr, write: ft2, getHorizontalCoordinate: br, getVerticalCoordinate: yr, getCoordinateString: wr, getVerticalCoordinateString: Nr, collections: {}, newObject: Xt2, newAdditionalObject: $t2, newObjectDeferred: Kt2, newObjectDeferredBegin: Zt2, getFilters: ne2, putStream: ie2, events: Tt2, scaleFactor: _t2, pageSize: { getWidth: function() {
return qr($2);
}, setWidth: function(t3) {
Dr($2, t3);
}, getHeight: function() {
return Rr($2);
}, setHeight: function(t3) {
Tr($2, t3);
} }, encryptionOptions: m2, encryption: Ye, getEncryptor: Je, output: Ve, getNumberOfPages: Ee, pages: ot2, out: lt2, f2: R2, f3: T2, getPageInfo: Xe, getPageInfoByObjId: Ke, getCurrentPageInfo: Ze, getPDFVersion: N2, Point: Cr, Rectangle: jr, Matrix: Vt2, hasHotfix: Ge }, Object.defineProperty(y2.internal.pageSize, "width", { get: function() {
return qr($2);
}, set: function(t3) {
Dr($2, t3);
}, enumerable: true, configurable: true }), Object.defineProperty(y2.internal.pageSize, "height", { get: function() {
return Rr($2);
}, set: function(t3) {
Tr($2, t3);
}, enumerable: true, configurable: true }), ke.call(y2, pt2), St = "F1", Oe(s2, i2), Tt2.publish("initialized"), y2;
}
I.prototype.lsbFirstWord = function(t3) {
return String.fromCharCode(t3 >> 0 & 255, t3 >> 8 & 255, t3 >> 16 & 255, t3 >> 24 & 255);
}, I.prototype.toHexString = function(t3) {
return t3.split("").map(function(t4) {
return ("0" + (255 & t4.charCodeAt(0)).toString(16)).slice(-2);
}).join("");
}, I.prototype.hexToBytes = function(t3) {
for (var e2 = [], r2 = 0; r2 < t3.length; r2 += 2) e2.push(String.fromCharCode(parseInt(t3.substr(r2, 2), 16)));
return e2.join("");
}, I.prototype.processOwnerPassword = function(t3, e2) {
return P(x(e2).substr(0, 5), t3);
}, I.prototype.encryptor = function(t3, e2) {
var r2 = x(this.encryptionKey + String.fromCharCode(255 & t3, t3 >> 8 & 255, t3 >> 16 & 255, 255 & e2, e2 >> 8 & 255)).substr(0, 10);
return function(t4) {
return P(r2, t4);
};
}, j.prototype.equals = function(e2) {
var r2, n2 = "id,objectNumber,equals";
if (!e2 || _typeof$2(e2) !== _typeof$2(this)) return false;
var i2 = 0;
for (r2 in this) if (!(n2.indexOf(r2) >= 0)) {
if (this.hasOwnProperty(r2) && !e2.hasOwnProperty(r2)) return false;
if (this[r2] !== e2[r2]) return false;
i2++;
}
for (r2 in e2) e2.hasOwnProperty(r2) && n2.indexOf(r2) < 0 && i2--;
return 0 === i2;
}, E$1.API = { events: [] }, E$1.version = "2.5.2";
var q = E$1.API, D = 1, R = function(t3) {
return t3.replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)");
}, T$2 = function(t3) {
return t3.replace(/\\\\/g, "\\").replace(/\\\(/g, "(").replace(/\\\)/g, ")");
}, U$1 = function(t3) {
return t3.toFixed(2);
}, z$1 = function(t3) {
return t3.toFixed(5);
};
q.__acroform__ = {};
var H = function(t3, e2) {
t3.prototype = Object.create(e2.prototype), t3.prototype.constructor = t3;
}, W = function(t3) {
return t3 * D;
}, V$1 = function(t3) {
var e2 = new ut(), r2 = At.internal.getHeight(t3) || 0, n2 = At.internal.getWidth(t3) || 0;
return e2.BBox = [0, 0, Number(U$1(n2)), Number(U$1(r2))], e2;
}, G = q.__acroform__.setBit = function(t3, e2) {
if (t3 = t3 || 0, e2 = e2 || 0, isNaN(t3) || isNaN(e2)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBit");
return t3 |= 1 << e2;
}, Y = q.__acroform__.clearBit = function(t3, e2) {
if (t3 = t3 || 0, e2 = e2 || 0, isNaN(t3) || isNaN(e2)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBit");
return t3 &= ~(1 << e2);
}, J = q.__acroform__.getBit = function(t3, e2) {
if (isNaN(t3) || isNaN(e2)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBit");
return 0 == (t3 & 1 << e2) ? 0 : 1;
}, X = q.__acroform__.getBitForPdf = function(t3, e2) {
if (isNaN(t3) || isNaN(e2)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf");
return J(t3, e2 - 1);
}, K = q.__acroform__.setBitForPdf = function(t3, e2) {
if (isNaN(t3) || isNaN(e2)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf");
return G(t3, e2 - 1);
}, Z$1 = q.__acroform__.clearBitForPdf = function(t3, e2) {
if (isNaN(t3) || isNaN(e2)) throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf");
return Y(t3, e2 - 1);
}, $$f = q.__acroform__.calculateCoordinates = function(t3, e2) {
var r2 = e2.internal.getHorizontalCoordinate, n2 = e2.internal.getVerticalCoordinate, i2 = t3[0], a2 = t3[1], o2 = t3[2], s2 = t3[3], c2 = {};
return c2.lowerLeft_X = r2(i2) || 0, c2.lowerLeft_Y = n2(a2 + s2) || 0, c2.upperRight_X = r2(i2 + o2) || 0, c2.upperRight_Y = n2(a2) || 0, [Number(U$1(c2.lowerLeft_X)), Number(U$1(c2.lowerLeft_Y)), Number(U$1(c2.upperRight_X)), Number(U$1(c2.upperRight_Y))];
}, Q = function(t3) {
if (t3.appearanceStreamContent) return t3.appearanceStreamContent;
if (t3.V || t3.DV) {
var e2 = [], r2 = t3._V || t3.DV, n2 = tt(t3, r2), i2 = t3.scope.internal.getFont(t3.fontName, t3.fontStyle).id;
e2.push("/Tx BMC"), e2.push("q"), e2.push("BT"), e2.push(t3.scope.__private__.encodeColorString(t3.color)), e2.push("/" + i2 + " " + U$1(n2.fontSize) + " Tf"), e2.push("1 0 0 1 0 0 Tm"), e2.push(n2.text), e2.push("ET"), e2.push("Q"), e2.push("EMC");
var a2 = V$1(t3);
return a2.scope = t3.scope, a2.stream = e2.join("\n"), a2;
}
}, tt = function(t3, e2) {
var r2 = 0 === t3.fontSize ? t3.maxFontSize : t3.fontSize, n2 = { text: "", fontSize: "" }, i2 = (e2 = ")" == (e2 = "(" == e2.substr(0, 1) ? e2.substr(1) : e2).substr(e2.length - 1) ? e2.substr(0, e2.length - 1) : e2).split(" ");
i2 = t3.multiline ? i2.map(function(t4) {
return t4.split("\n");
}) : i2.map(function(t4) {
return [t4];
});
var a2 = r2, o2 = At.internal.getHeight(t3) || 0;
o2 = o2 < 0 ? -o2 : o2;
var s2 = At.internal.getWidth(t3) || 0;
s2 = s2 < 0 ? -s2 : s2;
var c2 = function(e3, r3, n3) {
if (e3 + 1 < i2.length) {
var a3 = r3 + " " + i2[e3 + 1][0];
return et(a3, t3, n3).width <= s2 - 4;
}
return false;
};
a2++;
t: for (; a2 > 0; ) {
e2 = "", a2--;
var u2, h2, l2 = et("3", t3, a2).height, f2 = t3.multiline ? o2 - a2 : (o2 - l2) / 2, d2 = f2 += 2, p2 = 0, g2 = 0, m2 = 0;
if (a2 <= 0) {
e2 = "(...) Tj\n", e2 += "% Width of Text: " + et(e2, t3, a2 = 12).width + ", FieldWidth:" + s2 + "\n";
break;
}
for (var v2 = "", b2 = 0, y2 = 0; y2 < i2.length; y2++) if (i2.hasOwnProperty(y2)) {
var w2 = false;
if (1 !== i2[y2].length && m2 !== i2[y2].length - 1) {
if ((l2 + 2) * (b2 + 2) + 2 > o2) continue t;
v2 += i2[y2][m2], w2 = true, g2 = y2, y2--;
} else {
v2 = " " == (v2 += i2[y2][m2] + " ").substr(v2.length - 1) ? v2.substr(0, v2.length - 1) : v2;
var N2 = parseInt(y2), L2 = c2(N2, v2, a2), A5 = y2 >= i2.length - 1;
if (L2 && !A5) {
v2 += " ", m2 = 0;
continue;
}
if (L2 || A5) {
if (A5) g2 = N2;
else if (t3.multiline && (l2 + 2) * (b2 + 2) + 2 > o2) continue t;
} else {
if (!t3.multiline) continue t;
if ((l2 + 2) * (b2 + 2) + 2 > o2) continue t;
g2 = N2;
}
}
for (var x2 = "", S2 = p2; S2 <= g2; S2++) {
var _2 = i2[S2];
if (t3.multiline) {
if (S2 === g2) {
x2 += _2[m2] + " ", m2 = (m2 + 1) % _2.length;
continue;
}
if (S2 === p2) {
x2 += _2[_2.length - 1] + " ";
continue;
}
}
x2 += _2[0] + " ";
}
switch (x2 = " " == x2.substr(x2.length - 1) ? x2.substr(0, x2.length - 1) : x2, h2 = et(x2, t3, a2).width, t3.textAlign) {
case "right":
u2 = s2 - h2 - 2;
break;
case "center":
u2 = (s2 - h2) / 2;
break;
case "left":
default:
u2 = 2;
}
e2 += U$1(u2) + " " + U$1(d2) + " Td\n", e2 += "(" + R(x2) + ") Tj\n", e2 += -U$1(u2) + " 0 Td\n", d2 = -(a2 + 2), h2 = 0, p2 = w2 ? g2 : g2 + 1, b2++, v2 = "";
}
break;
}
return n2.text = e2, n2.fontSize = a2, n2;
}, et = function(t3, e2, r2) {
var n2 = e2.scope.internal.getFont(e2.fontName, e2.fontStyle), i2 = e2.scope.getStringUnitWidth(t3, { font: n2, fontSize: parseFloat(r2), charSpace: 0 }) * parseFloat(r2);
return { height: e2.scope.getStringUnitWidth("3", { font: n2, fontSize: parseFloat(r2), charSpace: 0 }) * parseFloat(r2) * 1.5, width: i2 };
}, rt = { fields: [], xForms: [], acroFormDictionaryRoot: null, printedOut: false, internal: null, isInitialized: false }, nt = function(t3, e2) {
var r2 = { type: "reference", object: t3 };
void 0 === e2.internal.getPageInfo(t3.page).pageContext.annotations.find(function(t4) {
return t4.type === r2.type && t4.object === r2.object;
}) && e2.internal.getPageInfo(t3.page).pageContext.annotations.push(r2);
}, it = function(e2, r2) {
for (var n2 in e2) if (e2.hasOwnProperty(n2)) {
var i2 = n2, a2 = e2[n2];
r2.internal.newObjectDeferredBegin(a2.objId, true), "object" === _typeof$2(a2) && "function" == typeof a2.putStream && a2.putStream(), delete e2[i2];
}
}, at = function(e2, r2) {
if (r2.scope = e2, void 0 !== e2.internal && (void 0 === e2.internal.acroformPlugin || false === e2.internal.acroformPlugin.isInitialized)) {
if (lt.FieldNum = 0, e2.internal.acroformPlugin = JSON.parse(JSON.stringify(rt)), e2.internal.acroformPlugin.acroFormDictionaryRoot) throw new Error("Exception while creating AcroformDictionary");
D = e2.internal.scaleFactor, e2.internal.acroformPlugin.acroFormDictionaryRoot = new ht(), e2.internal.acroformPlugin.acroFormDictionaryRoot.scope = e2, e2.internal.acroformPlugin.acroFormDictionaryRoot._eventID = e2.internal.events.subscribe("postPutResources", function() {
!function(t3) {
t3.internal.events.unsubscribe(t3.internal.acroformPlugin.acroFormDictionaryRoot._eventID), delete t3.internal.acroformPlugin.acroFormDictionaryRoot._eventID, t3.internal.acroformPlugin.printedOut = true;
}(e2);
}), e2.internal.events.subscribe("buildDocument", function() {
!function(t3) {
t3.internal.acroformPlugin.acroFormDictionaryRoot.objId = void 0;
var e3 = t3.internal.acroformPlugin.acroFormDictionaryRoot.Fields;
for (var r3 in e3) if (e3.hasOwnProperty(r3)) {
var n2 = e3[r3];
n2.objId = void 0, n2.hasAnnotation && nt(n2, t3);
}
}(e2);
}), e2.internal.events.subscribe("putCatalog", function() {
!function(t3) {
if (void 0 === t3.internal.acroformPlugin.acroFormDictionaryRoot) throw new Error("putCatalogCallback: Root missing.");
t3.internal.write("/AcroForm " + t3.internal.acroformPlugin.acroFormDictionaryRoot.objId + " 0 R");
}(e2);
}), e2.internal.events.subscribe("postPutPages", function(r3) {
!function(e3, r4) {
var n2 = !e3;
for (var i2 in e3 || (r4.internal.newObjectDeferredBegin(r4.internal.acroformPlugin.acroFormDictionaryRoot.objId, true), r4.internal.acroformPlugin.acroFormDictionaryRoot.putStream()), e3 = e3 || r4.internal.acroformPlugin.acroFormDictionaryRoot.Kids) if (e3.hasOwnProperty(i2)) {
var a2 = e3[i2], o2 = [], s2 = a2.Rect;
if (a2.Rect && (a2.Rect = $$f(a2.Rect, r4)), r4.internal.newObjectDeferredBegin(a2.objId, true), a2.DA = At.createDefaultAppearanceStream(a2), "object" === _typeof$2(a2) && "function" == typeof a2.getKeyValueListForStream && (o2 = a2.getKeyValueListForStream()), a2.Rect = s2, a2.hasAppearanceStream && !a2.appearanceStreamContent) {
var c2 = Q(a2);
o2.push({ key: "AP", value: "<</N " + c2 + ">>" }), r4.internal.acroformPlugin.xForms.push(c2);
}
if (a2.appearanceStreamContent) {
var u2 = "";
for (var h2 in a2.appearanceStreamContent) if (a2.appearanceStreamContent.hasOwnProperty(h2)) {
var l2 = a2.appearanceStreamContent[h2];
if (u2 += "/" + h2 + " ", u2 += "<<", Object.keys(l2).length >= 1 || Array.isArray(l2)) {
for (var i2 in l2) if (l2.hasOwnProperty(i2)) {
var f2 = l2[i2];
"function" == typeof f2 && (f2 = f2.call(r4, a2)), u2 += "/" + i2 + " " + f2 + " ", r4.internal.acroformPlugin.xForms.indexOf(f2) >= 0 || r4.internal.acroformPlugin.xForms.push(f2);
}
} else "function" == typeof (f2 = l2) && (f2 = f2.call(r4, a2)), u2 += "/" + i2 + " " + f2, r4.internal.acroformPlugin.xForms.indexOf(f2) >= 0 || r4.internal.acroformPlugin.xForms.push(f2);
u2 += ">>";
}
o2.push({ key: "AP", value: "<<\n" + u2 + ">>" });
}
r4.internal.putStream({ additionalKeyValues: o2, objectId: a2.objId }), r4.internal.out("endobj");
}
n2 && it(r4.internal.acroformPlugin.xForms, r4);
}(r3, e2);
}), e2.internal.acroformPlugin.isInitialized = true;
}
}, ot = q.__acroform__.arrayToPdfArray = function(e2, r2, n2) {
var i2 = function(t3) {
return t3;
};
if (Array.isArray(e2)) {
for (var a2 = "[", o2 = 0; o2 < e2.length; o2++) switch (0 !== o2 && (a2 += " "), _typeof$2(e2[o2])) {
case "boolean":
case "number":
case "object":
a2 += e2[o2].toString();
break;
case "string":
"/" !== e2[o2].substr(0, 1) ? (void 0 !== r2 && n2 && (i2 = n2.internal.getEncryptor(r2)), a2 += "(" + R(i2(e2[o2].toString())) + ")") : a2 += e2[o2].toString();
}
return a2 += "]";
}
throw new Error("Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray");
};
var st = function(t3, e2, r2) {
var n2 = function(t4) {
return t4;
};
return void 0 !== e2 && r2 && (n2 = r2.internal.getEncryptor(e2)), (t3 = t3 || "").toString(), t3 = "(" + R(n2(t3)) + ")";
}, ct = function() {
this._objId = void 0, this._scope = void 0, Object.defineProperty(this, "objId", { get: function() {
if (void 0 === this._objId) {
if (void 0 === this.scope) return;
this._objId = this.scope.internal.newObjectDeferred();
}
return this._objId;
}, set: function(t3) {
this._objId = t3;
} }), Object.defineProperty(this, "scope", { value: this._scope, writable: true });
};
ct.prototype.toString = function() {
return this.objId + " 0 R";
}, ct.prototype.putStream = function() {
var t3 = this.getKeyValueListForStream();
this.scope.internal.putStream({ data: this.stream, additionalKeyValues: t3, objectId: this.objId }), this.scope.internal.out("endobj");
}, ct.prototype.getKeyValueListForStream = function() {
var t3 = [], e2 = Object.getOwnPropertyNames(this).filter(function(t4) {
return "content" != t4 && "appearanceStreamContent" != t4 && "scope" != t4 && "objId" != t4 && "_" != t4.substring(0, 1);
});
for (var r2 in e2) if (false === Object.getOwnPropertyDescriptor(this, e2[r2]).configurable) {
var n2 = e2[r2], i2 = this[n2];
i2 && (Array.isArray(i2) ? t3.push({ key: n2, value: ot(i2, this.objId, this.scope) }) : i2 instanceof ct ? (i2.scope = this.scope, t3.push({ key: n2, value: i2.objId + " 0 R" })) : "function" != typeof i2 && t3.push({ key: n2, value: i2 }));
}
return t3;
};
var ut = function() {
ct.call(this), Object.defineProperty(this, "Type", { value: "/XObject", configurable: false, writable: true }), Object.defineProperty(this, "Subtype", { value: "/Form", configurable: false, writable: true }), Object.defineProperty(this, "FormType", { value: 1, configurable: false, writable: true });
var t3, e2 = [];
Object.defineProperty(this, "BBox", { configurable: false, get: function() {
return e2;
}, set: function(t4) {
e2 = t4;
} }), Object.defineProperty(this, "Resources", { value: "2 0 R", configurable: false, writable: true }), Object.defineProperty(this, "stream", { enumerable: false, configurable: true, set: function(e3) {
t3 = e3.trim();
}, get: function() {
return t3 || null;
} });
};
H(ut, ct);
var ht = function() {
ct.call(this);
var t3, e2 = [];
Object.defineProperty(this, "Kids", { enumerable: false, configurable: true, get: function() {
return e2.length > 0 ? e2 : void 0;
} }), Object.defineProperty(this, "Fields", { enumerable: false, configurable: false, get: function() {
return e2;
} }), Object.defineProperty(this, "DA", { enumerable: false, configurable: false, get: function() {
if (t3) {
var e3 = function(t4) {
return t4;
};
return this.scope && (e3 = this.scope.internal.getEncryptor(this.objId)), "(" + R(e3(t3)) + ")";
}
}, set: function(e3) {
t3 = e3;
} });
};
H(ht, ct);
var lt = function t() {
ct.call(this);
var e2 = 4;
Object.defineProperty(this, "F", { enumerable: false, configurable: false, get: function() {
return e2;
}, set: function(t3) {
if (isNaN(t3)) throw new Error('Invalid value "' + t3 + '" for attribute F supplied.');
e2 = t3;
} }), Object.defineProperty(this, "showWhenPrinted", { enumerable: true, configurable: true, get: function() {
return Boolean(X(e2, 3));
}, set: function(t3) {
true === Boolean(t3) ? this.F = K(e2, 3) : this.F = Z$1(e2, 3);
} });
var r2 = 0;
Object.defineProperty(this, "Ff", { enumerable: false, configurable: false, get: function() {
return r2;
}, set: function(t3) {
if (isNaN(t3)) throw new Error('Invalid value "' + t3 + '" for attribute Ff supplied.');
r2 = t3;
} });
var n2 = [];
Object.defineProperty(this, "Rect", { enumerable: false, configurable: false, get: function() {
if (0 !== n2.length) return n2;
}, set: function(t3) {
n2 = void 0 !== t3 ? t3 : [];
} }), Object.defineProperty(this, "x", { enumerable: true, configurable: true, get: function() {
return !n2 || isNaN(n2[0]) ? 0 : n2[0];
}, set: function(t3) {
n2[0] = t3;
} }), Object.defineProperty(this, "y", { enumerable: true, configurable: true, get: function() {
return !n2 || isNaN(n2[1]) ? 0 : n2[1];
}, set: function(t3) {
n2[1] = t3;
} }), Object.defineProperty(this, "width", { enumerable: true, configurable: true, get: function() {
return !n2 || isNaN(n2[2]) ? 0 : n2[2];
}, set: function(t3) {
n2[2] = t3;
} }), Object.defineProperty(this, "height", { enumerable: true, configurable: true, get: function() {
return !n2 || isNaN(n2[3]) ? 0 : n2[3];
}, set: function(t3) {
n2[3] = t3;
} });
var i2 = "";
Object.defineProperty(this, "FT", { enumerable: true, configurable: false, get: function() {
return i2;
}, set: function(t3) {
switch (t3) {
case "/Btn":
case "/Tx":
case "/Ch":
case "/Sig":
i2 = t3;
break;
default:
throw new Error('Invalid value "' + t3 + '" for attribute FT supplied.');
}
} });
var a2 = null;
Object.defineProperty(this, "T", { enumerable: true, configurable: false, get: function() {
if (!a2 || a2.length < 1) {
if (this instanceof yt) return;
a2 = "FieldObject" + t.FieldNum++;
}
var e3 = function(t3) {
return t3;
};
return this.scope && (e3 = this.scope.internal.getEncryptor(this.objId)), "(" + R(e3(a2)) + ")";
}, set: function(t3) {
a2 = t3.toString();
} }), Object.defineProperty(this, "fieldName", { configurable: true, enumerable: true, get: function() {
return a2;
}, set: function(t3) {
a2 = t3;
} });
var o2 = "helvetica";
Object.defineProperty(this, "fontName", { enumerable: true, configurable: true, get: function() {
return o2;
}, set: function(t3) {
o2 = t3;
} });
var s2 = "normal";
Object.defineProperty(this, "fontStyle", { enumerable: true, configurable: true, get: function() {
return s2;
}, set: function(t3) {
s2 = t3;
} });
var c2 = 0;
Object.defineProperty(this, "fontSize", { enumerable: true, configurable: true, get: function() {
return c2;
}, set: function(t3) {
c2 = t3;
} });
var u2 = void 0;
Object.defineProperty(this, "maxFontSize", { enumerable: true, configurable: true, get: function() {
return void 0 === u2 ? 50 / D : u2;
}, set: function(t3) {
u2 = t3;
} });
var h2 = "black";
Object.defineProperty(this, "color", { enumerable: true, configurable: true, get: function() {
return h2;
}, set: function(t3) {
h2 = t3;
} });
var l2 = "/F1 0 Tf 0 g";
Object.defineProperty(this, "DA", { enumerable: true, configurable: false, get: function() {
if (!(!l2 || this instanceof yt || this instanceof Nt)) return st(l2, this.objId, this.scope);
}, set: function(t3) {
t3 = t3.toString(), l2 = t3;
} });
var f2 = null;
Object.defineProperty(this, "DV", { enumerable: false, configurable: false, get: function() {
if (f2) return this instanceof mt == false ? st(f2, this.objId, this.scope) : f2;
}, set: function(t3) {
t3 = t3.toString(), f2 = this instanceof mt == false ? "(" === t3.substr(0, 1) ? T$2(t3.substr(1, t3.length - 2)) : T$2(t3) : t3;
} }), Object.defineProperty(this, "defaultValue", { enumerable: true, configurable: true, get: function() {
return this instanceof mt == true ? T$2(f2.substr(1, f2.length - 1)) : f2;
}, set: function(t3) {
t3 = t3.toString(), f2 = this instanceof mt == true ? "/" + t3 : t3;
} });
var d2 = null;
Object.defineProperty(this, "_V", { enumerable: false, configurable: false, get: function() {
if (d2) return d2;
}, set: function(t3) {
this.V = t3;
} }), Object.defineProperty(this, "V", { enumerable: false, configurable: false, get: function() {
if (d2) return this instanceof mt == false ? st(d2, this.objId, this.scope) : d2;
}, set: function(t3) {
t3 = t3.toString(), d2 = this instanceof mt == false ? "(" === t3.substr(0, 1) ? T$2(t3.substr(1, t3.length - 2)) : T$2(t3) : t3;
} }), Object.defineProperty(this, "value", { enumerable: true, configurable: true, get: function() {
return this instanceof mt == true ? T$2(d2.substr(1, d2.length - 1)) : d2;
}, set: function(t3) {
t3 = t3.toString(), d2 = this instanceof mt == true ? "/" + t3 : t3;
} }), Object.defineProperty(this, "hasAnnotation", { enumerable: true, configurable: true, get: function() {
return this.Rect;
} }), Object.defineProperty(this, "Type", { enumerable: true, configurable: false, get: function() {
return this.hasAnnotation ? "/Annot" : null;
} }), Object.defineProperty(this, "Subtype", { enumerable: true, configurable: false, get: function() {
return this.hasAnnotation ? "/Widget" : null;
} });
var p2, g2 = false;
Object.defineProperty(this, "hasAppearanceStream", { enumerable: true, configurable: true, get: function() {
return g2;
}, set: function(t3) {
t3 = Boolean(t3), g2 = t3;
} }), Object.defineProperty(this, "page", { enumerable: true, configurable: true, get: function() {
if (p2) return p2;
}, set: function(t3) {
p2 = t3;
} }), Object.defineProperty(this, "readOnly", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 1));
}, set: function(t3) {
true === Boolean(t3) ? this.Ff = K(this.Ff, 1) : this.Ff = Z$1(this.Ff, 1);
} }), Object.defineProperty(this, "required", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 2));
}, set: function(t3) {
true === Boolean(t3) ? this.Ff = K(this.Ff, 2) : this.Ff = Z$1(this.Ff, 2);
} }), Object.defineProperty(this, "noExport", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 3));
}, set: function(t3) {
true === Boolean(t3) ? this.Ff = K(this.Ff, 3) : this.Ff = Z$1(this.Ff, 3);
} });
var m2 = null;
Object.defineProperty(this, "Q", { enumerable: true, configurable: false, get: function() {
if (null !== m2) return m2;
}, set: function(t3) {
if (-1 === [0, 1, 2].indexOf(t3)) throw new Error('Invalid value "' + t3 + '" for attribute Q supplied.');
m2 = t3;
} }), Object.defineProperty(this, "textAlign", { get: function() {
var t3;
switch (m2) {
case 0:
default:
t3 = "left";
break;
case 1:
t3 = "center";
break;
case 2:
t3 = "right";
}
return t3;
}, configurable: true, enumerable: true, set: function(t3) {
switch (t3) {
case "right":
case 2:
m2 = 2;
break;
case "center":
case 1:
m2 = 1;
break;
case "left":
case 0:
default:
m2 = 0;
}
} });
};
H(lt, ct);
var ft = function() {
lt.call(this), this.FT = "/Ch", this.V = "()", this.fontName = "zapfdingbats";
var t3 = 0;
Object.defineProperty(this, "TI", { enumerable: true, configurable: false, get: function() {
return t3;
}, set: function(e3) {
t3 = e3;
} }), Object.defineProperty(this, "topIndex", { enumerable: true, configurable: true, get: function() {
return t3;
}, set: function(e3) {
t3 = e3;
} });
var e2 = [];
Object.defineProperty(this, "Opt", { enumerable: true, configurable: false, get: function() {
return ot(e2, this.objId, this.scope);
}, set: function(t4) {
var r2, n2;
n2 = [], "string" == typeof (r2 = t4) && (n2 = function(t5, e3, r3) {
r3 || (r3 = 1);
for (var n3, i2 = []; n3 = e3.exec(t5); ) i2.push(n3[r3]);
return i2;
}(r2, /\((.*?)\)/g)), e2 = n2;
} }), this.getOptions = function() {
return e2;
}, this.setOptions = function(t4) {
e2 = t4, this.sort && e2.sort();
}, this.addOption = function(t4) {
t4 = (t4 = t4 || "").toString(), e2.push(t4), this.sort && e2.sort();
}, this.removeOption = function(t4, r2) {
for (r2 = r2 || false, t4 = (t4 = t4 || "").toString(); -1 !== e2.indexOf(t4) && (e2.splice(e2.indexOf(t4), 1), false !== r2); ) ;
}, Object.defineProperty(this, "combo", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 18));
}, set: function(t4) {
true === Boolean(t4) ? this.Ff = K(this.Ff, 18) : this.Ff = Z$1(this.Ff, 18);
} }), Object.defineProperty(this, "edit", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 19));
}, set: function(t4) {
true === this.combo && (true === Boolean(t4) ? this.Ff = K(this.Ff, 19) : this.Ff = Z$1(this.Ff, 19));
} }), Object.defineProperty(this, "sort", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 20));
}, set: function(t4) {
true === Boolean(t4) ? (this.Ff = K(this.Ff, 20), e2.sort()) : this.Ff = Z$1(this.Ff, 20);
} }), Object.defineProperty(this, "multiSelect", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 22));
}, set: function(t4) {
true === Boolean(t4) ? this.Ff = K(this.Ff, 22) : this.Ff = Z$1(this.Ff, 22);
} }), Object.defineProperty(this, "doNotSpellCheck", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 23));
}, set: function(t4) {
true === Boolean(t4) ? this.Ff = K(this.Ff, 23) : this.Ff = Z$1(this.Ff, 23);
} }), Object.defineProperty(this, "commitOnSelChange", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 27));
}, set: function(t4) {
true === Boolean(t4) ? this.Ff = K(this.Ff, 27) : this.Ff = Z$1(this.Ff, 27);
} }), this.hasAppearanceStream = false;
};
H(ft, lt);
var dt = function() {
ft.call(this), this.fontName = "helvetica", this.combo = false;
};
H(dt, ft);
var pt = function() {
dt.call(this), this.combo = true;
};
H(pt, dt);
var gt = function() {
pt.call(this), this.edit = true;
};
H(gt, pt);
var mt = function() {
lt.call(this), this.FT = "/Btn", Object.defineProperty(this, "noToggleToOff", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 15));
}, set: function(t3) {
true === Boolean(t3) ? this.Ff = K(this.Ff, 15) : this.Ff = Z$1(this.Ff, 15);
} }), Object.defineProperty(this, "radio", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 16));
}, set: function(t3) {
true === Boolean(t3) ? this.Ff = K(this.Ff, 16) : this.Ff = Z$1(this.Ff, 16);
} }), Object.defineProperty(this, "pushButton", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 17));
}, set: function(t3) {
true === Boolean(t3) ? this.Ff = K(this.Ff, 17) : this.Ff = Z$1(this.Ff, 17);
} }), Object.defineProperty(this, "radioIsUnison", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 26));
}, set: function(t3) {
true === Boolean(t3) ? this.Ff = K(this.Ff, 26) : this.Ff = Z$1(this.Ff, 26);
} });
var e2, r2 = {};
Object.defineProperty(this, "MK", { enumerable: false, configurable: false, get: function() {
var t3 = function(t4) {
return t4;
};
if (this.scope && (t3 = this.scope.internal.getEncryptor(this.objId)), 0 !== Object.keys(r2).length) {
var e3, n2 = [];
for (e3 in n2.push("<<"), r2) n2.push("/" + e3 + " (" + R(t3(r2[e3])) + ")");
return n2.push(">>"), n2.join("\n");
}
}, set: function(e3) {
"object" === _typeof$2(e3) && (r2 = e3);
} }), Object.defineProperty(this, "caption", { enumerable: true, configurable: true, get: function() {
return r2.CA || "";
}, set: function(t3) {
"string" == typeof t3 && (r2.CA = t3);
} }), Object.defineProperty(this, "AS", { enumerable: false, configurable: false, get: function() {
return e2;
}, set: function(t3) {
e2 = t3;
} }), Object.defineProperty(this, "appearanceState", { enumerable: true, configurable: true, get: function() {
return e2.substr(1, e2.length - 1);
}, set: function(t3) {
e2 = "/" + t3;
} });
};
H(mt, lt);
var vt = function() {
mt.call(this), this.pushButton = true;
};
H(vt, mt);
var bt = function() {
mt.call(this), this.radio = true, this.pushButton = false;
var t3 = [];
Object.defineProperty(this, "Kids", { enumerable: true, configurable: false, get: function() {
return t3;
}, set: function(e2) {
t3 = void 0 !== e2 ? e2 : [];
} });
};
H(bt, mt);
var yt = function() {
var e2, r2;
lt.call(this), Object.defineProperty(this, "Parent", { enumerable: false, configurable: false, get: function() {
return e2;
}, set: function(t3) {
e2 = t3;
} }), Object.defineProperty(this, "optionName", { enumerable: false, configurable: true, get: function() {
return r2;
}, set: function(t3) {
r2 = t3;
} });
var n2, i2 = {};
Object.defineProperty(this, "MK", { enumerable: false, configurable: false, get: function() {
var t3 = function(t4) {
return t4;
};
this.scope && (t3 = this.scope.internal.getEncryptor(this.objId));
var e3, r3 = [];
for (e3 in r3.push("<<"), i2) r3.push("/" + e3 + " (" + R(t3(i2[e3])) + ")");
return r3.push(">>"), r3.join("\n");
}, set: function(e3) {
"object" === _typeof$2(e3) && (i2 = e3);
} }), Object.defineProperty(this, "caption", { enumerable: true, configurable: true, get: function() {
return i2.CA || "";
}, set: function(t3) {
"string" == typeof t3 && (i2.CA = t3);
} }), Object.defineProperty(this, "AS", { enumerable: false, configurable: false, get: function() {
return n2;
}, set: function(t3) {
n2 = t3;
} }), Object.defineProperty(this, "appearanceState", { enumerable: true, configurable: true, get: function() {
return n2.substr(1, n2.length - 1);
}, set: function(t3) {
n2 = "/" + t3;
} }), this.caption = "l", this.appearanceState = "Off", this._AppearanceType = At.RadioButton.Circle, this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(this.optionName);
};
H(yt, lt), bt.prototype.setAppearance = function(t3) {
if (!("createAppearanceStream" in t3) || !("getCA" in t3)) throw new Error("Couldn't assign Appearance to RadioButton. Appearance was Invalid!");
for (var e2 in this.Kids) if (this.Kids.hasOwnProperty(e2)) {
var r2 = this.Kids[e2];
r2.appearanceStreamContent = t3.createAppearanceStream(r2.optionName), r2.caption = t3.getCA();
}
}, bt.prototype.createOption = function(t3) {
var e2 = new yt();
return e2.Parent = this, e2.optionName = t3, this.Kids.push(e2), xt.call(this.scope, e2), e2;
};
var wt = function() {
mt.call(this), this.fontName = "zapfdingbats", this.caption = "3", this.appearanceState = "On", this.value = "On", this.textAlign = "center", this.appearanceStreamContent = At.CheckBox.createAppearanceStream();
};
H(wt, mt);
var Nt = function() {
lt.call(this), this.FT = "/Tx", Object.defineProperty(this, "multiline", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 13));
}, set: function(t4) {
true === Boolean(t4) ? this.Ff = K(this.Ff, 13) : this.Ff = Z$1(this.Ff, 13);
} }), Object.defineProperty(this, "fileSelect", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 21));
}, set: function(t4) {
true === Boolean(t4) ? this.Ff = K(this.Ff, 21) : this.Ff = Z$1(this.Ff, 21);
} }), Object.defineProperty(this, "doNotSpellCheck", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 23));
}, set: function(t4) {
true === Boolean(t4) ? this.Ff = K(this.Ff, 23) : this.Ff = Z$1(this.Ff, 23);
} }), Object.defineProperty(this, "doNotScroll", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 24));
}, set: function(t4) {
true === Boolean(t4) ? this.Ff = K(this.Ff, 24) : this.Ff = Z$1(this.Ff, 24);
} }), Object.defineProperty(this, "comb", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 25));
}, set: function(t4) {
true === Boolean(t4) ? this.Ff = K(this.Ff, 25) : this.Ff = Z$1(this.Ff, 25);
} }), Object.defineProperty(this, "richText", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 26));
}, set: function(t4) {
true === Boolean(t4) ? this.Ff = K(this.Ff, 26) : this.Ff = Z$1(this.Ff, 26);
} });
var t3 = null;
Object.defineProperty(this, "MaxLen", { enumerable: true, configurable: false, get: function() {
return t3;
}, set: function(e2) {
t3 = e2;
} }), Object.defineProperty(this, "maxLength", { enumerable: true, configurable: true, get: function() {
return t3;
}, set: function(e2) {
Number.isInteger(e2) && (t3 = e2);
} }), Object.defineProperty(this, "hasAppearanceStream", { enumerable: true, configurable: true, get: function() {
return this.V || this.DV;
} });
};
H(Nt, lt);
var Lt = function() {
Nt.call(this), Object.defineProperty(this, "password", { enumerable: true, configurable: true, get: function() {
return Boolean(X(this.Ff, 14));
}, set: function(t3) {
true === Boolean(t3) ? this.Ff = K(this.Ff, 14) : this.Ff = Z$1(this.Ff, 14);
} }), this.password = true;
};
H(Lt, Nt);
var At = { CheckBox: { createAppearanceStream: function() {
return { N: { On: At.CheckBox.YesNormal }, D: { On: At.CheckBox.YesPushDown, Off: At.CheckBox.OffPushDown } };
}, YesPushDown: function(t3) {
var e2 = V$1(t3);
e2.scope = t3.scope;
var r2 = [], n2 = t3.scope.internal.getFont(t3.fontName, t3.fontStyle).id, i2 = t3.scope.__private__.encodeColorString(t3.color), a2 = tt(t3, t3.caption);
return r2.push("0.749023 g"), r2.push("0 0 " + U$1(At.internal.getWidth(t3)) + " " + U$1(At.internal.getHeight(t3)) + " re"), r2.push("f"), r2.push("BMC"), r2.push("q"), r2.push("0 0 1 rg"), r2.push("/" + n2 + " " + U$1(a2.fontSize) + " Tf " + i2), r2.push("BT"), r2.push(a2.text), r2.push("ET"), r2.push("Q"), r2.push("EMC"), e2.stream = r2.join("\n"), e2;
}, YesNormal: function(t3) {
var e2 = V$1(t3);
e2.scope = t3.scope;
var r2 = t3.scope.internal.getFont(t3.fontName, t3.fontStyle).id, n2 = t3.scope.__private__.encodeColorString(t3.color), i2 = [], a2 = At.internal.getHeight(t3), o2 = At.internal.getWidth(t3), s2 = tt(t3, t3.caption);
return i2.push("1 g"), i2.push("0 0 " + U$1(o2) + " " + U$1(a2) + " re"), i2.push("f"), i2.push("q"), i2.push("0 0 1 rg"), i2.push("0 0 " + U$1(o2 - 1) + " " + U$1(a2 - 1) + " re"), i2.push("W"), i2.push("n"), i2.push("0 g"), i2.push("BT"), i2.push("/" + r2 + " " + U$1(s2.fontSize) + " Tf " + n2), i2.push(s2.text), i2.push("ET"), i2.push("Q"), e2.stream = i2.join("\n"), e2;
}, OffPushDown: function(t3) {
var e2 = V$1(t3);
e2.scope = t3.scope;
var r2 = [];
return r2.push("0.749023 g"), r2.push("0 0 " + U$1(At.internal.getWidth(t3)) + " " + U$1(At.internal.getHeight(t3)) + " re"), r2.push("f"), e2.stream = r2.join("\n"), e2;
} }, RadioButton: { Circle: { createAppearanceStream: function(t3) {
var e2 = { D: { Off: At.RadioButton.Circle.OffPushDown }, N: {} };
return e2.N[t3] = At.RadioButton.Circle.YesNormal, e2.D[t3] = At.RadioButton.Circle.YesPushDown, e2;
}, getCA: function() {
return "l";
}, YesNormal: function(t3) {
var e2 = V$1(t3);
e2.scope = t3.scope;
var r2 = [], n2 = At.internal.getWidth(t3) <= At.internal.getHeight(t3) ? At.internal.getWidth(t3) / 4 : At.internal.getHeight(t3) / 4;
n2 = Number((0.9 * n2).toFixed(5));
var i2 = At.internal.Bezier_C, a2 = Number((n2 * i2).toFixed(5));
return r2.push("q"), r2.push("1 0 0 1 " + z$1(At.internal.getWidth(t3) / 2) + " " + z$1(At.internal.getHeight(t3) / 2) + " cm"), r2.push(n2 + " 0 m"), r2.push(n2 + " " + a2 + " " + a2 + " " + n2 + " 0 " + n2 + " c"), r2.push("-" + a2 + " " + n2 + " -" + n2 + " " + a2 + " -" + n2 + " 0 c"), r2.push("-" + n2 + " -" + a2 + " -" + a2 + " -" + n2 + " 0 -" + n2 + " c"), r2.push(a2 + " -" + n2 + " " + n2 + " -" + a2 + " " + n2 + " 0 c"), r2.push("f"), r2.push("Q"), e2.stream = r2.join("\n"), e2;
}, YesPushDown: function(t3) {
var e2 = V$1(t3);
e2.scope = t3.scope;
var r2 = [], n2 = At.internal.getWidth(t3) <= At.internal.getHeight(t3) ? At.internal.getWidth(t3) / 4 : At.internal.getHeight(t3) / 4;
n2 = Number((0.9 * n2).toFixed(5));
var i2 = Number((2 * n2).toFixed(5)), a2 = Number((i2 * At.internal.Bezier_C).toFixed(5)), o2 = Number((n2 * At.internal.Bezier_C).toFixed(5));
return r2.push("0.749023 g"), r2.push("q"), r2.push("1 0 0 1 " + z$1(At.internal.getWidth(t3) / 2) + " " + z$1(At.internal.getHeight(t3) / 2) + " cm"), r2.push(i2 + " 0 m"), r2.push(i2 + " " + a2 + " " + a2 + " " + i2 + " 0 " + i2 + " c"), r2.push("-" + a2 + " " + i2 + " -" + i2 + " " + a2 + " -" + i2 + " 0 c"), r2.push("-" + i2 + " -" + a2 + " -" + a2 + " -" + i2 + " 0 -" + i2 + " c"), r2.push(a2 + " -" + i2 + " " + i2 + " -" + a2 + " " + i2 + " 0 c"), r2.push("f"), r2.push("Q"), r2.push("0 g"), r2.push("q"), r2.push("1 0 0 1 " + z$1(At.internal.getWidth(t3) / 2) + " " + z$1(At.internal.getHeight(t3) / 2) + " cm"), r2.push(n2 + " 0 m"), r2.push(n2 + " " + o2 + " " + o2 + " " + n2 + " 0 " + n2 + " c"), r2.push("-" + o2 + " " + n2 + " -" + n2 + " " + o2 + " -" + n2 + " 0 c"), r2.push("-" + n2 + " -" + o2 + " -" + o2 + " -" + n2 + " 0 -" + n2 + " c"), r2.push(o2 + " -" + n2 + " " + n2 + " -" + o2 + " " + n2 + " 0 c"), r2.push("f"), r2.push("Q"), e2.stream = r2.join("\n"), e2;
}, OffPushDown: function(t3) {
var e2 = V$1(t3);
e2.scope = t3.scope;
var r2 = [], n2 = At.internal.getWidth(t3) <= At.internal.getHeight(t3) ? At.internal.getWidth(t3) / 4 : At.internal.getHeight(t3) / 4;
n2 = Number((0.9 * n2).toFixed(5));
var i2 = Number((2 * n2).toFixed(5)), a2 = Number((i2 * At.internal.Bezier_C).toFixed(5));
return r2.push("0.749023 g"), r2.push("q"), r2.push("1 0 0 1 " + z$1(At.internal.getWidth(t3) / 2) + " " + z$1(At.internal.getHeight(t3) / 2) + " cm"), r2.push(i2 + " 0 m"), r2.push(i2 + " " + a2 + " " + a2 + " " + i2 + " 0 " + i2 + " c"), r2.push("-" + a2 + " " + i2 + " -" + i2 + " " + a2 + " -" + i2 + " 0 c"), r2.push("-" + i2 + " -" + a2 + " -" + a2 + " -" + i2 + " 0 -" + i2 + " c"), r2.push(a2 + " -" + i2 + " " + i2 + " -" + a2 + " " + i2 + " 0 c"), r2.push("f"), r2.push("Q"), e2.stream = r2.join("\n"), e2;
} }, Cross: { createAppearanceStream: function(t3) {
var e2 = { D: { Off: At.RadioButton.Cross.OffPushDown }, N: {} };
return e2.N[t3] = At.RadioButton.Cross.YesNormal, e2.D[t3] = At.RadioButton.Cross.YesPushDown, e2;
}, getCA: function() {
return "8";
}, YesNormal: function(t3) {
var e2 = V$1(t3);
e2.scope = t3.scope;
var r2 = [], n2 = At.internal.calculateCross(t3);
return r2.push("q"), r2.push("1 1 " + U$1(At.internal.getWidth(t3) - 2) + " " + U$1(At.internal.getHeight(t3) - 2) + " re"), r2.push("W"), r2.push("n"), r2.push(U$1(n2.x1.x) + " " + U$1(n2.x1.y) + " m"), r2.push(U$1(n2.x2.x) + " " + U$1(n2.x2.y) + " l"), r2.push(U$1(n2.x4.x) + " " + U$1(n2.x4.y) + " m"), r2.push(U$1(n2.x3.x) + " " + U$1(n2.x3.y) + " l"), r2.push("s"), r2.push("Q"), e2.stream = r2.join("\n"), e2;
}, YesPushDown: function(t3) {
var e2 = V$1(t3);
e2.scope = t3.scope;
var r2 = At.internal.calculateCross(t3), n2 = [];
return n2.push("0.749023 g"), n2.push("0 0 " + U$1(At.internal.getWidth(t3)) + " " + U$1(At.internal.getHeight(t3)) + " re"), n2.push("f"), n2.push("q"), n2.push("1 1 " + U$1(At.internal.getWidth(t3) - 2) + " " + U$1(At.internal.getHeight(t3) - 2) + " re"), n2.push("W"), n2.push("n"), n2.push(U$1(r2.x1.x) + " " + U$1(r2.x1.y) + " m"), n2.push(U$1(r2.x2.x) + " " + U$1(r2.x2.y) + " l"), n2.push(U$1(r2.x4.x) + " " + U$1(r2.x4.y) + " m"), n2.push(U$1(r2.x3.x) + " " + U$1(r2.x3.y) + " l"), n2.push("s"), n2.push("Q"), e2.stream = n2.join("\n"), e2;
}, OffPushDown: function(t3) {
var e2 = V$1(t3);
e2.scope = t3.scope;
var r2 = [];
return r2.push("0.749023 g"), r2.push("0 0 " + U$1(At.internal.getWidth(t3)) + " " + U$1(At.internal.getHeight(t3)) + " re"), r2.push("f"), e2.stream = r2.join("\n"), e2;
} } }, createDefaultAppearanceStream: function(t3) {
var e2 = t3.scope.internal.getFont(t3.fontName, t3.fontStyle).id, r2 = t3.scope.__private__.encodeColorString(t3.color);
return "/" + e2 + " " + t3.fontSize + " Tf " + r2;
} };
At.internal = { Bezier_C: 0.551915024494, calculateCross: function(t3) {
var e2 = At.internal.getWidth(t3), r2 = At.internal.getHeight(t3), n2 = Math.min(e2, r2);
return { x1: { x: (e2 - n2) / 2, y: (r2 - n2) / 2 + n2 }, x2: { x: (e2 - n2) / 2 + n2, y: (r2 - n2) / 2 }, x3: { x: (e2 - n2) / 2, y: (r2 - n2) / 2 }, x4: { x: (e2 - n2) / 2 + n2, y: (r2 - n2) / 2 + n2 } };
} }, At.internal.getWidth = function(e2) {
var r2 = 0;
return "object" === _typeof$2(e2) && (r2 = W(e2.Rect[2])), r2;
}, At.internal.getHeight = function(e2) {
var r2 = 0;
return "object" === _typeof$2(e2) && (r2 = W(e2.Rect[3])), r2;
};
var xt = q.addField = function(t3) {
if (at(this, t3), !(t3 instanceof lt)) throw new Error("Invalid argument passed to jsPDF.addField.");
var e2;
return (e2 = t3).scope.internal.acroformPlugin.printedOut && (e2.scope.internal.acroformPlugin.printedOut = false, e2.scope.internal.acroformPlugin.acroFormDictionaryRoot = null), e2.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(e2), t3.page = t3.scope.internal.getCurrentPageInfo().pageNumber, this;
};
q.AcroFormChoiceField = ft, q.AcroFormListBox = dt, q.AcroFormComboBox = pt, q.AcroFormEditBox = gt, q.AcroFormButton = mt, q.AcroFormPushButton = vt, q.AcroFormRadioButton = bt, q.AcroFormCheckBox = wt, q.AcroFormTextField = Nt, q.AcroFormPasswordField = Lt, q.AcroFormAppearance = At, q.AcroForm = { ChoiceField: ft, ListBox: dt, ComboBox: pt, EditBox: gt, Button: mt, PushButton: vt, RadioButton: bt, CheckBox: wt, TextField: Nt, PasswordField: Lt, Appearance: At }, E$1.AcroForm = { ChoiceField: ft, ListBox: dt, ComboBox: pt, EditBox: gt, Button: mt, PushButton: vt, RadioButton: bt, CheckBox: wt, TextField: Nt, PasswordField: Lt, Appearance: At };
function _t(t3) {
return t3.reduce(function(t4, e2, r2) {
return t4[e2] = r2, t4;
}, {});
}
!function(e2) {
e2.__addimage__ = {};
var r2 = "UNKNOWN", n2 = { PNG: [[137, 80, 78, 71]], TIFF: [[77, 77, 0, 42], [73, 73, 42, 0]], JPEG: [[255, 216, 255, 224, void 0, void 0, 74, 70, 73, 70, 0], [255, 216, 255, 225, void 0, void 0, 69, 120, 105, 102, 0, 0], [255, 216, 255, 219], [255, 216, 255, 238]], JPEG2000: [[0, 0, 0, 12, 106, 80, 32, 32]], GIF87a: [[71, 73, 70, 56, 55, 97]], GIF89a: [[71, 73, 70, 56, 57, 97]], WEBP: [[82, 73, 70, 70, void 0, void 0, void 0, void 0, 87, 69, 66, 80]], BMP: [[66, 77], [66, 65], [67, 73], [67, 80], [73, 67], [80, 84]] }, i2 = e2.__addimage__.getImageFileTypeByImageData = function(t3, e3) {
var i3, a3, o3, s3, c3, u2 = r2;
if ("RGBA" === (e3 = e3 || r2) || void 0 !== t3.data && t3.data instanceof Uint8ClampedArray && "height" in t3 && "width" in t3) return "RGBA";
if (x2(t3)) for (c3 in n2) for (o3 = n2[c3], i3 = 0; i3 < o3.length; i3 += 1) {
for (s3 = true, a3 = 0; a3 < o3[i3].length; a3 += 1) if (void 0 !== o3[i3][a3] && o3[i3][a3] !== t3[a3]) {
s3 = false;
break;
}
if (true === s3) {
u2 = c3;
break;
}
}
else for (c3 in n2) for (o3 = n2[c3], i3 = 0; i3 < o3.length; i3 += 1) {
for (s3 = true, a3 = 0; a3 < o3[i3].length; a3 += 1) if (void 0 !== o3[i3][a3] && o3[i3][a3] !== t3.charCodeAt(a3)) {
s3 = false;
break;
}
if (true === s3) {
u2 = c3;
break;
}
}
return u2 === r2 && e3 !== r2 && (u2 = e3), u2;
}, a2 = function t3(e3) {
for (var r3 = this.internal.write, n3 = this.internal.putStream, i3 = (0, this.internal.getFilters)(); -1 !== i3.indexOf("FlateEncode"); ) i3.splice(i3.indexOf("FlateEncode"), 1);
e3.objectId = this.internal.newObject();
var a3 = [];
if (a3.push({ key: "Type", value: "/XObject" }), a3.push({ key: "Subtype", value: "/Image" }), a3.push({ key: "Width", value: e3.width }), a3.push({ key: "Height", value: e3.height }), e3.colorSpace === b2.INDEXED ? a3.push({ key: "ColorSpace", value: "[/Indexed /DeviceRGB " + (e3.palette.length / 3 - 1) + " " + ("sMask" in e3 && void 0 !== e3.sMask ? e3.objectId + 2 : e3.objectId + 1) + " 0 R]" }) : (a3.push({ key: "ColorSpace", value: "/" + e3.colorSpace }), e3.colorSpace === b2.DEVICE_CMYK && a3.push({ key: "Decode", value: "[1 0 1 0 1 0 1 0]" })), a3.push({ key: "BitsPerComponent", value: e3.bitsPerComponent }), "decodeParameters" in e3 && void 0 !== e3.decodeParameters && a3.push({ key: "DecodeParms", value: "<<" + e3.decodeParameters + ">>" }), "transparency" in e3 && Array.isArray(e3.transparency)) {
for (var o3 = "", s3 = 0, c3 = e3.transparency.length; s3 < c3; s3++) o3 += e3.transparency[s3] + " " + e3.transparency[s3] + " ";
a3.push({ key: "Mask", value: "[" + o3 + "]" });
}
void 0 !== e3.sMask && a3.push({ key: "SMask", value: e3.objectId + 1 + " 0 R" });
var u2 = void 0 !== e3.filter ? ["/" + e3.filter] : void 0;
if (n3({ data: e3.data, additionalKeyValues: a3, alreadyAppliedFilters: u2, objectId: e3.objectId }), r3("endobj"), "sMask" in e3 && void 0 !== e3.sMask) {
var h3 = "/Predictor " + e3.predictor + " /Colors 1 /BitsPerComponent " + e3.bitsPerComponent + " /Columns " + e3.width, l3 = { width: e3.width, height: e3.height, colorSpace: "DeviceGray", bitsPerComponent: e3.bitsPerComponent, decodeParameters: h3, data: e3.sMask };
"filter" in e3 && (l3.filter = e3.filter), t3.call(this, l3);
}
if (e3.colorSpace === b2.INDEXED) {
var f3 = this.internal.newObject();
n3({ data: _2(new Uint8Array(e3.palette)), objectId: f3 }), r3("endobj");
}
}, o2 = function() {
var t3 = this.internal.collections.addImage_images;
for (var e3 in t3) a2.call(this, t3[e3]);
}, s2 = function() {
var t3, e3 = this.internal.collections.addImage_images, r3 = this.internal.write;
for (var n3 in e3) r3("/I" + (t3 = e3[n3]).index, t3.objectId, "0", "R");
}, c2 = function() {
this.internal.collections.addImage_images || (this.internal.collections.addImage_images = {}, this.internal.events.subscribe("putResources", o2), this.internal.events.subscribe("putXobjectDict", s2));
}, h2 = function() {
var t3 = this.internal.collections.addImage_images;
return c2.call(this), t3;
}, l2 = function() {
return Object.keys(this.internal.collections.addImage_images).length;
}, f2 = function(t3) {
return "function" == typeof e2["process" + t3.toUpperCase()];
}, d2 = function(e3) {
return "object" === _typeof$2(e3) && 1 === e3.nodeType;
}, p2 = function(t3, r3) {
if ("IMG" === t3.nodeName && t3.hasAttribute("src")) {
var n3 = "" + t3.getAttribute("src");
if (0 === n3.indexOf("data:image/")) return u$2(unescape(n3).split("base64,").pop());
var i3 = e2.loadFile(n3, true);
if (void 0 !== i3) return i3;
}
if ("CANVAS" === t3.nodeName) {
if (0 === t3.width || 0 === t3.height) throw new Error("Given canvas must have data. Canvas width: " + t3.width + ", height: " + t3.height);
var a3;
switch (r3) {
case "PNG":
a3 = "image/png";
break;
case "WEBP":
a3 = "image/webp";
break;
case "JPEG":
case "JPG":
default:
a3 = "image/jpeg";
}
return u$2(t3.toDataURL(a3, 1).split("base64,").pop());
}
}, g2 = function(t3) {
var e3 = this.internal.collections.addImage_images;
if (e3) {
for (var r3 in e3) if (t3 === e3[r3].alias) return e3[r3];
}
}, m2 = function(t3, e3, r3) {
return t3 || e3 || (t3 = -96, e3 = -96), t3 < 0 && (t3 = -1 * r3.width * 72 / t3 / this.internal.scaleFactor), e3 < 0 && (e3 = -1 * r3.height * 72 / e3 / this.internal.scaleFactor), 0 === t3 && (t3 = e3 * r3.width / r3.height), 0 === e3 && (e3 = t3 * r3.height / r3.width), [t3, e3];
}, v2 = function(t3, e3, r3, n3, i3, a3) {
var o3 = m2.call(this, r3, n3, i3), s3 = this.internal.getCoordinateString, c3 = this.internal.getVerticalCoordinateString, u2 = h2.call(this);
if (r3 = o3[0], n3 = o3[1], u2[i3.index] = i3, a3) {
a3 *= Math.PI / 180;
var l3 = Math.cos(a3), f3 = Math.sin(a3), d3 = function(t4) {
return t4.toFixed(4);
}, p3 = [d3(l3), d3(f3), d3(-1 * f3), d3(l3), 0, 0, "cm"];
}
this.internal.write("q"), a3 ? (this.internal.write([1, "0", "0", 1, s3(t3), c3(e3 + n3), "cm"].join(" ")), this.internal.write(p3.join(" ")), this.internal.write([s3(r3), "0", "0", s3(n3), "0", "0", "cm"].join(" "))) : this.internal.write([s3(r3), "0", "0", s3(n3), s3(t3), c3(e3 + n3), "cm"].join(" ")), this.isAdvancedAPI() && this.internal.write([1, 0, 0, -1, 0, 0, "cm"].join(" ")), this.internal.write("/I" + i3.index + " Do"), this.internal.write("Q");
}, b2 = e2.color_spaces = { DEVICE_RGB: "DeviceRGB", DEVICE_GRAY: "DeviceGray", DEVICE_CMYK: "DeviceCMYK", CAL_GREY: "CalGray", CAL_RGB: "CalRGB", LAB: "Lab", ICC_BASED: "ICCBased", INDEXED: "Indexed", PATTERN: "Pattern", SEPARATION: "Separation", DEVICE_N: "DeviceN" };
e2.decode = { DCT_DECODE: "DCTDecode", FLATE_DECODE: "FlateDecode", LZW_DECODE: "LZWDecode", JPX_DECODE: "JPXDecode", JBIG2_DECODE: "JBIG2Decode", ASCII85_DECODE: "ASCII85Decode", ASCII_HEX_DECODE: "ASCIIHexDecode", RUN_LENGTH_DECODE: "RunLengthDecode", CCITT_FAX_DECODE: "CCITTFaxDecode" };
var y2 = e2.image_compression = { NONE: "NONE", FAST: "FAST", MEDIUM: "MEDIUM", SLOW: "SLOW" }, w2 = e2.__addimage__.sHashCode = function(t3) {
var e3, r3, n3 = 0;
if ("string" == typeof t3) for (r3 = t3.length, e3 = 0; e3 < r3; e3++) n3 = (n3 << 5) - n3 + t3.charCodeAt(e3), n3 |= 0;
else if (x2(t3)) for (r3 = t3.byteLength / 2, e3 = 0; e3 < r3; e3++) n3 = (n3 << 5) - n3 + t3[e3], n3 |= 0;
return n3;
}, N2 = e2.__addimage__.validateStringAsBase64 = function(t3) {
(t3 = t3 || "").toString().trim();
var e3 = true;
return 0 === t3.length && (e3 = false), t3.length % 4 != 0 && (e3 = false), false === /^[A-Za-z0-9+/]+$/.test(t3.substr(0, t3.length - 2)) && (e3 = false), false === /^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(t3.substr(-2)) && (e3 = false), e3;
}, L2 = e2.__addimage__.extractImageFromDataUrl = function(t3) {
var e3 = (t3 = t3 || "").split("base64,"), r3 = null;
if (2 === e3.length) {
var n3 = /^data:(\w*\/\w*);*(charset=(?!charset=)[\w=-]*)*;*$/.exec(e3[0]);
Array.isArray(n3) && (r3 = { mimeType: n3[1], charset: n3[2], data: e3[1] });
}
return r3;
}, A5 = e2.__addimage__.supportsArrayBuffer = function() {
return "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array;
};
e2.__addimage__.isArrayBuffer = function(t3) {
return A5() && t3 instanceof ArrayBuffer;
};
var x2 = e2.__addimage__.isArrayBufferView = function(t3) {
return A5() && "undefined" != typeof Uint32Array && (t3 instanceof Int8Array || t3 instanceof Uint8Array || "undefined" != typeof Uint8ClampedArray && t3 instanceof Uint8ClampedArray || t3 instanceof Int16Array || t3 instanceof Uint16Array || t3 instanceof Int32Array || t3 instanceof Uint32Array || t3 instanceof Float32Array || t3 instanceof Float64Array);
}, S2 = e2.__addimage__.binaryStringToUint8Array = function(t3) {
for (var e3 = t3.length, r3 = new Uint8Array(e3), n3 = 0; n3 < e3; n3++) r3[n3] = t3.charCodeAt(n3);
return r3;
}, _2 = e2.__addimage__.arrayBufferToBinaryString = function(t3) {
for (var e3 = "", r3 = x2(t3) ? t3 : new Uint8Array(t3), n3 = 0; n3 < r3.length; n3 += 8192) e3 += String.fromCharCode.apply(null, r3.subarray(n3, n3 + 8192));
return e3;
};
e2.addImage = function() {
var e3, n3, i3, a3, o3, s3, u2, h3, l3;
if ("number" == typeof arguments[1] ? (n3 = r2, i3 = arguments[1], a3 = arguments[2], o3 = arguments[3], s3 = arguments[4], u2 = arguments[5], h3 = arguments[6], l3 = arguments[7]) : (n3 = arguments[1], i3 = arguments[2], a3 = arguments[3], o3 = arguments[4], s3 = arguments[5], u2 = arguments[6], h3 = arguments[7], l3 = arguments[8]), "object" === _typeof$2(e3 = arguments[0]) && !d2(e3) && "imageData" in e3) {
var f3 = e3;
e3 = f3.imageData, n3 = f3.format || n3 || r2, i3 = f3.x || i3 || 0, a3 = f3.y || a3 || 0, o3 = f3.w || f3.width || o3, s3 = f3.h || f3.height || s3, u2 = f3.alias || u2, h3 = f3.compression || h3, l3 = f3.rotation || f3.angle || l3;
}
var p3 = this.internal.getFilters();
if (void 0 === h3 && -1 !== p3.indexOf("FlateEncode") && (h3 = "SLOW"), isNaN(i3) || isNaN(a3)) throw new Error("Invalid coordinates passed to jsPDF.addImage");
c2.call(this);
var g3 = P2.call(this, e3, n3, u2, h3);
return v2.call(this, i3, a3, o3, s3, g3, l3), this;
};
var P2 = function(t3, n3, a3, o3) {
var s3, c3, u2;
if ("string" == typeof t3 && i2(t3) === r2) {
t3 = unescape(t3);
var h3 = k2(t3, false);
("" !== h3 || void 0 !== (h3 = e2.loadFile(t3, true))) && (t3 = h3);
}
if (d2(t3) && (t3 = p2(t3, n3)), n3 = i2(t3, n3), !f2(n3)) throw new Error("addImage does not support files of type '" + n3 + "', please ensure that a plugin for '" + n3 + "' support is added.");
if ((null == (u2 = a3) || 0 === u2.length) && (a3 = function(t4) {
return "string" == typeof t4 || x2(t4) ? w2(t4) : x2(t4.data) ? w2(t4.data) : null;
}(t3)), (s3 = g2.call(this, a3)) || (A5() && (t3 instanceof Uint8Array || "RGBA" === n3 || (c3 = t3, t3 = S2(t3))), s3 = this["process" + n3.toUpperCase()](t3, l2.call(this), a3, function(t4) {
return t4 && "string" == typeof t4 && (t4 = t4.toUpperCase()), t4 in e2.image_compression ? t4 : y2.NONE;
}(o3), c3)), !s3) throw new Error("An unknown error occurred whilst processing the image.");
return s3;
}, k2 = e2.__addimage__.convertBase64ToBinaryString = function(t3, e3) {
var r3;
e3 = "boolean" != typeof e3 || e3;
var n3, i3 = "";
if ("string" == typeof t3) {
n3 = null !== (r3 = L2(t3)) ? r3.data : t3;
try {
i3 = u$2(n3);
} catch (t4) {
if (e3) throw N2(n3) ? new Error("atob-Error in jsPDF.convertBase64ToBinaryString " + t4.message) : new Error("Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString ");
}
}
return i3;
};
e2.getImageProperties = function(t3) {
var n3, a3, o3 = "";
if (d2(t3) && (t3 = p2(t3)), "string" == typeof t3 && i2(t3) === r2 && ("" === (o3 = k2(t3, false)) && (o3 = e2.loadFile(t3) || ""), t3 = o3), a3 = i2(t3), !f2(a3)) throw new Error("addImage does not support files of type '" + a3 + "', please ensure that a plugin for '" + a3 + "' support is added.");
if (!A5() || t3 instanceof Uint8Array || (t3 = S2(t3)), !(n3 = this["process" + a3.toUpperCase()](t3))) throw new Error("An unknown error occurred whilst processing the image");
return n3.fileType = a3, n3;
};
}(E$1.API), /**
* @license
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function(t3) {
var e2 = function(t4) {
if (void 0 !== t4 && "" != t4) return true;
};
E$1.API.events.push(["addPage", function(t4) {
this.internal.getPageInfo(t4.pageNumber).pageContext.annotations = [];
}]), t3.events.push(["putPage", function(t4) {
for (var r2, n2, i2, a2 = this.internal.getCoordinateString, o2 = this.internal.getVerticalCoordinateString, s2 = this.internal.getPageInfoByObjId(t4.objId), c2 = t4.pageContext.annotations, u2 = false, h2 = 0; h2 < c2.length && !u2; h2++) switch ((r2 = c2[h2]).type) {
case "link":
(e2(r2.options.url) || e2(r2.options.pageNumber)) && (u2 = true);
break;
case "reference":
case "text":
case "freetext":
u2 = true;
}
if (0 != u2) {
this.internal.write("/Annots [");
for (var l2 = 0; l2 < c2.length; l2++) {
r2 = c2[l2];
var f2 = this.internal.pdfEscape, d2 = this.internal.getEncryptor(t4.objId);
switch (r2.type) {
case "reference":
this.internal.write(" " + r2.object.objId + " 0 R ");
break;
case "text":
var p2 = this.internal.newAdditionalObject(), g2 = this.internal.newAdditionalObject(), m2 = this.internal.getEncryptor(p2.objId), v2 = r2.title || "Note";
i2 = "<</Type /Annot /Subtype /Text " + (n2 = "/Rect [" + a2(r2.bounds.x) + " " + o2(r2.bounds.y + r2.bounds.h) + " " + a2(r2.bounds.x + r2.bounds.w) + " " + o2(r2.bounds.y) + "] ") + "/Contents (" + f2(m2(r2.contents)) + ")", i2 += " /Popup " + g2.objId + " 0 R", i2 += " /P " + s2.objId + " 0 R", i2 += " /T (" + f2(m2(v2)) + ") >>", p2.content = i2;
var b2 = p2.objId + " 0 R";
i2 = "<</Type /Annot /Subtype /Popup " + (n2 = "/Rect [" + a2(r2.bounds.x + 30) + " " + o2(r2.bounds.y + r2.bounds.h) + " " + a2(r2.bounds.x + r2.bounds.w + 30) + " " + o2(r2.bounds.y) + "] ") + " /Parent " + b2, r2.open && (i2 += " /Open true"), i2 += " >>", g2.content = i2, this.internal.write(p2.objId, "0 R", g2.objId, "0 R");
break;
case "freetext":
n2 = "/Rect [" + a2(r2.bounds.x) + " " + o2(r2.bounds.y) + " " + a2(r2.bounds.x + r2.bounds.w) + " " + o2(r2.bounds.y + r2.bounds.h) + "] ";
var y2 = r2.color || "#000000";
i2 = "<</Type /Annot /Subtype /FreeText " + n2 + "/Contents (" + f2(d2(r2.contents)) + ")", i2 += " /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#" + y2 + ")", i2 += " /Border [0 0 0]", i2 += " >>", this.internal.write(i2);
break;
case "link":
if (r2.options.name) {
var w2 = this.annotations._nameMap[r2.options.name];
r2.options.pageNumber = w2.page, r2.options.top = w2.y;
} else r2.options.top || (r2.options.top = 0);
if (n2 = "/Rect [" + r2.finalBounds.x + " " + r2.finalBounds.y + " " + r2.finalBounds.w + " " + r2.finalBounds.h + "] ", i2 = "", r2.options.url) i2 = "<</Type /Annot /Subtype /Link " + n2 + "/Border [0 0 0] /A <</S /URI /URI (" + f2(d2(r2.options.url)) + ") >>";
else if (r2.options.pageNumber) {
switch (i2 = "<</Type /Annot /Subtype /Link " + n2 + "/Border [0 0 0] /Dest [" + this.internal.getPageInfo(r2.options.pageNumber).objId + " 0 R", r2.options.magFactor = r2.options.magFactor || "XYZ", r2.options.magFactor) {
case "Fit":
i2 += " /Fit]";
break;
case "FitH":
i2 += " /FitH " + r2.options.top + "]";
break;
case "FitV":
r2.options.left = r2.options.left || 0, i2 += " /FitV " + r2.options.left + "]";
break;
case "XYZ":
default:
var N2 = o2(r2.options.top);
r2.options.left = r2.options.left || 0, void 0 === r2.options.zoom && (r2.options.zoom = 0), i2 += " /XYZ " + r2.options.left + " " + N2 + " " + r2.options.zoom + "]";
}
}
"" != i2 && (i2 += " >>", this.internal.write(i2));
}
}
this.internal.write("]");
}
}]), t3.createAnnotation = function(t4) {
var e3 = this.internal.getCurrentPageInfo();
switch (t4.type) {
case "link":
this.link(t4.bounds.x, t4.bounds.y, t4.bounds.w, t4.bounds.h, t4);
break;
case "text":
case "freetext":
e3.pageContext.annotations.push(t4);
}
}, t3.link = function(t4, e3, r2, n2, i2) {
var a2 = this.internal.getCurrentPageInfo(), o2 = this.internal.getCoordinateString, s2 = this.internal.getVerticalCoordinateString;
a2.pageContext.annotations.push({ finalBounds: { x: o2(t4), y: s2(e3), w: o2(t4 + r2), h: s2(e3 + n2) }, options: i2, type: "link" });
}, t3.textWithLink = function(t4, e3, r2, n2) {
var i2, a2, o2 = this.getTextWidth(t4), s2 = this.internal.getLineHeight() / this.internal.scaleFactor;
if (void 0 !== n2.maxWidth) {
a2 = n2.maxWidth;
var c2 = this.splitTextToSize(t4, a2).length;
i2 = Math.ceil(s2 * c2);
} else a2 = o2, i2 = s2;
return this.text(t4, e3, r2, n2), r2 += 0.2 * s2, "center" === n2.align && (e3 -= o2 / 2), "right" === n2.align && (e3 -= o2), this.link(e3, r2 - s2, a2, i2, n2), o2;
}, t3.getTextWidth = function(t4) {
var e3 = this.internal.getFontSize();
return this.getStringUnitWidth(t4) * e3 / this.internal.scaleFactor;
};
}(E$1.API), /**
* @license
* Copyright (c) 2017 Aras Abbasi
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function(t3) {
var e2 = { 1569: [65152], 1570: [65153, 65154], 1571: [65155, 65156], 1572: [65157, 65158], 1573: [65159, 65160], 1574: [65161, 65162, 65163, 65164], 1575: [65165, 65166], 1576: [65167, 65168, 65169, 65170], 1577: [65171, 65172], 1578: [65173, 65174, 65175, 65176], 1579: [65177, 65178, 65179, 65180], 1580: [65181, 65182, 65183, 65184], 1581: [65185, 65186, 65187, 65188], 1582: [65189, 65190, 65191, 65192], 1583: [65193, 65194], 1584: [65195, 65196], 1585: [65197, 65198], 1586: [65199, 65200], 1587: [65201, 65202, 65203, 65204], 1588: [65205, 65206, 65207, 65208], 1589: [65209, 65210, 65211, 65212], 1590: [65213, 65214, 65215, 65216], 1591: [65217, 65218, 65219, 65220], 1592: [65221, 65222, 65223, 65224], 1593: [65225, 65226, 65227, 65228], 1594: [65229, 65230, 65231, 65232], 1601: [65233, 65234, 65235, 65236], 1602: [65237, 65238, 65239, 65240], 1603: [65241, 65242, 65243, 65244], 1604: [65245, 65246, 65247, 65248], 1605: [65249, 65250, 65251, 65252], 1606: [65253, 65254, 65255, 65256], 1607: [65257, 65258, 65259, 65260], 1608: [65261, 65262], 1609: [65263, 65264, 64488, 64489], 1610: [65265, 65266, 65267, 65268], 1649: [64336, 64337], 1655: [64477], 1657: [64358, 64359, 64360, 64361], 1658: [64350, 64351, 64352, 64353], 1659: [64338, 64339, 64340, 64341], 1662: [64342, 64343, 64344, 64345], 1663: [64354, 64355, 64356, 64357], 1664: [64346, 64347, 64348, 64349], 1667: [64374, 64375, 64376, 64377], 1668: [64370, 64371, 64372, 64373], 1670: [64378, 64379, 64380, 64381], 1671: [64382, 64383, 64384, 64385], 1672: [64392, 64393], 1676: [64388, 64389], 1677: [64386, 64387], 1678: [64390, 64391], 1681: [64396, 64397], 1688: [64394, 64395], 1700: [64362, 64363, 64364, 64365], 1702: [64366, 64367, 64368, 64369], 1705: [64398, 64399, 64400, 64401], 1709: [64467, 64468, 64469, 64470], 1711: [64402, 64403, 64404, 64405], 1713: [64410, 64411, 64412, 64413], 1715: [64406, 64407, 64408, 64409], 1722: [64414, 64415], 1723: [64416, 64417, 64418, 64419], 1726: [64426, 64427, 64428, 64429], 1728: [64420, 64421], 1729: [64422, 64423, 64424, 64425], 1733: [64480, 64481], 1734: [64473, 64474], 1735: [64471, 64472], 1736: [64475, 64476], 1737: [64482, 64483], 1739: [64478, 64479], 1740: [64508, 64509, 64510, 64511], 1744: [64484, 64485, 64486, 64487], 1746: [64430, 64431], 1747: [64432, 64433] }, r2 = { 65247: { 65154: 65269, 65156: 65271, 65160: 65273, 65166: 65275 }, 65248: { 65154: 65270, 65156: 65272, 65160: 65274, 65166: 65276 }, 65165: { 65247: { 65248: { 65258: 65010 } } }, 1617: { 1612: 64606, 1613: 64607, 1614: 64608, 1615: 64609, 1616: 64610 } }, n2 = { 1612: 64606, 1613: 64607, 1614: 64608, 1615: 64609, 1616: 64610 }, i2 = [1570, 1571, 1573, 1575];
t3.__arabicParser__ = {};
var a2 = t3.__arabicParser__.isInArabicSubstitutionA = function(t4) {
return void 0 !== e2[t4.charCodeAt(0)];
}, o2 = t3.__arabicParser__.isArabicLetter = function(t4) {
return "string" == typeof t4 && /^[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]+$/.test(t4);
}, s2 = t3.__arabicParser__.isArabicEndLetter = function(t4) {
return o2(t4) && a2(t4) && e2[t4.charCodeAt(0)].length <= 2;
}, c2 = t3.__arabicParser__.isArabicAlfLetter = function(t4) {
return o2(t4) && i2.indexOf(t4.charCodeAt(0)) >= 0;
};
t3.__arabicParser__.arabicLetterHasIsolatedForm = function(t4) {
return o2(t4) && a2(t4) && e2[t4.charCodeAt(0)].length >= 1;
};
var u2 = t3.__arabicParser__.arabicLetterHasFinalForm = function(t4) {
return o2(t4) && a2(t4) && e2[t4.charCodeAt(0)].length >= 2;
};
t3.__arabicParser__.arabicLetterHasInitialForm = function(t4) {
return o2(t4) && a2(t4) && e2[t4.charCodeAt(0)].length >= 3;
};
var h2 = t3.__arabicParser__.arabicLetterHasMedialForm = function(t4) {
return o2(t4) && a2(t4) && 4 == e2[t4.charCodeAt(0)].length;
}, l2 = t3.__arabicParser__.resolveLigatures = function(t4) {
var e3 = 0, n3 = r2, i3 = "", a3 = 0;
for (e3 = 0; e3 < t4.length; e3 += 1) void 0 !== n3[t4.charCodeAt(e3)] ? (a3++, "number" == typeof (n3 = n3[t4.charCodeAt(e3)]) && (i3 += String.fromCharCode(n3), n3 = r2, a3 = 0), e3 === t4.length - 1 && (n3 = r2, i3 += t4.charAt(e3 - (a3 - 1)), e3 -= a3 - 1, a3 = 0)) : (n3 = r2, i3 += t4.charAt(e3 - a3), e3 -= a3, a3 = 0);
return i3;
};
t3.__arabicParser__.isArabicDiacritic = function(t4) {
return void 0 !== t4 && void 0 !== n2[t4.charCodeAt(0)];
};
var f2 = t3.__arabicParser__.getCorrectForm = function(t4, e3, r3) {
return o2(t4) ? false === a2(t4) ? -1 : !u2(t4) || !o2(e3) && !o2(r3) || !o2(r3) && s2(e3) || s2(t4) && !o2(e3) || s2(t4) && c2(e3) || s2(t4) && s2(e3) ? 0 : h2(t4) && o2(e3) && !s2(e3) && o2(r3) && u2(r3) ? 3 : s2(t4) || !o2(r3) ? 1 : 2 : -1;
}, d2 = function(t4) {
var r3 = 0, n3 = 0, i3 = 0, a3 = "", s3 = "", c3 = "", u3 = (t4 = t4 || "").split("\\s+"), h3 = [];
for (r3 = 0; r3 < u3.length; r3 += 1) {
for (h3.push(""), n3 = 0; n3 < u3[r3].length; n3 += 1) a3 = u3[r3][n3], s3 = u3[r3][n3 - 1], c3 = u3[r3][n3 + 1], o2(a3) ? (i3 = f2(a3, s3, c3), h3[r3] += -1 !== i3 ? String.fromCharCode(e2[a3.charCodeAt(0)][i3]) : a3) : h3[r3] += a3;
h3[r3] = l2(h3[r3]);
}
return h3.join(" ");
}, p2 = t3.__arabicParser__.processArabic = t3.processArabic = function() {
var t4, e3 = "string" == typeof arguments[0] ? arguments[0] : arguments[0].text, r3 = [];
if (Array.isArray(e3)) {
var n3 = 0;
for (r3 = [], n3 = 0; n3 < e3.length; n3 += 1) Array.isArray(e3[n3]) ? r3.push([d2(e3[n3][0]), e3[n3][1], e3[n3][2]]) : r3.push([d2(e3[n3])]);
t4 = r3;
} else t4 = d2(e3);
return "string" == typeof arguments[0] ? t4 : (arguments[0].text = t4, arguments[0]);
};
t3.events.push(["preProcessText", p2]);
}(E$1.API), E$1.API.autoPrint = function(t3) {
var e2;
switch ((t3 = t3 || {}).variant = t3.variant || "non-conform", t3.variant) {
case "javascript":
this.addJS("print({});");
break;
case "non-conform":
default:
this.internal.events.subscribe("postPutResources", function() {
e2 = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /Named"), this.internal.out("/Type /Action"), this.internal.out("/N /Print"), this.internal.out(">>"), this.internal.out("endobj");
}), this.internal.events.subscribe("putCatalog", function() {
this.internal.out("/OpenAction " + e2 + " 0 R");
});
}
return this;
}, /**
* @license
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function(t3) {
var e2 = function() {
var t4 = void 0;
Object.defineProperty(this, "pdf", { get: function() {
return t4;
}, set: function(e4) {
t4 = e4;
} });
var e3 = 150;
Object.defineProperty(this, "width", { get: function() {
return e3;
}, set: function(t5) {
e3 = isNaN(t5) || false === Number.isInteger(t5) || t5 < 0 ? 150 : t5, this.getContext("2d").pageWrapXEnabled && (this.getContext("2d").pageWrapX = e3 + 1);
} });
var r2 = 300;
Object.defineProperty(this, "height", { get: function() {
return r2;
}, set: function(t5) {
r2 = isNaN(t5) || false === Number.isInteger(t5) || t5 < 0 ? 300 : t5, this.getContext("2d").pageWrapYEnabled && (this.getContext("2d").pageWrapY = r2 + 1);
} });
var n2 = [];
Object.defineProperty(this, "childNodes", { get: function() {
return n2;
}, set: function(t5) {
n2 = t5;
} });
var i2 = {};
Object.defineProperty(this, "style", { get: function() {
return i2;
}, set: function(t5) {
i2 = t5;
} }), Object.defineProperty(this, "parentNode", {});
};
e2.prototype.getContext = function(t4, e3) {
var r2;
if ("2d" !== (t4 = t4 || "2d")) return null;
for (r2 in e3) this.pdf.context2d.hasOwnProperty(r2) && (this.pdf.context2d[r2] = e3[r2]);
return this.pdf.context2d._canvas = this, this.pdf.context2d;
}, e2.prototype.toDataURL = function() {
throw new Error("toDataURL is not implemented.");
}, t3.events.push(["initialized", function() {
this.canvas = new e2(), this.canvas.pdf = this;
}]);
}(E$1.API), function(e2) {
var r2 = { left: 0, top: 0, bottom: 0, right: 0 }, n2 = false, i2 = function() {
void 0 === this.internal.__cell__ && (this.internal.__cell__ = {}, this.internal.__cell__.padding = 3, this.internal.__cell__.headerFunction = void 0, this.internal.__cell__.margins = Object.assign({}, r2), this.internal.__cell__.margins.width = this.getPageWidth(), a2.call(this));
}, a2 = function() {
this.internal.__cell__.lastCell = new o2(), this.internal.__cell__.pages = 1;
}, o2 = function() {
var t3 = arguments[0];
Object.defineProperty(this, "x", { enumerable: true, get: function() {
return t3;
}, set: function(e4) {
t3 = e4;
} });
var e3 = arguments[1];
Object.defineProperty(this, "y", { enumerable: true, get: function() {
return e3;
}, set: function(t4) {
e3 = t4;
} });
var r3 = arguments[2];
Object.defineProperty(this, "width", { enumerable: true, get: function() {
return r3;
}, set: function(t4) {
r3 = t4;
} });
var n3 = arguments[3];
Object.defineProperty(this, "height", { enumerable: true, get: function() {
return n3;
}, set: function(t4) {
n3 = t4;
} });
var i3 = arguments[4];
Object.defineProperty(this, "text", { enumerable: true, get: function() {
return i3;
}, set: function(t4) {
i3 = t4;
} });
var a3 = arguments[5];
Object.defineProperty(this, "lineNumber", { enumerable: true, get: function() {
return a3;
}, set: function(t4) {
a3 = t4;
} });
var o3 = arguments[6];
return Object.defineProperty(this, "align", { enumerable: true, get: function() {
return o3;
}, set: function(t4) {
o3 = t4;
} }), this;
};
o2.prototype.clone = function() {
return new o2(this.x, this.y, this.width, this.height, this.text, this.lineNumber, this.align);
}, o2.prototype.toArray = function() {
return [this.x, this.y, this.width, this.height, this.text, this.lineNumber, this.align];
}, e2.setHeaderFunction = function(t3) {
return i2.call(this), this.internal.__cell__.headerFunction = "function" == typeof t3 ? t3 : void 0, this;
}, e2.getTextDimensions = function(t3, e3) {
i2.call(this);
var r3 = (e3 = e3 || {}).fontSize || this.getFontSize(), n3 = e3.font || this.getFont(), a3 = e3.scaleFactor || this.internal.scaleFactor, o3 = 0, s3 = 0, c3 = 0, u2 = this;
if (!Array.isArray(t3) && "string" != typeof t3) {
if ("number" != typeof t3) throw new Error("getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.");
t3 = String(t3);
}
var h2 = e3.maxWidth;
h2 > 0 ? "string" == typeof t3 ? t3 = this.splitTextToSize(t3, h2) : "[object Array]" === Object.prototype.toString.call(t3) && (t3 = t3.reduce(function(t4, e4) {
return t4.concat(u2.splitTextToSize(e4, h2));
}, [])) : t3 = Array.isArray(t3) ? t3 : [t3];
for (var l2 = 0; l2 < t3.length; l2++) o3 < (c3 = this.getStringUnitWidth(t3[l2], { font: n3 }) * r3) && (o3 = c3);
return 0 !== o3 && (s3 = t3.length), { w: o3 /= a3, h: Math.max((s3 * r3 * this.getLineHeightFactor() - r3 * (this.getLineHeightFactor() - 1)) / a3, 0) };
}, e2.cellAddPage = function() {
i2.call(this), this.addPage();
var t3 = this.internal.__cell__.margins || r2;
return this.internal.__cell__.lastCell = new o2(t3.left, t3.top, void 0, void 0), this.internal.__cell__.pages += 1, this;
};
var s2 = e2.cell = function() {
var t3;
t3 = arguments[0] instanceof o2 ? arguments[0] : new o2(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]), i2.call(this);
var e3 = this.internal.__cell__.lastCell, a3 = this.internal.__cell__.padding, s3 = this.internal.__cell__.margins || r2, c3 = this.internal.__cell__.tableHeaderRow, u2 = this.internal.__cell__.printHeaders;
return void 0 !== e3.lineNumber && (e3.lineNumber === t3.lineNumber ? (t3.x = (e3.x || 0) + (e3.width || 0), t3.y = e3.y || 0) : e3.y + e3.height + t3.height + s3.bottom > this.getPageHeight() ? (this.cellAddPage(), t3.y = s3.top, u2 && c3 && (this.printHeaderRow(t3.lineNumber, true), t3.y += c3[0].height)) : t3.y = e3.y + e3.height || t3.y), void 0 !== t3.text[0] && (this.rect(t3.x, t3.y, t3.width, t3.height, true === n2 ? "FD" : void 0), "right" === t3.align ? this.text(t3.text, t3.x + t3.width - a3, t3.y + a3, { align: "right", baseline: "top" }) : "center" === t3.align ? this.text(t3.text, t3.x + t3.width / 2, t3.y + a3, { align: "center", baseline: "top", maxWidth: t3.width - a3 - a3 }) : this.text(t3.text, t3.x + a3, t3.y + a3, { align: "left", baseline: "top", maxWidth: t3.width - a3 - a3 })), this.internal.__cell__.lastCell = t3, this;
};
e2.table = function(e3, n3, u2, h2, l2) {
if (i2.call(this), !u2) throw new Error("No data for PDF table.");
var f2, d2, p2, g2, m2 = [], v2 = [], b2 = [], y2 = {}, w2 = {}, N2 = [], L2 = [], A5 = (l2 = l2 || {}).autoSize || false, x2 = false !== l2.printHeaders, S2 = l2.css && void 0 !== l2.css["font-size"] ? 16 * l2.css["font-size"] : l2.fontSize || 12, _2 = l2.margins || Object.assign({ width: this.getPageWidth() }, r2), P2 = "number" == typeof l2.padding ? l2.padding : 3, k2 = l2.headerBackgroundColor || "#c8c8c8", I2 = l2.headerTextColor || "#000";
if (a2.call(this), this.internal.__cell__.printHeaders = x2, this.internal.__cell__.margins = _2, this.internal.__cell__.table_font_size = S2, this.internal.__cell__.padding = P2, this.internal.__cell__.headerBackgroundColor = k2, this.internal.__cell__.headerTextColor = I2, this.setFontSize(S2), null == h2) v2 = m2 = Object.keys(u2[0]), b2 = m2.map(function() {
return "left";
});
else if (Array.isArray(h2) && "object" === _typeof$2(h2[0])) for (m2 = h2.map(function(t3) {
return t3.name;
}), v2 = h2.map(function(t3) {
return t3.prompt || t3.name || "";
}), b2 = h2.map(function(t3) {
return t3.align || "left";
}), f2 = 0; f2 < h2.length; f2 += 1) w2[h2[f2].name] = h2[f2].width * (19.049976 / 25.4);
else Array.isArray(h2) && "string" == typeof h2[0] && (v2 = m2 = h2, b2 = m2.map(function() {
return "left";
}));
if (A5 || Array.isArray(h2) && "string" == typeof h2[0]) for (f2 = 0; f2 < m2.length; f2 += 1) {
for (y2[g2 = m2[f2]] = u2.map(function(t3) {
return t3[g2];
}), this.setFont(void 0, "bold"), N2.push(this.getTextDimensions(v2[f2], { fontSize: this.internal.__cell__.table_font_size, scaleFactor: this.internal.scaleFactor }).w), d2 = y2[g2], this.setFont(void 0, "normal"), p2 = 0; p2 < d2.length; p2 += 1) N2.push(this.getTextDimensions(d2[p2], { fontSize: this.internal.__cell__.table_font_size, scaleFactor: this.internal.scaleFactor }).w);
w2[g2] = Math.max.apply(null, N2) + P2 + P2, N2 = [];
}
if (x2) {
var F2 = {};
for (f2 = 0; f2 < m2.length; f2 += 1) F2[m2[f2]] = {}, F2[m2[f2]].text = v2[f2], F2[m2[f2]].align = b2[f2];
var C2 = c2.call(this, F2, w2);
L2 = m2.map(function(t3) {
return new o2(e3, n3, w2[t3], C2, F2[t3].text, void 0, F2[t3].align);
}), this.setTableHeaderRow(L2), this.printHeaderRow(1, false);
}
var j2 = h2.reduce(function(t3, e4) {
return t3[e4.name] = e4.align, t3;
}, {});
for (f2 = 0; f2 < u2.length; f2 += 1) {
"rowStart" in l2 && l2.rowStart instanceof Function && l2.rowStart({ row: f2, data: u2[f2] }, this);
var O2 = c2.call(this, u2[f2], w2);
for (p2 = 0; p2 < m2.length; p2 += 1) {
var B3 = u2[f2][m2[p2]];
"cellStart" in l2 && l2.cellStart instanceof Function && l2.cellStart({ row: f2, col: p2, data: B3 }, this), s2.call(this, new o2(e3, n3, w2[m2[p2]], O2, B3, f2 + 2, j2[m2[p2]]));
}
}
return this.internal.__cell__.table_x = e3, this.internal.__cell__.table_y = n3, this;
};
var c2 = function(t3, e3) {
var r3 = this.internal.__cell__.padding, n3 = this.internal.__cell__.table_font_size, i3 = this.internal.scaleFactor;
return Object.keys(t3).map(function(n4) {
var i4 = t3[n4];
return this.splitTextToSize(i4.hasOwnProperty("text") ? i4.text : i4, e3[n4] - r3 - r3);
}, this).map(function(t4) {
return this.getLineHeightFactor() * t4.length * n3 / i3 + r3 + r3;
}, this).reduce(function(t4, e4) {
return Math.max(t4, e4);
}, 0);
};
e2.setTableHeaderRow = function(t3) {
i2.call(this), this.internal.__cell__.tableHeaderRow = t3;
}, e2.printHeaderRow = function(t3, e3) {
if (i2.call(this), !this.internal.__cell__.tableHeaderRow) throw new Error("Property tableHeaderRow does not exist.");
var r3;
if (n2 = true, "function" == typeof this.internal.__cell__.headerFunction) {
var a3 = this.internal.__cell__.headerFunction(this, this.internal.__cell__.pages);
this.internal.__cell__.lastCell = new o2(a3[0], a3[1], a3[2], a3[3], void 0, -1);
}
this.setFont(void 0, "bold");
for (var c3 = [], u2 = 0; u2 < this.internal.__cell__.tableHeaderRow.length; u2 += 1) {
r3 = this.internal.__cell__.tableHeaderRow[u2].clone(), e3 && (r3.y = this.internal.__cell__.margins.top || 0, c3.push(r3)), r3.lineNumber = t3;
var h2 = this.getTextColor();
this.setTextColor(this.internal.__cell__.headerTextColor), this.setFillColor(this.internal.__cell__.headerBackgroundColor), s2.call(this, r3), this.setTextColor(h2);
}
c3.length > 0 && this.setTableHeaderRow(c3), this.setFont(void 0, "normal"), n2 = false;
};
}(E$1.API);
var Pt = { italic: ["italic", "oblique", "normal"], oblique: ["oblique", "italic", "normal"], normal: ["normal", "oblique", "italic"] }, kt = ["ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded"], It = _t(kt), Ft = [100, 200, 300, 400, 500, 600, 700, 800, 900], Ct = _t(Ft);
function jt(t3) {
var e2 = t3.family.replace(/"|'/g, "").toLowerCase(), r2 = function(t4) {
return Pt[t4 = t4 || "normal"] ? t4 : "normal";
}(t3.style), n2 = function(t4) {
if (!t4) return 400;
if ("number" == typeof t4) return t4 >= 100 && t4 <= 900 && t4 % 100 == 0 ? t4 : 400;
if (/^\d00$/.test(t4)) return parseInt(t4);
switch (t4) {
case "bold":
return 700;
case "normal":
default:
return 400;
}
}(t3.weight), i2 = function(t4) {
return "number" == typeof It[t4 = t4 || "normal"] ? t4 : "normal";
}(t3.stretch);
return { family: e2, style: r2, weight: n2, stretch: i2, src: t3.src || [], ref: t3.ref || { name: e2, style: [i2, r2, n2].join(" ") } };
}
function Ot(t3, e2, r2, n2) {
var i2;
for (i2 = r2; i2 >= 0 && i2 < e2.length; i2 += n2) if (t3[e2[i2]]) return t3[e2[i2]];
for (i2 = r2; i2 >= 0 && i2 < e2.length; i2 -= n2) if (t3[e2[i2]]) return t3[e2[i2]];
}
var Bt = { "sans-serif": "helvetica", fixed: "courier", monospace: "courier", terminal: "courier", cursive: "times", fantasy: "times", serif: "times" }, Mt = { caption: "times", icon: "times", menu: "times", "message-box": "times", "small-caption": "times", "status-bar": "times" };
function Et(t3) {
return [t3.stretch, t3.style, t3.weight, t3.family].join(" ");
}
function qt(t3, e2, r2) {
for (var n2 = (r2 = r2 || {}).defaultFontFamily || "times", i2 = Object.assign({}, Bt, r2.genericFontFamilies || {}), a2 = null, o2 = null, s2 = 0; s2 < e2.length; ++s2) if (i2[(a2 = jt(e2[s2])).family] && (a2.family = i2[a2.family]), t3.hasOwnProperty(a2.family)) {
o2 = t3[a2.family];
break;
}
if (!(o2 = o2 || t3[n2])) throw new Error("Could not find a font-family for the rule '" + Et(a2) + "' and default family '" + n2 + "'.");
if (o2 = function(t4, e3) {
if (e3[t4]) return e3[t4];
var r3 = It[t4], n3 = r3 <= It.normal ? -1 : 1, i3 = Ot(e3, kt, r3, n3);
if (!i3) throw new Error("Could not find a matching font-stretch value for " + t4);
return i3;
}(a2.stretch, o2), o2 = function(t4, e3) {
if (e3[t4]) return e3[t4];
for (var r3 = Pt[t4], n3 = 0; n3 < r3.length; ++n3) if (e3[r3[n3]]) return e3[r3[n3]];
throw new Error("Could not find a matching font-style for " + t4);
}(a2.style, o2), !(o2 = function(t4, e3) {
if (e3[t4]) return e3[t4];
if (400 === t4 && e3[500]) return e3[500];
if (500 === t4 && e3[400]) return e3[400];
var r3 = Ct[t4], n3 = Ot(e3, Ft, r3, t4 < 400 ? -1 : 1);
if (!n3) throw new Error("Could not find a matching font-weight for value " + t4);
return n3;
}(a2.weight, o2))) throw new Error("Failed to resolve a font for the rule '" + Et(a2) + "'.");
return o2;
}
function Dt(t3) {
return t3.trimLeft();
}
function Rt(t3, e2) {
for (var r2 = 0; r2 < t3.length; ) {
if (t3.charAt(r2) === e2) return [t3.substring(0, r2), t3.substring(r2 + 1)];
r2 += 1;
}
return null;
}
function Tt(t3) {
var e2 = t3.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);
return null === e2 ? null : [e2[0], t3.substring(e2[0].length)];
}
var Ut, zt, Ht, Wt = ["times"];
!function(e2) {
var r2, n2, i2, o2, s2, c2, u2, h2, l2, d2 = function(t3) {
return t3 = t3 || {}, this.isStrokeTransparent = t3.isStrokeTransparent || false, this.strokeOpacity = t3.strokeOpacity || 1, this.strokeStyle = t3.strokeStyle || "#000000", this.fillStyle = t3.fillStyle || "#000000", this.isFillTransparent = t3.isFillTransparent || false, this.fillOpacity = t3.fillOpacity || 1, this.font = t3.font || "10px sans-serif", this.textBaseline = t3.textBaseline || "alphabetic", this.textAlign = t3.textAlign || "left", this.lineWidth = t3.lineWidth || 1, this.lineJoin = t3.lineJoin || "miter", this.lineCap = t3.lineCap || "butt", this.path = t3.path || [], this.transform = void 0 !== t3.transform ? t3.transform.clone() : new h2(), this.globalCompositeOperation = t3.globalCompositeOperation || "normal", this.globalAlpha = t3.globalAlpha || 1, this.clip_path = t3.clip_path || [], this.currentPoint = t3.currentPoint || new c2(), this.miterLimit = t3.miterLimit || 10, this.lastPoint = t3.lastPoint || new c2(), this.lineDashOffset = t3.lineDashOffset || 0, this.lineDash = t3.lineDash || [], this.margin = t3.margin || [0, 0, 0, 0], this.prevPageLastElemOffset = t3.prevPageLastElemOffset || 0, this.ignoreClearRect = "boolean" != typeof t3.ignoreClearRect || t3.ignoreClearRect, this;
};
e2.events.push(["initialized", function() {
this.context2d = new p2(this), r2 = this.internal.f2, n2 = this.internal.getCoordinateString, i2 = this.internal.getVerticalCoordinateString, o2 = this.internal.getHorizontalCoordinate, s2 = this.internal.getVerticalCoordinate, c2 = this.internal.Point, u2 = this.internal.Rectangle, h2 = this.internal.Matrix, l2 = new d2();
}]);
var p2 = function(t3) {
Object.defineProperty(this, "canvas", { get: function() {
return { parentNode: false, style: false };
} });
var e3 = t3;
Object.defineProperty(this, "pdf", { get: function() {
return e3;
} });
var r3 = false;
Object.defineProperty(this, "pageWrapXEnabled", { get: function() {
return r3;
}, set: function(t4) {
r3 = Boolean(t4);
} });
var n3 = false;
Object.defineProperty(this, "pageWrapYEnabled", { get: function() {
return n3;
}, set: function(t4) {
n3 = Boolean(t4);
} });
var i3 = 0;
Object.defineProperty(this, "posX", { get: function() {
return i3;
}, set: function(t4) {
isNaN(t4) || (i3 = t4);
} });
var a2 = 0;
Object.defineProperty(this, "posY", { get: function() {
return a2;
}, set: function(t4) {
isNaN(t4) || (a2 = t4);
} }), Object.defineProperty(this, "margin", { get: function() {
return l2.margin;
}, set: function(t4) {
var e4;
"number" == typeof t4 ? e4 = [t4, t4, t4, t4] : ((e4 = new Array(4))[0] = t4[0], e4[1] = t4.length >= 2 ? t4[1] : e4[0], e4[2] = t4.length >= 3 ? t4[2] : e4[0], e4[3] = t4.length >= 4 ? t4[3] : e4[1]), l2.margin = e4;
} });
var o3 = false;
Object.defineProperty(this, "autoPaging", { get: function() {
return o3;
}, set: function(t4) {
o3 = t4;
} });
var s3 = 0;
Object.defineProperty(this, "lastBreak", { get: function() {
return s3;
}, set: function(t4) {
s3 = t4;
} });
var c3 = [];
Object.defineProperty(this, "pageBreaks", { get: function() {
return c3;
}, set: function(t4) {
c3 = t4;
} }), Object.defineProperty(this, "ctx", { get: function() {
return l2;
}, set: function(t4) {
t4 instanceof d2 && (l2 = t4);
} }), Object.defineProperty(this, "path", { get: function() {
return l2.path;
}, set: function(t4) {
l2.path = t4;
} });
var u3 = [];
Object.defineProperty(this, "ctxStack", { get: function() {
return u3;
}, set: function(t4) {
u3 = t4;
} }), Object.defineProperty(this, "fillStyle", { get: function() {
return this.ctx.fillStyle;
}, set: function(t4) {
var e4;
e4 = g2(t4), this.ctx.fillStyle = e4.style, this.ctx.isFillTransparent = 0 === e4.a, this.ctx.fillOpacity = e4.a, this.pdf.setFillColor(e4.r, e4.g, e4.b, { a: e4.a }), this.pdf.setTextColor(e4.r, e4.g, e4.b, { a: e4.a });
} }), Object.defineProperty(this, "strokeStyle", { get: function() {
return this.ctx.strokeStyle;
}, set: function(t4) {
var e4 = g2(t4);
this.ctx.strokeStyle = e4.style, this.ctx.isStrokeTransparent = 0 === e4.a, this.ctx.strokeOpacity = e4.a, 0 === e4.a ? this.pdf.setDrawColor(255, 255, 255) : (e4.a, this.pdf.setDrawColor(e4.r, e4.g, e4.b));
} }), Object.defineProperty(this, "lineCap", { get: function() {
return this.ctx.lineCap;
}, set: function(t4) {
-1 !== ["butt", "round", "square"].indexOf(t4) && (this.ctx.lineCap = t4, this.pdf.setLineCap(t4));
} }), Object.defineProperty(this, "lineWidth", { get: function() {
return this.ctx.lineWidth;
}, set: function(t4) {
isNaN(t4) || (this.ctx.lineWidth = t4, this.pdf.setLineWidth(t4));
} }), Object.defineProperty(this, "lineJoin", { get: function() {
return this.ctx.lineJoin;
}, set: function(t4) {
-1 !== ["bevel", "round", "miter"].indexOf(t4) && (this.ctx.lineJoin = t4, this.pdf.setLineJoin(t4));
} }), Object.defineProperty(this, "miterLimit", { get: function() {
return this.ctx.miterLimit;
}, set: function(t4) {
isNaN(t4) || (this.ctx.miterLimit = t4, this.pdf.setMiterLimit(t4));
} }), Object.defineProperty(this, "textBaseline", { get: function() {
return this.ctx.textBaseline;
}, set: function(t4) {
this.ctx.textBaseline = t4;
} }), Object.defineProperty(this, "textAlign", { get: function() {
return this.ctx.textAlign;
}, set: function(t4) {
-1 !== ["right", "end", "center", "left", "start"].indexOf(t4) && (this.ctx.textAlign = t4);
} });
var h3 = null;
function f2(t4, e4) {
if (null === h3) {
var r4 = function(t5) {
var e5 = [];
return Object.keys(t5).forEach(function(r5) {
t5[r5].forEach(function(t6) {
var n4 = null;
switch (t6) {
case "bold":
n4 = { family: r5, weight: "bold" };
break;
case "italic":
n4 = { family: r5, style: "italic" };
break;
case "bolditalic":
n4 = { family: r5, weight: "bold", style: "italic" };
break;
case "":
case "normal":
n4 = { family: r5 };
}
null !== n4 && (n4.ref = { name: r5, style: t6 }, e5.push(n4));
});
}), e5;
}(t4.getFontList());
h3 = function(t5) {
for (var e5 = {}, r5 = 0; r5 < t5.length; ++r5) {
var n4 = jt(t5[r5]), i4 = n4.family, a3 = n4.stretch, o4 = n4.style, s4 = n4.weight;
e5[i4] = e5[i4] || {}, e5[i4][a3] = e5[i4][a3] || {}, e5[i4][a3][o4] = e5[i4][a3][o4] || {}, e5[i4][a3][o4][s4] = n4;
}
return e5;
}(r4.concat(e4));
}
return h3;
}
var p3 = null;
Object.defineProperty(this, "fontFaces", { get: function() {
return p3;
}, set: function(t4) {
h3 = null, p3 = t4;
} }), Object.defineProperty(this, "font", { get: function() {
return this.ctx.font;
}, set: function(t4) {
var e4;
if (this.ctx.font = t4, null !== (e4 = /^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-_,\"\'\sa-z]+?)\s*$/i.exec(t4))) {
var r4 = e4[1], n4 = (e4[2], e4[3]), i4 = e4[4], a3 = (e4[5], e4[6]), o4 = /^([.\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i.exec(i4)[2];
i4 = "px" === o4 ? Math.floor(parseFloat(i4) * this.pdf.internal.scaleFactor) : "em" === o4 ? Math.floor(parseFloat(i4) * this.pdf.getFontSize()) : Math.floor(parseFloat(i4) * this.pdf.internal.scaleFactor), this.pdf.setFontSize(i4);
var s4 = function(t5) {
var e5, r5, n5 = [], i5 = t5.trim();
if ("" === i5) return Wt;
if (i5 in Mt) return [Mt[i5]];
for (; "" !== i5; ) {
switch (r5 = null, e5 = (i5 = Dt(i5)).charAt(0)) {
case '"':
case "'":
r5 = Rt(i5.substring(1), e5);
break;
default:
r5 = Tt(i5);
}
if (null === r5) return Wt;
if (n5.push(r5[0]), "" !== (i5 = Dt(r5[1])) && "," !== i5.charAt(0)) return Wt;
i5 = i5.replace(/^,/, "");
}
return n5;
}(a3);
if (this.fontFaces) {
var c4 = qt(f2(this.pdf, this.fontFaces), s4.map(function(t5) {
return { family: t5, stretch: "normal", weight: n4, style: r4 };
}));
this.pdf.setFont(c4.ref.name, c4.ref.style);
} else {
var u4 = "";
("bold" === n4 || parseInt(n4, 10) >= 700 || "bold" === r4) && (u4 = "bold"), "italic" === r4 && (u4 += "italic"), 0 === u4.length && (u4 = "normal");
for (var h4 = "", l3 = { arial: "Helvetica", Arial: "Helvetica", verdana: "Helvetica", Verdana: "Helvetica", helvetica: "Helvetica", Helvetica: "Helvetica", "sans-serif": "Helvetica", fixed: "Courier", monospace: "Courier", terminal: "Courier", cursive: "Times", fantasy: "Times", serif: "Times" }, d3 = 0; d3 < s4.length; d3++) {
if (void 0 !== this.pdf.internal.getFont(s4[d3], u4, { noFallback: true, disableWarning: true })) {
h4 = s4[d3];
break;
}
if ("bolditalic" === u4 && void 0 !== this.pdf.internal.getFont(s4[d3], "bold", { noFallback: true, disableWarning: true })) h4 = s4[d3], u4 = "bold";
else if (void 0 !== this.pdf.internal.getFont(s4[d3], "normal", { noFallback: true, disableWarning: true })) {
h4 = s4[d3], u4 = "normal";
break;
}
}
if ("" === h4) {
for (var p4 = 0; p4 < s4.length; p4++) if (l3[s4[p4]]) {
h4 = l3[s4[p4]];
break;
}
}
h4 = "" === h4 ? "Times" : h4, this.pdf.setFont(h4, u4);
}
}
} }), Object.defineProperty(this, "globalCompositeOperation", { get: function() {
return this.ctx.globalCompositeOperation;
}, set: function(t4) {
this.ctx.globalCompositeOperation = t4;
} }), Object.defineProperty(this, "globalAlpha", { get: function() {
return this.ctx.globalAlpha;
}, set: function(t4) {
this.ctx.globalAlpha = t4;
} }), Object.defineProperty(this, "lineDashOffset", { get: function() {
return this.ctx.lineDashOffset;
}, set: function(t4) {
this.ctx.lineDashOffset = t4, T2.call(this);
} }), Object.defineProperty(this, "lineDash", { get: function() {
return this.ctx.lineDash;
}, set: function(t4) {
this.ctx.lineDash = t4, T2.call(this);
} }), Object.defineProperty(this, "ignoreClearRect", { get: function() {
return this.ctx.ignoreClearRect;
}, set: function(t4) {
this.ctx.ignoreClearRect = Boolean(t4);
} });
};
p2.prototype.setLineDash = function(t3) {
this.lineDash = t3;
}, p2.prototype.getLineDash = function() {
return this.lineDash.length % 2 ? this.lineDash.concat(this.lineDash) : this.lineDash.slice();
}, p2.prototype.fill = function() {
A5.call(this, "fill", false);
}, p2.prototype.stroke = function() {
A5.call(this, "stroke", false);
}, p2.prototype.beginPath = function() {
this.path = [{ type: "begin" }];
}, p2.prototype.moveTo = function(t3, e3) {
if (isNaN(t3) || isNaN(e3)) throw a$2.error("jsPDF.context2d.moveTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.moveTo");
var r3 = this.ctx.transform.applyToPoint(new c2(t3, e3));
this.path.push({ type: "mt", x: r3.x, y: r3.y }), this.ctx.lastPoint = new c2(t3, e3);
}, p2.prototype.closePath = function() {
var e3 = new c2(0, 0), r3 = 0;
for (r3 = this.path.length - 1; -1 !== r3; r3--) if ("begin" === this.path[r3].type && "object" === _typeof$2(this.path[r3 + 1]) && "number" == typeof this.path[r3 + 1].x) {
e3 = new c2(this.path[r3 + 1].x, this.path[r3 + 1].y);
break;
}
this.path.push({ type: "close" }), this.ctx.lastPoint = new c2(e3.x, e3.y);
}, p2.prototype.lineTo = function(t3, e3) {
if (isNaN(t3) || isNaN(e3)) throw a$2.error("jsPDF.context2d.lineTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.lineTo");
var r3 = this.ctx.transform.applyToPoint(new c2(t3, e3));
this.path.push({ type: "lt", x: r3.x, y: r3.y }), this.ctx.lastPoint = new c2(r3.x, r3.y);
}, p2.prototype.clip = function() {
this.ctx.clip_path = JSON.parse(JSON.stringify(this.path)), A5.call(this, null, true);
}, p2.prototype.quadraticCurveTo = function(t3, e3, r3, n3) {
if (isNaN(r3) || isNaN(n3) || isNaN(t3) || isNaN(e3)) throw a$2.error("jsPDF.context2d.quadraticCurveTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.quadraticCurveTo");
var i3 = this.ctx.transform.applyToPoint(new c2(r3, n3)), o3 = this.ctx.transform.applyToPoint(new c2(t3, e3));
this.path.push({ type: "qct", x1: o3.x, y1: o3.y, x: i3.x, y: i3.y }), this.ctx.lastPoint = new c2(i3.x, i3.y);
}, p2.prototype.bezierCurveTo = function(t3, e3, r3, n3, i3, o3) {
if (isNaN(i3) || isNaN(o3) || isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3)) throw a$2.error("jsPDF.context2d.bezierCurveTo: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.bezierCurveTo");
var s3 = this.ctx.transform.applyToPoint(new c2(i3, o3)), u3 = this.ctx.transform.applyToPoint(new c2(t3, e3)), h3 = this.ctx.transform.applyToPoint(new c2(r3, n3));
this.path.push({ type: "bct", x1: u3.x, y1: u3.y, x2: h3.x, y2: h3.y, x: s3.x, y: s3.y }), this.ctx.lastPoint = new c2(s3.x, s3.y);
}, p2.prototype.arc = function(t3, e3, r3, n3, i3, o3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3) || isNaN(i3)) throw a$2.error("jsPDF.context2d.arc: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.arc");
if (o3 = Boolean(o3), !this.ctx.transform.isIdentity) {
var s3 = this.ctx.transform.applyToPoint(new c2(t3, e3));
t3 = s3.x, e3 = s3.y;
var u3 = this.ctx.transform.applyToPoint(new c2(0, r3)), h3 = this.ctx.transform.applyToPoint(new c2(0, 0));
r3 = Math.sqrt(Math.pow(u3.x - h3.x, 2) + Math.pow(u3.y - h3.y, 2));
}
Math.abs(i3 - n3) >= 2 * Math.PI && (n3 = 0, i3 = 2 * Math.PI), this.path.push({ type: "arc", x: t3, y: e3, radius: r3, startAngle: n3, endAngle: i3, counterclockwise: o3 });
}, p2.prototype.arcTo = function(t3, e3, r3, n3, i3) {
throw new Error("arcTo not implemented.");
}, p2.prototype.rect = function(t3, e3, r3, n3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3)) throw a$2.error("jsPDF.context2d.rect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.rect");
this.moveTo(t3, e3), this.lineTo(t3 + r3, e3), this.lineTo(t3 + r3, e3 + n3), this.lineTo(t3, e3 + n3), this.lineTo(t3, e3), this.lineTo(t3 + r3, e3), this.lineTo(t3, e3);
}, p2.prototype.fillRect = function(t3, e3, r3, n3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3)) throw a$2.error("jsPDF.context2d.fillRect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.fillRect");
if (!m2.call(this)) {
var i3 = {};
"butt" !== this.lineCap && (i3.lineCap = this.lineCap, this.lineCap = "butt"), "miter" !== this.lineJoin && (i3.lineJoin = this.lineJoin, this.lineJoin = "miter"), this.beginPath(), this.rect(t3, e3, r3, n3), this.fill(), i3.hasOwnProperty("lineCap") && (this.lineCap = i3.lineCap), i3.hasOwnProperty("lineJoin") && (this.lineJoin = i3.lineJoin);
}
}, p2.prototype.strokeRect = function(t3, e3, r3, n3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3)) throw a$2.error("jsPDF.context2d.strokeRect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.strokeRect");
v2.call(this) || (this.beginPath(), this.rect(t3, e3, r3, n3), this.stroke());
}, p2.prototype.clearRect = function(t3, e3, r3, n3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3)) throw a$2.error("jsPDF.context2d.clearRect: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.clearRect");
this.ignoreClearRect || (this.fillStyle = "#ffffff", this.fillRect(t3, e3, r3, n3));
}, p2.prototype.save = function(t3) {
t3 = "boolean" != typeof t3 || t3;
for (var e3 = this.pdf.internal.getCurrentPageInfo().pageNumber, r3 = 0; r3 < this.pdf.internal.getNumberOfPages(); r3++) this.pdf.setPage(r3 + 1), this.pdf.internal.out("q");
if (this.pdf.setPage(e3), t3) {
this.ctx.fontSize = this.pdf.internal.getFontSize();
var n3 = new d2(this.ctx);
this.ctxStack.push(this.ctx), this.ctx = n3;
}
}, p2.prototype.restore = function(t3) {
t3 = "boolean" != typeof t3 || t3;
for (var e3 = this.pdf.internal.getCurrentPageInfo().pageNumber, r3 = 0; r3 < this.pdf.internal.getNumberOfPages(); r3++) this.pdf.setPage(r3 + 1), this.pdf.internal.out("Q");
this.pdf.setPage(e3), t3 && 0 !== this.ctxStack.length && (this.ctx = this.ctxStack.pop(), this.fillStyle = this.ctx.fillStyle, this.strokeStyle = this.ctx.strokeStyle, this.font = this.ctx.font, this.lineCap = this.ctx.lineCap, this.lineWidth = this.ctx.lineWidth, this.lineJoin = this.ctx.lineJoin, this.lineDash = this.ctx.lineDash, this.lineDashOffset = this.ctx.lineDashOffset);
}, p2.prototype.toDataURL = function() {
throw new Error("toDataUrl not implemented.");
};
var g2 = function(t3) {
var e3, r3, n3, i3;
if (true === t3.isCanvasGradient && (t3 = t3.getColor()), !t3) return { r: 0, g: 0, b: 0, a: 0, style: t3 };
if (/transparent|rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*0+\s*\)/.test(t3)) e3 = 0, r3 = 0, n3 = 0, i3 = 0;
else {
var a2 = /rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(t3);
if (null !== a2) e3 = parseInt(a2[1]), r3 = parseInt(a2[2]), n3 = parseInt(a2[3]), i3 = 1;
else if (null !== (a2 = /rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)/.exec(t3))) e3 = parseInt(a2[1]), r3 = parseInt(a2[2]), n3 = parseInt(a2[3]), i3 = parseFloat(a2[4]);
else {
if (i3 = 1, "string" == typeof t3 && "#" !== t3.charAt(0)) {
var o3 = new f$2(t3);
t3 = o3.ok ? o3.toHex() : "#000000";
}
4 === t3.length ? (e3 = t3.substring(1, 2), e3 += e3, r3 = t3.substring(2, 3), r3 += r3, n3 = t3.substring(3, 4), n3 += n3) : (e3 = t3.substring(1, 3), r3 = t3.substring(3, 5), n3 = t3.substring(5, 7)), e3 = parseInt(e3, 16), r3 = parseInt(r3, 16), n3 = parseInt(n3, 16);
}
}
return { r: e3, g: r3, b: n3, a: i3, style: t3 };
}, m2 = function() {
return this.ctx.isFillTransparent || 0 == this.globalAlpha;
}, v2 = function() {
return Boolean(this.ctx.isStrokeTransparent || 0 == this.globalAlpha);
};
p2.prototype.fillText = function(t3, e3, r3, n3) {
if (isNaN(e3) || isNaN(r3) || "string" != typeof t3) throw a$2.error("jsPDF.context2d.fillText: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.fillText");
if (n3 = isNaN(n3) ? void 0 : n3, !m2.call(this)) {
var i3 = q2(this.ctx.transform.rotation), o3 = this.ctx.transform.scaleX;
C2.call(this, { text: t3, x: e3, y: r3, scale: o3, angle: i3, align: this.textAlign, maxWidth: n3 });
}
}, p2.prototype.strokeText = function(t3, e3, r3, n3) {
if (isNaN(e3) || isNaN(r3) || "string" != typeof t3) throw a$2.error("jsPDF.context2d.strokeText: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.strokeText");
if (!v2.call(this)) {
n3 = isNaN(n3) ? void 0 : n3;
var i3 = q2(this.ctx.transform.rotation), o3 = this.ctx.transform.scaleX;
C2.call(this, { text: t3, x: e3, y: r3, scale: o3, renderingMode: "stroke", angle: i3, align: this.textAlign, maxWidth: n3 });
}
}, p2.prototype.measureText = function(t3) {
if ("string" != typeof t3) throw a$2.error("jsPDF.context2d.measureText: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.measureText");
var e3 = this.pdf, r3 = this.pdf.internal.scaleFactor, n3 = e3.internal.getFontSize(), i3 = e3.getStringUnitWidth(t3) * n3 / e3.internal.scaleFactor, o3 = function(t4) {
var e4 = (t4 = t4 || {}).width || 0;
return Object.defineProperty(this, "width", { get: function() {
return e4;
} }), this;
};
return new o3({ width: i3 *= Math.round(96 * r3 / 72 * 1e4) / 1e4 });
}, p2.prototype.scale = function(t3, e3) {
if (isNaN(t3) || isNaN(e3)) throw a$2.error("jsPDF.context2d.scale: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.scale");
var r3 = new h2(t3, 0, 0, e3, 0, 0);
this.ctx.transform = this.ctx.transform.multiply(r3);
}, p2.prototype.rotate = function(t3) {
if (isNaN(t3)) throw a$2.error("jsPDF.context2d.rotate: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.rotate");
var e3 = new h2(Math.cos(t3), Math.sin(t3), -Math.sin(t3), Math.cos(t3), 0, 0);
this.ctx.transform = this.ctx.transform.multiply(e3);
}, p2.prototype.translate = function(t3, e3) {
if (isNaN(t3) || isNaN(e3)) throw a$2.error("jsPDF.context2d.translate: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.translate");
var r3 = new h2(1, 0, 0, 1, t3, e3);
this.ctx.transform = this.ctx.transform.multiply(r3);
}, p2.prototype.transform = function(t3, e3, r3, n3, i3, o3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3) || isNaN(i3) || isNaN(o3)) throw a$2.error("jsPDF.context2d.transform: Invalid arguments", arguments), new Error("Invalid arguments passed to jsPDF.context2d.transform");
var s3 = new h2(t3, e3, r3, n3, i3, o3);
this.ctx.transform = this.ctx.transform.multiply(s3);
}, p2.prototype.setTransform = function(t3, e3, r3, n3, i3, a2) {
t3 = isNaN(t3) ? 1 : t3, e3 = isNaN(e3) ? 0 : e3, r3 = isNaN(r3) ? 0 : r3, n3 = isNaN(n3) ? 1 : n3, i3 = isNaN(i3) ? 0 : i3, a2 = isNaN(a2) ? 0 : a2, this.ctx.transform = new h2(t3, e3, r3, n3, i3, a2);
};
var b2 = function() {
return this.margin[0] > 0 || this.margin[1] > 0 || this.margin[2] > 0 || this.margin[3] > 0;
};
p2.prototype.drawImage = function(t3, e3, r3, n3, i3, a2, o3, s3, c3) {
var l3 = this.pdf.getImageProperties(t3), f2 = 1, d3 = 1, p3 = 1, g3 = 1;
void 0 !== n3 && void 0 !== s3 && (p3 = s3 / n3, g3 = c3 / i3, f2 = l3.width / n3 * s3 / n3, d3 = l3.height / i3 * c3 / i3), void 0 === a2 && (a2 = e3, o3 = r3, e3 = 0, r3 = 0), void 0 !== n3 && void 0 === s3 && (s3 = n3, c3 = i3), void 0 === n3 && void 0 === s3 && (s3 = l3.width, c3 = l3.height);
for (var m3, v3 = this.ctx.transform.decompose(), w3 = q2(v3.rotate.shx), A6 = new h2(), S3 = (A6 = (A6 = (A6 = A6.multiply(v3.translate)).multiply(v3.skew)).multiply(v3.scale)).applyToRectangle(new u2(a2 - e3 * p3, o3 - r3 * g3, n3 * f2, i3 * d3)), _3 = y2.call(this, S3), P3 = [], k3 = 0; k3 < _3.length; k3 += 1) -1 === P3.indexOf(_3[k3]) && P3.push(_3[k3]);
if (L2(P3), this.autoPaging) for (var I3 = P3[0], F3 = P3[P3.length - 1], C3 = I3; C3 < F3 + 1; C3++) {
this.pdf.setPage(C3);
var j3 = this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1], O3 = 1 === C3 ? this.posY + this.margin[0] : this.margin[0], B4 = this.pdf.internal.pageSize.height - this.posY - this.margin[0] - this.margin[2], M3 = this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2], E3 = 1 === C3 ? 0 : B4 + (C3 - 2) * M3;
if (0 !== this.ctx.clip_path.length) {
var D3 = this.path;
m3 = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = N2(m3, this.posX + this.margin[3], -E3 + O3 + this.ctx.prevPageLastElemOffset), x2.call(this, "fill", true), this.path = D3;
}
var R3 = JSON.parse(JSON.stringify(S3));
R3 = N2([R3], this.posX + this.margin[3], -E3 + O3 + this.ctx.prevPageLastElemOffset)[0];
var T3 = (C3 > I3 || C3 < F3) && b2.call(this);
T3 && (this.pdf.saveGraphicsState(), this.pdf.rect(this.margin[3], this.margin[0], j3, M3, null).clip().discardPath()), this.pdf.addImage(t3, "JPEG", R3.x, R3.y, R3.w, R3.h, null, null, w3), T3 && this.pdf.restoreGraphicsState();
}
else this.pdf.addImage(t3, "JPEG", S3.x, S3.y, S3.w, S3.h, null, null, w3);
};
var y2 = function(t3, e3, r3) {
var n3 = [];
e3 = e3 || this.pdf.internal.pageSize.width, r3 = r3 || this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];
var i3 = this.posY + this.ctx.prevPageLastElemOffset;
switch (t3.type) {
default:
case "mt":
case "lt":
n3.push(Math.floor((t3.y + i3) / r3) + 1);
break;
case "arc":
n3.push(Math.floor((t3.y + i3 - t3.radius) / r3) + 1), n3.push(Math.floor((t3.y + i3 + t3.radius) / r3) + 1);
break;
case "qct":
var a2 = D2(this.ctx.lastPoint.x, this.ctx.lastPoint.y, t3.x1, t3.y1, t3.x, t3.y);
n3.push(Math.floor((a2.y + i3) / r3) + 1), n3.push(Math.floor((a2.y + a2.h + i3) / r3) + 1);
break;
case "bct":
var o3 = R2(this.ctx.lastPoint.x, this.ctx.lastPoint.y, t3.x1, t3.y1, t3.x2, t3.y2, t3.x, t3.y);
n3.push(Math.floor((o3.y + i3) / r3) + 1), n3.push(Math.floor((o3.y + o3.h + i3) / r3) + 1);
break;
case "rect":
n3.push(Math.floor((t3.y + i3) / r3) + 1), n3.push(Math.floor((t3.y + t3.h + i3) / r3) + 1);
}
for (var s3 = 0; s3 < n3.length; s3 += 1) for (; this.pdf.internal.getNumberOfPages() < n3[s3]; ) w2.call(this);
return n3;
}, w2 = function() {
var t3 = this.fillStyle, e3 = this.strokeStyle, r3 = this.font, n3 = this.lineCap, i3 = this.lineWidth, a2 = this.lineJoin;
this.pdf.addPage(), this.fillStyle = t3, this.strokeStyle = e3, this.font = r3, this.lineCap = n3, this.lineWidth = i3, this.lineJoin = a2;
}, N2 = function(t3, e3, r3) {
for (var n3 = 0; n3 < t3.length; n3++) switch (t3[n3].type) {
case "bct":
t3[n3].x2 += e3, t3[n3].y2 += r3;
case "qct":
t3[n3].x1 += e3, t3[n3].y1 += r3;
case "mt":
case "lt":
case "arc":
default:
t3[n3].x += e3, t3[n3].y += r3;
}
return t3;
}, L2 = function(t3) {
return t3.sort(function(t4, e3) {
return t4 - e3;
});
}, A5 = function(t3, e3) {
for (var r3, n3, i3 = this.fillStyle, a2 = this.strokeStyle, o3 = this.lineCap, s3 = this.lineWidth, c3 = Math.abs(s3 * this.ctx.transform.scaleX), u3 = this.lineJoin, h3 = JSON.parse(JSON.stringify(this.path)), l3 = JSON.parse(JSON.stringify(this.path)), f2 = [], d3 = 0; d3 < l3.length; d3++) if (void 0 !== l3[d3].x) for (var p3 = y2.call(this, l3[d3]), g3 = 0; g3 < p3.length; g3 += 1) -1 === f2.indexOf(p3[g3]) && f2.push(p3[g3]);
for (var m3 = 0; m3 < f2.length; m3++) for (; this.pdf.internal.getNumberOfPages() < f2[m3]; ) w2.call(this);
if (L2(f2), this.autoPaging) for (var v3 = f2[0], A6 = f2[f2.length - 1], S3 = v3; S3 < A6 + 1; S3++) {
this.pdf.setPage(S3), this.fillStyle = i3, this.strokeStyle = a2, this.lineCap = o3, this.lineWidth = c3, this.lineJoin = u3;
var _3 = this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1], P3 = 1 === S3 ? this.posY + this.margin[0] : this.margin[0], k3 = this.pdf.internal.pageSize.height - this.posY - this.margin[0] - this.margin[2], I3 = this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2], F3 = 1 === S3 ? 0 : k3 + (S3 - 2) * I3;
if (0 !== this.ctx.clip_path.length) {
var C3 = this.path;
r3 = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = N2(r3, this.posX + this.margin[3], -F3 + P3 + this.ctx.prevPageLastElemOffset), x2.call(this, t3, true), this.path = C3;
}
if (n3 = JSON.parse(JSON.stringify(h3)), this.path = N2(n3, this.posX + this.margin[3], -F3 + P3 + this.ctx.prevPageLastElemOffset), false === e3 || 0 === S3) {
var j3 = (S3 > v3 || S3 < A6) && b2.call(this);
j3 && (this.pdf.saveGraphicsState(), this.pdf.rect(this.margin[3], this.margin[0], _3, I3, null).clip().discardPath()), x2.call(this, t3, e3), j3 && this.pdf.restoreGraphicsState();
}
this.lineWidth = s3;
}
else this.lineWidth = c3, x2.call(this, t3, e3), this.lineWidth = s3;
this.path = h3;
}, x2 = function(t3, e3) {
if (("stroke" !== t3 || e3 || !v2.call(this)) && ("stroke" === t3 || e3 || !m2.call(this))) {
for (var r3, n3, i3 = [], a2 = this.path, o3 = 0; o3 < a2.length; o3++) {
var s3 = a2[o3];
switch (s3.type) {
case "begin":
i3.push({ begin: true });
break;
case "close":
i3.push({ close: true });
break;
case "mt":
i3.push({ start: s3, deltas: [], abs: [] });
break;
case "lt":
var c3 = i3.length;
if (a2[o3 - 1] && !isNaN(a2[o3 - 1].x) && (r3 = [s3.x - a2[o3 - 1].x, s3.y - a2[o3 - 1].y], c3 > 0)) {
for (; c3 >= 0; c3--) if (true !== i3[c3 - 1].close && true !== i3[c3 - 1].begin) {
i3[c3 - 1].deltas.push(r3), i3[c3 - 1].abs.push(s3);
break;
}
}
break;
case "bct":
r3 = [s3.x1 - a2[o3 - 1].x, s3.y1 - a2[o3 - 1].y, s3.x2 - a2[o3 - 1].x, s3.y2 - a2[o3 - 1].y, s3.x - a2[o3 - 1].x, s3.y - a2[o3 - 1].y], i3[i3.length - 1].deltas.push(r3);
break;
case "qct":
var u3 = a2[o3 - 1].x + 2 / 3 * (s3.x1 - a2[o3 - 1].x), h3 = a2[o3 - 1].y + 2 / 3 * (s3.y1 - a2[o3 - 1].y), l3 = s3.x + 2 / 3 * (s3.x1 - s3.x), f2 = s3.y + 2 / 3 * (s3.y1 - s3.y), d3 = s3.x, p3 = s3.y;
r3 = [u3 - a2[o3 - 1].x, h3 - a2[o3 - 1].y, l3 - a2[o3 - 1].x, f2 - a2[o3 - 1].y, d3 - a2[o3 - 1].x, p3 - a2[o3 - 1].y], i3[i3.length - 1].deltas.push(r3);
break;
case "arc":
i3.push({ deltas: [], abs: [], arc: true }), Array.isArray(i3[i3.length - 1].abs) && i3[i3.length - 1].abs.push(s3);
}
}
n3 = e3 ? null : "stroke" === t3 ? "stroke" : "fill";
for (var g3 = false, b3 = 0; b3 < i3.length; b3++) if (i3[b3].arc) for (var y3 = i3[b3].abs, w3 = 0; w3 < y3.length; w3++) {
var N3 = y3[w3];
"arc" === N3.type ? P2.call(this, N3.x, N3.y, N3.radius, N3.startAngle, N3.endAngle, N3.counterclockwise, void 0, e3, !g3) : j2.call(this, N3.x, N3.y), g3 = true;
}
else if (true === i3[b3].close) this.pdf.internal.out("h"), g3 = false;
else if (true !== i3[b3].begin) {
var L3 = i3[b3].start.x, A6 = i3[b3].start.y;
O2.call(this, i3[b3].deltas, L3, A6), g3 = true;
}
n3 && k2.call(this, n3), e3 && I2.call(this);
}
}, S2 = function(t3) {
var e3 = this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor, r3 = e3 * (this.pdf.internal.getLineHeightFactor() - 1);
switch (this.ctx.textBaseline) {
case "bottom":
return t3 - r3;
case "top":
return t3 + e3 - r3;
case "hanging":
return t3 + e3 - 2 * r3;
case "middle":
return t3 + e3 / 2 - r3;
case "ideographic":
return t3;
case "alphabetic":
default:
return t3;
}
}, _2 = function(t3) {
return t3 + this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor * (this.pdf.internal.getLineHeightFactor() - 1);
};
p2.prototype.createLinearGradient = function() {
var t3 = function() {
};
return t3.colorStops = [], t3.addColorStop = function(t4, e3) {
this.colorStops.push([t4, e3]);
}, t3.getColor = function() {
return 0 === this.colorStops.length ? "#000000" : this.colorStops[0][1];
}, t3.isCanvasGradient = true, t3;
}, p2.prototype.createPattern = function() {
return this.createLinearGradient();
}, p2.prototype.createRadialGradient = function() {
return this.createLinearGradient();
};
var P2 = function(t3, e3, r3, n3, i3, a2, o3, s3, c3) {
for (var u3 = M2.call(this, r3, n3, i3, a2), h3 = 0; h3 < u3.length; h3++) {
var l3 = u3[h3];
0 === h3 && (c3 ? F2.call(this, l3.x1 + t3, l3.y1 + e3) : j2.call(this, l3.x1 + t3, l3.y1 + e3)), B3.call(this, t3, e3, l3.x2, l3.y2, l3.x3, l3.y3, l3.x4, l3.y4);
}
s3 ? I2.call(this) : k2.call(this, o3);
}, k2 = function(t3) {
switch (t3) {
case "stroke":
this.pdf.internal.out("S");
break;
case "fill":
this.pdf.internal.out("f");
}
}, I2 = function() {
this.pdf.clip(), this.pdf.discardPath();
}, F2 = function(t3, e3) {
this.pdf.internal.out(n2(t3) + " " + i2(e3) + " m");
}, C2 = function(t3) {
var e3;
switch (t3.align) {
case "right":
case "end":
e3 = "right";
break;
case "center":
e3 = "center";
break;
case "left":
case "start":
default:
e3 = "left";
}
var r3 = this.pdf.getTextDimensions(t3.text), n3 = S2.call(this, t3.y), i3 = _2.call(this, n3) - r3.h, a2 = this.ctx.transform.applyToPoint(new c2(t3.x, n3)), o3 = this.ctx.transform.decompose(), s3 = new h2();
s3 = (s3 = (s3 = s3.multiply(o3.translate)).multiply(o3.skew)).multiply(o3.scale);
for (var l3, f2, d3, p3 = this.ctx.transform.applyToRectangle(new u2(t3.x, n3, r3.w, r3.h)), g3 = s3.applyToRectangle(new u2(t3.x, i3, r3.w, r3.h)), m3 = y2.call(this, g3), v3 = [], w3 = 0; w3 < m3.length; w3 += 1) -1 === v3.indexOf(m3[w3]) && v3.push(m3[w3]);
if (L2(v3), this.autoPaging) for (var A6 = v3[0], P3 = v3[v3.length - 1], k3 = A6; k3 < P3 + 1; k3++) {
this.pdf.setPage(k3);
var I3 = 1 === k3 ? this.posY + this.margin[0] : this.margin[0], F3 = this.pdf.internal.pageSize.height - this.posY - this.margin[0] - this.margin[2], C3 = this.pdf.internal.pageSize.height - this.margin[2], j3 = C3 - this.margin[0], O3 = this.pdf.internal.pageSize.width - this.margin[1], B4 = O3 - this.margin[3], M3 = 1 === k3 ? 0 : F3 + (k3 - 2) * j3;
if (0 !== this.ctx.clip_path.length) {
var E3 = this.path;
l3 = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = N2(l3, this.posX + this.margin[3], -1 * M3 + I3), x2.call(this, "fill", true), this.path = E3;
}
var q3 = N2([JSON.parse(JSON.stringify(g3))], this.posX + this.margin[3], -M3 + I3 + this.ctx.prevPageLastElemOffset)[0];
t3.scale >= 0.01 && (f2 = this.pdf.internal.getFontSize(), this.pdf.setFontSize(f2 * t3.scale), d3 = this.lineWidth, this.lineWidth = d3 * t3.scale);
var D3 = "text" !== this.autoPaging;
if (D3 || q3.y + q3.h <= C3) {
if (D3 || q3.y >= I3 && q3.x <= O3) {
var R3 = D3 ? t3.text : this.pdf.splitTextToSize(t3.text, t3.maxWidth || O3 - q3.x)[0], T3 = N2([JSON.parse(JSON.stringify(p3))], this.posX + this.margin[3], -M3 + I3 + this.ctx.prevPageLastElemOffset)[0], U2 = D3 && (k3 > A6 || k3 < P3) && b2.call(this);
U2 && (this.pdf.saveGraphicsState(), this.pdf.rect(this.margin[3], this.margin[0], B4, j3, null).clip().discardPath()), this.pdf.text(R3, T3.x, T3.y, { angle: t3.angle, align: e3, renderingMode: t3.renderingMode }), U2 && this.pdf.restoreGraphicsState();
}
} else q3.y < C3 && (this.ctx.prevPageLastElemOffset += C3 - q3.y);
t3.scale >= 0.01 && (this.pdf.setFontSize(f2), this.lineWidth = d3);
}
else t3.scale >= 0.01 && (f2 = this.pdf.internal.getFontSize(), this.pdf.setFontSize(f2 * t3.scale), d3 = this.lineWidth, this.lineWidth = d3 * t3.scale), this.pdf.text(t3.text, a2.x + this.posX, a2.y + this.posY, { angle: t3.angle, align: e3, renderingMode: t3.renderingMode, maxWidth: t3.maxWidth }), t3.scale >= 0.01 && (this.pdf.setFontSize(f2), this.lineWidth = d3);
}, j2 = function(t3, e3, r3, a2) {
r3 = r3 || 0, a2 = a2 || 0, this.pdf.internal.out(n2(t3 + r3) + " " + i2(e3 + a2) + " l");
}, O2 = function(t3, e3, r3) {
return this.pdf.lines(t3, e3, r3, null, null);
}, B3 = function(t3, e3, n3, i3, a2, c3, u3, h3) {
this.pdf.internal.out([r2(o2(n3 + t3)), r2(s2(i3 + e3)), r2(o2(a2 + t3)), r2(s2(c3 + e3)), r2(o2(u3 + t3)), r2(s2(h3 + e3)), "c"].join(" "));
}, M2 = function(t3, e3, r3, n3) {
for (var i3 = 2 * Math.PI, a2 = Math.PI / 2; e3 > r3; ) e3 -= i3;
var o3 = Math.abs(r3 - e3);
o3 < i3 && n3 && (o3 = i3 - o3);
for (var s3 = [], c3 = n3 ? -1 : 1, u3 = e3; o3 > 1e-5; ) {
var h3 = u3 + c3 * Math.min(o3, a2);
s3.push(E2.call(this, t3, u3, h3)), o3 -= Math.abs(h3 - u3), u3 = h3;
}
return s3;
}, E2 = function(t3, e3, r3) {
var n3 = (r3 - e3) / 2, i3 = t3 * Math.cos(n3), a2 = t3 * Math.sin(n3), o3 = i3, s3 = -a2, c3 = o3 * o3 + s3 * s3, u3 = c3 + o3 * i3 + s3 * a2, h3 = 4 / 3 * (Math.sqrt(2 * c3 * u3) - u3) / (o3 * a2 - s3 * i3), l3 = o3 - h3 * s3, f2 = s3 + h3 * o3, d3 = l3, p3 = -f2, g3 = n3 + e3, m3 = Math.cos(g3), v3 = Math.sin(g3);
return { x1: t3 * Math.cos(e3), y1: t3 * Math.sin(e3), x2: l3 * m3 - f2 * v3, y2: l3 * v3 + f2 * m3, x3: d3 * m3 - p3 * v3, y3: d3 * v3 + p3 * m3, x4: t3 * Math.cos(r3), y4: t3 * Math.sin(r3) };
}, q2 = function(t3) {
return 180 * t3 / Math.PI;
}, D2 = function(t3, e3, r3, n3, i3, a2) {
var o3 = t3 + 0.5 * (r3 - t3), s3 = e3 + 0.5 * (n3 - e3), c3 = i3 + 0.5 * (r3 - i3), h3 = a2 + 0.5 * (n3 - a2), l3 = Math.min(t3, i3, o3, c3), f2 = Math.max(t3, i3, o3, c3), d3 = Math.min(e3, a2, s3, h3), p3 = Math.max(e3, a2, s3, h3);
return new u2(l3, d3, f2 - l3, p3 - d3);
}, R2 = function(t3, e3, r3, n3, i3, a2, o3, s3) {
var c3, h3, l3, f2, d3, p3, g3, m3, v3, b3, y3, w3, N3, L3, A6 = r3 - t3, x3 = n3 - e3, S3 = i3 - r3, _3 = a2 - n3, P3 = o3 - i3, k3 = s3 - a2;
for (h3 = 0; h3 < 41; h3++) v3 = (g3 = (l3 = t3 + (c3 = h3 / 40) * A6) + c3 * ((d3 = r3 + c3 * S3) - l3)) + c3 * (d3 + c3 * (i3 + c3 * P3 - d3) - g3), b3 = (m3 = (f2 = e3 + c3 * x3) + c3 * ((p3 = n3 + c3 * _3) - f2)) + c3 * (p3 + c3 * (a2 + c3 * k3 - p3) - m3), 0 == h3 ? (y3 = v3, w3 = b3, N3 = v3, L3 = b3) : (y3 = Math.min(y3, v3), w3 = Math.min(w3, b3), N3 = Math.max(N3, v3), L3 = Math.max(L3, b3));
return new u2(Math.round(y3), Math.round(w3), Math.round(N3 - y3), Math.round(L3 - w3));
}, T2 = function() {
if (this.prevLineDash || this.ctx.lineDash.length || this.ctx.lineDashOffset) {
var t3, e3, r3 = (t3 = this.ctx.lineDash, e3 = this.ctx.lineDashOffset, JSON.stringify({ lineDash: t3, lineDashOffset: e3 }));
this.prevLineDash !== r3 && (this.pdf.setLineDash(this.ctx.lineDash, this.ctx.lineDashOffset), this.prevLineDash = r3);
}
};
}(E$1.API), /**
* @license
* jsPDF filters PlugIn
* Copyright (c) 2014 Aras Abbasi
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function(t3) {
var r2 = function(t4) {
var e2, r3, n3, i3, a3, o2, s2, c2, u2, h2;
for (r3 = [], n3 = 0, i3 = (t4 += e2 = "\0\0\0\0".slice(t4.length % 4 || 4)).length; i3 > n3; n3 += 4) 0 !== (a3 = (t4.charCodeAt(n3) << 24) + (t4.charCodeAt(n3 + 1) << 16) + (t4.charCodeAt(n3 + 2) << 8) + t4.charCodeAt(n3 + 3)) ? (o2 = (a3 = ((a3 = ((a3 = ((a3 = (a3 - (h2 = a3 % 85)) / 85) - (u2 = a3 % 85)) / 85) - (c2 = a3 % 85)) / 85) - (s2 = a3 % 85)) / 85) % 85, r3.push(o2 + 33, s2 + 33, c2 + 33, u2 + 33, h2 + 33)) : r3.push(122);
return function(t5, e3) {
for (var r4 = e3; r4 > 0; r4--) t5.pop();
}(r3, e2.length), String.fromCharCode.apply(String, r3) + "~>";
}, n2 = function(t4) {
var e2, r3, n3, i3, a3, o2 = String, s2 = "length", c2 = 255, u2 = "charCodeAt", h2 = "slice", l2 = "replace";
for (t4[h2](-2), t4 = t4[h2](0, -2)[l2](/\s/g, "")[l2]("z", "!!!!!"), n3 = [], i3 = 0, a3 = (t4 += e2 = "uuuuu"[h2](t4[s2] % 5 || 5))[s2]; a3 > i3; i3 += 5) r3 = 52200625 * (t4[u2](i3) - 33) + 614125 * (t4[u2](i3 + 1) - 33) + 7225 * (t4[u2](i3 + 2) - 33) + 85 * (t4[u2](i3 + 3) - 33) + (t4[u2](i3 + 4) - 33), n3.push(c2 & r3 >> 24, c2 & r3 >> 16, c2 & r3 >> 8, c2 & r3);
return function(t5, e3) {
for (var r4 = e3; r4 > 0; r4--) t5.pop();
}(n3, e2[s2]), o2.fromCharCode.apply(o2, n3);
}, i2 = function(t4) {
var e2 = new RegExp(/^([0-9A-Fa-f]{2})+$/);
if (-1 !== (t4 = t4.replace(/\s/g, "")).indexOf(">") && (t4 = t4.substr(0, t4.indexOf(">"))), t4.length % 2 && (t4 += "0"), false === e2.test(t4)) return "";
for (var r3 = "", n3 = 0; n3 < t4.length; n3 += 2) r3 += String.fromCharCode("0x" + (t4[n3] + t4[n3 + 1]));
return r3;
}, a2 = function(t4) {
for (var r3 = new Uint8Array(t4.length), n3 = t4.length; n3--; ) r3[n3] = t4.charCodeAt(n3);
return t4 = (r3 = zlibSync(r3)).reduce(function(t5, e2) {
return t5 + String.fromCharCode(e2);
}, "");
};
t3.processDataByFilters = function(t4, e2) {
var o2 = 0, s2 = t4 || "", c2 = [];
for ("string" == typeof (e2 = e2 || []) && (e2 = [e2]), o2 = 0; o2 < e2.length; o2 += 1) switch (e2[o2]) {
case "ASCII85Decode":
case "/ASCII85Decode":
s2 = n2(s2), c2.push("/ASCII85Encode");
break;
case "ASCII85Encode":
case "/ASCII85Encode":
s2 = r2(s2), c2.push("/ASCII85Decode");
break;
case "ASCIIHexDecode":
case "/ASCIIHexDecode":
s2 = i2(s2), c2.push("/ASCIIHexEncode");
break;
case "ASCIIHexEncode":
case "/ASCIIHexEncode":
s2 = s2.split("").map(function(t5) {
return ("0" + t5.charCodeAt().toString(16)).slice(-2);
}).join("") + ">", c2.push("/ASCIIHexDecode");
break;
case "FlateEncode":
case "/FlateEncode":
s2 = a2(s2), c2.push("/FlateDecode");
break;
default:
throw new Error('The filter: "' + e2[o2] + '" is not implemented');
}
return { data: s2, reverseChain: c2.reverse().join(" ") };
};
}(E$1.API), /**
* @license
* jsPDF fileloading PlugIn
* Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function(t3) {
t3.loadFile = function(t4, e2, r2) {
return function(t5, e3, r3) {
e3 = false !== e3, r3 = "function" == typeof r3 ? r3 : function() {
};
var n2 = void 0;
try {
n2 = function(t6, e4, r4) {
var n3 = new XMLHttpRequest(), i2 = 0, a2 = function(t7) {
var e5 = t7.length, r5 = [], n4 = String.fromCharCode;
for (i2 = 0; i2 < e5; i2 += 1) r5.push(n4(255 & t7.charCodeAt(i2)));
return r5.join("");
};
if (n3.open("GET", t6, !e4), n3.overrideMimeType("text/plain; charset=x-user-defined"), false === e4 && (n3.onload = function() {
200 === n3.status ? r4(a2(this.responseText)) : r4(void 0);
}), n3.send(null), e4 && 200 === n3.status) return a2(n3.responseText);
}(t5, e3, r3);
} catch (t6) {
}
return n2;
}(t4, e2, r2);
}, t3.loadImageFile = t3.loadFile;
}(E$1.API), function(e2) {
function r2() {
return (n$1.html2canvas ? Promise.resolve(n$1.html2canvas) : Promise.resolve().then(() => html2canvas_esm)).catch(function(t3) {
return Promise.reject(new Error("Could not load html2canvas: " + t3));
}).then(function(t3) {
return t3.default ? t3.default : t3;
});
}
function i2() {
return (n$1.DOMPurify ? Promise.resolve(n$1.DOMPurify) : Promise.resolve().then(() => purify_es)).catch(function(t3) {
return Promise.reject(new Error("Could not load dompurify: " + t3));
}).then(function(t3) {
return t3.default ? t3.default : t3;
});
}
var a2 = function(e3) {
var r3 = _typeof$2(e3);
return "undefined" === r3 ? "undefined" : "string" === r3 || e3 instanceof String ? "string" : "number" === r3 || e3 instanceof Number ? "number" : "function" === r3 || e3 instanceof Function ? "function" : e3 && e3.constructor === Array ? "array" : e3 && 1 === e3.nodeType ? "element" : "object" === r3 ? "object" : "unknown";
}, o2 = function(t3, e3) {
var r3 = document.createElement(t3);
for (var n2 in e3.className && (r3.className = e3.className), e3.innerHTML && e3.dompurify && (r3.innerHTML = e3.dompurify.sanitize(e3.innerHTML)), e3.style) r3.style[n2] = e3.style[n2];
return r3;
}, s2 = function t3(e3) {
var r3 = Object.assign(t3.convert(Promise.resolve()), JSON.parse(JSON.stringify(t3.template))), n2 = t3.convert(Promise.resolve(), r3);
return n2 = (n2 = n2.setProgress(1, t3, 1, [t3])).set(e3);
};
(s2.prototype = Object.create(Promise.prototype)).constructor = s2, s2.convert = function(t3, e3) {
return t3.__proto__ = e3 || s2.prototype, t3;
}, s2.template = { prop: { src: null, container: null, overlay: null, canvas: null, img: null, pdf: null, pageSize: null, callback: function() {
} }, progress: { val: 0, state: null, n: 0, stack: [] }, opt: { filename: "file.pdf", margin: [0, 0, 0, 0], enableLinks: true, x: 0, y: 0, html2canvas: {}, jsPDF: {}, backgroundColor: "transparent" } }, s2.prototype.from = function(t3, e3) {
return this.then(function() {
switch (e3 = e3 || function(t4) {
switch (a2(t4)) {
case "string":
return "string";
case "element":
return "canvas" === t4.nodeName.toLowerCase() ? "canvas" : "element";
default:
return "unknown";
}
}(t3)) {
case "string":
return this.then(i2).then(function(e4) {
return this.set({ src: o2("div", { innerHTML: t3, dompurify: e4 }) });
});
case "element":
return this.set({ src: t3 });
case "canvas":
return this.set({ canvas: t3 });
case "img":
return this.set({ img: t3 });
default:
return this.error("Unknown source type.");
}
});
}, s2.prototype.to = function(t3) {
switch (t3) {
case "container":
return this.toContainer();
case "canvas":
return this.toCanvas();
case "img":
return this.toImg();
case "pdf":
return this.toPdf();
default:
return this.error("Invalid target.");
}
}, s2.prototype.toContainer = function() {
return this.thenList([function() {
return this.prop.src || this.error("Cannot duplicate - no source HTML.");
}, function() {
return this.prop.pageSize || this.setPageSize();
}]).then(function() {
var t3 = { position: "relative", display: "inline-block", width: ("number" != typeof this.opt.width || isNaN(this.opt.width) || "number" != typeof this.opt.windowWidth || isNaN(this.opt.windowWidth) ? Math.max(this.prop.src.clientWidth, this.prop.src.scrollWidth, this.prop.src.offsetWidth) : this.opt.windowWidth) + "px", left: 0, right: 0, top: 0, margin: "auto", backgroundColor: this.opt.backgroundColor }, e3 = function t4(e4, r3) {
for (var n2 = 3 === e4.nodeType ? document.createTextNode(e4.nodeValue) : e4.cloneNode(false), i3 = e4.firstChild; i3; i3 = i3.nextSibling) true !== r3 && 1 === i3.nodeType && "SCRIPT" === i3.nodeName || n2.appendChild(t4(i3, r3));
return 1 === e4.nodeType && ("CANVAS" === e4.nodeName ? (n2.width = e4.width, n2.height = e4.height, n2.getContext("2d").drawImage(e4, 0, 0)) : "TEXTAREA" !== e4.nodeName && "SELECT" !== e4.nodeName || (n2.value = e4.value), n2.addEventListener("load", function() {
n2.scrollTop = e4.scrollTop, n2.scrollLeft = e4.scrollLeft;
}, true)), n2;
}(this.prop.src, this.opt.html2canvas.javascriptEnabled);
"BODY" === e3.tagName && (t3.height = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight) + "px"), this.prop.overlay = o2("div", { className: "html2pdf__overlay", style: { position: "fixed", overflow: "hidden", zIndex: 1e3, left: "-100000px", right: 0, bottom: 0, top: 0 } }), this.prop.container = o2("div", { className: "html2pdf__container", style: t3 }), this.prop.container.appendChild(e3), this.prop.container.firstChild.appendChild(o2("div", { style: { clear: "both", border: "0 none transparent", margin: 0, padding: 0, height: 0 } })), this.prop.container.style.float = "none", this.prop.overlay.appendChild(this.prop.container), document.body.appendChild(this.prop.overlay), this.prop.container.firstChild.style.position = "relative", this.prop.container.height = Math.max(this.prop.container.firstChild.clientHeight, this.prop.container.firstChild.scrollHeight, this.prop.container.firstChild.offsetHeight) + "px";
});
}, s2.prototype.toCanvas = function() {
var t3 = [function() {
return document.body.contains(this.prop.container) || this.toContainer();
}];
return this.thenList(t3).then(r2).then(function(t4) {
var e3 = Object.assign({}, this.opt.html2canvas);
return delete e3.onrendered, t4(this.prop.container, e3);
}).then(function(t4) {
(this.opt.html2canvas.onrendered || function() {
})(t4), this.prop.canvas = t4, document.body.removeChild(this.prop.overlay);
});
}, s2.prototype.toContext2d = function() {
var t3 = [function() {
return document.body.contains(this.prop.container) || this.toContainer();
}];
return this.thenList(t3).then(r2).then(function(t4) {
var e3 = this.opt.jsPDF, r3 = this.opt.fontFaces, n2 = "number" != typeof this.opt.width || isNaN(this.opt.width) || "number" != typeof this.opt.windowWidth || isNaN(this.opt.windowWidth) ? 1 : this.opt.width / this.opt.windowWidth, i3 = Object.assign({ async: true, allowTaint: true, scale: n2, scrollX: this.opt.scrollX || 0, scrollY: this.opt.scrollY || 0, backgroundColor: "#ffffff", imageTimeout: 15e3, logging: true, proxy: null, removeContainer: true, foreignObjectRendering: false, useCORS: false }, this.opt.html2canvas);
if (delete i3.onrendered, e3.context2d.autoPaging = void 0 === this.opt.autoPaging || this.opt.autoPaging, e3.context2d.posX = this.opt.x, e3.context2d.posY = this.opt.y, e3.context2d.margin = this.opt.margin, e3.context2d.fontFaces = r3, r3) for (var a3 = 0; a3 < r3.length; ++a3) {
var o3 = r3[a3], s3 = o3.src.find(function(t5) {
return "truetype" === t5.format;
});
s3 && e3.addFont(s3.url, o3.ref.name, o3.ref.style);
}
return i3.windowHeight = i3.windowHeight || 0, i3.windowHeight = 0 == i3.windowHeight ? Math.max(this.prop.container.clientHeight, this.prop.container.scrollHeight, this.prop.container.offsetHeight) : i3.windowHeight, e3.context2d.save(true), t4(this.prop.container, i3);
}).then(function(t4) {
this.opt.jsPDF.context2d.restore(true), (this.opt.html2canvas.onrendered || function() {
})(t4), this.prop.canvas = t4, document.body.removeChild(this.prop.overlay);
});
}, s2.prototype.toImg = function() {
return this.thenList([function() {
return this.prop.canvas || this.toCanvas();
}]).then(function() {
var t3 = this.prop.canvas.toDataURL("image/" + this.opt.image.type, this.opt.image.quality);
this.prop.img = document.createElement("img"), this.prop.img.src = t3;
});
}, s2.prototype.toPdf = function() {
return this.thenList([function() {
return this.toContext2d();
}]).then(function() {
this.prop.pdf = this.prop.pdf || this.opt.jsPDF;
});
}, s2.prototype.output = function(t3, e3, r3) {
return "img" === (r3 = r3 || "pdf").toLowerCase() || "image" === r3.toLowerCase() ? this.outputImg(t3, e3) : this.outputPdf(t3, e3);
}, s2.prototype.outputPdf = function(t3, e3) {
return this.thenList([function() {
return this.prop.pdf || this.toPdf();
}]).then(function() {
return this.prop.pdf.output(t3, e3);
});
}, s2.prototype.outputImg = function(t3) {
return this.thenList([function() {
return this.prop.img || this.toImg();
}]).then(function() {
switch (t3) {
case void 0:
case "img":
return this.prop.img;
case "datauristring":
case "dataurlstring":
return this.prop.img.src;
case "datauri":
case "dataurl":
return document.location.href = this.prop.img.src;
default:
throw 'Image output type "' + t3 + '" is not supported.';
}
});
}, s2.prototype.save = function(t3) {
return this.thenList([function() {
return this.prop.pdf || this.toPdf();
}]).set(t3 ? { filename: t3 } : null).then(function() {
this.prop.pdf.save(this.opt.filename);
});
}, s2.prototype.doCallback = function() {
return this.thenList([function() {
return this.prop.pdf || this.toPdf();
}]).then(function() {
this.prop.callback(this.prop.pdf);
});
}, s2.prototype.set = function(t3) {
if ("object" !== a2(t3)) return this;
var e3 = Object.keys(t3 || {}).map(function(e4) {
if (e4 in s2.template.prop) return function() {
this.prop[e4] = t3[e4];
};
switch (e4) {
case "margin":
return this.setMargin.bind(this, t3.margin);
case "jsPDF":
return function() {
return this.opt.jsPDF = t3.jsPDF, this.setPageSize();
};
case "pageSize":
return this.setPageSize.bind(this, t3.pageSize);
default:
return function() {
this.opt[e4] = t3[e4];
};
}
}, this);
return this.then(function() {
return this.thenList(e3);
});
}, s2.prototype.get = function(t3, e3) {
return this.then(function() {
var r3 = t3 in s2.template.prop ? this.prop[t3] : this.opt[t3];
return e3 ? e3(r3) : r3;
});
}, s2.prototype.setMargin = function(t3) {
return this.then(function() {
switch (a2(t3)) {
case "number":
t3 = [t3, t3, t3, t3];
case "array":
if (2 === t3.length && (t3 = [t3[0], t3[1], t3[0], t3[1]]), 4 === t3.length) break;
default:
return this.error("Invalid margin array.");
}
this.opt.margin = t3;
}).then(this.setPageSize);
}, s2.prototype.setPageSize = function(t3) {
function e3(t4, e4) {
return Math.floor(t4 * e4 / 72 * 96);
}
return this.then(function() {
(t3 = t3 || E$1.getPageSize(this.opt.jsPDF)).hasOwnProperty("inner") || (t3.inner = { width: t3.width - this.opt.margin[1] - this.opt.margin[3], height: t3.height - this.opt.margin[0] - this.opt.margin[2] }, t3.inner.px = { width: e3(t3.inner.width, t3.k), height: e3(t3.inner.height, t3.k) }, t3.inner.ratio = t3.inner.height / t3.inner.width), this.prop.pageSize = t3;
});
}, s2.prototype.setProgress = function(t3, e3, r3, n2) {
return null != t3 && (this.progress.val = t3), null != e3 && (this.progress.state = e3), null != r3 && (this.progress.n = r3), null != n2 && (this.progress.stack = n2), this.progress.ratio = this.progress.val / this.progress.state, this;
}, s2.prototype.updateProgress = function(t3, e3, r3, n2) {
return this.setProgress(t3 ? this.progress.val + t3 : null, e3 || null, r3 ? this.progress.n + r3 : null, n2 ? this.progress.stack.concat(n2) : null);
}, s2.prototype.then = function(t3, e3) {
var r3 = this;
return this.thenCore(t3, e3, function(t4, e4) {
return r3.updateProgress(null, null, 1, [t4]), Promise.prototype.then.call(this, function(e5) {
return r3.updateProgress(null, t4), e5;
}).then(t4, e4).then(function(t5) {
return r3.updateProgress(1), t5;
});
});
}, s2.prototype.thenCore = function(t3, e3, r3) {
r3 = r3 || Promise.prototype.then;
t3 && (t3 = t3.bind(this)), e3 && (e3 = e3.bind(this));
var n2 = -1 !== Promise.toString().indexOf("[native code]") && "Promise" === Promise.name ? this : s2.convert(Object.assign({}, this), Promise.prototype), i3 = r3.call(n2, t3, e3);
return s2.convert(i3, this.__proto__);
}, s2.prototype.thenExternal = function(t3, e3) {
return Promise.prototype.then.call(this, t3, e3);
}, s2.prototype.thenList = function(t3) {
var e3 = this;
return t3.forEach(function(t4) {
e3 = e3.thenCore(t4);
}), e3;
}, s2.prototype.catch = function(t3) {
t3 && (t3 = t3.bind(this));
var e3 = Promise.prototype.catch.call(this, t3);
return s2.convert(e3, this);
}, s2.prototype.catchExternal = function(t3) {
return Promise.prototype.catch.call(this, t3);
}, s2.prototype.error = function(t3) {
return this.then(function() {
throw new Error(t3);
});
}, s2.prototype.using = s2.prototype.set, s2.prototype.saveAs = s2.prototype.save, s2.prototype.export = s2.prototype.output, s2.prototype.run = s2.prototype.then, E$1.getPageSize = function(e3, r3, n2) {
if ("object" === _typeof$2(e3)) {
var i3 = e3;
e3 = i3.orientation, r3 = i3.unit || r3, n2 = i3.format || n2;
}
r3 = r3 || "mm", n2 = n2 || "a4", e3 = ("" + (e3 || "P")).toLowerCase();
var a3, o3 = ("" + n2).toLowerCase(), s3 = { a0: [2383.94, 3370.39], a1: [1683.78, 2383.94], a2: [1190.55, 1683.78], a3: [841.89, 1190.55], a4: [595.28, 841.89], a5: [419.53, 595.28], a6: [297.64, 419.53], a7: [209.76, 297.64], a8: [147.4, 209.76], a9: [104.88, 147.4], a10: [73.7, 104.88], b0: [2834.65, 4008.19], b1: [2004.09, 2834.65], b2: [1417.32, 2004.09], b3: [1000.63, 1417.32], b4: [708.66, 1000.63], b5: [498.9, 708.66], b6: [354.33, 498.9], b7: [249.45, 354.33], b8: [175.75, 249.45], b9: [124.72, 175.75], b10: [87.87, 124.72], c0: [2599.37, 3676.54], c1: [1836.85, 2599.37], c2: [1298.27, 1836.85], c3: [918.43, 1298.27], c4: [649.13, 918.43], c5: [459.21, 649.13], c6: [323.15, 459.21], c7: [229.61, 323.15], c8: [161.57, 229.61], c9: [113.39, 161.57], c10: [79.37, 113.39], dl: [311.81, 623.62], letter: [612, 792], "government-letter": [576, 756], legal: [612, 1008], "junior-legal": [576, 360], ledger: [1224, 792], tabloid: [792, 1224], "credit-card": [153, 243] };
switch (r3) {
case "pt":
a3 = 1;
break;
case "mm":
a3 = 72 / 25.4;
break;
case "cm":
a3 = 72 / 2.54;
break;
case "in":
a3 = 72;
break;
case "px":
a3 = 0.75;
break;
case "pc":
case "em":
a3 = 12;
break;
case "ex":
a3 = 6;
break;
default:
throw "Invalid unit: " + r3;
}
var c2, u2 = 0, h2 = 0;
if (s3.hasOwnProperty(o3)) u2 = s3[o3][1] / a3, h2 = s3[o3][0] / a3;
else try {
u2 = n2[1], h2 = n2[0];
} catch (t3) {
throw new Error("Invalid format: " + n2);
}
if ("p" === e3 || "portrait" === e3) e3 = "p", h2 > u2 && (c2 = h2, h2 = u2, u2 = c2);
else {
if ("l" !== e3 && "landscape" !== e3) throw "Invalid orientation: " + e3;
e3 = "l", u2 > h2 && (c2 = h2, h2 = u2, u2 = c2);
}
return { width: h2, height: u2, unit: r3, k: a3, orientation: e3 };
}, e2.html = function(t3, e3) {
(e3 = e3 || {}).callback = e3.callback || function() {
}, e3.html2canvas = e3.html2canvas || {}, e3.html2canvas.canvas = e3.html2canvas.canvas || this.canvas, e3.jsPDF = e3.jsPDF || this, e3.fontFaces = e3.fontFaces ? e3.fontFaces.map(jt) : null;
var r3 = new s2(e3);
return e3.worker ? r3 : r3.from(t3).doCallback();
};
}(E$1.API), E$1.API.addJS = function(t3) {
return Ht = t3, this.internal.events.subscribe("postPutResources", function() {
Ut = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/Names [(EmbeddedJS) " + (Ut + 1) + " 0 R]"), this.internal.out(">>"), this.internal.out("endobj"), zt = this.internal.newObject(), this.internal.out("<<"), this.internal.out("/S /JavaScript"), this.internal.out("/JS (" + Ht + ")"), this.internal.out(">>"), this.internal.out("endobj");
}), this.internal.events.subscribe("putCatalog", function() {
void 0 !== Ut && void 0 !== zt && this.internal.out("/Names <</JavaScript " + Ut + " 0 R>>");
}), this;
}, /**
* @license
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function(t3) {
var e2;
t3.events.push(["postPutResources", function() {
var t4 = this, r2 = /^(\d+) 0 obj$/;
if (this.outline.root.children.length > 0) for (var n2 = t4.outline.render().split(/\r\n/), i2 = 0; i2 < n2.length; i2++) {
var a2 = n2[i2], o2 = r2.exec(a2);
if (null != o2) {
var s2 = o2[1];
t4.internal.newObjectDeferredBegin(s2, false);
}
t4.internal.write(a2);
}
if (this.outline.createNamedDestinations) {
var c2 = this.internal.pages.length, u2 = [];
for (i2 = 0; i2 < c2; i2++) {
var h2 = t4.internal.newObject();
u2.push(h2);
var l2 = t4.internal.getPageInfo(i2 + 1);
t4.internal.write("<< /D[" + l2.objId + " 0 R /XYZ null null null]>> endobj");
}
var f2 = t4.internal.newObject();
t4.internal.write("<< /Names [ ");
for (i2 = 0; i2 < u2.length; i2++) t4.internal.write("(page_" + (i2 + 1) + ")" + u2[i2] + " 0 R");
t4.internal.write(" ] >>", "endobj"), e2 = t4.internal.newObject(), t4.internal.write("<< /Dests " + f2 + " 0 R"), t4.internal.write(">>", "endobj");
}
}]), t3.events.push(["putCatalog", function() {
this.outline.root.children.length > 0 && (this.internal.write("/Outlines", this.outline.makeRef(this.outline.root)), this.outline.createNamedDestinations && this.internal.write("/Names " + e2 + " 0 R"));
}]), t3.events.push(["initialized", function() {
var t4 = this;
t4.outline = { createNamedDestinations: false, root: { children: [] } }, t4.outline.add = function(t5, e3, r2) {
var n2 = { title: e3, options: r2, children: [] };
return null == t5 && (t5 = this.root), t5.children.push(n2), n2;
}, t4.outline.render = function() {
return this.ctx = {}, this.ctx.val = "", this.ctx.pdf = t4, this.genIds_r(this.root), this.renderRoot(this.root), this.renderItems(this.root), this.ctx.val;
}, t4.outline.genIds_r = function(e3) {
e3.id = t4.internal.newObjectDeferred();
for (var r2 = 0; r2 < e3.children.length; r2++) this.genIds_r(e3.children[r2]);
}, t4.outline.renderRoot = function(t5) {
this.objStart(t5), this.line("/Type /Outlines"), t5.children.length > 0 && (this.line("/First " + this.makeRef(t5.children[0])), this.line("/Last " + this.makeRef(t5.children[t5.children.length - 1]))), this.line("/Count " + this.count_r({ count: 0 }, t5)), this.objEnd();
}, t4.outline.renderItems = function(e3) {
for (var r2 = this.ctx.pdf.internal.getVerticalCoordinateString, n2 = 0; n2 < e3.children.length; n2++) {
var i2 = e3.children[n2];
this.objStart(i2), this.line("/Title " + this.makeString(i2.title)), this.line("/Parent " + this.makeRef(e3)), n2 > 0 && this.line("/Prev " + this.makeRef(e3.children[n2 - 1])), n2 < e3.children.length - 1 && this.line("/Next " + this.makeRef(e3.children[n2 + 1])), i2.children.length > 0 && (this.line("/First " + this.makeRef(i2.children[0])), this.line("/Last " + this.makeRef(i2.children[i2.children.length - 1])));
var a2 = this.count = this.count_r({ count: 0 }, i2);
if (a2 > 0 && this.line("/Count " + a2), i2.options && i2.options.pageNumber) {
var o2 = t4.internal.getPageInfo(i2.options.pageNumber);
this.line("/Dest [" + o2.objId + " 0 R /XYZ 0 " + r2(0) + " 0]");
}
this.objEnd();
}
for (var s2 = 0; s2 < e3.children.length; s2++) this.renderItems(e3.children[s2]);
}, t4.outline.line = function(t5) {
this.ctx.val += t5 + "\r\n";
}, t4.outline.makeRef = function(t5) {
return t5.id + " 0 R";
}, t4.outline.makeString = function(e3) {
return "(" + t4.internal.pdfEscape(e3) + ")";
}, t4.outline.objStart = function(t5) {
this.ctx.val += "\r\n" + t5.id + " 0 obj\r\n<<\r\n";
}, t4.outline.objEnd = function() {
this.ctx.val += ">> \r\nendobj\r\n";
}, t4.outline.count_r = function(t5, e3) {
for (var r2 = 0; r2 < e3.children.length; r2++) t5.count++, this.count_r(t5, e3.children[r2]);
return t5.count;
};
}]);
}(E$1.API), /**
* @license
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function(t3) {
var e2 = [192, 193, 194, 195, 196, 197, 198, 199];
t3.processJPEG = function(t4, r2, n2, i2, a2, o2) {
var s2, c2 = this.decode.DCT_DECODE, u2 = null;
if ("string" == typeof t4 || this.__addimage__.isArrayBuffer(t4) || this.__addimage__.isArrayBufferView(t4)) {
switch (t4 = a2 || t4, t4 = this.__addimage__.isArrayBuffer(t4) ? new Uint8Array(t4) : t4, (s2 = function(t5) {
for (var r3, n3 = 256 * t5.charCodeAt(4) + t5.charCodeAt(5), i3 = t5.length, a3 = { width: 0, height: 0, numcomponents: 1 }, o3 = 4; o3 < i3; o3 += 2) {
if (o3 += n3, -1 !== e2.indexOf(t5.charCodeAt(o3 + 1))) {
r3 = 256 * t5.charCodeAt(o3 + 5) + t5.charCodeAt(o3 + 6), a3 = { width: 256 * t5.charCodeAt(o3 + 7) + t5.charCodeAt(o3 + 8), height: r3, numcomponents: t5.charCodeAt(o3 + 9) };
break;
}
n3 = 256 * t5.charCodeAt(o3 + 2) + t5.charCodeAt(o3 + 3);
}
return a3;
}(t4 = this.__addimage__.isArrayBufferView(t4) ? this.__addimage__.arrayBufferToBinaryString(t4) : t4)).numcomponents) {
case 1:
o2 = this.color_spaces.DEVICE_GRAY;
break;
case 4:
o2 = this.color_spaces.DEVICE_CMYK;
break;
case 3:
o2 = this.color_spaces.DEVICE_RGB;
}
u2 = { data: t4, width: s2.width, height: s2.height, colorSpace: o2, bitsPerComponent: 8, filter: c2, index: r2, alias: n2 };
}
return u2;
};
}(E$1.API);
var Vt, Gt, Yt, Jt, Xt, Kt = function() {
var t3, e2, i2;
function a2(t4) {
var e3, r2, n2, i3, a3, o3, s2, c2, u2, h2, l2, f2, d2, p2;
for (this.data = t4, this.pos = 8, this.palette = [], this.imgData = [], this.transparency = {}, this.animation = null, this.text = {}, o3 = null; ; ) {
switch (e3 = this.readUInt32(), u2 = (function() {
var t5, e4;
for (e4 = [], t5 = 0; t5 < 4; ++t5) e4.push(String.fromCharCode(this.data[this.pos++]));
return e4;
}).call(this).join("")) {
case "IHDR":
this.width = this.readUInt32(), this.height = this.readUInt32(), this.bits = this.data[this.pos++], this.colorType = this.data[this.pos++], this.compressionMethod = this.data[this.pos++], this.filterMethod = this.data[this.pos++], this.interlaceMethod = this.data[this.pos++];
break;
case "acTL":
this.animation = { numFrames: this.readUInt32(), numPlays: this.readUInt32() || 1 / 0, frames: [] };
break;
case "PLTE":
this.palette = this.read(e3);
break;
case "fcTL":
o3 && this.animation.frames.push(o3), this.pos += 4, o3 = { width: this.readUInt32(), height: this.readUInt32(), xOffset: this.readUInt32(), yOffset: this.readUInt32() }, a3 = this.readUInt16(), i3 = this.readUInt16() || 100, o3.delay = 1e3 * a3 / i3, o3.disposeOp = this.data[this.pos++], o3.blendOp = this.data[this.pos++], o3.data = [];
break;
case "IDAT":
case "fdAT":
for ("fdAT" === u2 && (this.pos += 4, e3 -= 4), t4 = (null != o3 ? o3.data : void 0) || this.imgData, f2 = 0; 0 <= e3 ? f2 < e3 : f2 > e3; 0 <= e3 ? ++f2 : --f2) t4.push(this.data[this.pos++]);
break;
case "tRNS":
switch (this.transparency = {}, this.colorType) {
case 3:
if (n2 = this.palette.length / 3, this.transparency.indexed = this.read(e3), this.transparency.indexed.length > n2) throw new Error("More transparent colors than palette size");
if ((h2 = n2 - this.transparency.indexed.length) > 0) for (d2 = 0; 0 <= h2 ? d2 < h2 : d2 > h2; 0 <= h2 ? ++d2 : --d2) this.transparency.indexed.push(255);
break;
case 0:
this.transparency.grayscale = this.read(e3)[0];
break;
case 2:
this.transparency.rgb = this.read(e3);
}
break;
case "tEXt":
s2 = (l2 = this.read(e3)).indexOf(0), c2 = String.fromCharCode.apply(String, l2.slice(0, s2)), this.text[c2] = String.fromCharCode.apply(String, l2.slice(s2 + 1));
break;
case "IEND":
return o3 && this.animation.frames.push(o3), this.colors = (function() {
switch (this.colorType) {
case 0:
case 3:
case 4:
return 1;
case 2:
case 6:
return 3;
}
}).call(this), this.hasAlphaChannel = 4 === (p2 = this.colorType) || 6 === p2, r2 = this.colors + (this.hasAlphaChannel ? 1 : 0), this.pixelBitlength = this.bits * r2, this.colorSpace = (function() {
switch (this.colors) {
case 1:
return "DeviceGray";
case 3:
return "DeviceRGB";
}
}).call(this), void (this.imgData = new Uint8Array(this.imgData));
default:
this.pos += e3;
}
if (this.pos += 4, this.pos > this.data.length) throw new Error("Incomplete or corrupt PNG file");
}
}
a2.prototype.read = function(t4) {
var e3, r2;
for (r2 = [], e3 = 0; 0 <= t4 ? e3 < t4 : e3 > t4; 0 <= t4 ? ++e3 : --e3) r2.push(this.data[this.pos++]);
return r2;
}, a2.prototype.readUInt32 = function() {
return this.data[this.pos++] << 24 | this.data[this.pos++] << 16 | this.data[this.pos++] << 8 | this.data[this.pos++];
}, a2.prototype.readUInt16 = function() {
return this.data[this.pos++] << 8 | this.data[this.pos++];
}, a2.prototype.decodePixels = function(t4) {
var e3 = this.pixelBitlength / 8, n2 = new Uint8Array(this.width * this.height * e3), i3 = 0, a3 = this;
if (null == t4 && (t4 = this.imgData), 0 === t4.length) return new Uint8Array(0);
function o3(r2, o4, s2, c2) {
var u2, h2, l2, f2, d2, p2, g2, m2, v2, b2, y2, w2, N2, L2, A5, x2, S2, _2, P2, k2, I2, F2 = Math.ceil((a3.width - r2) / s2), C2 = Math.ceil((a3.height - o4) / c2), j2 = a3.width == F2 && a3.height == C2;
for (L2 = e3 * F2, w2 = j2 ? n2 : new Uint8Array(L2 * C2), p2 = t4.length, N2 = 0, h2 = 0; N2 < C2 && i3 < p2; ) {
switch (t4[i3++]) {
case 0:
for (f2 = S2 = 0; S2 < L2; f2 = S2 += 1) w2[h2++] = t4[i3++];
break;
case 1:
for (f2 = _2 = 0; _2 < L2; f2 = _2 += 1) u2 = t4[i3++], d2 = f2 < e3 ? 0 : w2[h2 - e3], w2[h2++] = (u2 + d2) % 256;
break;
case 2:
for (f2 = P2 = 0; P2 < L2; f2 = P2 += 1) u2 = t4[i3++], l2 = (f2 - f2 % e3) / e3, A5 = N2 && w2[(N2 - 1) * L2 + l2 * e3 + f2 % e3], w2[h2++] = (A5 + u2) % 256;
break;
case 3:
for (f2 = k2 = 0; k2 < L2; f2 = k2 += 1) u2 = t4[i3++], l2 = (f2 - f2 % e3) / e3, d2 = f2 < e3 ? 0 : w2[h2 - e3], A5 = N2 && w2[(N2 - 1) * L2 + l2 * e3 + f2 % e3], w2[h2++] = (u2 + Math.floor((d2 + A5) / 2)) % 256;
break;
case 4:
for (f2 = I2 = 0; I2 < L2; f2 = I2 += 1) u2 = t4[i3++], l2 = (f2 - f2 % e3) / e3, d2 = f2 < e3 ? 0 : w2[h2 - e3], 0 === N2 ? A5 = x2 = 0 : (A5 = w2[(N2 - 1) * L2 + l2 * e3 + f2 % e3], x2 = l2 && w2[(N2 - 1) * L2 + (l2 - 1) * e3 + f2 % e3]), g2 = d2 + A5 - x2, m2 = Math.abs(g2 - d2), b2 = Math.abs(g2 - A5), y2 = Math.abs(g2 - x2), v2 = m2 <= b2 && m2 <= y2 ? d2 : b2 <= y2 ? A5 : x2, w2[h2++] = (u2 + v2) % 256;
break;
default:
throw new Error("Invalid filter algorithm: " + t4[i3 - 1]);
}
if (!j2) {
var O2 = ((o4 + N2 * c2) * a3.width + r2) * e3, B3 = N2 * L2;
for (f2 = 0; f2 < F2; f2 += 1) {
for (var M2 = 0; M2 < e3; M2 += 1) n2[O2++] = w2[B3++];
O2 += (s2 - 1) * e3;
}
}
N2++;
}
}
return t4 = unzlibSync(t4), 1 == a3.interlaceMethod ? (o3(0, 0, 8, 8), o3(4, 0, 8, 8), o3(0, 4, 4, 8), o3(2, 0, 4, 4), o3(0, 2, 2, 4), o3(1, 0, 2, 2), o3(0, 1, 1, 2)) : o3(0, 0, 1, 1), n2;
}, a2.prototype.decodePalette = function() {
var t4, e3, r2, n2, i3, a3, o3, s2, c2;
for (r2 = this.palette, a3 = this.transparency.indexed || [], i3 = new Uint8Array((a3.length || 0) + r2.length), n2 = 0, t4 = 0, e3 = o3 = 0, s2 = r2.length; o3 < s2; e3 = o3 += 3) i3[n2++] = r2[e3], i3[n2++] = r2[e3 + 1], i3[n2++] = r2[e3 + 2], i3[n2++] = null != (c2 = a3[t4++]) ? c2 : 255;
return i3;
}, a2.prototype.copyToImageData = function(t4, e3) {
var r2, n2, i3, a3, o3, s2, c2, u2, h2, l2, f2;
if (n2 = this.colors, h2 = null, r2 = this.hasAlphaChannel, this.palette.length && (h2 = null != (f2 = this._decodedPalette) ? f2 : this._decodedPalette = this.decodePalette(), n2 = 4, r2 = true), u2 = (i3 = t4.data || t4).length, o3 = h2 || e3, a3 = s2 = 0, 1 === n2) for (; a3 < u2; ) c2 = h2 ? 4 * e3[a3 / 4] : s2, l2 = o3[c2++], i3[a3++] = l2, i3[a3++] = l2, i3[a3++] = l2, i3[a3++] = r2 ? o3[c2++] : 255, s2 = c2;
else for (; a3 < u2; ) c2 = h2 ? 4 * e3[a3 / 4] : s2, i3[a3++] = o3[c2++], i3[a3++] = o3[c2++], i3[a3++] = o3[c2++], i3[a3++] = r2 ? o3[c2++] : 255, s2 = c2;
}, a2.prototype.decode = function() {
var t4;
return t4 = new Uint8Array(this.width * this.height * 4), this.copyToImageData(t4, this.decodePixels()), t4;
};
var o2 = function() {
if ("[object Window]" === Object.prototype.toString.call(n$1)) {
try {
e2 = n$1.document.createElement("canvas"), i2 = e2.getContext("2d");
} catch (t4) {
return false;
}
return true;
}
return false;
};
return o2(), t3 = function(t4) {
var r2;
if (true === o2()) return i2.width = t4.width, i2.height = t4.height, i2.clearRect(0, 0, t4.width, t4.height), i2.putImageData(t4, 0, 0), (r2 = new Image()).src = e2.toDataURL(), r2;
throw new Error("This method requires a Browser with Canvas-capability.");
}, a2.prototype.decodeFrames = function(e3) {
var r2, n2, i3, a3, o3, s2, c2, u2;
if (this.animation) {
for (u2 = [], n2 = o3 = 0, s2 = (c2 = this.animation.frames).length; o3 < s2; n2 = ++o3) r2 = c2[n2], i3 = e3.createImageData(r2.width, r2.height), a3 = this.decodePixels(new Uint8Array(r2.data)), this.copyToImageData(i3, a3), r2.imageData = i3, u2.push(r2.image = t3(i3));
return u2;
}
}, a2.prototype.renderFrame = function(t4, e3) {
var r2, n2, i3;
return r2 = (n2 = this.animation.frames)[e3], i3 = n2[e3 - 1], 0 === e3 && t4.clearRect(0, 0, this.width, this.height), 1 === (null != i3 ? i3.disposeOp : void 0) ? t4.clearRect(i3.xOffset, i3.yOffset, i3.width, i3.height) : 2 === (null != i3 ? i3.disposeOp : void 0) && t4.putImageData(i3.imageData, i3.xOffset, i3.yOffset), 0 === r2.blendOp && t4.clearRect(r2.xOffset, r2.yOffset, r2.width, r2.height), t4.drawImage(r2.image, r2.xOffset, r2.yOffset);
}, a2.prototype.animate = function(t4) {
var e3, r2, n2, i3, a3, o3, s2 = this;
return r2 = 0, o3 = this.animation, i3 = o3.numFrames, n2 = o3.frames, a3 = o3.numPlays, (e3 = function() {
var o4, c2;
if (o4 = r2++ % i3, c2 = n2[o4], s2.renderFrame(t4, o4), i3 > 1 && r2 / i3 < a3) return s2.animation._timeout = setTimeout(e3, c2.delay);
})();
}, a2.prototype.stopAnimation = function() {
var t4;
return clearTimeout(null != (t4 = this.animation) ? t4._timeout : void 0);
}, a2.prototype.render = function(t4) {
var e3, r2;
return t4._png && t4._png.stopAnimation(), t4._png = this, t4.width = this.width, t4.height = this.height, e3 = t4.getContext("2d"), this.animation ? (this.decodeFrames(e3), this.animate(e3)) : (r2 = e3.createImageData(this.width, this.height), this.copyToImageData(r2, this.decodePixels()), e3.putImageData(r2, 0, 0));
}, a2;
}();
/**
* @license
*
* Copyright (c) 2014 James Robb, https://github.com/jamesbrobb
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* ====================================================================
*/
/**
* @license
* (c) Dean McNamee <dean@gmail.com>, 2013.
*
* https://github.com/deanm/omggif
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*
* omggif is a JavaScript implementation of a GIF 89a encoder and decoder,
* including animation and compression. It does not rely on any specific
* underlying system, so should run in the browser, Node, or Plask.
*/
function Zt(t3) {
var e2 = 0;
if (71 !== t3[e2++] || 73 !== t3[e2++] || 70 !== t3[e2++] || 56 !== t3[e2++] || 56 != (t3[e2++] + 1 & 253) || 97 !== t3[e2++]) throw new Error("Invalid GIF 87a/89a header.");
var r2 = t3[e2++] | t3[e2++] << 8, n2 = t3[e2++] | t3[e2++] << 8, i2 = t3[e2++], a2 = i2 >> 7, o2 = 1 << (7 & i2) + 1;
t3[e2++];
t3[e2++];
var s2 = null, c2 = null;
a2 && (s2 = e2, c2 = o2, e2 += 3 * o2);
var u2 = true, h2 = [], l2 = 0, f2 = null, d2 = 0, p2 = null;
for (this.width = r2, this.height = n2; u2 && e2 < t3.length; ) switch (t3[e2++]) {
case 33:
switch (t3[e2++]) {
case 255:
if (11 !== t3[e2] || 78 == t3[e2 + 1] && 69 == t3[e2 + 2] && 84 == t3[e2 + 3] && 83 == t3[e2 + 4] && 67 == t3[e2 + 5] && 65 == t3[e2 + 6] && 80 == t3[e2 + 7] && 69 == t3[e2 + 8] && 50 == t3[e2 + 9] && 46 == t3[e2 + 10] && 48 == t3[e2 + 11] && 3 == t3[e2 + 12] && 1 == t3[e2 + 13] && 0 == t3[e2 + 16]) e2 += 14, p2 = t3[e2++] | t3[e2++] << 8, e2++;
else for (e2 += 12; ; ) {
if (!((P2 = t3[e2++]) >= 0)) throw Error("Invalid block size");
if (0 === P2) break;
e2 += P2;
}
break;
case 249:
if (4 !== t3[e2++] || 0 !== t3[e2 + 4]) throw new Error("Invalid graphics extension block.");
var g2 = t3[e2++];
l2 = t3[e2++] | t3[e2++] << 8, f2 = t3[e2++], 0 == (1 & g2) && (f2 = null), d2 = g2 >> 2 & 7, e2++;
break;
case 254:
for (; ; ) {
if (!((P2 = t3[e2++]) >= 0)) throw Error("Invalid block size");
if (0 === P2) break;
e2 += P2;
}
break;
default:
throw new Error("Unknown graphic control label: 0x" + t3[e2 - 1].toString(16));
}
break;
case 44:
var m2 = t3[e2++] | t3[e2++] << 8, v2 = t3[e2++] | t3[e2++] << 8, b2 = t3[e2++] | t3[e2++] << 8, y2 = t3[e2++] | t3[e2++] << 8, w2 = t3[e2++], N2 = w2 >> 6 & 1, L2 = 1 << (7 & w2) + 1, A5 = s2, x2 = c2, S2 = false;
if (w2 >> 7) {
S2 = true;
A5 = e2, x2 = L2, e2 += 3 * L2;
}
var _2 = e2;
for (e2++; ; ) {
var P2;
if (!((P2 = t3[e2++]) >= 0)) throw Error("Invalid block size");
if (0 === P2) break;
e2 += P2;
}
h2.push({ x: m2, y: v2, width: b2, height: y2, has_local_palette: S2, palette_offset: A5, palette_size: x2, data_offset: _2, data_length: e2 - _2, transparent_index: f2, interlaced: !!N2, delay: l2, disposal: d2 });
break;
case 59:
u2 = false;
break;
default:
throw new Error("Unknown gif block: 0x" + t3[e2 - 1].toString(16));
}
this.numFrames = function() {
return h2.length;
}, this.loopCount = function() {
return p2;
}, this.frameInfo = function(t4) {
if (t4 < 0 || t4 >= h2.length) throw new Error("Frame index out of range.");
return h2[t4];
}, this.decodeAndBlitFrameBGRA = function(e3, n3) {
var i3 = this.frameInfo(e3), a3 = i3.width * i3.height, o3 = new Uint8Array(a3);
$t(t3, i3.data_offset, o3, a3);
var s3 = i3.palette_offset, c3 = i3.transparent_index;
null === c3 && (c3 = 256);
var u3 = i3.width, h3 = r2 - u3, l3 = u3, f3 = 4 * (i3.y * r2 + i3.x), d3 = 4 * ((i3.y + i3.height) * r2 + i3.x), p3 = f3, g3 = 4 * h3;
true === i3.interlaced && (g3 += 4 * r2 * 7);
for (var m3 = 8, v3 = 0, b3 = o3.length; v3 < b3; ++v3) {
var y3 = o3[v3];
if (0 === l3 && (l3 = u3, (p3 += g3) >= d3 && (g3 = 4 * h3 + 4 * r2 * (m3 - 1), p3 = f3 + (u3 + h3) * (m3 << 1), m3 >>= 1)), y3 === c3) p3 += 4;
else {
var w3 = t3[s3 + 3 * y3], N3 = t3[s3 + 3 * y3 + 1], L3 = t3[s3 + 3 * y3 + 2];
n3[p3++] = L3, n3[p3++] = N3, n3[p3++] = w3, n3[p3++] = 255;
}
--l3;
}
}, this.decodeAndBlitFrameRGBA = function(e3, n3) {
var i3 = this.frameInfo(e3), a3 = i3.width * i3.height, o3 = new Uint8Array(a3);
$t(t3, i3.data_offset, o3, a3);
var s3 = i3.palette_offset, c3 = i3.transparent_index;
null === c3 && (c3 = 256);
var u3 = i3.width, h3 = r2 - u3, l3 = u3, f3 = 4 * (i3.y * r2 + i3.x), d3 = 4 * ((i3.y + i3.height) * r2 + i3.x), p3 = f3, g3 = 4 * h3;
true === i3.interlaced && (g3 += 4 * r2 * 7);
for (var m3 = 8, v3 = 0, b3 = o3.length; v3 < b3; ++v3) {
var y3 = o3[v3];
if (0 === l3 && (l3 = u3, (p3 += g3) >= d3 && (g3 = 4 * h3 + 4 * r2 * (m3 - 1), p3 = f3 + (u3 + h3) * (m3 << 1), m3 >>= 1)), y3 === c3) p3 += 4;
else {
var w3 = t3[s3 + 3 * y3], N3 = t3[s3 + 3 * y3 + 1], L3 = t3[s3 + 3 * y3 + 2];
n3[p3++] = w3, n3[p3++] = N3, n3[p3++] = L3, n3[p3++] = 255;
}
--l3;
}
};
}
function $t(t3, e2, r2, n2) {
for (var i2 = t3[e2++], o2 = 1 << i2, s2 = o2 + 1, c2 = s2 + 1, u2 = i2 + 1, h2 = (1 << u2) - 1, l2 = 0, f2 = 0, d2 = 0, p2 = t3[e2++], g2 = new Int32Array(4096), m2 = null; ; ) {
for (; l2 < 16 && 0 !== p2; ) f2 |= t3[e2++] << l2, l2 += 8, 1 === p2 ? p2 = t3[e2++] : --p2;
if (l2 < u2) break;
var v2 = f2 & h2;
if (f2 >>= u2, l2 -= u2, v2 !== o2) {
if (v2 === s2) break;
for (var b2 = v2 < c2 ? v2 : m2, y2 = 0, w2 = b2; w2 > o2; ) w2 = g2[w2] >> 8, ++y2;
var N2 = w2;
if (d2 + y2 + (b2 !== v2 ? 1 : 0) > n2) return void a$2.log("Warning, gif stream longer than expected.");
r2[d2++] = N2;
var L2 = d2 += y2;
for (b2 !== v2 && (r2[d2++] = N2), w2 = b2; y2--; ) w2 = g2[w2], r2[--L2] = 255 & w2, w2 >>= 8;
null !== m2 && c2 < 4096 && (g2[c2++] = m2 << 8 | N2, c2 >= h2 + 1 && u2 < 12 && (++u2, h2 = h2 << 1 | 1)), m2 = v2;
} else c2 = s2 + 1, h2 = (1 << (u2 = i2 + 1)) - 1, m2 = null;
}
return d2 !== n2 && a$2.log("Warning, gif stream shorter than expected."), r2;
}
/**
* @license
Copyright (c) 2008, Adobe Systems Incorporated
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Adobe Systems Incorporated nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
function Qt(t3) {
var e2, r2, n2, i2, a2, o2 = Math.floor, s2 = new Array(64), c2 = new Array(64), u2 = new Array(64), h2 = new Array(64), l2 = new Array(65535), f2 = new Array(65535), d2 = new Array(64), p2 = new Array(64), g2 = [], m2 = 0, v2 = 7, b2 = new Array(64), y2 = new Array(64), w2 = new Array(64), N2 = new Array(256), L2 = new Array(2048), A5 = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63], x2 = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], S2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], _2 = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125], P2 = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250], k2 = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0], I2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], F2 = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119], C2 = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];
function j2(t4, e3) {
for (var r3 = 0, n3 = 0, i3 = new Array(), a3 = 1; a3 <= 16; a3++) {
for (var o3 = 1; o3 <= t4[a3]; o3++) i3[e3[n3]] = [], i3[e3[n3]][0] = r3, i3[e3[n3]][1] = a3, n3++, r3++;
r3 *= 2;
}
return i3;
}
function O2(t4) {
for (var e3 = t4[0], r3 = t4[1] - 1; r3 >= 0; ) e3 & 1 << r3 && (m2 |= 1 << v2), r3--, --v2 < 0 && (255 == m2 ? (B3(255), B3(0)) : B3(m2), v2 = 7, m2 = 0);
}
function B3(t4) {
g2.push(t4);
}
function M2(t4) {
B3(t4 >> 8 & 255), B3(255 & t4);
}
function E2(t4, e3, r3, n3, i3) {
for (var a3, o3 = i3[0], s3 = i3[240], c3 = function(t5, e4) {
var r4, n4, i4, a4, o4, s4, c4, u4, h4, l3, f3 = 0;
for (h4 = 0; h4 < 8; ++h4) {
r4 = t5[f3], n4 = t5[f3 + 1], i4 = t5[f3 + 2], a4 = t5[f3 + 3], o4 = t5[f3 + 4], s4 = t5[f3 + 5], c4 = t5[f3 + 6];
var p3 = r4 + (u4 = t5[f3 + 7]), g4 = r4 - u4, m4 = n4 + c4, v4 = n4 - c4, b4 = i4 + s4, y4 = i4 - s4, w4 = a4 + o4, N3 = a4 - o4, L3 = p3 + w4, A6 = p3 - w4, x3 = m4 + b4, S3 = m4 - b4;
t5[f3] = L3 + x3, t5[f3 + 4] = L3 - x3;
var _3 = 0.707106781 * (S3 + A6);
t5[f3 + 2] = A6 + _3, t5[f3 + 6] = A6 - _3;
var P3 = 0.382683433 * ((L3 = N3 + y4) - (S3 = v4 + g4)), k3 = 0.5411961 * L3 + P3, I3 = 1.306562965 * S3 + P3, F3 = 0.707106781 * (x3 = y4 + v4), C3 = g4 + F3, j3 = g4 - F3;
t5[f3 + 5] = j3 + k3, t5[f3 + 3] = j3 - k3, t5[f3 + 1] = C3 + I3, t5[f3 + 7] = C3 - I3, f3 += 8;
}
for (f3 = 0, h4 = 0; h4 < 8; ++h4) {
r4 = t5[f3], n4 = t5[f3 + 8], i4 = t5[f3 + 16], a4 = t5[f3 + 24], o4 = t5[f3 + 32], s4 = t5[f3 + 40], c4 = t5[f3 + 48];
var O3 = r4 + (u4 = t5[f3 + 56]), B4 = r4 - u4, M3 = n4 + c4, E3 = n4 - c4, q3 = i4 + s4, D2 = i4 - s4, R2 = a4 + o4, T2 = a4 - o4, U2 = O3 + R2, z2 = O3 - R2, H4 = M3 + q3, W2 = M3 - q3;
t5[f3] = U2 + H4, t5[f3 + 32] = U2 - H4;
var V2 = 0.707106781 * (W2 + z2);
t5[f3 + 16] = z2 + V2, t5[f3 + 48] = z2 - V2;
var G2 = 0.382683433 * ((U2 = T2 + D2) - (W2 = E3 + B4)), Y2 = 0.5411961 * U2 + G2, J2 = 1.306562965 * W2 + G2, X2 = 0.707106781 * (H4 = D2 + E3), K2 = B4 + X2, Z2 = B4 - X2;
t5[f3 + 40] = Z2 + Y2, t5[f3 + 24] = Z2 - Y2, t5[f3 + 8] = K2 + J2, t5[f3 + 56] = K2 - J2, f3++;
}
for (h4 = 0; h4 < 64; ++h4) l3 = t5[h4] * e4[h4], d2[h4] = l3 > 0 ? l3 + 0.5 | 0 : l3 - 0.5 | 0;
return d2;
}(t4, e3), u3 = 0; u3 < 64; ++u3) p2[A5[u3]] = c3[u3];
var h3 = p2[0] - r3;
r3 = p2[0], 0 == h3 ? O2(n3[0]) : (O2(n3[f2[a3 = 32767 + h3]]), O2(l2[a3]));
for (var g3 = 63; g3 > 0 && 0 == p2[g3]; ) g3--;
if (0 == g3) return O2(o3), r3;
for (var m3, v3 = 1; v3 <= g3; ) {
for (var b3 = v3; 0 == p2[v3] && v3 <= g3; ) ++v3;
var y3 = v3 - b3;
if (y3 >= 16) {
m3 = y3 >> 4;
for (var w3 = 1; w3 <= m3; ++w3) O2(s3);
y3 &= 15;
}
a3 = 32767 + p2[v3], O2(i3[(y3 << 4) + f2[a3]]), O2(l2[a3]), v3++;
}
return 63 != g3 && O2(o3), r3;
}
function q2(t4) {
(t4 = Math.min(Math.max(t4, 1), 100), a2 != t4) && (!function(t5) {
for (var e3 = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99], r3 = 0; r3 < 64; r3++) {
var n3 = o2((e3[r3] * t5 + 50) / 100);
n3 = Math.min(Math.max(n3, 1), 255), s2[A5[r3]] = n3;
}
for (var i3 = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99], a3 = 0; a3 < 64; a3++) {
var l3 = o2((i3[a3] * t5 + 50) / 100);
l3 = Math.min(Math.max(l3, 1), 255), c2[A5[a3]] = l3;
}
for (var f3 = [1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958, 0.5411961, 0.275899379], d3 = 0, p3 = 0; p3 < 8; p3++) for (var g3 = 0; g3 < 8; g3++) u2[d3] = 1 / (s2[A5[d3]] * f3[p3] * f3[g3] * 8), h2[d3] = 1 / (c2[A5[d3]] * f3[p3] * f3[g3] * 8), d3++;
}(t4 < 50 ? Math.floor(5e3 / t4) : Math.floor(200 - 2 * t4)), a2 = t4);
}
this.encode = function(t4, a3) {
a3 && q2(a3), g2 = new Array(), m2 = 0, v2 = 7, M2(65496), M2(65504), M2(16), B3(74), B3(70), B3(73), B3(70), B3(0), B3(1), B3(1), B3(0), M2(1), M2(1), B3(0), B3(0), function() {
M2(65499), M2(132), B3(0);
for (var t5 = 0; t5 < 64; t5++) B3(s2[t5]);
B3(1);
for (var e3 = 0; e3 < 64; e3++) B3(c2[e3]);
}(), function(t5, e3) {
M2(65472), M2(17), B3(8), M2(e3), M2(t5), B3(3), B3(1), B3(17), B3(0), B3(2), B3(17), B3(1), B3(3), B3(17), B3(1);
}(t4.width, t4.height), function() {
M2(65476), M2(418), B3(0);
for (var t5 = 0; t5 < 16; t5++) B3(x2[t5 + 1]);
for (var e3 = 0; e3 <= 11; e3++) B3(S2[e3]);
B3(16);
for (var r3 = 0; r3 < 16; r3++) B3(_2[r3 + 1]);
for (var n3 = 0; n3 <= 161; n3++) B3(P2[n3]);
B3(1);
for (var i3 = 0; i3 < 16; i3++) B3(k2[i3 + 1]);
for (var a4 = 0; a4 <= 11; a4++) B3(I2[a4]);
B3(17);
for (var o4 = 0; o4 < 16; o4++) B3(F2[o4 + 1]);
for (var s3 = 0; s3 <= 161; s3++) B3(C2[s3]);
}(), M2(65498), M2(12), B3(3), B3(1), B3(0), B3(2), B3(17), B3(3), B3(17), B3(0), B3(63), B3(0);
var o3 = 0, l3 = 0, f3 = 0;
m2 = 0, v2 = 7, this.encode.displayName = "_encode_";
for (var d3, p3, N3, A6, j3, D2, R2, T2, U2, z2 = t4.data, H4 = t4.width, W2 = t4.height, V2 = 4 * H4, G2 = 0; G2 < W2; ) {
for (d3 = 0; d3 < V2; ) {
for (j3 = V2 * G2 + d3, R2 = -1, T2 = 0, U2 = 0; U2 < 64; U2++) D2 = j3 + (T2 = U2 >> 3) * V2 + (R2 = 4 * (7 & U2)), G2 + T2 >= W2 && (D2 -= V2 * (G2 + 1 + T2 - W2)), d3 + R2 >= V2 && (D2 -= d3 + R2 - V2 + 4), p3 = z2[D2++], N3 = z2[D2++], A6 = z2[D2++], b2[U2] = (L2[p3] + L2[N3 + 256 >> 0] + L2[A6 + 512 >> 0] >> 16) - 128, y2[U2] = (L2[p3 + 768 >> 0] + L2[N3 + 1024 >> 0] + L2[A6 + 1280 >> 0] >> 16) - 128, w2[U2] = (L2[p3 + 1280 >> 0] + L2[N3 + 1536 >> 0] + L2[A6 + 1792 >> 0] >> 16) - 128;
o3 = E2(b2, u2, o3, e2, n2), l3 = E2(y2, h2, l3, r2, i2), f3 = E2(w2, h2, f3, r2, i2), d3 += 32;
}
G2 += 8;
}
if (v2 >= 0) {
var Y2 = [];
Y2[1] = v2 + 1, Y2[0] = (1 << v2 + 1) - 1, O2(Y2);
}
return M2(65497), new Uint8Array(g2);
}, t3 = t3 || 50, function() {
for (var t4 = String.fromCharCode, e3 = 0; e3 < 256; e3++) N2[e3] = t4(e3);
}(), e2 = j2(x2, S2), r2 = j2(k2, I2), n2 = j2(_2, P2), i2 = j2(F2, C2), function() {
for (var t4 = 1, e3 = 2, r3 = 1; r3 <= 15; r3++) {
for (var n3 = t4; n3 < e3; n3++) f2[32767 + n3] = r3, l2[32767 + n3] = [], l2[32767 + n3][1] = r3, l2[32767 + n3][0] = n3;
for (var i3 = -(e3 - 1); i3 <= -t4; i3++) f2[32767 + i3] = r3, l2[32767 + i3] = [], l2[32767 + i3][1] = r3, l2[32767 + i3][0] = e3 - 1 + i3;
t4 <<= 1, e3 <<= 1;
}
}(), function() {
for (var t4 = 0; t4 < 256; t4++) L2[t4] = 19595 * t4, L2[t4 + 256 >> 0] = 38470 * t4, L2[t4 + 512 >> 0] = 7471 * t4 + 32768, L2[t4 + 768 >> 0] = -11059 * t4, L2[t4 + 1024 >> 0] = -21709 * t4, L2[t4 + 1280 >> 0] = 32768 * t4 + 8421375, L2[t4 + 1536 >> 0] = -27439 * t4, L2[t4 + 1792 >> 0] = -5329 * t4;
}(), q2(t3);
}
/**
* @license
* Copyright (c) 2017 Aras Abbasi
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function te(t3, e2) {
if (this.pos = 0, this.buffer = t3, this.datav = new DataView(t3.buffer), this.is_with_alpha = !!e2, this.bottom_up = true, this.flag = String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]), this.pos += 2, -1 === ["BM", "BA", "CI", "CP", "IC", "PT"].indexOf(this.flag)) throw new Error("Invalid BMP File");
this.parseHeader(), this.parseBGR();
}
function ee(t3) {
function e2(t4) {
if (!t4) throw Error("assert :P");
}
function r2(t4, e3, r3) {
for (var n3 = 0; 4 > n3; n3++) if (t4[e3 + n3] != r3.charCodeAt(n3)) return true;
return false;
}
function n2(t4, e3, r3, n3, i3) {
for (var a3 = 0; a3 < i3; a3++) t4[e3 + a3] = r3[n3 + a3];
}
function i2(t4, e3, r3, n3) {
for (var i3 = 0; i3 < n3; i3++) t4[e3 + i3] = r3;
}
function a2(t4) {
return new Int32Array(t4);
}
function o2(t4, e3) {
for (var r3 = [], n3 = 0; n3 < t4; n3++) r3.push(new e3());
return r3;
}
function s2(t4, e3) {
var r3 = [];
return function t5(r4, n3, i3) {
for (var a3 = i3[n3], o3 = 0; o3 < a3 && (r4.push(i3.length > n3 + 1 ? [] : new e3()), !(i3.length < n3 + 1)); o3++) t5(r4[o3], n3 + 1, i3);
}(r3, 0, t4), r3;
}
var c2 = function() {
var t4 = this;
function c3(t5, e3) {
for (var r3 = 1 << e3 - 1 >>> 0; t5 & r3; ) r3 >>>= 1;
return r3 ? (t5 & r3 - 1) + r3 : t5;
}
function u3(t5, r3, n3, i3, a3) {
e2(!(i3 % n3));
do {
t5[r3 + (i3 -= n3)] = a3;
} while (0 < i3);
}
function h3(t5, r3, n3, i3, o3) {
if (e2(2328 >= o3), 512 >= o3) var s3 = a2(512);
else if (null == (s3 = a2(o3))) return 0;
return function(t6, r4, n4, i4, o4, s4) {
var h4, f4, d4 = r4, p4 = 1 << n4, g4 = a2(16), m4 = a2(16);
for (e2(0 != o4), e2(null != i4), e2(null != t6), e2(0 < n4), f4 = 0; f4 < o4; ++f4) {
if (15 < i4[f4]) return 0;
++g4[i4[f4]];
}
if (g4[0] == o4) return 0;
for (m4[1] = 0, h4 = 1; 15 > h4; ++h4) {
if (g4[h4] > 1 << h4) return 0;
m4[h4 + 1] = m4[h4] + g4[h4];
}
for (f4 = 0; f4 < o4; ++f4) h4 = i4[f4], 0 < i4[f4] && (s4[m4[h4]++] = f4);
if (1 == m4[15]) return (i4 = new l3()).g = 0, i4.value = s4[0], u3(t6, d4, 1, p4, i4), p4;
var v4, b4 = -1, y4 = p4 - 1, w4 = 0, N4 = 1, L4 = 1, A7 = 1 << n4;
for (f4 = 0, h4 = 1, o4 = 2; h4 <= n4; ++h4, o4 <<= 1) {
if (N4 += L4 <<= 1, 0 > (L4 -= g4[h4])) return 0;
for (; 0 < g4[h4]; --g4[h4]) (i4 = new l3()).g = h4, i4.value = s4[f4++], u3(t6, d4 + w4, o4, A7, i4), w4 = c3(w4, h4);
}
for (h4 = n4 + 1, o4 = 2; 15 >= h4; ++h4, o4 <<= 1) {
if (N4 += L4 <<= 1, 0 > (L4 -= g4[h4])) return 0;
for (; 0 < g4[h4]; --g4[h4]) {
if (i4 = new l3(), (w4 & y4) != b4) {
for (d4 += A7, v4 = 1 << (b4 = h4) - n4; 15 > b4 && !(0 >= (v4 -= g4[b4])); ) ++b4, v4 <<= 1;
p4 += A7 = 1 << (v4 = b4 - n4), t6[r4 + (b4 = w4 & y4)].g = v4 + n4, t6[r4 + b4].value = d4 - r4 - b4;
}
i4.g = h4 - n4, i4.value = s4[f4++], u3(t6, d4 + (w4 >> n4), o4, A7, i4), w4 = c3(w4, h4);
}
}
return N4 != 2 * m4[15] - 1 ? 0 : p4;
}(t5, r3, n3, i3, o3, s3);
}
function l3() {
this.value = this.g = 0;
}
function f3() {
this.value = this.g = 0;
}
function d3() {
this.G = o2(5, l3), this.H = a2(5), this.jc = this.Qb = this.qb = this.nd = 0, this.pd = o2(Dr, f3);
}
function p3(t5, r3, n3, i3) {
e2(null != t5), e2(null != r3), e2(2147483648 > i3), t5.Ca = 254, t5.I = 0, t5.b = -8, t5.Ka = 0, t5.oa = r3, t5.pa = n3, t5.Jd = r3, t5.Yc = n3 + i3, t5.Zc = 4 <= i3 ? n3 + i3 - 4 + 1 : n3, _2(t5);
}
function g3(t5, e3) {
for (var r3 = 0; 0 < e3--; ) r3 |= k2(t5, 128) << e3;
return r3;
}
function m3(t5, e3) {
var r3 = g3(t5, e3);
return P2(t5) ? -r3 : r3;
}
function v3(t5, r3, n3, i3) {
var a3, o3 = 0;
for (e2(null != t5), e2(null != r3), e2(4294967288 > i3), t5.Sb = i3, t5.Ra = 0, t5.u = 0, t5.h = 0, 4 < i3 && (i3 = 4), a3 = 0; a3 < i3; ++a3) o3 += r3[n3 + a3] << 8 * a3;
t5.Ra = o3, t5.bb = i3, t5.oa = r3, t5.pa = n3;
}
function b3(t5) {
for (; 8 <= t5.u && t5.bb < t5.Sb; ) t5.Ra >>>= 8, t5.Ra += t5.oa[t5.pa + t5.bb] << Ur - 8 >>> 0, ++t5.bb, t5.u -= 8;
A6(t5) && (t5.h = 1, t5.u = 0);
}
function y3(t5, r3) {
if (e2(0 <= r3), !t5.h && r3 <= Tr) {
var n3 = L3(t5) & Rr[r3];
return t5.u += r3, b3(t5), n3;
}
return t5.h = 1, t5.u = 0;
}
function w3() {
this.b = this.Ca = this.I = 0, this.oa = [], this.pa = 0, this.Jd = [], this.Yc = 0, this.Zc = [], this.Ka = 0;
}
function N3() {
this.Ra = 0, this.oa = [], this.h = this.u = this.bb = this.Sb = this.pa = 0;
}
function L3(t5) {
return t5.Ra >>> (t5.u & Ur - 1) >>> 0;
}
function A6(t5) {
return e2(t5.bb <= t5.Sb), t5.h || t5.bb == t5.Sb && t5.u > Ur;
}
function x2(t5, e3) {
t5.u = e3, t5.h = A6(t5);
}
function S2(t5) {
t5.u >= zr && (e2(t5.u >= zr), b3(t5));
}
function _2(t5) {
e2(null != t5 && null != t5.oa), t5.pa < t5.Zc ? (t5.I = (t5.oa[t5.pa++] | t5.I << 8) >>> 0, t5.b += 8) : (e2(null != t5 && null != t5.oa), t5.pa < t5.Yc ? (t5.b += 8, t5.I = t5.oa[t5.pa++] | t5.I << 8) : t5.Ka ? t5.b = 0 : (t5.I <<= 8, t5.b += 8, t5.Ka = 1));
}
function P2(t5) {
return g3(t5, 1);
}
function k2(t5, e3) {
var r3 = t5.Ca;
0 > t5.b && _2(t5);
var n3 = t5.b, i3 = r3 * e3 >>> 8, a3 = (t5.I >>> n3 > i3) + 0;
for (a3 ? (r3 -= i3, t5.I -= i3 + 1 << n3 >>> 0) : r3 = i3 + 1, n3 = r3, i3 = 0; 256 <= n3; ) i3 += 8, n3 >>= 8;
return n3 = 7 ^ i3 + Hr[n3], t5.b -= n3, t5.Ca = (r3 << n3) - 1, a3;
}
function I2(t5, e3, r3) {
t5[e3 + 0] = r3 >> 24 & 255, t5[e3 + 1] = r3 >> 16 & 255, t5[e3 + 2] = r3 >> 8 & 255, t5[e3 + 3] = r3 >> 0 & 255;
}
function F2(t5, e3) {
return t5[e3 + 0] << 0 | t5[e3 + 1] << 8;
}
function C2(t5, e3) {
return F2(t5, e3) | t5[e3 + 2] << 16;
}
function j2(t5, e3) {
return F2(t5, e3) | F2(t5, e3 + 2) << 16;
}
function O2(t5, r3) {
var n3 = 1 << r3;
return e2(null != t5), e2(0 < r3), t5.X = a2(n3), null == t5.X ? 0 : (t5.Mb = 32 - r3, t5.Xa = r3, 1);
}
function B3(t5, r3) {
e2(null != t5), e2(null != r3), e2(t5.Xa == r3.Xa), n2(r3.X, 0, t5.X, 0, 1 << r3.Xa);
}
function M2() {
this.X = [], this.Xa = this.Mb = 0;
}
function E2(t5, r3, n3, i3) {
e2(null != n3), e2(null != i3);
var a3 = n3[0], o3 = i3[0];
return 0 == a3 && (a3 = (t5 * o3 + r3 / 2) / r3), 0 == o3 && (o3 = (r3 * a3 + t5 / 2) / t5), 0 >= a3 || 0 >= o3 ? 0 : (n3[0] = a3, i3[0] = o3, 1);
}
function q2(t5, e3) {
return t5 + (1 << e3) - 1 >>> e3;
}
function D2(t5, e3) {
return ((4278255360 & t5) + (4278255360 & e3) >>> 0 & 4278255360) + ((16711935 & t5) + (16711935 & e3) >>> 0 & 16711935) >>> 0;
}
function R2(e3, r3) {
t4[r3] = function(r4, n3, i3, a3, o3, s3, c4) {
var u4;
for (u4 = 0; u4 < o3; ++u4) {
var h4 = t4[e3](s3[c4 + u4 - 1], i3, a3 + u4);
s3[c4 + u4] = D2(r4[n3 + u4], h4);
}
};
}
function T2() {
this.ud = this.hd = this.jd = 0;
}
function U2(t5, e3) {
return ((4278124286 & (t5 ^ e3)) >>> 1) + (t5 & e3) >>> 0;
}
function z2(t5) {
return 0 <= t5 && 256 > t5 ? t5 : 0 > t5 ? 0 : 255 < t5 ? 255 : void 0;
}
function H4(t5, e3) {
return z2(t5 + (t5 - e3 + 0.5 >> 1));
}
function W2(t5, e3, r3) {
return Math.abs(e3 - r3) - Math.abs(t5 - r3);
}
function V2(t5, e3, r3, n3, i3, a3, o3) {
for (n3 = a3[o3 - 1], r3 = 0; r3 < i3; ++r3) a3[o3 + r3] = n3 = D2(t5[e3 + r3], n3);
}
function G2(t5, e3, r3, n3, i3) {
var a3;
for (a3 = 0; a3 < r3; ++a3) {
var o3 = t5[e3 + a3], s3 = o3 >> 8 & 255, c4 = 16711935 & (c4 = (c4 = 16711935 & o3) + ((s3 << 16) + s3));
n3[i3 + a3] = (4278255360 & o3) + c4 >>> 0;
}
}
function Y2(t5, e3) {
e3.jd = t5 >> 0 & 255, e3.hd = t5 >> 8 & 255, e3.ud = t5 >> 16 & 255;
}
function J2(t5, e3, r3, n3, i3, a3) {
var o3;
for (o3 = 0; o3 < n3; ++o3) {
var s3 = e3[r3 + o3], c4 = s3 >>> 8, u4 = s3, h4 = 255 & (h4 = (h4 = s3 >>> 16) + ((t5.jd << 24 >> 24) * (c4 << 24 >> 24) >>> 5));
u4 = 255 & (u4 = (u4 = u4 + ((t5.hd << 24 >> 24) * (c4 << 24 >> 24) >>> 5)) + ((t5.ud << 24 >> 24) * (h4 << 24 >> 24) >>> 5));
i3[a3 + o3] = (4278255360 & s3) + (h4 << 16) + u4;
}
}
function X2(e3, r3, n3, i3, a3) {
t4[r3] = function(t5, e4, r4, n4, o3, s3, c4, u4, h4) {
for (n4 = c4; n4 < u4; ++n4) for (c4 = 0; c4 < h4; ++c4) o3[s3++] = a3(r4[i3(t5[e4++])]);
}, t4[e3] = function(e4, r4, o3, s3, c4, u4, h4) {
var l4 = 8 >> e4.b, f4 = e4.Ea, d4 = e4.K[0], p4 = e4.w;
if (8 > l4) for (e4 = (1 << e4.b) - 1, p4 = (1 << l4) - 1; r4 < o3; ++r4) {
var g4, m4 = 0;
for (g4 = 0; g4 < f4; ++g4) g4 & e4 || (m4 = i3(s3[c4++])), u4[h4++] = a3(d4[m4 & p4]), m4 >>= l4;
}
else t4["VP8LMapColor" + n3](s3, c4, d4, p4, u4, h4, r4, o3, f4);
};
}
function K2(t5, e3, r3, n3, i3) {
for (r3 = e3 + r3; e3 < r3; ) {
var a3 = t5[e3++];
n3[i3++] = a3 >> 16 & 255, n3[i3++] = a3 >> 8 & 255, n3[i3++] = a3 >> 0 & 255;
}
}
function Z2(t5, e3, r3, n3, i3) {
for (r3 = e3 + r3; e3 < r3; ) {
var a3 = t5[e3++];
n3[i3++] = a3 >> 16 & 255, n3[i3++] = a3 >> 8 & 255, n3[i3++] = a3 >> 0 & 255, n3[i3++] = a3 >> 24 & 255;
}
}
function $2(t5, e3, r3, n3, i3) {
for (r3 = e3 + r3; e3 < r3; ) {
var a3 = (o3 = t5[e3++]) >> 16 & 240 | o3 >> 12 & 15, o3 = o3 >> 0 & 240 | o3 >> 28 & 15;
n3[i3++] = a3, n3[i3++] = o3;
}
}
function Q2(t5, e3, r3, n3, i3) {
for (r3 = e3 + r3; e3 < r3; ) {
var a3 = (o3 = t5[e3++]) >> 16 & 248 | o3 >> 13 & 7, o3 = o3 >> 5 & 224 | o3 >> 3 & 31;
n3[i3++] = a3, n3[i3++] = o3;
}
}
function tt2(t5, e3, r3, n3, i3) {
for (r3 = e3 + r3; e3 < r3; ) {
var a3 = t5[e3++];
n3[i3++] = a3 >> 0 & 255, n3[i3++] = a3 >> 8 & 255, n3[i3++] = a3 >> 16 & 255;
}
}
function et2(t5, e3, r3, i3, a3, o3) {
if (0 == o3) for (r3 = e3 + r3; e3 < r3; ) I2(i3, ((o3 = t5[e3++])[0] >> 24 | o3[1] >> 8 & 65280 | o3[2] << 8 & 16711680 | o3[3] << 24) >>> 0), a3 += 32;
else n2(i3, a3, t5, e3, r3);
}
function rt2(e3, r3) {
t4[r3][0] = t4[e3 + "0"], t4[r3][1] = t4[e3 + "1"], t4[r3][2] = t4[e3 + "2"], t4[r3][3] = t4[e3 + "3"], t4[r3][4] = t4[e3 + "4"], t4[r3][5] = t4[e3 + "5"], t4[r3][6] = t4[e3 + "6"], t4[r3][7] = t4[e3 + "7"], t4[r3][8] = t4[e3 + "8"], t4[r3][9] = t4[e3 + "9"], t4[r3][10] = t4[e3 + "10"], t4[r3][11] = t4[e3 + "11"], t4[r3][12] = t4[e3 + "12"], t4[r3][13] = t4[e3 + "13"], t4[r3][14] = t4[e3 + "0"], t4[r3][15] = t4[e3 + "0"];
}
function nt2(t5) {
return t5 == Hn || t5 == Wn || t5 == Vn || t5 == Gn;
}
function it2() {
this.eb = [], this.size = this.A = this.fb = 0;
}
function at2() {
this.y = [], this.f = [], this.ea = [], this.F = [], this.Tc = this.Ed = this.Cd = this.Fd = this.lb = this.Db = this.Ab = this.fa = this.J = this.W = this.N = this.O = 0;
}
function ot2() {
this.Rd = this.height = this.width = this.S = 0, this.f = {}, this.f.RGBA = new it2(), this.f.kb = new at2(), this.sd = null;
}
function st2() {
this.width = [0], this.height = [0], this.Pd = [0], this.Qd = [0], this.format = [0];
}
function ct2() {
this.Id = this.fd = this.Md = this.hb = this.ib = this.da = this.bd = this.cd = this.j = this.v = this.Da = this.Sd = this.ob = 0;
}
function ut2(t5) {
return alert("todo:WebPSamplerProcessPlane"), t5.T;
}
function ht2(t5, e3) {
var r3 = t5.T, i3 = e3.ba.f.RGBA, a3 = i3.eb, o3 = i3.fb + t5.ka * i3.A, s3 = vi[e3.ba.S], c4 = t5.y, u4 = t5.O, h4 = t5.f, l4 = t5.N, f4 = t5.ea, d4 = t5.W, p4 = e3.cc, g4 = e3.dc, m4 = e3.Mc, v4 = e3.Nc, b4 = t5.ka, y4 = t5.ka + t5.T, w4 = t5.U, N4 = w4 + 1 >> 1;
for (0 == b4 ? s3(c4, u4, null, null, h4, l4, f4, d4, h4, l4, f4, d4, a3, o3, null, null, w4) : (s3(e3.ec, e3.fc, c4, u4, p4, g4, m4, v4, h4, l4, f4, d4, a3, o3 - i3.A, a3, o3, w4), ++r3); b4 + 2 < y4; b4 += 2) p4 = h4, g4 = l4, m4 = f4, v4 = d4, l4 += t5.Rc, d4 += t5.Rc, o3 += 2 * i3.A, s3(c4, (u4 += 2 * t5.fa) - t5.fa, c4, u4, p4, g4, m4, v4, h4, l4, f4, d4, a3, o3 - i3.A, a3, o3, w4);
return u4 += t5.fa, t5.j + y4 < t5.o ? (n2(e3.ec, e3.fc, c4, u4, w4), n2(e3.cc, e3.dc, h4, l4, N4), n2(e3.Mc, e3.Nc, f4, d4, N4), r3--) : 1 & y4 || s3(c4, u4, null, null, h4, l4, f4, d4, h4, l4, f4, d4, a3, o3 + i3.A, null, null, w4), r3;
}
function lt2(t5, r3, n3) {
var i3 = t5.F, a3 = [t5.J];
if (null != i3) {
var o3 = t5.U, s3 = r3.ba.S, c4 = s3 == Tn || s3 == Vn;
r3 = r3.ba.f.RGBA;
var u4 = [0], h4 = t5.ka;
u4[0] = t5.T, t5.Kb && (0 == h4 ? --u4[0] : (--h4, a3[0] -= t5.width), t5.j + t5.ka + t5.T == t5.o && (u4[0] = t5.o - t5.j - h4));
var l4 = r3.eb;
h4 = r3.fb + h4 * r3.A;
t5 = Sn(i3, a3[0], t5.width, o3, u4, l4, h4 + (c4 ? 0 : 3), r3.A), e2(n3 == u4), t5 && nt2(s3) && An(l4, h4, c4, o3, u4, r3.A);
}
return 0;
}
function ft2(t5) {
var e3 = t5.ma, r3 = e3.ba.S, n3 = 11 > r3, i3 = r3 == qn || r3 == Rn || r3 == Tn || r3 == Un || 12 == r3 || nt2(r3);
if (e3.memory = null, e3.Ib = null, e3.Jb = null, e3.Nd = null, !Mr(e3.Oa, t5, i3 ? 11 : 12)) return 0;
if (i3 && nt2(r3) && br(), t5.da) alert("todo:use_scaling");
else {
if (n3) {
if (e3.Ib = ut2, t5.Kb) {
if (r3 = t5.U + 1 >> 1, e3.memory = a2(t5.U + 2 * r3), null == e3.memory) return 0;
e3.ec = e3.memory, e3.fc = 0, e3.cc = e3.ec, e3.dc = e3.fc + t5.U, e3.Mc = e3.cc, e3.Nc = e3.dc + r3, e3.Ib = ht2, br();
}
} else alert("todo:EmitYUV");
i3 && (e3.Jb = lt2, n3 && mr());
}
if (n3 && !Ci) {
for (t5 = 0; 256 > t5; ++t5) ji[t5] = 89858 * (t5 - 128) + _i >> Si, Mi[t5] = -22014 * (t5 - 128) + _i, Bi[t5] = -45773 * (t5 - 128), Oi[t5] = 113618 * (t5 - 128) + _i >> Si;
for (t5 = Pi; t5 < ki; ++t5) e3 = 76283 * (t5 - 16) + _i >> Si, Ei[t5 - Pi] = Vt2(e3, 255), qi[t5 - Pi] = Vt2(e3 + 8 >> 4, 15);
Ci = 1;
}
return 1;
}
function dt2(t5) {
var r3 = t5.ma, n3 = t5.U, i3 = t5.T;
return e2(!(1 & t5.ka)), 0 >= n3 || 0 >= i3 ? 0 : (n3 = r3.Ib(t5, r3), null != r3.Jb && r3.Jb(t5, r3, n3), r3.Dc += n3, 1);
}
function pt2(t5) {
t5.ma.memory = null;
}
function gt2(t5, e3, r3, n3) {
return 47 != y3(t5, 8) ? 0 : (e3[0] = y3(t5, 14) + 1, r3[0] = y3(t5, 14) + 1, n3[0] = y3(t5, 1), 0 != y3(t5, 3) ? 0 : !t5.h);
}
function mt2(t5, e3) {
if (4 > t5) return t5 + 1;
var r3 = t5 - 2 >> 1;
return (2 + (1 & t5) << r3) + y3(e3, r3) + 1;
}
function vt2(t5, e3) {
return 120 < e3 ? e3 - 120 : 1 <= (r3 = ((r3 = $n[e3 - 1]) >> 4) * t5 + (8 - (15 & r3))) ? r3 : 1;
var r3;
}
function bt2(t5, e3, r3) {
var n3 = L3(r3), i3 = t5[e3 += 255 & n3].g - 8;
return 0 < i3 && (x2(r3, r3.u + 8), n3 = L3(r3), e3 += t5[e3].value, e3 += n3 & (1 << i3) - 1), x2(r3, r3.u + t5[e3].g), t5[e3].value;
}
function yt2(t5, r3, n3) {
return n3.g += t5.g, n3.value += t5.value << r3 >>> 0, e2(8 >= n3.g), t5.g;
}
function wt2(t5, r3, n3) {
var i3 = t5.xc;
return e2((r3 = 0 == i3 ? 0 : t5.vc[t5.md * (n3 >> i3) + (r3 >> i3)]) < t5.Wb), t5.Ya[r3];
}
function Nt2(t5, r3, i3, a3) {
var o3 = t5.ab, s3 = t5.c * r3, c4 = t5.C;
r3 = c4 + r3;
var u4 = i3, h4 = a3;
for (a3 = t5.Ta, i3 = t5.Ua; 0 < o3--; ) {
var l4 = t5.gc[o3], f4 = c4, d4 = r3, p4 = u4, g4 = h4, m4 = (h4 = a3, u4 = i3, l4.Ea);
switch (e2(f4 < d4), e2(d4 <= l4.nc), l4.hc) {
case 2:
Gr(p4, g4, (d4 - f4) * m4, h4, u4);
break;
case 0:
var v4 = f4, b4 = d4, y4 = h4, w4 = u4, N4 = (_3 = l4).Ea;
0 == v4 && (Wr(p4, g4, null, null, 1, y4, w4), V2(p4, g4 + 1, 0, 0, N4 - 1, y4, w4 + 1), g4 += N4, w4 += N4, ++v4);
for (var L4 = 1 << _3.b, A7 = L4 - 1, x3 = q2(N4, _3.b), S3 = _3.K, _3 = _3.w + (v4 >> _3.b) * x3; v4 < b4; ) {
var P3 = S3, k3 = _3, I3 = 1;
for (Vr(p4, g4, y4, w4 - N4, 1, y4, w4); I3 < N4; ) {
var F3 = (I3 & ~A7) + L4;
F3 > N4 && (F3 = N4), (0, Zr[P3[k3++] >> 8 & 15])(p4, g4 + +I3, y4, w4 + I3 - N4, F3 - I3, y4, w4 + I3), I3 = F3;
}
g4 += N4, w4 += N4, ++v4 & A7 || (_3 += x3);
}
d4 != l4.nc && n2(h4, u4 - m4, h4, u4 + (d4 - f4 - 1) * m4, m4);
break;
case 1:
for (m4 = p4, b4 = g4, N4 = (p4 = l4.Ea) - (w4 = p4 & ~(y4 = (g4 = 1 << l4.b) - 1)), v4 = q2(p4, l4.b), L4 = l4.K, l4 = l4.w + (f4 >> l4.b) * v4; f4 < d4; ) {
for (A7 = L4, x3 = l4, S3 = new T2(), _3 = b4 + w4, P3 = b4 + p4; b4 < _3; ) Y2(A7[x3++], S3), $r(S3, m4, b4, g4, h4, u4), b4 += g4, u4 += g4;
b4 < P3 && (Y2(A7[x3++], S3), $r(S3, m4, b4, N4, h4, u4), b4 += N4, u4 += N4), ++f4 & y4 || (l4 += v4);
}
break;
case 3:
if (p4 == h4 && g4 == u4 && 0 < l4.b) {
for (b4 = h4, p4 = m4 = u4 + (d4 - f4) * m4 - (w4 = (d4 - f4) * q2(l4.Ea, l4.b)), g4 = h4, y4 = u4, v4 = [], w4 = (N4 = w4) - 1; 0 <= w4; --w4) v4[w4] = g4[y4 + w4];
for (w4 = N4 - 1; 0 <= w4; --w4) b4[p4 + w4] = v4[w4];
Yr(l4, f4, d4, h4, m4, h4, u4);
} else Yr(l4, f4, d4, p4, g4, h4, u4);
}
u4 = a3, h4 = i3;
}
h4 != i3 && n2(a3, i3, u4, h4, s3);
}
function Lt2(t5, r3) {
var n3 = t5.V, i3 = t5.Ba + t5.c * t5.C, a3 = r3 - t5.C;
if (e2(r3 <= t5.l.o), e2(16 >= a3), 0 < a3) {
var o3 = t5.l, s3 = t5.Ta, c4 = t5.Ua, u4 = o3.width;
if (Nt2(t5, a3, n3, i3), a3 = c4 = [c4], e2((n3 = t5.C) < (i3 = r3)), e2(o3.v < o3.va), i3 > o3.o && (i3 = o3.o), n3 < o3.j) {
var h4 = o3.j - n3;
n3 = o3.j;
a3[0] += h4 * u4;
}
if (n3 >= i3 ? n3 = 0 : (a3[0] += 4 * o3.v, o3.ka = n3 - o3.j, o3.U = o3.va - o3.v, o3.T = i3 - n3, n3 = 1), n3) {
if (c4 = c4[0], 11 > (n3 = t5.ca).S) {
var l4 = n3.f.RGBA, f4 = (i3 = n3.S, a3 = o3.U, o3 = o3.T, h4 = l4.eb, l4.A), d4 = o3;
for (l4 = l4.fb + t5.Ma * l4.A; 0 < d4--; ) {
var p4 = s3, g4 = c4, m4 = a3, v4 = h4, b4 = l4;
switch (i3) {
case En:
Qr(p4, g4, m4, v4, b4);
break;
case qn:
tn(p4, g4, m4, v4, b4);
break;
case Hn:
tn(p4, g4, m4, v4, b4), An(v4, b4, 0, m4, 1, 0);
break;
case Dn:
nn(p4, g4, m4, v4, b4);
break;
case Rn:
et2(p4, g4, m4, v4, b4, 1);
break;
case Wn:
et2(p4, g4, m4, v4, b4, 1), An(v4, b4, 0, m4, 1, 0);
break;
case Tn:
et2(p4, g4, m4, v4, b4, 0);
break;
case Vn:
et2(p4, g4, m4, v4, b4, 0), An(v4, b4, 1, m4, 1, 0);
break;
case Un:
en(p4, g4, m4, v4, b4);
break;
case Gn:
en(p4, g4, m4, v4, b4), xn(v4, b4, m4, 1, 0);
break;
case zn:
rn(p4, g4, m4, v4, b4);
break;
default:
e2(0);
}
c4 += u4, l4 += f4;
}
t5.Ma += o3;
} else alert("todo:EmitRescaledRowsYUVA");
e2(t5.Ma <= n3.height);
}
}
t5.C = r3, e2(t5.C <= t5.i);
}
function At2(t5) {
var e3;
if (0 < t5.ua) return 0;
for (e3 = 0; e3 < t5.Wb; ++e3) {
var r3 = t5.Ya[e3].G, n3 = t5.Ya[e3].H;
if (0 < r3[1][n3[1] + 0].g || 0 < r3[2][n3[2] + 0].g || 0 < r3[3][n3[3] + 0].g) return 0;
}
return 1;
}
function xt2(t5, r3, n3, i3, a3, o3) {
if (0 != t5.Z) {
var s3 = t5.qd, c4 = t5.rd;
for (e2(null != mi[t5.Z]); r3 < n3; ++r3) mi[t5.Z](s3, c4, i3, a3, i3, a3, o3), s3 = i3, c4 = a3, a3 += o3;
t5.qd = s3, t5.rd = c4;
}
}
function St(t5, r3) {
var n3 = t5.l.ma, i3 = 0 == n3.Z || 1 == n3.Z ? t5.l.j : t5.C;
i3 = t5.C < i3 ? i3 : t5.C;
if (e2(r3 <= t5.l.o), r3 > i3) {
var a3 = t5.l.width, o3 = n3.ca, s3 = n3.tb + a3 * i3, c4 = t5.V, u4 = t5.Ba + t5.c * i3, h4 = t5.gc;
e2(1 == t5.ab), e2(3 == h4[0].hc), Xr(h4[0], i3, r3, c4, u4, o3, s3), xt2(n3, i3, r3, o3, s3, a3);
}
t5.C = t5.Ma = r3;
}
function _t2(t5, r3, n3, i3, a3, o3, s3) {
var c4 = t5.$ / i3, u4 = t5.$ % i3, h4 = t5.m, l4 = t5.s, f4 = n3 + t5.$, d4 = f4;
a3 = n3 + i3 * a3;
var p4 = n3 + i3 * o3, g4 = 280 + l4.ua, m4 = t5.Pb ? c4 : 16777216, v4 = 0 < l4.ua ? l4.Wa : null, b4 = l4.wc, y4 = f4 < p4 ? wt2(l4, u4, c4) : null;
e2(t5.C < o3), e2(p4 <= a3);
var w4 = false;
t: for (; ; ) {
for (; w4 || f4 < p4; ) {
var N4 = 0;
if (c4 >= m4) {
var _3 = f4 - n3;
e2((m4 = t5).Pb), m4.wd = m4.m, m4.xd = _3, 0 < m4.s.ua && B3(m4.s.Wa, m4.s.vb), m4 = c4 + ti;
}
if (u4 & b4 || (y4 = wt2(l4, u4, c4)), e2(null != y4), y4.Qb && (r3[f4] = y4.qb, w4 = true), !w4) if (S2(h4), y4.jc) {
N4 = h4, _3 = r3;
var P3 = f4, k3 = y4.pd[L3(N4) & Dr - 1];
e2(y4.jc), 256 > k3.g ? (x2(N4, N4.u + k3.g), _3[P3] = k3.value, N4 = 0) : (x2(N4, N4.u + k3.g - 256), e2(256 <= k3.value), N4 = k3.value), 0 == N4 && (w4 = true);
} else N4 = bt2(y4.G[0], y4.H[0], h4);
if (h4.h) break;
if (w4 || 256 > N4) {
if (!w4) if (y4.nd) r3[f4] = (y4.qb | N4 << 8) >>> 0;
else {
if (S2(h4), w4 = bt2(y4.G[1], y4.H[1], h4), S2(h4), _3 = bt2(y4.G[2], y4.H[2], h4), P3 = bt2(y4.G[3], y4.H[3], h4), h4.h) break;
r3[f4] = (P3 << 24 | w4 << 16 | N4 << 8 | _3) >>> 0;
}
if (w4 = false, ++f4, ++u4 >= i3 && (u4 = 0, ++c4, null != s3 && c4 <= o3 && !(c4 % 16) && s3(t5, c4), null != v4)) for (; d4 < f4; ) N4 = r3[d4++], v4.X[(506832829 * N4 & 4294967295) >>> v4.Mb] = N4;
} else if (280 > N4) {
if (N4 = mt2(N4 - 256, h4), _3 = bt2(y4.G[4], y4.H[4], h4), S2(h4), _3 = vt2(i3, _3 = mt2(_3, h4)), h4.h) break;
if (f4 - n3 < _3 || a3 - f4 < N4) break t;
for (P3 = 0; P3 < N4; ++P3) r3[f4 + P3] = r3[f4 + P3 - _3];
for (f4 += N4, u4 += N4; u4 >= i3; ) u4 -= i3, ++c4, null != s3 && c4 <= o3 && !(c4 % 16) && s3(t5, c4);
if (e2(f4 <= a3), u4 & b4 && (y4 = wt2(l4, u4, c4)), null != v4) for (; d4 < f4; ) N4 = r3[d4++], v4.X[(506832829 * N4 & 4294967295) >>> v4.Mb] = N4;
} else {
if (!(N4 < g4)) break t;
for (w4 = N4 - 280, e2(null != v4); d4 < f4; ) N4 = r3[d4++], v4.X[(506832829 * N4 & 4294967295) >>> v4.Mb] = N4;
N4 = f4, e2(!(w4 >>> (_3 = v4).Xa)), r3[N4] = _3.X[w4], w4 = true;
}
w4 || e2(h4.h == A6(h4));
}
if (t5.Pb && h4.h && f4 < a3) e2(t5.m.h), t5.a = 5, t5.m = t5.wd, t5.$ = t5.xd, 0 < t5.s.ua && B3(t5.s.vb, t5.s.Wa);
else {
if (h4.h) break t;
null != s3 && s3(t5, c4 > o3 ? o3 : c4), t5.a = 0, t5.$ = f4 - n3;
}
return 1;
}
return t5.a = 3, 0;
}
function Pt2(t5) {
e2(null != t5), t5.vc = null, t5.yc = null, t5.Ya = null;
var r3 = t5.Wa;
null != r3 && (r3.X = null), t5.vb = null, e2(null != t5);
}
function kt2() {
var e3 = new or();
return null == e3 ? null : (e3.a = 0, e3.xb = gi, rt2("Predictor", "VP8LPredictors"), rt2("Predictor", "VP8LPredictors_C"), rt2("PredictorAdd", "VP8LPredictorsAdd"), rt2("PredictorAdd", "VP8LPredictorsAdd_C"), Gr = G2, $r = J2, Qr = K2, tn = Z2, en = $2, rn = Q2, nn = tt2, t4.VP8LMapColor32b = Jr, t4.VP8LMapColor8b = Kr, e3);
}
function It2(t5, r3, n3, s3, c4) {
var u4 = 1, f4 = [t5], p4 = [r3], g4 = s3.m, m4 = s3.s, v4 = null, b4 = 0;
t: for (; ; ) {
if (n3) for (; u4 && y3(g4, 1); ) {
var w4 = f4, N4 = p4, A7 = s3, _3 = 1, P3 = A7.m, k3 = A7.gc[A7.ab], I3 = y3(P3, 2);
if (A7.Oc & 1 << I3) u4 = 0;
else {
switch (A7.Oc |= 1 << I3, k3.hc = I3, k3.Ea = w4[0], k3.nc = N4[0], k3.K = [null], ++A7.ab, e2(4 >= A7.ab), I3) {
case 0:
case 1:
k3.b = y3(P3, 3) + 2, _3 = It2(q2(k3.Ea, k3.b), q2(k3.nc, k3.b), 0, A7, k3.K), k3.K = k3.K[0];
break;
case 3:
var F3, C3 = y3(P3, 8) + 1, j3 = 16 < C3 ? 0 : 4 < C3 ? 1 : 2 < C3 ? 2 : 3;
if (w4[0] = q2(k3.Ea, j3), k3.b = j3, F3 = _3 = It2(C3, 1, 0, A7, k3.K)) {
var B4, M3 = C3, E3 = k3, R3 = 1 << (8 >> E3.b), T3 = a2(R3);
if (null == T3) F3 = 0;
else {
var U3 = E3.K[0], z3 = E3.w;
for (T3[0] = E3.K[0][0], B4 = 1; B4 < 1 * M3; ++B4) T3[B4] = D2(U3[z3 + B4], T3[B4 - 1]);
for (; B4 < 4 * R3; ++B4) T3[B4] = 0;
E3.K[0] = null, E3.K[0] = T3, F3 = 1;
}
}
_3 = F3;
break;
case 2:
break;
default:
e2(0);
}
u4 = _3;
}
}
if (f4 = f4[0], p4 = p4[0], u4 && y3(g4, 1) && !(u4 = 1 <= (b4 = y3(g4, 4)) && 11 >= b4)) {
s3.a = 3;
break t;
}
var H5;
if (H5 = u4) e: {
var W3, V3, G3, Y3 = s3, J3 = f4, X3 = p4, K3 = b4, Z3 = n3, $3 = Y3.m, Q3 = Y3.s, tt3 = [null], et3 = 1, rt3 = 0, nt3 = Qn[K3];
r: for (; ; ) {
if (Z3 && y3($3, 1)) {
var it3 = y3($3, 3) + 2, at3 = q2(J3, it3), ot3 = q2(X3, it3), st3 = at3 * ot3;
if (!It2(at3, ot3, 0, Y3, tt3)) break r;
for (tt3 = tt3[0], Q3.xc = it3, W3 = 0; W3 < st3; ++W3) {
var ct3 = tt3[W3] >> 8 & 65535;
tt3[W3] = ct3, ct3 >= et3 && (et3 = ct3 + 1);
}
}
if ($3.h) break r;
for (V3 = 0; 5 > V3; ++V3) {
var ut3 = Xn[V3];
!V3 && 0 < K3 && (ut3 += 1 << K3), rt3 < ut3 && (rt3 = ut3);
}
var ht3 = o2(et3 * nt3, l3), lt3 = et3, ft3 = o2(lt3, d3);
if (null == ft3) var dt3 = null;
else e2(65536 >= lt3), dt3 = ft3;
var pt3 = a2(rt3);
if (null == dt3 || null == pt3 || null == ht3) {
Y3.a = 1;
break r;
}
var gt3 = ht3;
for (W3 = G3 = 0; W3 < et3; ++W3) {
var mt3 = dt3[W3], vt3 = mt3.G, bt3 = mt3.H, wt3 = 0, Nt3 = 1, Lt3 = 0;
for (V3 = 0; 5 > V3; ++V3) {
ut3 = Xn[V3], vt3[V3] = gt3, bt3[V3] = G3, !V3 && 0 < K3 && (ut3 += 1 << K3);
n: {
var At3, xt3 = ut3, St2 = Y3, kt3 = pt3, Ft3 = gt3, Ct3 = G3, jt3 = 0, Ot3 = St2.m, Bt3 = y3(Ot3, 1);
if (i2(kt3, 0, 0, xt3), Bt3) {
var Mt3 = y3(Ot3, 1) + 1, Et3 = y3(Ot3, 1), qt3 = y3(Ot3, 0 == Et3 ? 1 : 8);
kt3[qt3] = 1, 2 == Mt3 && (kt3[qt3 = y3(Ot3, 8)] = 1);
var Dt3 = 1;
} else {
var Rt3 = a2(19), Tt3 = y3(Ot3, 4) + 4;
if (19 < Tt3) {
St2.a = 3;
var Ut3 = 0;
break n;
}
for (At3 = 0; At3 < Tt3; ++At3) Rt3[Zn[At3]] = y3(Ot3, 3);
var zt3 = void 0, Ht3 = void 0, Wt3 = St2, Vt3 = Rt3, Gt3 = xt3, Yt3 = kt3, Jt3 = 0, Xt3 = Wt3.m, Kt3 = 8, Zt3 = o2(128, l3);
i: for (; h3(Zt3, 0, 7, Vt3, 19); ) {
if (y3(Xt3, 1)) {
var $t3 = 2 + 2 * y3(Xt3, 3);
if ((zt3 = 2 + y3(Xt3, $t3)) > Gt3) break i;
} else zt3 = Gt3;
for (Ht3 = 0; Ht3 < Gt3 && zt3--; ) {
S2(Xt3);
var Qt3 = Zt3[0 + (127 & L3(Xt3))];
x2(Xt3, Xt3.u + Qt3.g);
var te3 = Qt3.value;
if (16 > te3) Yt3[Ht3++] = te3, 0 != te3 && (Kt3 = te3);
else {
var ee3 = 16 == te3, re3 = te3 - 16, ne3 = Jn[re3], ie3 = y3(Xt3, Yn[re3]) + ne3;
if (Ht3 + ie3 > Gt3) break i;
for (var ae3 = ee3 ? Kt3 : 0; 0 < ie3--; ) Yt3[Ht3++] = ae3;
}
}
Jt3 = 1;
break i;
}
Jt3 || (Wt3.a = 3), Dt3 = Jt3;
}
(Dt3 = Dt3 && !Ot3.h) && (jt3 = h3(Ft3, Ct3, 8, kt3, xt3)), Dt3 && 0 != jt3 ? Ut3 = jt3 : (St2.a = 3, Ut3 = 0);
}
if (0 == Ut3) break r;
if (Nt3 && 1 == Kn[V3] && (Nt3 = 0 == gt3[G3].g), wt3 += gt3[G3].g, G3 += Ut3, 3 >= V3) {
var oe3, se3 = pt3[0];
for (oe3 = 1; oe3 < ut3; ++oe3) pt3[oe3] > se3 && (se3 = pt3[oe3]);
Lt3 += se3;
}
}
if (mt3.nd = Nt3, mt3.Qb = 0, Nt3 && (mt3.qb = (vt3[3][bt3[3] + 0].value << 24 | vt3[1][bt3[1] + 0].value << 16 | vt3[2][bt3[2] + 0].value) >>> 0, 0 == wt3 && 256 > vt3[0][bt3[0] + 0].value && (mt3.Qb = 1, mt3.qb += vt3[0][bt3[0] + 0].value << 8)), mt3.jc = !mt3.Qb && 6 > Lt3, mt3.jc) {
var ce3, ue3 = mt3;
for (ce3 = 0; ce3 < Dr; ++ce3) {
var he3 = ce3, le3 = ue3.pd[he3], fe3 = ue3.G[0][ue3.H[0] + he3];
256 <= fe3.value ? (le3.g = fe3.g + 256, le3.value = fe3.value) : (le3.g = 0, le3.value = 0, he3 >>= yt2(fe3, 8, le3), he3 >>= yt2(ue3.G[1][ue3.H[1] + he3], 16, le3), he3 >>= yt2(ue3.G[2][ue3.H[2] + he3], 0, le3), yt2(ue3.G[3][ue3.H[3] + he3], 24, le3));
}
}
}
Q3.vc = tt3, Q3.Wb = et3, Q3.Ya = dt3, Q3.yc = ht3, H5 = 1;
break e;
}
H5 = 0;
}
if (!(u4 = H5)) {
s3.a = 3;
break t;
}
if (0 < b4) {
if (m4.ua = 1 << b4, !O2(m4.Wa, b4)) {
s3.a = 1, u4 = 0;
break t;
}
} else m4.ua = 0;
var de3 = s3, pe3 = f4, ge3 = p4, me3 = de3.s, ve3 = me3.xc;
if (de3.c = pe3, de3.i = ge3, me3.md = q2(pe3, ve3), me3.wc = 0 == ve3 ? -1 : (1 << ve3) - 1, n3) {
s3.xb = pi;
break t;
}
if (null == (v4 = a2(f4 * p4))) {
s3.a = 1, u4 = 0;
break t;
}
u4 = (u4 = _t2(s3, v4, 0, f4, p4, p4, null)) && !g4.h;
break t;
}
return u4 ? (null != c4 ? c4[0] = v4 : (e2(null == v4), e2(n3)), s3.$ = 0, n3 || Pt2(m4)) : Pt2(m4), u4;
}
function Ft2(t5, r3) {
var n3 = t5.c * t5.i, i3 = n3 + r3 + 16 * r3;
return e2(t5.c <= r3), t5.V = a2(i3), null == t5.V ? (t5.Ta = null, t5.Ua = 0, t5.a = 1, 0) : (t5.Ta = t5.V, t5.Ua = t5.Ba + n3 + r3, 1);
}
function Ct2(t5, r3) {
var n3 = t5.C, i3 = r3 - n3, a3 = t5.V, o3 = t5.Ba + t5.c * n3;
for (e2(r3 <= t5.l.o); 0 < i3; ) {
var s3 = 16 < i3 ? 16 : i3, c4 = t5.l.ma, u4 = t5.l.width, h4 = u4 * s3, l4 = c4.ca, f4 = c4.tb + u4 * n3, d4 = t5.Ta, p4 = t5.Ua;
Nt2(t5, s3, a3, o3), _n(d4, p4, l4, f4, h4), xt2(c4, n3, n3 + s3, l4, f4, u4), i3 -= s3, a3 += s3 * t5.c, n3 += s3;
}
e2(n3 == r3), t5.C = t5.Ma = r3;
}
function jt2() {
this.ub = this.yd = this.td = this.Rb = 0;
}
function Ot2() {
this.Kd = this.Ld = this.Ud = this.Td = this.i = this.c = 0;
}
function Bt2() {
this.Fb = this.Bb = this.Cb = 0, this.Zb = a2(4), this.Lb = a2(4);
}
function Mt2() {
this.Yb = function() {
var t5 = [];
return function t6(e3, r3, n3) {
for (var i3 = n3[r3], a3 = 0; a3 < i3 && (e3.push(n3.length > r3 + 1 ? [] : 0), !(n3.length < r3 + 1)); a3++) t6(e3[a3], r3 + 1, n3);
}(t5, 0, [3, 11]), t5;
}();
}
function Et2() {
this.jb = a2(3), this.Wc = s2([4, 8], Mt2), this.Xc = s2([4, 17], Mt2);
}
function qt2() {
this.Pc = this.wb = this.Tb = this.zd = 0, this.vd = new a2(4), this.od = new a2(4);
}
function Dt2() {
this.ld = this.La = this.dd = this.tc = 0;
}
function Rt2() {
this.Na = this.la = 0;
}
function Tt2() {
this.Sc = [0, 0], this.Eb = [0, 0], this.Qc = [0, 0], this.ia = this.lc = 0;
}
function Ut2() {
this.ad = a2(384), this.Za = 0, this.Ob = a2(16), this.$b = this.Ad = this.ia = this.Gc = this.Hc = this.Dd = 0;
}
function zt2() {
this.uc = this.M = this.Nb = 0, this.wa = Array(new Dt2()), this.Y = 0, this.ya = Array(new Ut2()), this.aa = 0, this.l = new Gt2();
}
function Ht2() {
this.y = a2(16), this.f = a2(8), this.ea = a2(8);
}
function Wt2() {
this.cb = this.a = 0, this.sc = "", this.m = new w3(), this.Od = new jt2(), this.Kc = new Ot2(), this.ed = new qt2(), this.Qa = new Bt2(), this.Ic = this.$c = this.Aa = 0, this.D = new zt2(), this.Xb = this.Va = this.Hb = this.zb = this.yb = this.Ub = this.za = 0, this.Jc = o2(8, w3), this.ia = 0, this.pb = o2(4, Tt2), this.Pa = new Et2(), this.Bd = this.kc = 0, this.Ac = [], this.Bc = 0, this.zc = [0, 0, 0, 0], this.Gd = Array(new Ht2()), this.Hd = 0, this.rb = Array(new Rt2()), this.sb = 0, this.wa = Array(new Dt2()), this.Y = 0, this.oc = [], this.pc = 0, this.sa = [], this.ta = 0, this.qa = [], this.ra = 0, this.Ha = [], this.B = this.R = this.Ia = 0, this.Ec = [], this.M = this.ja = this.Vb = this.Fc = 0, this.ya = Array(new Ut2()), this.L = this.aa = 0, this.gd = s2([4, 2], Dt2), this.ga = null, this.Fa = [], this.Cc = this.qc = this.P = 0, this.Gb = [], this.Uc = 0, this.mb = [], this.nb = 0, this.rc = [], this.Ga = this.Vc = 0;
}
function Vt2(t5, e3) {
return 0 > t5 ? 0 : t5 > e3 ? e3 : t5;
}
function Gt2() {
this.T = this.U = this.ka = this.height = this.width = 0, this.y = [], this.f = [], this.ea = [], this.Rc = this.fa = this.W = this.N = this.O = 0, this.ma = "void", this.put = "VP8IoPutHook", this.ac = "VP8IoSetupHook", this.bc = "VP8IoTeardownHook", this.ha = this.Kb = 0, this.data = [], this.hb = this.ib = this.da = this.o = this.j = this.va = this.v = this.Da = this.ob = this.w = 0, this.F = [], this.J = 0;
}
function Yt2() {
var t5 = new Wt2();
return null != t5 && (t5.a = 0, t5.sc = "OK", t5.cb = 0, t5.Xb = 0, ni || (ni = Zt2)), t5;
}
function Jt2(t5, e3, r3) {
return 0 == t5.a && (t5.a = e3, t5.sc = r3, t5.cb = 0), 0;
}
function Xt2(t5, e3, r3) {
return 3 <= r3 && 157 == t5[e3 + 0] && 1 == t5[e3 + 1] && 42 == t5[e3 + 2];
}
function Kt2(t5, r3) {
if (null == t5) return 0;
if (t5.a = 0, t5.sc = "OK", null == r3) return Jt2(t5, 2, "null VP8Io passed to VP8GetHeaders()");
var n3 = r3.data, a3 = r3.w, o3 = r3.ha;
if (4 > o3) return Jt2(t5, 7, "Truncated header.");
var s3 = n3[a3 + 0] | n3[a3 + 1] << 8 | n3[a3 + 2] << 16, c4 = t5.Od;
if (c4.Rb = !(1 & s3), c4.td = s3 >> 1 & 7, c4.yd = s3 >> 4 & 1, c4.ub = s3 >> 5, 3 < c4.td) return Jt2(t5, 3, "Incorrect keyframe parameters.");
if (!c4.yd) return Jt2(t5, 4, "Frame not displayable.");
a3 += 3, o3 -= 3;
var u4 = t5.Kc;
if (c4.Rb) {
if (7 > o3) return Jt2(t5, 7, "cannot parse picture header");
if (!Xt2(n3, a3, o3)) return Jt2(t5, 3, "Bad code word");
u4.c = 16383 & (n3[a3 + 4] << 8 | n3[a3 + 3]), u4.Td = n3[a3 + 4] >> 6, u4.i = 16383 & (n3[a3 + 6] << 8 | n3[a3 + 5]), u4.Ud = n3[a3 + 6] >> 6, a3 += 7, o3 -= 7, t5.za = u4.c + 15 >> 4, t5.Ub = u4.i + 15 >> 4, r3.width = u4.c, r3.height = u4.i, r3.Da = 0, r3.j = 0, r3.v = 0, r3.va = r3.width, r3.o = r3.height, r3.da = 0, r3.ib = r3.width, r3.hb = r3.height, r3.U = r3.width, r3.T = r3.height, i2((s3 = t5.Pa).jb, 0, 255, s3.jb.length), e2(null != (s3 = t5.Qa)), s3.Cb = 0, s3.Bb = 0, s3.Fb = 1, i2(s3.Zb, 0, 0, s3.Zb.length), i2(s3.Lb, 0, 0, s3.Lb);
}
if (c4.ub > o3) return Jt2(t5, 7, "bad partition length");
p3(s3 = t5.m, n3, a3, c4.ub), a3 += c4.ub, o3 -= c4.ub, c4.Rb && (u4.Ld = P2(s3), u4.Kd = P2(s3)), u4 = t5.Qa;
var h4, l4 = t5.Pa;
if (e2(null != s3), e2(null != u4), u4.Cb = P2(s3), u4.Cb) {
if (u4.Bb = P2(s3), P2(s3)) {
for (u4.Fb = P2(s3), h4 = 0; 4 > h4; ++h4) u4.Zb[h4] = P2(s3) ? m3(s3, 7) : 0;
for (h4 = 0; 4 > h4; ++h4) u4.Lb[h4] = P2(s3) ? m3(s3, 6) : 0;
}
if (u4.Bb) for (h4 = 0; 3 > h4; ++h4) l4.jb[h4] = P2(s3) ? g3(s3, 8) : 255;
} else u4.Bb = 0;
if (s3.Ka) return Jt2(t5, 3, "cannot parse segment header");
if ((u4 = t5.ed).zd = P2(s3), u4.Tb = g3(s3, 6), u4.wb = g3(s3, 3), u4.Pc = P2(s3), u4.Pc && P2(s3)) {
for (l4 = 0; 4 > l4; ++l4) P2(s3) && (u4.vd[l4] = m3(s3, 6));
for (l4 = 0; 4 > l4; ++l4) P2(s3) && (u4.od[l4] = m3(s3, 6));
}
if (t5.L = 0 == u4.Tb ? 0 : u4.zd ? 1 : 2, s3.Ka) return Jt2(t5, 3, "cannot parse filter header");
var f4 = o3;
if (o3 = h4 = a3, a3 = h4 + f4, u4 = f4, t5.Xb = (1 << g3(t5.m, 2)) - 1, f4 < 3 * (l4 = t5.Xb)) n3 = 7;
else {
for (h4 += 3 * l4, u4 -= 3 * l4, f4 = 0; f4 < l4; ++f4) {
var d4 = n3[o3 + 0] | n3[o3 + 1] << 8 | n3[o3 + 2] << 16;
d4 > u4 && (d4 = u4), p3(t5.Jc[+f4], n3, h4, d4), h4 += d4, u4 -= d4, o3 += 3;
}
p3(t5.Jc[+l4], n3, h4, u4), n3 = h4 < a3 ? 0 : 5;
}
if (0 != n3) return Jt2(t5, n3, "cannot parse partitions");
for (n3 = g3(h4 = t5.m, 7), o3 = P2(h4) ? m3(h4, 4) : 0, a3 = P2(h4) ? m3(h4, 4) : 0, u4 = P2(h4) ? m3(h4, 4) : 0, l4 = P2(h4) ? m3(h4, 4) : 0, h4 = P2(h4) ? m3(h4, 4) : 0, f4 = t5.Qa, d4 = 0; 4 > d4; ++d4) {
if (f4.Cb) {
var v4 = f4.Zb[d4];
f4.Fb || (v4 += n3);
} else {
if (0 < d4) {
t5.pb[d4] = t5.pb[0];
continue;
}
v4 = n3;
}
var b4 = t5.pb[d4];
b4.Sc[0] = ei[Vt2(v4 + o3, 127)], b4.Sc[1] = ri[Vt2(v4 + 0, 127)], b4.Eb[0] = 2 * ei[Vt2(v4 + a3, 127)], b4.Eb[1] = 101581 * ri[Vt2(v4 + u4, 127)] >> 16, 8 > b4.Eb[1] && (b4.Eb[1] = 8), b4.Qc[0] = ei[Vt2(v4 + l4, 117)], b4.Qc[1] = ri[Vt2(v4 + h4, 127)], b4.lc = v4 + h4;
}
if (!c4.Rb) return Jt2(t5, 4, "Not a key frame.");
for (P2(s3), c4 = t5.Pa, n3 = 0; 4 > n3; ++n3) {
for (o3 = 0; 8 > o3; ++o3) for (a3 = 0; 3 > a3; ++a3) for (u4 = 0; 11 > u4; ++u4) l4 = k2(s3, ui[n3][o3][a3][u4]) ? g3(s3, 8) : si[n3][o3][a3][u4], c4.Wc[n3][o3].Yb[a3][u4] = l4;
for (o3 = 0; 17 > o3; ++o3) c4.Xc[n3][o3] = c4.Wc[n3][hi[o3]];
}
return t5.kc = P2(s3), t5.kc && (t5.Bd = g3(s3, 8)), t5.cb = 1;
}
function Zt2(t5, e3, r3, n3, i3, a3, o3) {
var s3 = e3[i3].Yb[r3];
for (r3 = 0; 16 > i3; ++i3) {
if (!k2(t5, s3[r3 + 0])) return i3;
for (; !k2(t5, s3[r3 + 1]); ) if (s3 = e3[++i3].Yb[0], r3 = 0, 16 == i3) return 16;
var c4 = e3[i3 + 1].Yb;
if (k2(t5, s3[r3 + 2])) {
var u4 = t5, h4 = 0;
if (k2(u4, (f4 = s3)[(l4 = r3) + 3])) if (k2(u4, f4[l4 + 6])) {
for (s3 = 0, l4 = 2 * (h4 = k2(u4, f4[l4 + 8])) + (f4 = k2(u4, f4[l4 + 9 + h4])), h4 = 0, f4 = ii[l4]; f4[s3]; ++s3) h4 += h4 + k2(u4, f4[s3]);
h4 += 3 + (8 << l4);
} else k2(u4, f4[l4 + 7]) ? (h4 = 7 + 2 * k2(u4, 165), h4 += k2(u4, 145)) : h4 = 5 + k2(u4, 159);
else h4 = k2(u4, f4[l4 + 4]) ? 3 + k2(u4, f4[l4 + 5]) : 2;
s3 = c4[2];
} else h4 = 1, s3 = c4[1];
c4 = o3 + ai[i3], 0 > (u4 = t5).b && _2(u4);
var l4, f4 = u4.b, d4 = (l4 = u4.Ca >> 1) - (u4.I >> f4) >> 31;
--u4.b, u4.Ca += d4, u4.Ca |= 1, u4.I -= (l4 + 1 & d4) << f4, a3[c4] = ((h4 ^ d4) - d4) * n3[(0 < i3) + 0];
}
return 16;
}
function $t2(t5) {
var e3 = t5.rb[t5.sb - 1];
e3.la = 0, e3.Na = 0, i2(t5.zc, 0, 0, t5.zc.length), t5.ja = 0;
}
function Qt2(t5, r3) {
if (null == t5) return 0;
if (null == r3) return Jt2(t5, 2, "NULL VP8Io parameter in VP8Decode().");
if (!t5.cb && !Kt2(t5, r3)) return 0;
if (e2(t5.cb), null == r3.ac || r3.ac(r3)) {
r3.ob && (t5.L = 0);
var s3 = Ri[t5.L];
if (2 == t5.L ? (t5.yb = 0, t5.zb = 0) : (t5.yb = r3.v - s3 >> 4, t5.zb = r3.j - s3 >> 4, 0 > t5.yb && (t5.yb = 0), 0 > t5.zb && (t5.zb = 0)), t5.Va = r3.o + 15 + s3 >> 4, t5.Hb = r3.va + 15 + s3 >> 4, t5.Hb > t5.za && (t5.Hb = t5.za), t5.Va > t5.Ub && (t5.Va = t5.Ub), 0 < t5.L) {
var c4 = t5.ed;
for (s3 = 0; 4 > s3; ++s3) {
var u4;
if (t5.Qa.Cb) {
var h4 = t5.Qa.Lb[s3];
t5.Qa.Fb || (h4 += c4.Tb);
} else h4 = c4.Tb;
for (u4 = 0; 1 >= u4; ++u4) {
var l4 = t5.gd[s3][u4], f4 = h4;
if (c4.Pc && (f4 += c4.vd[0], u4 && (f4 += c4.od[0])), 0 < (f4 = 0 > f4 ? 0 : 63 < f4 ? 63 : f4)) {
var d4 = f4;
0 < c4.wb && ((d4 = 4 < c4.wb ? d4 >> 2 : d4 >> 1) > 9 - c4.wb && (d4 = 9 - c4.wb)), 1 > d4 && (d4 = 1), l4.dd = d4, l4.tc = 2 * f4 + d4, l4.ld = 40 <= f4 ? 2 : 15 <= f4 ? 1 : 0;
} else l4.tc = 0;
l4.La = u4;
}
}
}
s3 = 0;
} else Jt2(t5, 6, "Frame setup failed"), s3 = t5.a;
if (s3 = 0 == s3) {
if (s3) {
t5.$c = 0, 0 < t5.Aa || (t5.Ic = Ui);
t: {
s3 = t5.Ic;
c4 = 4 * (d4 = t5.za);
var p4 = 32 * d4, g4 = d4 + 1, m4 = 0 < t5.L ? d4 * (0 < t5.Aa ? 2 : 1) : 0, v4 = (2 == t5.Aa ? 2 : 1) * d4;
if ((l4 = c4 + 832 + (u4 = 3 * (16 * s3 + Ri[t5.L]) / 2 * p4) + (h4 = null != t5.Fa && 0 < t5.Fa.length ? t5.Kc.c * t5.Kc.i : 0)) != l4) s3 = 0;
else {
if (l4 > t5.Vb) {
if (t5.Vb = 0, t5.Ec = a2(l4), t5.Fc = 0, null == t5.Ec) {
s3 = Jt2(t5, 1, "no memory during frame initialization.");
break t;
}
t5.Vb = l4;
}
l4 = t5.Ec, f4 = t5.Fc, t5.Ac = l4, t5.Bc = f4, f4 += c4, t5.Gd = o2(p4, Ht2), t5.Hd = 0, t5.rb = o2(g4 + 1, Rt2), t5.sb = 1, t5.wa = m4 ? o2(m4, Dt2) : null, t5.Y = 0, t5.D.Nb = 0, t5.D.wa = t5.wa, t5.D.Y = t5.Y, 0 < t5.Aa && (t5.D.Y += d4), e2(true), t5.oc = l4, t5.pc = f4, f4 += 832, t5.ya = o2(v4, Ut2), t5.aa = 0, t5.D.ya = t5.ya, t5.D.aa = t5.aa, 2 == t5.Aa && (t5.D.aa += d4), t5.R = 16 * d4, t5.B = 8 * d4, d4 = (p4 = Ri[t5.L]) * t5.R, p4 = p4 / 2 * t5.B, t5.sa = l4, t5.ta = f4 + d4, t5.qa = t5.sa, t5.ra = t5.ta + 16 * s3 * t5.R + p4, t5.Ha = t5.qa, t5.Ia = t5.ra + 8 * s3 * t5.B + p4, t5.$c = 0, f4 += u4, t5.mb = h4 ? l4 : null, t5.nb = h4 ? f4 : null, e2(f4 + h4 <= t5.Fc + t5.Vb), $t2(t5), i2(t5.Ac, t5.Bc, 0, c4), s3 = 1;
}
}
if (s3) {
if (r3.ka = 0, r3.y = t5.sa, r3.O = t5.ta, r3.f = t5.qa, r3.N = t5.ra, r3.ea = t5.Ha, r3.Vd = t5.Ia, r3.fa = t5.R, r3.Rc = t5.B, r3.F = null, r3.J = 0, !Cn) {
for (s3 = -255; 255 >= s3; ++s3) Pn[255 + s3] = 0 > s3 ? -s3 : s3;
for (s3 = -1020; 1020 >= s3; ++s3) kn[1020 + s3] = -128 > s3 ? -128 : 127 < s3 ? 127 : s3;
for (s3 = -112; 112 >= s3; ++s3) In[112 + s3] = -16 > s3 ? -16 : 15 < s3 ? 15 : s3;
for (s3 = -255; 510 >= s3; ++s3) Fn[255 + s3] = 0 > s3 ? 0 : 255 < s3 ? 255 : s3;
Cn = 1;
}
an = ue2, on = ae2, cn = oe2, un = se2, hn = ce2, sn = ie2, ln2 = Je, fn = Xe, dn = $e, pn = Qe, gn = Ke, mn = Ze, vn = tr, bn = er, yn = ze, wn = He, Nn = We, Ln = Ve, fi[0] = xe, fi[1] = le2, fi[2] = Le2, fi[3] = Ae, fi[4] = Se, fi[5] = Pe, fi[6] = _e, fi[7] = ke, fi[8] = Fe, fi[9] = Ie, li[0] = ve2, li[1] = de2, li[2] = pe2, li[3] = ge2, li[4] = be2, li[5] = ye2, li[6] = we2, di[0] = Be, di[1] = fe2, di[2] = Ce, di[3] = je, di[4] = Ee, di[5] = Me, di[6] = qe, s3 = 1;
} else s3 = 0;
}
s3 && (s3 = function(t6, r4) {
for (t6.M = 0; t6.M < t6.Va; ++t6.M) {
var o3, s4 = t6.Jc[t6.M & t6.Xb], c5 = t6.m, u5 = t6;
for (o3 = 0; o3 < u5.za; ++o3) {
var h5 = c5, l5 = u5, f5 = l5.Ac, d5 = l5.Bc + 4 * o3, p5 = l5.zc, g5 = l5.ya[l5.aa + o3];
if (l5.Qa.Bb ? g5.$b = k2(h5, l5.Pa.jb[0]) ? 2 + k2(h5, l5.Pa.jb[2]) : k2(h5, l5.Pa.jb[1]) : g5.$b = 0, l5.kc && (g5.Ad = k2(h5, l5.Bd)), g5.Za = !k2(h5, 145) + 0, g5.Za) {
var m5 = g5.Ob, v5 = 0;
for (l5 = 0; 4 > l5; ++l5) {
var b4, y4 = p5[0 + l5];
for (b4 = 0; 4 > b4; ++b4) {
y4 = ci[f5[d5 + b4]][y4];
for (var w4 = oi[k2(h5, y4[0])]; 0 < w4; ) w4 = oi[2 * w4 + k2(h5, y4[w4])];
y4 = -w4, f5[d5 + b4] = y4;
}
n2(m5, v5, f5, d5, 4), v5 += 4, p5[0 + l5] = y4;
}
} else y4 = k2(h5, 156) ? k2(h5, 128) ? 1 : 3 : k2(h5, 163) ? 2 : 0, g5.Ob[0] = y4, i2(f5, d5, y4, 4), i2(p5, 0, y4, 4);
g5.Dd = k2(h5, 142) ? k2(h5, 114) ? k2(h5, 183) ? 1 : 3 : 2 : 0;
}
if (u5.m.Ka) return Jt2(t6, 7, "Premature end-of-partition0 encountered.");
for (; t6.ja < t6.za; ++t6.ja) {
if (u5 = s4, h5 = (c5 = t6).rb[c5.sb - 1], f5 = c5.rb[c5.sb + c5.ja], o3 = c5.ya[c5.aa + c5.ja], d5 = c5.kc ? o3.Ad : 0) h5.la = f5.la = 0, o3.Za || (h5.Na = f5.Na = 0), o3.Hc = 0, o3.Gc = 0, o3.ia = 0;
else {
var N4, L4;
h5 = f5, f5 = u5, d5 = c5.Pa.Xc, p5 = c5.ya[c5.aa + c5.ja], g5 = c5.pb[p5.$b];
if (l5 = p5.ad, m5 = 0, v5 = c5.rb[c5.sb - 1], y4 = b4 = 0, i2(l5, m5, 0, 384), p5.Za) var A7 = 0, x3 = d5[3];
else {
w4 = a2(16);
var S3 = h5.Na + v5.Na;
if (S3 = ni(f5, d5[1], S3, g5.Eb, 0, w4, 0), h5.Na = v5.Na = (0 < S3) + 0, 1 < S3) an(w4, 0, l5, m5);
else {
var _3 = w4[0] + 3 >> 3;
for (w4 = 0; 256 > w4; w4 += 16) l5[m5 + w4] = _3;
}
A7 = 1, x3 = d5[0];
}
var P3 = 15 & h5.la, I3 = 15 & v5.la;
for (w4 = 0; 4 > w4; ++w4) {
var F3 = 1 & I3;
for (_3 = L4 = 0; 4 > _3; ++_3) P3 = P3 >> 1 | (F3 = (S3 = ni(f5, x3, S3 = F3 + (1 & P3), g5.Sc, A7, l5, m5)) > A7) << 7, L4 = L4 << 2 | (3 < S3 ? 3 : 1 < S3 ? 2 : 0 != l5[m5 + 0]), m5 += 16;
P3 >>= 4, I3 = I3 >> 1 | F3 << 7, b4 = (b4 << 8 | L4) >>> 0;
}
for (x3 = P3, A7 = I3 >> 4, N4 = 0; 4 > N4; N4 += 2) {
for (L4 = 0, P3 = h5.la >> 4 + N4, I3 = v5.la >> 4 + N4, w4 = 0; 2 > w4; ++w4) {
for (F3 = 1 & I3, _3 = 0; 2 > _3; ++_3) S3 = F3 + (1 & P3), P3 = P3 >> 1 | (F3 = 0 < (S3 = ni(f5, d5[2], S3, g5.Qc, 0, l5, m5))) << 3, L4 = L4 << 2 | (3 < S3 ? 3 : 1 < S3 ? 2 : 0 != l5[m5 + 0]), m5 += 16;
P3 >>= 2, I3 = I3 >> 1 | F3 << 5;
}
y4 |= L4 << 4 * N4, x3 |= P3 << 4 << N4, A7 |= (240 & I3) << N4;
}
h5.la = x3, v5.la = A7, p5.Hc = b4, p5.Gc = y4, p5.ia = 43690 & y4 ? 0 : g5.ia, d5 = !(b4 | y4);
}
if (0 < c5.L && (c5.wa[c5.Y + c5.ja] = c5.gd[o3.$b][o3.Za], c5.wa[c5.Y + c5.ja].La |= !d5), u5.Ka) return Jt2(t6, 7, "Premature end-of-file encountered.");
}
if ($t2(t6), c5 = r4, u5 = 1, o3 = (s4 = t6).D, h5 = 0 < s4.L && s4.M >= s4.zb && s4.M <= s4.Va, 0 == s4.Aa) t: {
if (o3.M = s4.M, o3.uc = h5, Or(s4, o3), u5 = 1, o3 = (L4 = s4.D).Nb, h5 = (y4 = Ri[s4.L]) * s4.R, f5 = y4 / 2 * s4.B, w4 = 16 * o3 * s4.R, _3 = 8 * o3 * s4.B, d5 = s4.sa, p5 = s4.ta - h5 + w4, g5 = s4.qa, l5 = s4.ra - f5 + _3, m5 = s4.Ha, v5 = s4.Ia - f5 + _3, I3 = 0 == (P3 = L4.M), b4 = P3 >= s4.Va - 1, 2 == s4.Aa && Or(s4, L4), L4.uc) for (F3 = (S3 = s4).D.M, e2(S3.D.uc), L4 = S3.yb; L4 < S3.Hb; ++L4) {
A7 = L4, x3 = F3;
var C3 = (j3 = (U3 = S3).D).Nb;
N4 = U3.R;
var j3 = j3.wa[j3.Y + A7], O3 = U3.sa, B4 = U3.ta + 16 * C3 * N4 + 16 * A7, M3 = j3.dd, E3 = j3.tc;
if (0 != E3) if (e2(3 <= E3), 1 == U3.L) 0 < A7 && wn(O3, B4, N4, E3 + 4), j3.La && Ln(O3, B4, N4, E3), 0 < x3 && yn(O3, B4, N4, E3 + 4), j3.La && Nn(O3, B4, N4, E3);
else {
var q3 = U3.B, D3 = U3.qa, R3 = U3.ra + 8 * C3 * q3 + 8 * A7, T3 = U3.Ha, U3 = U3.Ia + 8 * C3 * q3 + 8 * A7;
C3 = j3.ld;
0 < A7 && (fn(O3, B4, N4, E3 + 4, M3, C3), pn(D3, R3, T3, U3, q3, E3 + 4, M3, C3)), j3.La && (mn(O3, B4, N4, E3, M3, C3), bn(D3, R3, T3, U3, q3, E3, M3, C3)), 0 < x3 && (ln2(O3, B4, N4, E3 + 4, M3, C3), dn(D3, R3, T3, U3, q3, E3 + 4, M3, C3)), j3.La && (gn(O3, B4, N4, E3, M3, C3), vn(D3, R3, T3, U3, q3, E3, M3, C3));
}
}
if (s4.ia && alert("todo:DitherRow"), null != c5.put) {
if (L4 = 16 * P3, P3 = 16 * (P3 + 1), I3 ? (c5.y = s4.sa, c5.O = s4.ta + w4, c5.f = s4.qa, c5.N = s4.ra + _3, c5.ea = s4.Ha, c5.W = s4.Ia + _3) : (L4 -= y4, c5.y = d5, c5.O = p5, c5.f = g5, c5.N = l5, c5.ea = m5, c5.W = v5), b4 || (P3 -= y4), P3 > c5.o && (P3 = c5.o), c5.F = null, c5.J = null, null != s4.Fa && 0 < s4.Fa.length && L4 < P3 && (c5.J = lr(s4, c5, L4, P3 - L4), c5.F = s4.mb, null == c5.F && 0 == c5.F.length)) {
u5 = Jt2(s4, 3, "Could not decode alpha data.");
break t;
}
L4 < c5.j && (y4 = c5.j - L4, L4 = c5.j, e2(!(1 & y4)), c5.O += s4.R * y4, c5.N += s4.B * (y4 >> 1), c5.W += s4.B * (y4 >> 1), null != c5.F && (c5.J += c5.width * y4)), L4 < P3 && (c5.O += c5.v, c5.N += c5.v >> 1, c5.W += c5.v >> 1, null != c5.F && (c5.J += c5.v), c5.ka = L4 - c5.j, c5.U = c5.va - c5.v, c5.T = P3 - L4, u5 = c5.put(c5));
}
o3 + 1 != s4.Ic || b4 || (n2(s4.sa, s4.ta - h5, d5, p5 + 16 * s4.R, h5), n2(s4.qa, s4.ra - f5, g5, l5 + 8 * s4.B, f5), n2(s4.Ha, s4.Ia - f5, m5, v5 + 8 * s4.B, f5));
}
if (!u5) return Jt2(t6, 6, "Output aborted.");
}
return 1;
}(t5, r3)), null != r3.bc && r3.bc(r3), s3 &= 1;
}
return s3 ? (t5.cb = 0, s3) : 0;
}
function te2(t5, e3, r3, n3, i3) {
i3 = t5[e3 + r3 + 32 * n3] + (i3 >> 3), t5[e3 + r3 + 32 * n3] = -256 & i3 ? 0 > i3 ? 0 : 255 : i3;
}
function ee2(t5, e3, r3, n3, i3, a3) {
te2(t5, e3, 0, r3, n3 + i3), te2(t5, e3, 1, r3, n3 + a3), te2(t5, e3, 2, r3, n3 - a3), te2(t5, e3, 3, r3, n3 - i3);
}
function re2(t5) {
return (20091 * t5 >> 16) + t5;
}
function ne2(t5, e3, r3, n3) {
var i3, o3 = 0, s3 = a2(16);
for (i3 = 0; 4 > i3; ++i3) {
var c4 = t5[e3 + 0] + t5[e3 + 8], u4 = t5[e3 + 0] - t5[e3 + 8], h4 = (35468 * t5[e3 + 4] >> 16) - re2(t5[e3 + 12]), l4 = re2(t5[e3 + 4]) + (35468 * t5[e3 + 12] >> 16);
s3[o3 + 0] = c4 + l4, s3[o3 + 1] = u4 + h4, s3[o3 + 2] = u4 - h4, s3[o3 + 3] = c4 - l4, o3 += 4, e3++;
}
for (i3 = o3 = 0; 4 > i3; ++i3) c4 = (t5 = s3[o3 + 0] + 4) + s3[o3 + 8], u4 = t5 - s3[o3 + 8], h4 = (35468 * s3[o3 + 4] >> 16) - re2(s3[o3 + 12]), te2(r3, n3, 0, 0, c4 + (l4 = re2(s3[o3 + 4]) + (35468 * s3[o3 + 12] >> 16))), te2(r3, n3, 1, 0, u4 + h4), te2(r3, n3, 2, 0, u4 - h4), te2(r3, n3, 3, 0, c4 - l4), o3++, n3 += 32;
}
function ie2(t5, e3, r3, n3) {
var i3 = t5[e3 + 0] + 4, a3 = 35468 * t5[e3 + 4] >> 16, o3 = re2(t5[e3 + 4]), s3 = 35468 * t5[e3 + 1] >> 16;
ee2(r3, n3, 0, i3 + o3, t5 = re2(t5[e3 + 1]), s3), ee2(r3, n3, 1, i3 + a3, t5, s3), ee2(r3, n3, 2, i3 - a3, t5, s3), ee2(r3, n3, 3, i3 - o3, t5, s3);
}
function ae2(t5, e3, r3, n3, i3) {
ne2(t5, e3, r3, n3), i3 && ne2(t5, e3 + 16, r3, n3 + 4);
}
function oe2(t5, e3, r3, n3) {
on(t5, e3 + 0, r3, n3, 1), on(t5, e3 + 32, r3, n3 + 128, 1);
}
function se2(t5, e3, r3, n3) {
var i3;
for (t5 = t5[e3 + 0] + 4, i3 = 0; 4 > i3; ++i3) for (e3 = 0; 4 > e3; ++e3) te2(r3, n3, e3, i3, t5);
}
function ce2(t5, e3, r3, n3) {
t5[e3 + 0] && un(t5, e3 + 0, r3, n3), t5[e3 + 16] && un(t5, e3 + 16, r3, n3 + 4), t5[e3 + 32] && un(t5, e3 + 32, r3, n3 + 128), t5[e3 + 48] && un(t5, e3 + 48, r3, n3 + 128 + 4);
}
function ue2(t5, e3, r3, n3) {
var i3, o3 = a2(16);
for (i3 = 0; 4 > i3; ++i3) {
var s3 = t5[e3 + 0 + i3] + t5[e3 + 12 + i3], c4 = t5[e3 + 4 + i3] + t5[e3 + 8 + i3], u4 = t5[e3 + 4 + i3] - t5[e3 + 8 + i3], h4 = t5[e3 + 0 + i3] - t5[e3 + 12 + i3];
o3[0 + i3] = s3 + c4, o3[8 + i3] = s3 - c4, o3[4 + i3] = h4 + u4, o3[12 + i3] = h4 - u4;
}
for (i3 = 0; 4 > i3; ++i3) s3 = (t5 = o3[0 + 4 * i3] + 3) + o3[3 + 4 * i3], c4 = o3[1 + 4 * i3] + o3[2 + 4 * i3], u4 = o3[1 + 4 * i3] - o3[2 + 4 * i3], h4 = t5 - o3[3 + 4 * i3], r3[n3 + 0] = s3 + c4 >> 3, r3[n3 + 16] = h4 + u4 >> 3, r3[n3 + 32] = s3 - c4 >> 3, r3[n3 + 48] = h4 - u4 >> 3, n3 += 64;
}
function he2(t5, e3, r3) {
var n3, i3 = e3 - 32, a3 = Bn, o3 = 255 - t5[i3 - 1];
for (n3 = 0; n3 < r3; ++n3) {
var s3, c4 = a3, u4 = o3 + t5[e3 - 1];
for (s3 = 0; s3 < r3; ++s3) t5[e3 + s3] = c4[u4 + t5[i3 + s3]];
e3 += 32;
}
}
function le2(t5, e3) {
he2(t5, e3, 4);
}
function fe2(t5, e3) {
he2(t5, e3, 8);
}
function de2(t5, e3) {
he2(t5, e3, 16);
}
function pe2(t5, e3) {
var r3;
for (r3 = 0; 16 > r3; ++r3) n2(t5, e3 + 32 * r3, t5, e3 - 32, 16);
}
function ge2(t5, e3) {
var r3;
for (r3 = 16; 0 < r3; --r3) i2(t5, e3, t5[e3 - 1], 16), e3 += 32;
}
function me2(t5, e3, r3) {
var n3;
for (n3 = 0; 16 > n3; ++n3) i2(e3, r3 + 32 * n3, t5, 16);
}
function ve2(t5, e3) {
var r3, n3 = 16;
for (r3 = 0; 16 > r3; ++r3) n3 += t5[e3 - 1 + 32 * r3] + t5[e3 + r3 - 32];
me2(n3 >> 5, t5, e3);
}
function be2(t5, e3) {
var r3, n3 = 8;
for (r3 = 0; 16 > r3; ++r3) n3 += t5[e3 - 1 + 32 * r3];
me2(n3 >> 4, t5, e3);
}
function ye2(t5, e3) {
var r3, n3 = 8;
for (r3 = 0; 16 > r3; ++r3) n3 += t5[e3 + r3 - 32];
me2(n3 >> 4, t5, e3);
}
function we2(t5, e3) {
me2(128, t5, e3);
}
function Ne2(t5, e3, r3) {
return t5 + 2 * e3 + r3 + 2 >> 2;
}
function Le2(t5, e3) {
var r3, i3 = e3 - 32;
i3 = new Uint8Array([Ne2(t5[i3 - 1], t5[i3 + 0], t5[i3 + 1]), Ne2(t5[i3 + 0], t5[i3 + 1], t5[i3 + 2]), Ne2(t5[i3 + 1], t5[i3 + 2], t5[i3 + 3]), Ne2(t5[i3 + 2], t5[i3 + 3], t5[i3 + 4])]);
for (r3 = 0; 4 > r3; ++r3) n2(t5, e3 + 32 * r3, i3, 0, i3.length);
}
function Ae(t5, e3) {
var r3 = t5[e3 - 1], n3 = t5[e3 - 1 + 32], i3 = t5[e3 - 1 + 64], a3 = t5[e3 - 1 + 96];
I2(t5, e3 + 0, 16843009 * Ne2(t5[e3 - 1 - 32], r3, n3)), I2(t5, e3 + 32, 16843009 * Ne2(r3, n3, i3)), I2(t5, e3 + 64, 16843009 * Ne2(n3, i3, a3)), I2(t5, e3 + 96, 16843009 * Ne2(i3, a3, a3));
}
function xe(t5, e3) {
var r3, n3 = 4;
for (r3 = 0; 4 > r3; ++r3) n3 += t5[e3 + r3 - 32] + t5[e3 - 1 + 32 * r3];
for (n3 >>= 3, r3 = 0; 4 > r3; ++r3) i2(t5, e3 + 32 * r3, n3, 4);
}
function Se(t5, e3) {
var r3 = t5[e3 - 1 + 0], n3 = t5[e3 - 1 + 32], i3 = t5[e3 - 1 + 64], a3 = t5[e3 - 1 - 32], o3 = t5[e3 + 0 - 32], s3 = t5[e3 + 1 - 32], c4 = t5[e3 + 2 - 32], u4 = t5[e3 + 3 - 32];
t5[e3 + 0 + 96] = Ne2(n3, i3, t5[e3 - 1 + 96]), t5[e3 + 1 + 96] = t5[e3 + 0 + 64] = Ne2(r3, n3, i3), t5[e3 + 2 + 96] = t5[e3 + 1 + 64] = t5[e3 + 0 + 32] = Ne2(a3, r3, n3), t5[e3 + 3 + 96] = t5[e3 + 2 + 64] = t5[e3 + 1 + 32] = t5[e3 + 0 + 0] = Ne2(o3, a3, r3), t5[e3 + 3 + 64] = t5[e3 + 2 + 32] = t5[e3 + 1 + 0] = Ne2(s3, o3, a3), t5[e3 + 3 + 32] = t5[e3 + 2 + 0] = Ne2(c4, s3, o3), t5[e3 + 3 + 0] = Ne2(u4, c4, s3);
}
function _e(t5, e3) {
var r3 = t5[e3 + 1 - 32], n3 = t5[e3 + 2 - 32], i3 = t5[e3 + 3 - 32], a3 = t5[e3 + 4 - 32], o3 = t5[e3 + 5 - 32], s3 = t5[e3 + 6 - 32], c4 = t5[e3 + 7 - 32];
t5[e3 + 0 + 0] = Ne2(t5[e3 + 0 - 32], r3, n3), t5[e3 + 1 + 0] = t5[e3 + 0 + 32] = Ne2(r3, n3, i3), t5[e3 + 2 + 0] = t5[e3 + 1 + 32] = t5[e3 + 0 + 64] = Ne2(n3, i3, a3), t5[e3 + 3 + 0] = t5[e3 + 2 + 32] = t5[e3 + 1 + 64] = t5[e3 + 0 + 96] = Ne2(i3, a3, o3), t5[e3 + 3 + 32] = t5[e3 + 2 + 64] = t5[e3 + 1 + 96] = Ne2(a3, o3, s3), t5[e3 + 3 + 64] = t5[e3 + 2 + 96] = Ne2(o3, s3, c4), t5[e3 + 3 + 96] = Ne2(s3, c4, c4);
}
function Pe(t5, e3) {
var r3 = t5[e3 - 1 + 0], n3 = t5[e3 - 1 + 32], i3 = t5[e3 - 1 + 64], a3 = t5[e3 - 1 - 32], o3 = t5[e3 + 0 - 32], s3 = t5[e3 + 1 - 32], c4 = t5[e3 + 2 - 32], u4 = t5[e3 + 3 - 32];
t5[e3 + 0 + 0] = t5[e3 + 1 + 64] = a3 + o3 + 1 >> 1, t5[e3 + 1 + 0] = t5[e3 + 2 + 64] = o3 + s3 + 1 >> 1, t5[e3 + 2 + 0] = t5[e3 + 3 + 64] = s3 + c4 + 1 >> 1, t5[e3 + 3 + 0] = c4 + u4 + 1 >> 1, t5[e3 + 0 + 96] = Ne2(i3, n3, r3), t5[e3 + 0 + 64] = Ne2(n3, r3, a3), t5[e3 + 0 + 32] = t5[e3 + 1 + 96] = Ne2(r3, a3, o3), t5[e3 + 1 + 32] = t5[e3 + 2 + 96] = Ne2(a3, o3, s3), t5[e3 + 2 + 32] = t5[e3 + 3 + 96] = Ne2(o3, s3, c4), t5[e3 + 3 + 32] = Ne2(s3, c4, u4);
}
function ke(t5, e3) {
var r3 = t5[e3 + 0 - 32], n3 = t5[e3 + 1 - 32], i3 = t5[e3 + 2 - 32], a3 = t5[e3 + 3 - 32], o3 = t5[e3 + 4 - 32], s3 = t5[e3 + 5 - 32], c4 = t5[e3 + 6 - 32], u4 = t5[e3 + 7 - 32];
t5[e3 + 0 + 0] = r3 + n3 + 1 >> 1, t5[e3 + 1 + 0] = t5[e3 + 0 + 64] = n3 + i3 + 1 >> 1, t5[e3 + 2 + 0] = t5[e3 + 1 + 64] = i3 + a3 + 1 >> 1, t5[e3 + 3 + 0] = t5[e3 + 2 + 64] = a3 + o3 + 1 >> 1, t5[e3 + 0 + 32] = Ne2(r3, n3, i3), t5[e3 + 1 + 32] = t5[e3 + 0 + 96] = Ne2(n3, i3, a3), t5[e3 + 2 + 32] = t5[e3 + 1 + 96] = Ne2(i3, a3, o3), t5[e3 + 3 + 32] = t5[e3 + 2 + 96] = Ne2(a3, o3, s3), t5[e3 + 3 + 64] = Ne2(o3, s3, c4), t5[e3 + 3 + 96] = Ne2(s3, c4, u4);
}
function Ie(t5, e3) {
var r3 = t5[e3 - 1 + 0], n3 = t5[e3 - 1 + 32], i3 = t5[e3 - 1 + 64], a3 = t5[e3 - 1 + 96];
t5[e3 + 0 + 0] = r3 + n3 + 1 >> 1, t5[e3 + 2 + 0] = t5[e3 + 0 + 32] = n3 + i3 + 1 >> 1, t5[e3 + 2 + 32] = t5[e3 + 0 + 64] = i3 + a3 + 1 >> 1, t5[e3 + 1 + 0] = Ne2(r3, n3, i3), t5[e3 + 3 + 0] = t5[e3 + 1 + 32] = Ne2(n3, i3, a3), t5[e3 + 3 + 32] = t5[e3 + 1 + 64] = Ne2(i3, a3, a3), t5[e3 + 3 + 64] = t5[e3 + 2 + 64] = t5[e3 + 0 + 96] = t5[e3 + 1 + 96] = t5[e3 + 2 + 96] = t5[e3 + 3 + 96] = a3;
}
function Fe(t5, e3) {
var r3 = t5[e3 - 1 + 0], n3 = t5[e3 - 1 + 32], i3 = t5[e3 - 1 + 64], a3 = t5[e3 - 1 + 96], o3 = t5[e3 - 1 - 32], s3 = t5[e3 + 0 - 32], c4 = t5[e3 + 1 - 32], u4 = t5[e3 + 2 - 32];
t5[e3 + 0 + 0] = t5[e3 + 2 + 32] = r3 + o3 + 1 >> 1, t5[e3 + 0 + 32] = t5[e3 + 2 + 64] = n3 + r3 + 1 >> 1, t5[e3 + 0 + 64] = t5[e3 + 2 + 96] = i3 + n3 + 1 >> 1, t5[e3 + 0 + 96] = a3 + i3 + 1 >> 1, t5[e3 + 3 + 0] = Ne2(s3, c4, u4), t5[e3 + 2 + 0] = Ne2(o3, s3, c4), t5[e3 + 1 + 0] = t5[e3 + 3 + 32] = Ne2(r3, o3, s3), t5[e3 + 1 + 32] = t5[e3 + 3 + 64] = Ne2(n3, r3, o3), t5[e3 + 1 + 64] = t5[e3 + 3 + 96] = Ne2(i3, n3, r3), t5[e3 + 1 + 96] = Ne2(a3, i3, n3);
}
function Ce(t5, e3) {
var r3;
for (r3 = 0; 8 > r3; ++r3) n2(t5, e3 + 32 * r3, t5, e3 - 32, 8);
}
function je(t5, e3) {
var r3;
for (r3 = 0; 8 > r3; ++r3) i2(t5, e3, t5[e3 - 1], 8), e3 += 32;
}
function Oe(t5, e3, r3) {
var n3;
for (n3 = 0; 8 > n3; ++n3) i2(e3, r3 + 32 * n3, t5, 8);
}
function Be(t5, e3) {
var r3, n3 = 8;
for (r3 = 0; 8 > r3; ++r3) n3 += t5[e3 + r3 - 32] + t5[e3 - 1 + 32 * r3];
Oe(n3 >> 4, t5, e3);
}
function Me(t5, e3) {
var r3, n3 = 4;
for (r3 = 0; 8 > r3; ++r3) n3 += t5[e3 + r3 - 32];
Oe(n3 >> 3, t5, e3);
}
function Ee(t5, e3) {
var r3, n3 = 4;
for (r3 = 0; 8 > r3; ++r3) n3 += t5[e3 - 1 + 32 * r3];
Oe(n3 >> 3, t5, e3);
}
function qe(t5, e3) {
Oe(128, t5, e3);
}
function De(t5, e3, r3) {
var n3 = t5[e3 - r3], i3 = t5[e3 + 0], a3 = 3 * (i3 - n3) + jn[1020 + t5[e3 - 2 * r3] - t5[e3 + r3]], o3 = On[112 + (a3 + 4 >> 3)];
t5[e3 - r3] = Bn[255 + n3 + On[112 + (a3 + 3 >> 3)]], t5[e3 + 0] = Bn[255 + i3 - o3];
}
function Re(t5, e3, r3, n3) {
var i3 = t5[e3 + 0], a3 = t5[e3 + r3];
return Mn[255 + t5[e3 - 2 * r3] - t5[e3 - r3]] > n3 || Mn[255 + a3 - i3] > n3;
}
function Te(t5, e3, r3, n3) {
return 4 * Mn[255 + t5[e3 - r3] - t5[e3 + 0]] + Mn[255 + t5[e3 - 2 * r3] - t5[e3 + r3]] <= n3;
}
function Ue(t5, e3, r3, n3, i3) {
var a3 = t5[e3 - 3 * r3], o3 = t5[e3 - 2 * r3], s3 = t5[e3 - r3], c4 = t5[e3 + 0], u4 = t5[e3 + r3], h4 = t5[e3 + 2 * r3], l4 = t5[e3 + 3 * r3];
return 4 * Mn[255 + s3 - c4] + Mn[255 + o3 - u4] > n3 ? 0 : Mn[255 + t5[e3 - 4 * r3] - a3] <= i3 && Mn[255 + a3 - o3] <= i3 && Mn[255 + o3 - s3] <= i3 && Mn[255 + l4 - h4] <= i3 && Mn[255 + h4 - u4] <= i3 && Mn[255 + u4 - c4] <= i3;
}
function ze(t5, e3, r3, n3) {
var i3 = 2 * n3 + 1;
for (n3 = 0; 16 > n3; ++n3) Te(t5, e3 + n3, r3, i3) && De(t5, e3 + n3, r3);
}
function He(t5, e3, r3, n3) {
var i3 = 2 * n3 + 1;
for (n3 = 0; 16 > n3; ++n3) Te(t5, e3 + n3 * r3, 1, i3) && De(t5, e3 + n3 * r3, 1);
}
function We(t5, e3, r3, n3) {
var i3;
for (i3 = 3; 0 < i3; --i3) ze(t5, e3 += 4 * r3, r3, n3);
}
function Ve(t5, e3, r3, n3) {
var i3;
for (i3 = 3; 0 < i3; --i3) He(t5, e3 += 4, r3, n3);
}
function Ge(t5, e3, r3, n3, i3, a3, o3, s3) {
for (a3 = 2 * a3 + 1; 0 < i3--; ) {
if (Ue(t5, e3, r3, a3, o3)) if (Re(t5, e3, r3, s3)) De(t5, e3, r3);
else {
var c4 = t5, u4 = e3, h4 = r3, l4 = c4[u4 - 2 * h4], f4 = c4[u4 - h4], d4 = c4[u4 + 0], p4 = c4[u4 + h4], g4 = c4[u4 + 2 * h4], m4 = 27 * (b4 = jn[1020 + 3 * (d4 - f4) + jn[1020 + l4 - p4]]) + 63 >> 7, v4 = 18 * b4 + 63 >> 7, b4 = 9 * b4 + 63 >> 7;
c4[u4 - 3 * h4] = Bn[255 + c4[u4 - 3 * h4] + b4], c4[u4 - 2 * h4] = Bn[255 + l4 + v4], c4[u4 - h4] = Bn[255 + f4 + m4], c4[u4 + 0] = Bn[255 + d4 - m4], c4[u4 + h4] = Bn[255 + p4 - v4], c4[u4 + 2 * h4] = Bn[255 + g4 - b4];
}
e3 += n3;
}
}
function Ye(t5, e3, r3, n3, i3, a3, o3, s3) {
for (a3 = 2 * a3 + 1; 0 < i3--; ) {
if (Ue(t5, e3, r3, a3, o3)) if (Re(t5, e3, r3, s3)) De(t5, e3, r3);
else {
var c4 = t5, u4 = e3, h4 = r3, l4 = c4[u4 - h4], f4 = c4[u4 + 0], d4 = c4[u4 + h4], p4 = On[112 + ((g4 = 3 * (f4 - l4)) + 4 >> 3)], g4 = On[112 + (g4 + 3 >> 3)], m4 = p4 + 1 >> 1;
c4[u4 - 2 * h4] = Bn[255 + c4[u4 - 2 * h4] + m4], c4[u4 - h4] = Bn[255 + l4 + g4], c4[u4 + 0] = Bn[255 + f4 - p4], c4[u4 + h4] = Bn[255 + d4 - m4];
}
e3 += n3;
}
}
function Je(t5, e3, r3, n3, i3, a3) {
Ge(t5, e3, r3, 1, 16, n3, i3, a3);
}
function Xe(t5, e3, r3, n3, i3, a3) {
Ge(t5, e3, 1, r3, 16, n3, i3, a3);
}
function Ke(t5, e3, r3, n3, i3, a3) {
var o3;
for (o3 = 3; 0 < o3; --o3) Ye(t5, e3 += 4 * r3, r3, 1, 16, n3, i3, a3);
}
function Ze(t5, e3, r3, n3, i3, a3) {
var o3;
for (o3 = 3; 0 < o3; --o3) Ye(t5, e3 += 4, 1, r3, 16, n3, i3, a3);
}
function $e(t5, e3, r3, n3, i3, a3, o3, s3) {
Ge(t5, e3, i3, 1, 8, a3, o3, s3), Ge(r3, n3, i3, 1, 8, a3, o3, s3);
}
function Qe(t5, e3, r3, n3, i3, a3, o3, s3) {
Ge(t5, e3, 1, i3, 8, a3, o3, s3), Ge(r3, n3, 1, i3, 8, a3, o3, s3);
}
function tr(t5, e3, r3, n3, i3, a3, o3, s3) {
Ye(t5, e3 + 4 * i3, i3, 1, 8, a3, o3, s3), Ye(r3, n3 + 4 * i3, i3, 1, 8, a3, o3, s3);
}
function er(t5, e3, r3, n3, i3, a3, o3, s3) {
Ye(t5, e3 + 4, 1, i3, 8, a3, o3, s3), Ye(r3, n3 + 4, 1, i3, 8, a3, o3, s3);
}
function rr() {
this.ba = new ot2(), this.ec = [], this.cc = [], this.Mc = [], this.Dc = this.Nc = this.dc = this.fc = 0, this.Oa = new ct2(), this.memory = 0, this.Ib = "OutputFunc", this.Jb = "OutputAlphaFunc", this.Nd = "OutputRowFunc";
}
function nr() {
this.data = [], this.offset = this.kd = this.ha = this.w = 0, this.na = [], this.xa = this.gb = this.Ja = this.Sa = this.P = 0;
}
function ir() {
this.nc = this.Ea = this.b = this.hc = 0, this.K = [], this.w = 0;
}
function ar() {
this.ua = 0, this.Wa = new M2(), this.vb = new M2(), this.md = this.xc = this.wc = 0, this.vc = [], this.Wb = 0, this.Ya = new d3(), this.yc = new l3();
}
function or() {
this.xb = this.a = 0, this.l = new Gt2(), this.ca = new ot2(), this.V = [], this.Ba = 0, this.Ta = [], this.Ua = 0, this.m = new N3(), this.Pb = 0, this.wd = new N3(), this.Ma = this.$ = this.C = this.i = this.c = this.xd = 0, this.s = new ar(), this.ab = 0, this.gc = o2(4, ir), this.Oc = 0;
}
function sr() {
this.Lc = this.Z = this.$a = this.i = this.c = 0, this.l = new Gt2(), this.ic = 0, this.ca = [], this.tb = 0, this.qd = null, this.rd = 0;
}
function cr(t5, e3, r3, n3, i3, a3, o3) {
for (t5 = null == t5 ? 0 : t5[e3 + 0], e3 = 0; e3 < o3; ++e3) i3[a3 + e3] = t5 + r3[n3 + e3] & 255, t5 = i3[a3 + e3];
}
function ur(t5, e3, r3, n3, i3, a3, o3) {
var s3;
if (null == t5) cr(null, null, r3, n3, i3, a3, o3);
else for (s3 = 0; s3 < o3; ++s3) i3[a3 + s3] = t5[e3 + s3] + r3[n3 + s3] & 255;
}
function hr(t5, e3, r3, n3, i3, a3, o3) {
if (null == t5) cr(null, null, r3, n3, i3, a3, o3);
else {
var s3, c4 = t5[e3 + 0], u4 = c4, h4 = c4;
for (s3 = 0; s3 < o3; ++s3) u4 = h4 + (c4 = t5[e3 + s3]) - u4, h4 = r3[n3 + s3] + (-256 & u4 ? 0 > u4 ? 0 : 255 : u4) & 255, u4 = c4, i3[a3 + s3] = h4;
}
}
function lr(t5, r3, i3, o3) {
var s3 = r3.width, c4 = r3.o;
if (e2(null != t5 && null != r3), 0 > i3 || 0 >= o3 || i3 + o3 > c4) return null;
if (!t5.Cc) {
if (null == t5.ga) {
var u4;
if (t5.ga = new sr(), (u4 = null == t5.ga) || (u4 = r3.width * r3.o, e2(0 == t5.Gb.length), t5.Gb = a2(u4), t5.Uc = 0, null == t5.Gb ? u4 = 0 : (t5.mb = t5.Gb, t5.nb = t5.Uc, t5.rc = null, u4 = 1), u4 = !u4), !u4) {
u4 = t5.ga;
var h4 = t5.Fa, l4 = t5.P, f4 = t5.qc, d4 = t5.mb, p4 = t5.nb, g4 = l4 + 1, m4 = f4 - 1, b4 = u4.l;
if (e2(null != h4 && null != d4 && null != r3), mi[0] = null, mi[1] = cr, mi[2] = ur, mi[3] = hr, u4.ca = d4, u4.tb = p4, u4.c = r3.width, u4.i = r3.height, e2(0 < u4.c && 0 < u4.i), 1 >= f4) r3 = 0;
else if (u4.$a = h4[l4 + 0] >> 0 & 3, u4.Z = h4[l4 + 0] >> 2 & 3, u4.Lc = h4[l4 + 0] >> 4 & 3, l4 = h4[l4 + 0] >> 6 & 3, 0 > u4.$a || 1 < u4.$a || 4 <= u4.Z || 1 < u4.Lc || l4) r3 = 0;
else if (b4.put = dt2, b4.ac = ft2, b4.bc = pt2, b4.ma = u4, b4.width = r3.width, b4.height = r3.height, b4.Da = r3.Da, b4.v = r3.v, b4.va = r3.va, b4.j = r3.j, b4.o = r3.o, u4.$a) t: {
e2(1 == u4.$a), r3 = kt2();
e: for (; ; ) {
if (null == r3) {
r3 = 0;
break t;
}
if (e2(null != u4), u4.mc = r3, r3.c = u4.c, r3.i = u4.i, r3.l = u4.l, r3.l.ma = u4, r3.l.width = u4.c, r3.l.height = u4.i, r3.a = 0, v3(r3.m, h4, g4, m4), !It2(u4.c, u4.i, 1, r3, null)) break e;
if (1 == r3.ab && 3 == r3.gc[0].hc && At2(r3.s) ? (u4.ic = 1, h4 = r3.c * r3.i, r3.Ta = null, r3.Ua = 0, r3.V = a2(h4), r3.Ba = 0, null == r3.V ? (r3.a = 1, r3 = 0) : r3 = 1) : (u4.ic = 0, r3 = Ft2(r3, u4.c)), !r3) break e;
r3 = 1;
break t;
}
u4.mc = null, r3 = 0;
}
else r3 = m4 >= u4.c * u4.i;
u4 = !r3;
}
if (u4) return null;
1 != t5.ga.Lc ? t5.Ga = 0 : o3 = c4 - i3;
}
e2(null != t5.ga), e2(i3 + o3 <= c4);
t: {
if (r3 = (h4 = t5.ga).c, c4 = h4.l.o, 0 == h4.$a) {
if (g4 = t5.rc, m4 = t5.Vc, b4 = t5.Fa, l4 = t5.P + 1 + i3 * r3, f4 = t5.mb, d4 = t5.nb + i3 * r3, e2(l4 <= t5.P + t5.qc), 0 != h4.Z) for (e2(null != mi[h4.Z]), u4 = 0; u4 < o3; ++u4) mi[h4.Z](g4, m4, b4, l4, f4, d4, r3), g4 = f4, m4 = d4, d4 += r3, l4 += r3;
else for (u4 = 0; u4 < o3; ++u4) n2(f4, d4, b4, l4, r3), g4 = f4, m4 = d4, d4 += r3, l4 += r3;
t5.rc = g4, t5.Vc = m4;
} else {
if (e2(null != h4.mc), r3 = i3 + o3, e2(null != (u4 = h4.mc)), e2(r3 <= u4.i), u4.C >= r3) r3 = 1;
else if (h4.ic || mr(), h4.ic) {
h4 = u4.V, g4 = u4.Ba, m4 = u4.c;
var y4 = u4.i, w4 = (b4 = 1, l4 = u4.$ / m4, f4 = u4.$ % m4, d4 = u4.m, p4 = u4.s, u4.$), N4 = m4 * y4, L4 = m4 * r3, x3 = p4.wc, _3 = w4 < L4 ? wt2(p4, f4, l4) : null;
e2(w4 <= N4), e2(r3 <= y4), e2(At2(p4));
e: for (; ; ) {
for (; !d4.h && w4 < L4; ) {
if (f4 & x3 || (_3 = wt2(p4, f4, l4)), e2(null != _3), S2(d4), 256 > (y4 = bt2(_3.G[0], _3.H[0], d4))) h4[g4 + w4] = y4, ++w4, ++f4 >= m4 && (f4 = 0, ++l4 <= r3 && !(l4 % 16) && St(u4, l4));
else {
if (!(280 > y4)) {
b4 = 0;
break e;
}
y4 = mt2(y4 - 256, d4);
var P3, k3 = bt2(_3.G[4], _3.H[4], d4);
if (S2(d4), !(w4 >= (k3 = vt2(m4, k3 = mt2(k3, d4))) && N4 - w4 >= y4)) {
b4 = 0;
break e;
}
for (P3 = 0; P3 < y4; ++P3) h4[g4 + w4 + P3] = h4[g4 + w4 + P3 - k3];
for (w4 += y4, f4 += y4; f4 >= m4; ) f4 -= m4, ++l4 <= r3 && !(l4 % 16) && St(u4, l4);
w4 < L4 && f4 & x3 && (_3 = wt2(p4, f4, l4));
}
e2(d4.h == A6(d4));
}
St(u4, l4 > r3 ? r3 : l4);
break e;
}
!b4 || d4.h && w4 < N4 ? (b4 = 0, u4.a = d4.h ? 5 : 3) : u4.$ = w4, r3 = b4;
} else r3 = _t2(u4, u4.V, u4.Ba, u4.c, u4.i, r3, Ct2);
if (!r3) {
o3 = 0;
break t;
}
}
i3 + o3 >= c4 && (t5.Cc = 1), o3 = 1;
}
if (!o3) return null;
if (t5.Cc && (null != (o3 = t5.ga) && (o3.mc = null), t5.ga = null, 0 < t5.Ga)) return alert("todo:WebPDequantizeLevels"), null;
}
return t5.nb + i3 * s3;
}
function fr(t5, e3, r3, n3, i3, a3) {
for (; 0 < i3--; ) {
var o3, s3 = t5, c4 = e3 + (r3 ? 1 : 0), u4 = t5, h4 = e3 + (r3 ? 0 : 3);
for (o3 = 0; o3 < n3; ++o3) {
var l4 = u4[h4 + 4 * o3];
255 != l4 && (l4 *= 32897, s3[c4 + 4 * o3 + 0] = s3[c4 + 4 * o3 + 0] * l4 >> 23, s3[c4 + 4 * o3 + 1] = s3[c4 + 4 * o3 + 1] * l4 >> 23, s3[c4 + 4 * o3 + 2] = s3[c4 + 4 * o3 + 2] * l4 >> 23);
}
e3 += a3;
}
}
function dr(t5, e3, r3, n3, i3) {
for (; 0 < n3--; ) {
var a3;
for (a3 = 0; a3 < r3; ++a3) {
var o3 = t5[e3 + 2 * a3 + 0], s3 = 15 & (u4 = t5[e3 + 2 * a3 + 1]), c4 = 4369 * s3, u4 = (240 & u4 | u4 >> 4) * c4 >> 16;
t5[e3 + 2 * a3 + 0] = (240 & o3 | o3 >> 4) * c4 >> 16 & 240 | (15 & o3 | o3 << 4) * c4 >> 16 >> 4 & 15, t5[e3 + 2 * a3 + 1] = 240 & u4 | s3;
}
e3 += i3;
}
}
function pr(t5, e3, r3, n3, i3, a3, o3, s3) {
var c4, u4, h4 = 255;
for (u4 = 0; u4 < i3; ++u4) {
for (c4 = 0; c4 < n3; ++c4) {
var l4 = t5[e3 + c4];
a3[o3 + 4 * c4] = l4, h4 &= l4;
}
e3 += r3, o3 += s3;
}
return 255 != h4;
}
function gr(t5, e3, r3, n3, i3) {
var a3;
for (a3 = 0; a3 < i3; ++a3) r3[n3 + a3] = t5[e3 + a3] >> 8;
}
function mr() {
An = fr, xn = dr, Sn = pr, _n = gr;
}
function vr(r3, n3, i3) {
t4[r3] = function(t5, r4, a3, o3, s3, c4, u4, h4, l4, f4, d4, p4, g4, m4, v4, b4, y4) {
var w4, N4 = y4 - 1 >> 1, L4 = s3[c4 + 0] | u4[h4 + 0] << 16, A7 = l4[f4 + 0] | d4[p4 + 0] << 16;
e2(null != t5);
var x3 = 3 * L4 + A7 + 131074 >> 2;
for (n3(t5[r4 + 0], 255 & x3, x3 >> 16, g4, m4), null != a3 && (x3 = 3 * A7 + L4 + 131074 >> 2, n3(a3[o3 + 0], 255 & x3, x3 >> 16, v4, b4)), w4 = 1; w4 <= N4; ++w4) {
var S3 = s3[c4 + w4] | u4[h4 + w4] << 16, _3 = l4[f4 + w4] | d4[p4 + w4] << 16, P3 = L4 + S3 + A7 + _3 + 524296, k3 = P3 + 2 * (S3 + A7) >> 3;
x3 = k3 + L4 >> 1, L4 = (P3 = P3 + 2 * (L4 + _3) >> 3) + S3 >> 1, n3(t5[r4 + 2 * w4 - 1], 255 & x3, x3 >> 16, g4, m4 + (2 * w4 - 1) * i3), n3(t5[r4 + 2 * w4 - 0], 255 & L4, L4 >> 16, g4, m4 + (2 * w4 - 0) * i3), null != a3 && (x3 = P3 + A7 >> 1, L4 = k3 + _3 >> 1, n3(a3[o3 + 2 * w4 - 1], 255 & x3, x3 >> 16, v4, b4 + (2 * w4 - 1) * i3), n3(a3[o3 + 2 * w4 + 0], 255 & L4, L4 >> 16, v4, b4 + (2 * w4 + 0) * i3)), L4 = S3, A7 = _3;
}
1 & y4 || (x3 = 3 * L4 + A7 + 131074 >> 2, n3(t5[r4 + y4 - 1], 255 & x3, x3 >> 16, g4, m4 + (y4 - 1) * i3), null != a3 && (x3 = 3 * A7 + L4 + 131074 >> 2, n3(a3[o3 + y4 - 1], 255 & x3, x3 >> 16, v4, b4 + (y4 - 1) * i3)));
};
}
function br() {
vi[En] = bi, vi[qn] = wi, vi[Dn] = yi, vi[Rn] = Ni, vi[Tn] = Li, vi[Un] = Ai, vi[zn] = xi, vi[Hn] = wi, vi[Wn] = Ni, vi[Vn] = Li, vi[Gn] = Ai;
}
function yr(t5) {
return t5 & ~Fi ? 0 > t5 ? 0 : 255 : t5 >> Ii;
}
function wr(t5, e3) {
return yr((19077 * t5 >> 8) + (26149 * e3 >> 8) - 14234);
}
function Nr(t5, e3, r3) {
return yr((19077 * t5 >> 8) - (6419 * e3 >> 8) - (13320 * r3 >> 8) + 8708);
}
function Lr(t5, e3) {
return yr((19077 * t5 >> 8) + (33050 * e3 >> 8) - 17685);
}
function Ar(t5, e3, r3, n3, i3) {
n3[i3 + 0] = wr(t5, r3), n3[i3 + 1] = Nr(t5, e3, r3), n3[i3 + 2] = Lr(t5, e3);
}
function xr(t5, e3, r3, n3, i3) {
n3[i3 + 0] = Lr(t5, e3), n3[i3 + 1] = Nr(t5, e3, r3), n3[i3 + 2] = wr(t5, r3);
}
function Sr(t5, e3, r3, n3, i3) {
var a3 = Nr(t5, e3, r3);
e3 = a3 << 3 & 224 | Lr(t5, e3) >> 3, n3[i3 + 0] = 248 & wr(t5, r3) | a3 >> 5, n3[i3 + 1] = e3;
}
function _r(t5, e3, r3, n3, i3) {
var a3 = 240 & Lr(t5, e3) | 15;
n3[i3 + 0] = 240 & wr(t5, r3) | Nr(t5, e3, r3) >> 4, n3[i3 + 1] = a3;
}
function Pr(t5, e3, r3, n3, i3) {
n3[i3 + 0] = 255, Ar(t5, e3, r3, n3, i3 + 1);
}
function kr(t5, e3, r3, n3, i3) {
xr(t5, e3, r3, n3, i3), n3[i3 + 3] = 255;
}
function Ir(t5, e3, r3, n3, i3) {
Ar(t5, e3, r3, n3, i3), n3[i3 + 3] = 255;
}
function Vt2(t5, e3) {
return 0 > t5 ? 0 : t5 > e3 ? e3 : t5;
}
function Fr(e3, r3, n3) {
t4[e3] = function(t5, e4, i3, a3, o3, s3, c4, u4, h4) {
for (var l4 = u4 + (-2 & h4) * n3; u4 != l4; ) r3(t5[e4 + 0], i3[a3 + 0], o3[s3 + 0], c4, u4), r3(t5[e4 + 1], i3[a3 + 0], o3[s3 + 0], c4, u4 + n3), e4 += 2, ++a3, ++s3, u4 += 2 * n3;
1 & h4 && r3(t5[e4 + 0], i3[a3 + 0], o3[s3 + 0], c4, u4);
};
}
function Cr(t5, e3, r3) {
return 0 == r3 ? 0 == t5 ? 0 == e3 ? 6 : 5 : 0 == e3 ? 4 : 0 : r3;
}
function jr(t5, e3, r3, n3, i3) {
switch (t5 >>> 30) {
case 3:
on(e3, r3, n3, i3, 0);
break;
case 2:
sn(e3, r3, n3, i3);
break;
case 1:
un(e3, r3, n3, i3);
}
}
function Or(t5, e3) {
var r3, a3, o3 = e3.M, s3 = e3.Nb, c4 = t5.oc, u4 = t5.pc + 40, h4 = t5.oc, l4 = t5.pc + 584, f4 = t5.oc, d4 = t5.pc + 600;
for (r3 = 0; 16 > r3; ++r3) c4[u4 + 32 * r3 - 1] = 129;
for (r3 = 0; 8 > r3; ++r3) h4[l4 + 32 * r3 - 1] = 129, f4[d4 + 32 * r3 - 1] = 129;
for (0 < o3 ? c4[u4 - 1 - 32] = h4[l4 - 1 - 32] = f4[d4 - 1 - 32] = 129 : (i2(c4, u4 - 32 - 1, 127, 21), i2(h4, l4 - 32 - 1, 127, 9), i2(f4, d4 - 32 - 1, 127, 9)), a3 = 0; a3 < t5.za; ++a3) {
var p4 = e3.ya[e3.aa + a3];
if (0 < a3) {
for (r3 = -1; 16 > r3; ++r3) n2(c4, u4 + 32 * r3 - 4, c4, u4 + 32 * r3 + 12, 4);
for (r3 = -1; 8 > r3; ++r3) n2(h4, l4 + 32 * r3 - 4, h4, l4 + 32 * r3 + 4, 4), n2(f4, d4 + 32 * r3 - 4, f4, d4 + 32 * r3 + 4, 4);
}
var g4 = t5.Gd, m4 = t5.Hd + a3, v4 = p4.ad, b4 = p4.Hc;
if (0 < o3 && (n2(c4, u4 - 32, g4[m4].y, 0, 16), n2(h4, l4 - 32, g4[m4].f, 0, 8), n2(f4, d4 - 32, g4[m4].ea, 0, 8)), p4.Za) {
var y4 = c4, w4 = u4 - 32 + 16;
for (0 < o3 && (a3 >= t5.za - 1 ? i2(y4, w4, g4[m4].y[15], 4) : n2(y4, w4, g4[m4 + 1].y, 0, 4)), r3 = 0; 4 > r3; r3++) y4[w4 + 128 + r3] = y4[w4 + 256 + r3] = y4[w4 + 384 + r3] = y4[w4 + 0 + r3];
for (r3 = 0; 16 > r3; ++r3, b4 <<= 2) y4 = c4, w4 = u4 + Di[r3], fi[p4.Ob[r3]](y4, w4), jr(b4, v4, 16 * +r3, y4, w4);
} else if (y4 = Cr(a3, o3, p4.Ob[0]), li[y4](c4, u4), 0 != b4) for (r3 = 0; 16 > r3; ++r3, b4 <<= 2) jr(b4, v4, 16 * +r3, c4, u4 + Di[r3]);
for (r3 = p4.Gc, y4 = Cr(a3, o3, p4.Dd), di[y4](h4, l4), di[y4](f4, d4), b4 = v4, y4 = h4, w4 = l4, 255 & (p4 = r3 >> 0) && (170 & p4 ? cn(b4, 256, y4, w4) : hn(b4, 256, y4, w4)), p4 = f4, b4 = d4, 255 & (r3 >>= 8) && (170 & r3 ? cn(v4, 320, p4, b4) : hn(v4, 320, p4, b4)), o3 < t5.Ub - 1 && (n2(g4[m4].y, 0, c4, u4 + 480, 16), n2(g4[m4].f, 0, h4, l4 + 224, 8), n2(g4[m4].ea, 0, f4, d4 + 224, 8)), r3 = 8 * s3 * t5.B, g4 = t5.sa, m4 = t5.ta + 16 * a3 + 16 * s3 * t5.R, v4 = t5.qa, p4 = t5.ra + 8 * a3 + r3, b4 = t5.Ha, y4 = t5.Ia + 8 * a3 + r3, r3 = 0; 16 > r3; ++r3) n2(g4, m4 + r3 * t5.R, c4, u4 + 32 * r3, 16);
for (r3 = 0; 8 > r3; ++r3) n2(v4, p4 + r3 * t5.B, h4, l4 + 32 * r3, 8), n2(b4, y4 + r3 * t5.B, f4, d4 + 32 * r3, 8);
}
}
function Br(t5, n3, i3, a3, o3, s3, c4, u4, h4) {
var l4 = [0], f4 = [0], d4 = 0, p4 = null != h4 ? h4.kd : 0, g4 = null != h4 ? h4 : new nr();
if (null == t5 || 12 > i3) return 7;
g4.data = t5, g4.w = n3, g4.ha = i3, n3 = [n3], i3 = [i3], g4.gb = [g4.gb];
t: {
var m4 = n3, b4 = i3, y4 = g4.gb;
if (e2(null != t5), e2(null != b4), e2(null != y4), y4[0] = 0, 12 <= b4[0] && !r2(t5, m4[0], "RIFF")) {
if (r2(t5, m4[0] + 8, "WEBP")) {
y4 = 3;
break t;
}
var w4 = j2(t5, m4[0] + 4);
if (12 > w4 || 4294967286 < w4) {
y4 = 3;
break t;
}
if (p4 && w4 > b4[0] - 8) {
y4 = 7;
break t;
}
y4[0] = w4, m4[0] += 12, b4[0] -= 12;
}
y4 = 0;
}
if (0 != y4) return y4;
for (w4 = 0 < g4.gb[0], i3 = i3[0]; ; ) {
t: {
var L4 = t5;
b4 = n3, y4 = i3;
var A7 = l4, x3 = f4, S3 = m4 = [0];
if ((k3 = d4 = [d4])[0] = 0, 8 > y4[0]) y4 = 7;
else {
if (!r2(L4, b4[0], "VP8X")) {
if (10 != j2(L4, b4[0] + 4)) {
y4 = 3;
break t;
}
if (18 > y4[0]) {
y4 = 7;
break t;
}
var _3 = j2(L4, b4[0] + 8), P3 = 1 + C2(L4, b4[0] + 12);
if (2147483648 <= P3 * (L4 = 1 + C2(L4, b4[0] + 15))) {
y4 = 3;
break t;
}
null != S3 && (S3[0] = _3), null != A7 && (A7[0] = P3), null != x3 && (x3[0] = L4), b4[0] += 18, y4[0] -= 18, k3[0] = 1;
}
y4 = 0;
}
}
if (d4 = d4[0], m4 = m4[0], 0 != y4) return y4;
if (b4 = !!(2 & m4), !w4 && d4) return 3;
if (null != s3 && (s3[0] = !!(16 & m4)), null != c4 && (c4[0] = b4), null != u4 && (u4[0] = 0), c4 = l4[0], m4 = f4[0], d4 && b4 && null == h4) {
y4 = 0;
break;
}
if (4 > i3) {
y4 = 7;
break;
}
if (w4 && d4 || !w4 && !d4 && !r2(t5, n3[0], "ALPH")) {
i3 = [i3], g4.na = [g4.na], g4.P = [g4.P], g4.Sa = [g4.Sa];
t: {
_3 = t5, y4 = n3, w4 = i3;
var k3 = g4.gb;
A7 = g4.na, x3 = g4.P, S3 = g4.Sa;
P3 = 22, e2(null != _3), e2(null != w4), L4 = y4[0];
var I3 = w4[0];
for (e2(null != A7), e2(null != S3), A7[0] = null, x3[0] = null, S3[0] = 0; ; ) {
if (y4[0] = L4, w4[0] = I3, 8 > I3) {
y4 = 7;
break t;
}
var F3 = j2(_3, L4 + 4);
if (4294967286 < F3) {
y4 = 3;
break t;
}
var O3 = 8 + F3 + 1 & -2;
if (P3 += O3, 0 < k3 && P3 > k3) {
y4 = 3;
break t;
}
if (!r2(_3, L4, "VP8 ") || !r2(_3, L4, "VP8L")) {
y4 = 0;
break t;
}
if (I3[0] < O3) {
y4 = 7;
break t;
}
r2(_3, L4, "ALPH") || (A7[0] = _3, x3[0] = L4 + 8, S3[0] = F3), L4 += O3, I3 -= O3;
}
}
if (i3 = i3[0], g4.na = g4.na[0], g4.P = g4.P[0], g4.Sa = g4.Sa[0], 0 != y4) break;
}
i3 = [i3], g4.Ja = [g4.Ja], g4.xa = [g4.xa];
t: if (k3 = t5, y4 = n3, w4 = i3, A7 = g4.gb[0], x3 = g4.Ja, S3 = g4.xa, _3 = y4[0], L4 = !r2(k3, _3, "VP8 "), P3 = !r2(k3, _3, "VP8L"), e2(null != k3), e2(null != w4), e2(null != x3), e2(null != S3), 8 > w4[0]) y4 = 7;
else {
if (L4 || P3) {
if (k3 = j2(k3, _3 + 4), 12 <= A7 && k3 > A7 - 12) {
y4 = 3;
break t;
}
if (p4 && k3 > w4[0] - 8) {
y4 = 7;
break t;
}
x3[0] = k3, y4[0] += 8, w4[0] -= 8, S3[0] = P3;
} else S3[0] = 5 <= w4[0] && 47 == k3[_3 + 0] && !(k3[_3 + 4] >> 5), x3[0] = w4[0];
y4 = 0;
}
if (i3 = i3[0], g4.Ja = g4.Ja[0], g4.xa = g4.xa[0], n3 = n3[0], 0 != y4) break;
if (4294967286 < g4.Ja) return 3;
if (null == u4 || b4 || (u4[0] = g4.xa ? 2 : 1), c4 = [c4], m4 = [m4], g4.xa) {
if (5 > i3) {
y4 = 7;
break;
}
u4 = c4, p4 = m4, b4 = s3, null == t5 || 5 > i3 ? t5 = 0 : 5 <= i3 && 47 == t5[n3 + 0] && !(t5[n3 + 4] >> 5) ? (w4 = [0], k3 = [0], A7 = [0], v3(x3 = new N3(), t5, n3, i3), gt2(x3, w4, k3, A7) ? (null != u4 && (u4[0] = w4[0]), null != p4 && (p4[0] = k3[0]), null != b4 && (b4[0] = A7[0]), t5 = 1) : t5 = 0) : t5 = 0;
} else {
if (10 > i3) {
y4 = 7;
break;
}
u4 = m4, null == t5 || 10 > i3 || !Xt2(t5, n3 + 3, i3 - 3) ? t5 = 0 : (p4 = t5[n3 + 0] | t5[n3 + 1] << 8 | t5[n3 + 2] << 16, b4 = 16383 & (t5[n3 + 7] << 8 | t5[n3 + 6]), t5 = 16383 & (t5[n3 + 9] << 8 | t5[n3 + 8]), 1 & p4 || 3 < (p4 >> 1 & 7) || !(p4 >> 4 & 1) || p4 >> 5 >= g4.Ja || !b4 || !t5 ? t5 = 0 : (c4 && (c4[0] = b4), u4 && (u4[0] = t5), t5 = 1));
}
if (!t5) return 3;
if (c4 = c4[0], m4 = m4[0], d4 && (l4[0] != c4 || f4[0] != m4)) return 3;
null != h4 && (h4[0] = g4, h4.offset = n3 - h4.w, e2(4294967286 > n3 - h4.w), e2(h4.offset == h4.ha - i3));
break;
}
return 0 == y4 || 7 == y4 && d4 && null == h4 ? (null != s3 && (s3[0] |= null != g4.na && 0 < g4.na.length), null != a3 && (a3[0] = c4), null != o3 && (o3[0] = m4), 0) : y4;
}
function Mr(t5, e3, r3) {
var n3 = e3.width, i3 = e3.height, a3 = 0, o3 = 0, s3 = n3, c4 = i3;
if (e3.Da = null != t5 && 0 < t5.Da, e3.Da && (s3 = t5.cd, c4 = t5.bd, a3 = t5.v, o3 = t5.j, 11 > r3 || (a3 &= -2, o3 &= -2), 0 > a3 || 0 > o3 || 0 >= s3 || 0 >= c4 || a3 + s3 > n3 || o3 + c4 > i3)) return 0;
if (e3.v = a3, e3.j = o3, e3.va = a3 + s3, e3.o = o3 + c4, e3.U = s3, e3.T = c4, e3.da = null != t5 && 0 < t5.da, e3.da) {
if (!E2(s3, c4, r3 = [t5.ib], a3 = [t5.hb])) return 0;
e3.ib = r3[0], e3.hb = a3[0];
}
return e3.ob = null != t5 && t5.ob, e3.Kb = null == t5 || !t5.Sd, e3.da && (e3.ob = e3.ib < 3 * n3 / 4 && e3.hb < 3 * i3 / 4, e3.Kb = 0), 1;
}
function Er(t5) {
if (null == t5) return 2;
if (11 > t5.S) {
var e3 = t5.f.RGBA;
e3.fb += (t5.height - 1) * e3.A, e3.A = -e3.A;
} else e3 = t5.f.kb, t5 = t5.height, e3.O += (t5 - 1) * e3.fa, e3.fa = -e3.fa, e3.N += (t5 - 1 >> 1) * e3.Ab, e3.Ab = -e3.Ab, e3.W += (t5 - 1 >> 1) * e3.Db, e3.Db = -e3.Db, null != e3.F && (e3.J += (t5 - 1) * e3.lb, e3.lb = -e3.lb);
return 0;
}
function qr(t5, e3, r3, n3) {
if (null == n3 || 0 >= t5 || 0 >= e3) return 2;
if (null != r3) {
if (r3.Da) {
var i3 = r3.cd, o3 = r3.bd, s3 = -2 & r3.v, c4 = -2 & r3.j;
if (0 > s3 || 0 > c4 || 0 >= i3 || 0 >= o3 || s3 + i3 > t5 || c4 + o3 > e3) return 2;
t5 = i3, e3 = o3;
}
if (r3.da) {
if (!E2(t5, e3, i3 = [r3.ib], o3 = [r3.hb])) return 2;
t5 = i3[0], e3 = o3[0];
}
}
n3.width = t5, n3.height = e3;
t: {
var u4 = n3.width, h4 = n3.height;
if (t5 = n3.S, 0 >= u4 || 0 >= h4 || !(t5 >= En && 13 > t5)) t5 = 2;
else {
if (0 >= n3.Rd && null == n3.sd) {
s3 = o3 = i3 = e3 = 0;
var l4 = (c4 = u4 * zi[t5]) * h4;
if (11 > t5 || (o3 = (h4 + 1) / 2 * (e3 = (u4 + 1) / 2), 12 == t5 && (s3 = (i3 = u4) * h4)), null == (h4 = a2(l4 + 2 * o3 + s3))) {
t5 = 1;
break t;
}
n3.sd = h4, 11 > t5 ? ((u4 = n3.f.RGBA).eb = h4, u4.fb = 0, u4.A = c4, u4.size = l4) : ((u4 = n3.f.kb).y = h4, u4.O = 0, u4.fa = c4, u4.Fd = l4, u4.f = h4, u4.N = 0 + l4, u4.Ab = e3, u4.Cd = o3, u4.ea = h4, u4.W = 0 + l4 + o3, u4.Db = e3, u4.Ed = o3, 12 == t5 && (u4.F = h4, u4.J = 0 + l4 + 2 * o3), u4.Tc = s3, u4.lb = i3);
}
if (e3 = 1, i3 = n3.S, o3 = n3.width, s3 = n3.height, i3 >= En && 13 > i3) if (11 > i3) t5 = n3.f.RGBA, e3 &= (c4 = Math.abs(t5.A)) * (s3 - 1) + o3 <= t5.size, e3 &= c4 >= o3 * zi[i3], e3 &= null != t5.eb;
else {
t5 = n3.f.kb, c4 = (o3 + 1) / 2, l4 = (s3 + 1) / 2, u4 = Math.abs(t5.fa);
h4 = Math.abs(t5.Ab);
var f4 = Math.abs(t5.Db), d4 = Math.abs(t5.lb), p4 = d4 * (s3 - 1) + o3;
e3 &= u4 * (s3 - 1) + o3 <= t5.Fd, e3 &= h4 * (l4 - 1) + c4 <= t5.Cd, e3 = (e3 &= f4 * (l4 - 1) + c4 <= t5.Ed) & u4 >= o3 & h4 >= c4 & f4 >= c4, e3 &= null != t5.y, e3 &= null != t5.f, e3 &= null != t5.ea, 12 == i3 && (e3 &= d4 >= o3, e3 &= p4 <= t5.Tc, e3 &= null != t5.F);
}
else e3 = 0;
t5 = e3 ? 0 : 2;
}
}
return 0 != t5 || null != r3 && r3.fd && (t5 = Er(n3)), t5;
}
var Dr = 64, Rr = [0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215], Tr = 24, Ur = 32, zr = 8, Hr = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7];
R2("Predictor0", "PredictorAdd0"), t4.Predictor0 = function() {
return 4278190080;
}, t4.Predictor1 = function(t5) {
return t5;
}, t4.Predictor2 = function(t5, e3, r3) {
return e3[r3 + 0];
}, t4.Predictor3 = function(t5, e3, r3) {
return e3[r3 + 1];
}, t4.Predictor4 = function(t5, e3, r3) {
return e3[r3 - 1];
}, t4.Predictor5 = function(t5, e3, r3) {
return U2(U2(t5, e3[r3 + 1]), e3[r3 + 0]);
}, t4.Predictor6 = function(t5, e3, r3) {
return U2(t5, e3[r3 - 1]);
}, t4.Predictor7 = function(t5, e3, r3) {
return U2(t5, e3[r3 + 0]);
}, t4.Predictor8 = function(t5, e3, r3) {
return U2(e3[r3 - 1], e3[r3 + 0]);
}, t4.Predictor9 = function(t5, e3, r3) {
return U2(e3[r3 + 0], e3[r3 + 1]);
}, t4.Predictor10 = function(t5, e3, r3) {
return U2(U2(t5, e3[r3 - 1]), U2(e3[r3 + 0], e3[r3 + 1]));
}, t4.Predictor11 = function(t5, e3, r3) {
var n3 = e3[r3 + 0];
return 0 >= W2(n3 >> 24 & 255, t5 >> 24 & 255, (e3 = e3[r3 - 1]) >> 24 & 255) + W2(n3 >> 16 & 255, t5 >> 16 & 255, e3 >> 16 & 255) + W2(n3 >> 8 & 255, t5 >> 8 & 255, e3 >> 8 & 255) + W2(255 & n3, 255 & t5, 255 & e3) ? n3 : t5;
}, t4.Predictor12 = function(t5, e3, r3) {
var n3 = e3[r3 + 0];
return (z2((t5 >> 24 & 255) + (n3 >> 24 & 255) - ((e3 = e3[r3 - 1]) >> 24 & 255)) << 24 | z2((t5 >> 16 & 255) + (n3 >> 16 & 255) - (e3 >> 16 & 255)) << 16 | z2((t5 >> 8 & 255) + (n3 >> 8 & 255) - (e3 >> 8 & 255)) << 8 | z2((255 & t5) + (255 & n3) - (255 & e3))) >>> 0;
}, t4.Predictor13 = function(t5, e3, r3) {
var n3 = e3[r3 - 1];
return (H4((t5 = U2(t5, e3[r3 + 0])) >> 24 & 255, n3 >> 24 & 255) << 24 | H4(t5 >> 16 & 255, n3 >> 16 & 255) << 16 | H4(t5 >> 8 & 255, n3 >> 8 & 255) << 8 | H4(t5 >> 0 & 255, n3 >> 0 & 255)) >>> 0;
};
var Wr = t4.PredictorAdd0;
t4.PredictorAdd1 = V2, R2("Predictor2", "PredictorAdd2"), R2("Predictor3", "PredictorAdd3"), R2("Predictor4", "PredictorAdd4"), R2("Predictor5", "PredictorAdd5"), R2("Predictor6", "PredictorAdd6"), R2("Predictor7", "PredictorAdd7"), R2("Predictor8", "PredictorAdd8"), R2("Predictor9", "PredictorAdd9"), R2("Predictor10", "PredictorAdd10"), R2("Predictor11", "PredictorAdd11"), R2("Predictor12", "PredictorAdd12"), R2("Predictor13", "PredictorAdd13");
var Vr = t4.PredictorAdd2;
X2("ColorIndexInverseTransform", "MapARGB", "32b", function(t5) {
return t5 >> 8 & 255;
}, function(t5) {
return t5;
}), X2("VP8LColorIndexInverseTransformAlpha", "MapAlpha", "8b", function(t5) {
return t5;
}, function(t5) {
return t5 >> 8 & 255;
});
var Gr, Yr = t4.ColorIndexInverseTransform, Jr = t4.MapARGB, Xr = t4.VP8LColorIndexInverseTransformAlpha, Kr = t4.MapAlpha, Zr = t4.VP8LPredictorsAdd = [];
Zr.length = 16, (t4.VP8LPredictors = []).length = 16, (t4.VP8LPredictorsAdd_C = []).length = 16, (t4.VP8LPredictors_C = []).length = 16;
var $r, Qr, tn, en, rn, nn, an, on, sn, cn, un, hn, ln2, fn, dn, pn, gn, mn, vn, bn, yn, wn, Nn, Ln, An, xn, Sn, _n, Pn = a2(511), kn = a2(2041), In = a2(225), Fn = a2(767), Cn = 0, jn = kn, On = In, Bn = Fn, Mn = Pn, En = 0, qn = 1, Dn = 2, Rn = 3, Tn = 4, Un = 5, zn = 6, Hn = 7, Wn = 8, Vn = 9, Gn = 10, Yn = [2, 3, 7], Jn = [3, 3, 11], Xn = [280, 256, 256, 256, 40], Kn = [0, 1, 1, 1, 0], Zn = [17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], $n = [24, 7, 23, 25, 40, 6, 39, 41, 22, 26, 38, 42, 56, 5, 55, 57, 21, 27, 54, 58, 37, 43, 72, 4, 71, 73, 20, 28, 53, 59, 70, 74, 36, 44, 88, 69, 75, 52, 60, 3, 87, 89, 19, 29, 86, 90, 35, 45, 68, 76, 85, 91, 51, 61, 104, 2, 103, 105, 18, 30, 102, 106, 34, 46, 84, 92, 67, 77, 101, 107, 50, 62, 120, 1, 119, 121, 83, 93, 17, 31, 100, 108, 66, 78, 118, 122, 33, 47, 117, 123, 49, 63, 99, 109, 82, 94, 0, 116, 124, 65, 79, 16, 32, 98, 110, 48, 115, 125, 81, 95, 64, 114, 126, 97, 111, 80, 113, 127, 96, 112], Qn = [2954, 2956, 2958, 2962, 2970, 2986, 3018, 3082, 3212, 3468, 3980, 5004], ti = 8, ei = [4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108, 110, 112, 114, 116, 118, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 145, 148, 151, 154, 157], ri = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 161, 164, 167, 170, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 217, 221, 225, 229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284], ni = null, ii = [[173, 148, 140, 0], [176, 155, 140, 135, 0], [180, 157, 141, 134, 130, 0], [254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0]], ai = [0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15], oi = [-0, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9], si = [[[[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]], [[253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128], [189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128], [106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128]], [[1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128], [181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128], [78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128]], [[1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128], [184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128], [77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128]], [[1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128], [170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128], [37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128]], [[1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128], [207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128], [102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128]], [[1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128], [177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128], [80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128]], [[1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], [246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], [255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]]], [[[198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62], [131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1], [68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128]], [[1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128], [184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128], [81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128]], [[1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128], [99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128], [23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128]], [[1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128], [109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128], [44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128]], [[1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128], [94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128], [22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128]], [[1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128], [124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128], [35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128]], [[1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128], [121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128], [45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128]], [[1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128], [203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128], [137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128]]], [[[253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128], [175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128], [73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128]], [[1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128], [239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128], [155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128]], [[1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128], [201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128], [69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128]], [[1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128], [223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128], [141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128]], [[1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128], [190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128], [149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]], [[1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128], [247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128], [240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128]], [[1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128], [213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128], [55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128]], [[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128], [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]]], [[[202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255], [126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128], [61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128]], [[1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128], [166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128], [39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128]], [[1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128], [124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128], [24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128]], [[1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128], [149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128], [28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128]], [[1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128], [123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128], [20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128]], [[1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128], [168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128], [47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128]], [[1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128], [141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128], [42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128]], [[1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], [244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128], [238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]]]], ci = [[[231, 120, 48, 89, 115, 113, 120, 152, 112], [152, 179, 64, 126, 170, 118, 46, 70, 95], [175, 69, 143, 80, 85, 82, 72, 155, 103], [56, 58, 10, 171, 218, 189, 17, 13, 152], [114, 26, 17, 163, 44, 195, 21, 10, 173], [121, 24, 80, 195, 26, 62, 44, 64, 85], [144, 71, 10, 38, 171, 213, 144, 34, 26], [170, 46, 55, 19, 136, 160, 33, 206, 71], [63, 20, 8, 114, 114, 208, 12, 9, 226], [81, 40, 11, 96, 182, 84, 29, 16, 36]], [[134, 183, 89, 137, 98, 101, 106, 165, 148], [72, 187, 100, 130, 157, 111, 32, 75, 80], [66, 102, 167, 99, 74, 62, 40, 234, 128], [41, 53, 9, 178, 241, 141, 26, 8, 107], [74, 43, 26, 146, 73, 166, 49, 23, 157], [65, 38, 105, 160, 51, 52, 31, 115, 128], [104, 79, 12, 27, 217, 255, 87, 17, 7], [87, 68, 71, 44, 114, 51, 15, 186, 23], [47, 41, 14, 110, 182, 183, 21, 17, 194], [66, 45, 25, 102, 197, 189, 23, 18, 22]], [[88, 88, 147, 150, 42, 46, 45, 196, 205], [43, 97, 183, 117, 85, 38, 35, 179, 61], [39, 53, 200, 87, 26, 21, 43, 232, 171], [56, 34, 51, 104, 114, 102, 29, 93, 77], [39, 28, 85, 171, 58, 165, 90, 98, 64], [34, 22, 116, 206, 23, 34, 43, 166, 73], [107, 54, 32, 26, 51, 1, 81, 43, 31], [68, 25, 106, 22, 64, 171, 36, 225, 114], [34, 19, 21, 102, 132, 188, 16, 76, 124], [62, 18, 78, 95, 85, 57, 50, 48, 51]], [[193, 101, 35, 159, 215, 111, 89, 46, 111], [60, 148, 31, 172, 219, 228, 21, 18, 111], [112, 113, 77, 85, 179, 255, 38, 120, 114], [40, 42, 1, 196, 245, 209, 10, 25, 109], [88, 43, 29, 140, 166, 213, 37, 43, 154], [61, 63, 30, 155, 67, 45, 68, 1, 209], [100, 80, 8, 43, 154, 1, 51, 26, 71], [142, 78, 78, 16, 255, 128, 34, 197, 171], [41, 40, 5, 102, 211, 183, 4, 1, 221], [51, 50, 17, 168, 209, 192, 23, 25, 82]], [[138, 31, 36, 171, 27, 166, 38, 44, 229], [67, 87, 58, 169, 82, 115, 26, 59, 179], [63, 59, 90, 180, 59, 166, 93, 73, 154], [40, 40, 21, 116, 143, 209, 34, 39, 175], [47, 15, 16, 183, 34, 223, 49, 45, 183], [46, 17, 33, 183, 6, 98, 15, 32, 183], [57, 46, 22, 24, 128, 1, 54, 17, 37], [65, 32, 73, 115, 28, 128, 23, 128, 205], [40, 3, 9, 115, 51, 192, 18, 6, 223], [87, 37, 9, 115, 59, 77, 64, 21, 47]], [[104, 55, 44, 218, 9, 54, 53, 130, 226], [64, 90, 70, 205, 40, 41, 23, 26, 57], [54, 57, 112, 184, 5, 41, 38, 166, 213], [30, 34, 26, 133, 152, 116, 10, 32, 134], [39, 19, 53, 221, 26, 114, 32, 73, 255], [31, 9, 65, 234, 2, 15, 1, 118, 73], [75, 32, 12, 51, 192, 255, 160, 43, 51], [88, 31, 35, 67, 102, 85, 55, 186, 85], [56, 21, 23, 111, 59, 205, 45, 37, 192], [55, 38, 70, 124, 73, 102, 1, 34, 98]], [[125, 98, 42, 88, 104, 85, 117, 175, 82], [95, 84, 53, 89, 128, 100, 113, 101, 45], [75, 79, 123, 47, 51, 128, 81, 171, 1], [57, 17, 5, 71, 102, 57, 53, 41, 49], [38, 33, 13, 121, 57, 73, 26, 1, 85], [41, 10, 67, 138, 77, 110, 90, 47, 114], [115, 21, 2, 10, 102, 255, 166, 23, 6], [101, 29, 16, 10, 85, 128, 101, 196, 26], [57, 18, 10, 102, 102, 213, 34, 20, 43], [117, 20, 15, 36, 163, 128, 68, 1, 26]], [[102, 61, 71, 37, 34, 53, 31, 243, 192], [69, 60, 71, 38, 73, 119, 28, 222, 37], [68, 45, 128, 34, 1, 47, 11, 245, 171], [62, 17, 19, 70, 146, 85, 55, 62, 70], [37, 43, 37, 154, 100, 163, 85, 160, 1], [63, 9, 92, 136, 28, 64, 32, 201, 85], [75, 15, 9, 9, 64, 255, 184, 119, 16], [86, 6, 28, 5, 64, 255, 25, 248, 1], [56, 8, 17, 132, 137, 255, 55, 116, 128], [58, 15, 20, 82, 135, 57, 26, 121, 40]], [[164, 50, 31, 137, 154, 133, 25, 35, 218], [51, 103, 44, 131, 131, 123, 31, 6, 158], [86, 40, 64, 135, 148, 224, 45, 183, 128], [22, 26, 17, 131, 240, 154, 14, 1, 209], [45, 16, 21, 91, 64, 222, 7, 1, 197], [56, 21, 39, 155, 60, 138, 23, 102, 213], [83, 12, 13, 54, 192, 255, 68, 47, 28], [85, 26, 85, 85, 128, 128, 32, 146, 171], [18, 11, 7, 63, 144, 171, 4, 4, 246], [35, 27, 10, 146, 174, 171, 12, 26, 128]], [[190, 80, 35, 99, 180, 80, 126, 54, 45], [85, 126, 47, 87, 176, 51, 41, 20, 32], [101, 75, 128, 139, 118, 146, 116, 128, 85], [56, 41, 15, 176, 236, 85, 37, 9, 62], [71, 30, 17, 119, 118, 255, 17, 18, 138], [101, 38, 60, 138, 55, 70, 43, 26, 142], [146, 36, 19, 30, 171, 255, 97, 27, 20], [138, 45, 61, 62, 219, 1, 81, 188, 64], [32, 41, 20, 117, 151, 142, 20, 21, 163], [112, 19, 12, 61, 195, 128, 48, 4, 24]]], ui = [[[[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255], [223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255], [249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255], [234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255], [239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255], [251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255], [250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255], [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]]], [[[217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255], [234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255]], [[255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], [223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255]], [[255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255], [249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255], [247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255], [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]]], [[[186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255], [234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255], [251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255]], [[255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255]], [[255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], [254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]]], [[[248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255], [248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255]], [[255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255], [246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255], [252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255]], [[255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255], [248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255], [253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255]], [[255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255], [245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255], [253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255], [252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255], [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255], [249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255], [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]], [[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]]]], hi = [0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0], li = [], fi = [], di = [], pi = 1, gi = 2, mi = [], vi = [];
vr("UpsampleRgbLinePair", Ar, 3), vr("UpsampleBgrLinePair", xr, 3), vr("UpsampleRgbaLinePair", Ir, 4), vr("UpsampleBgraLinePair", kr, 4), vr("UpsampleArgbLinePair", Pr, 4), vr("UpsampleRgba4444LinePair", _r, 2), vr("UpsampleRgb565LinePair", Sr, 2);
var bi = t4.UpsampleRgbLinePair, yi = t4.UpsampleBgrLinePair, wi = t4.UpsampleRgbaLinePair, Ni = t4.UpsampleBgraLinePair, Li = t4.UpsampleArgbLinePair, Ai = t4.UpsampleRgba4444LinePair, xi = t4.UpsampleRgb565LinePair, Si = 16, _i = 1 << Si - 1, Pi = -227, ki = 482, Ii = 6, Fi = (256 << Ii) - 1, Ci = 0, ji = a2(256), Oi = a2(256), Bi = a2(256), Mi = a2(256), Ei = a2(ki - Pi), qi = a2(ki - Pi);
Fr("YuvToRgbRow", Ar, 3), Fr("YuvToBgrRow", xr, 3), Fr("YuvToRgbaRow", Ir, 4), Fr("YuvToBgraRow", kr, 4), Fr("YuvToArgbRow", Pr, 4), Fr("YuvToRgba4444Row", _r, 2), Fr("YuvToRgb565Row", Sr, 2);
var Di = [0, 4, 8, 12, 128, 132, 136, 140, 256, 260, 264, 268, 384, 388, 392, 396], Ri = [0, 2, 8], Ti = [8, 7, 6, 4, 4, 2, 2, 2, 1, 1, 1, 1], Ui = 1;
this.WebPDecodeRGBA = function(t5, r3, n3, i3, a3) {
var o3 = qn, s3 = new rr(), c4 = new ot2();
s3.ba = c4, c4.S = o3, c4.width = [c4.width], c4.height = [c4.height];
var u4 = c4.width, h4 = c4.height, l4 = new st2();
if (null == l4 || null == t5) var f4 = 2;
else e2(null != l4), f4 = Br(t5, r3, n3, l4.width, l4.height, l4.Pd, l4.Qd, l4.format, null);
if (0 != f4 ? u4 = 0 : (null != u4 && (u4[0] = l4.width[0]), null != h4 && (h4[0] = l4.height[0]), u4 = 1), u4) {
c4.width = c4.width[0], c4.height = c4.height[0], null != i3 && (i3[0] = c4.width), null != a3 && (a3[0] = c4.height);
t: {
if (i3 = new Gt2(), (a3 = new nr()).data = t5, a3.w = r3, a3.ha = n3, a3.kd = 1, r3 = [0], e2(null != a3), (0 == (t5 = Br(a3.data, a3.w, a3.ha, null, null, null, r3, null, a3)) || 7 == t5) && r3[0] && (t5 = 4), 0 == (r3 = t5)) {
if (e2(null != s3), i3.data = a3.data, i3.w = a3.w + a3.offset, i3.ha = a3.ha - a3.offset, i3.put = dt2, i3.ac = ft2, i3.bc = pt2, i3.ma = s3, a3.xa) {
if (null == (t5 = kt2())) {
s3 = 1;
break t;
}
if (function(t6, r4) {
var n4 = [0], i4 = [0], a4 = [0];
e: for (; ; ) {
if (null == t6) return 0;
if (null == r4) return t6.a = 2, 0;
if (t6.l = r4, t6.a = 0, v3(t6.m, r4.data, r4.w, r4.ha), !gt2(t6.m, n4, i4, a4)) {
t6.a = 3;
break e;
}
if (t6.xb = gi, r4.width = n4[0], r4.height = i4[0], !It2(n4[0], i4[0], 1, t6, null)) break e;
return 1;
}
return e2(0 != t6.a), 0;
}(t5, i3)) {
if (i3 = 0 == (r3 = qr(i3.width, i3.height, s3.Oa, s3.ba))) {
e: {
i3 = t5;
r: for (; ; ) {
if (null == i3) {
i3 = 0;
break e;
}
if (e2(null != i3.s.yc), e2(null != i3.s.Ya), e2(0 < i3.s.Wb), e2(null != (n3 = i3.l)), e2(null != (a3 = n3.ma)), 0 != i3.xb) {
if (i3.ca = a3.ba, i3.tb = a3.tb, e2(null != i3.ca), !Mr(a3.Oa, n3, Rn)) {
i3.a = 2;
break r;
}
if (!Ft2(i3, n3.width)) break r;
if (n3.da) break r;
if ((n3.da || nt2(i3.ca.S)) && mr(), 11 > i3.ca.S || (alert("todo:WebPInitConvertARGBToYUV"), null != i3.ca.f.kb.F && mr()), i3.Pb && 0 < i3.s.ua && null == i3.s.vb.X && !O2(i3.s.vb, i3.s.Wa.Xa)) {
i3.a = 1;
break r;
}
i3.xb = 0;
}
if (!_t2(i3, i3.V, i3.Ba, i3.c, i3.i, n3.o, Lt2)) break r;
a3.Dc = i3.Ma, i3 = 1;
break e;
}
e2(0 != i3.a), i3 = 0;
}
i3 = !i3;
}
i3 && (r3 = t5.a);
} else r3 = t5.a;
} else {
if (null == (t5 = new Yt2())) {
s3 = 1;
break t;
}
if (t5.Fa = a3.na, t5.P = a3.P, t5.qc = a3.Sa, Kt2(t5, i3)) {
if (0 == (r3 = qr(i3.width, i3.height, s3.Oa, s3.ba))) {
if (t5.Aa = 0, n3 = s3.Oa, e2(null != (a3 = t5)), null != n3) {
if (0 < (u4 = 0 > (u4 = n3.Md) ? 0 : 100 < u4 ? 255 : 255 * u4 / 100)) {
for (h4 = l4 = 0; 4 > h4; ++h4) 12 > (f4 = a3.pb[h4]).lc && (f4.ia = u4 * Ti[0 > f4.lc ? 0 : f4.lc] >> 3), l4 |= f4.ia;
l4 && (alert("todo:VP8InitRandom"), a3.ia = 1);
}
a3.Ga = n3.Id, 100 < a3.Ga ? a3.Ga = 100 : 0 > a3.Ga && (a3.Ga = 0);
}
Qt2(t5, i3) || (r3 = t5.a);
}
} else r3 = t5.a;
}
0 == r3 && null != s3.Oa && s3.Oa.fd && (r3 = Er(s3.ba));
}
s3 = r3;
}
o3 = 0 != s3 ? null : 11 > o3 ? c4.f.RGBA.eb : c4.f.kb.y;
} else o3 = null;
return o3;
};
var zi = [3, 4, 3, 4, 4, 2, 2, 4, 4, 4, 2, 1, 1];
};
function u2(t4, e3) {
for (var r3 = "", n3 = 0; n3 < 4; n3++) r3 += String.fromCharCode(t4[e3++]);
return r3;
}
function h2(t4, e3) {
return (t4[e3 + 0] << 0 | t4[e3 + 1] << 8 | t4[e3 + 2] << 16) >>> 0;
}
function l2(t4, e3) {
return (t4[e3 + 0] << 0 | t4[e3 + 1] << 8 | t4[e3 + 2] << 16 | t4[e3 + 3] << 24) >>> 0;
}
new c2();
var f2 = [0], d2 = [0], p2 = [], g2 = new c2(), m2 = t3, v2 = function(t4, e3) {
var r3 = {}, n3 = 0, i3 = false, a3 = 0, o3 = 0;
if (r3.frames = [], !/** @license
* Copyright (c) 2017 Dominik Homberger
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
https://webpjs.appspot.com
WebPRiffParser dominikhlbg@gmail.com
*/
function(t5, e4, r4, n4) {
for (var i4 = 0; i4 < n4; i4++) if (t5[e4 + i4] != r4.charCodeAt(i4)) return true;
return false;
}(t4, e3, "RIFF", 4)) {
var s3, c3;
l2(t4, e3 += 4);
for (e3 += 8; e3 < t4.length; ) {
var f3 = u2(t4, e3), d3 = l2(t4, e3 += 4);
e3 += 4;
var p3 = d3 + (1 & d3);
switch (f3) {
case "VP8 ":
case "VP8L":
void 0 === r3.frames[n3] && (r3.frames[n3] = {});
(v3 = r3.frames[n3]).src_off = i3 ? o3 : e3 - 8, v3.src_size = a3 + d3 + 8, n3++, i3 && (i3 = false, a3 = 0, o3 = 0);
break;
case "VP8X":
(v3 = r3.header = {}).feature_flags = t4[e3];
var g3 = e3 + 4;
v3.canvas_width = 1 + h2(t4, g3);
g3 += 3;
v3.canvas_height = 1 + h2(t4, g3);
g3 += 3;
break;
case "ALPH":
i3 = true, a3 = p3 + 8, o3 = e3 - 8;
break;
case "ANIM":
(v3 = r3.header).bgcolor = l2(t4, e3);
g3 = e3 + 4;
v3.loop_count = (s3 = t4)[(c3 = g3) + 0] << 0 | s3[c3 + 1] << 8;
g3 += 2;
break;
case "ANMF":
var m3, v3;
(v3 = r3.frames[n3] = {}).offset_x = 2 * h2(t4, e3), e3 += 3, v3.offset_y = 2 * h2(t4, e3), e3 += 3, v3.width = 1 + h2(t4, e3), e3 += 3, v3.height = 1 + h2(t4, e3), e3 += 3, v3.duration = h2(t4, e3), e3 += 3, m3 = t4[e3++], v3.dispose = 1 & m3, v3.blend = m3 >> 1 & 1;
}
"ANMF" != f3 && (e3 += p3);
}
return r3;
}
}(m2, 0);
v2.response = m2, v2.rgbaoutput = true, v2.dataurl = false;
var b2 = v2.header ? v2.header : null, y2 = v2.frames ? v2.frames : null;
if (b2) {
b2.loop_counter = b2.loop_count, f2 = [b2.canvas_height], d2 = [b2.canvas_width];
for (var w2 = 0; w2 < y2.length && 0 != y2[w2].blend; w2++) ;
}
var N2 = y2[0], L2 = g2.WebPDecodeRGBA(m2, N2.src_off, N2.src_size, d2, f2);
N2.rgba = L2, N2.imgwidth = d2[0], N2.imgheight = f2[0];
for (var A5 = 0; A5 < d2[0] * f2[0] * 4; A5++) p2[A5] = L2[A5];
return this.width = d2, this.height = f2, this.data = p2, this;
}
!function(t3) {
var r2 = function() {
return "function" == typeof zlibSync;
}, n2 = function(r3, n3, a3, h3) {
var l3 = 4, f3 = s2;
switch (h3) {
case t3.image_compression.FAST:
l3 = 1, f3 = o2;
break;
case t3.image_compression.MEDIUM:
l3 = 6, f3 = c2;
break;
case t3.image_compression.SLOW:
l3 = 9, f3 = u2;
}
r3 = i2(r3, n3, a3, f3);
var d2 = zlibSync(r3, { level: l3 });
return t3.__addimage__.arrayBufferToBinaryString(d2);
}, i2 = function(t4, e2, r3, n3) {
for (var i3, a3, o3, s3 = t4.length / e2, c3 = new Uint8Array(t4.length + s3), u3 = l2(), h3 = 0; h3 < s3; h3 += 1) {
if (o3 = h3 * e2, i3 = t4.subarray(o3, o3 + e2), n3) c3.set(n3(i3, r3, a3), o3 + h3);
else {
for (var d2, p2 = u3.length, g2 = []; d2 < p2; d2 += 1) g2[d2] = u3[d2](i3, r3, a3);
var m2 = f2(g2.concat());
c3.set(g2[m2], o3 + h3);
}
a3 = i3;
}
return c3;
}, a2 = function(t4) {
var e2 = Array.apply([], t4);
return e2.unshift(0), e2;
}, o2 = function(t4, e2) {
var r3, n3 = [], i3 = t4.length;
n3[0] = 1;
for (var a3 = 0; a3 < i3; a3 += 1) r3 = t4[a3 - e2] || 0, n3[a3 + 1] = t4[a3] - r3 + 256 & 255;
return n3;
}, s2 = function(t4, e2, r3) {
var n3, i3 = [], a3 = t4.length;
i3[0] = 2;
for (var o3 = 0; o3 < a3; o3 += 1) n3 = r3 && r3[o3] || 0, i3[o3 + 1] = t4[o3] - n3 + 256 & 255;
return i3;
}, c2 = function(t4, e2, r3) {
var n3, i3, a3 = [], o3 = t4.length;
a3[0] = 3;
for (var s3 = 0; s3 < o3; s3 += 1) n3 = t4[s3 - e2] || 0, i3 = r3 && r3[s3] || 0, a3[s3 + 1] = t4[s3] + 256 - (n3 + i3 >>> 1) & 255;
return a3;
}, u2 = function(t4, e2, r3) {
var n3, i3, a3, o3, s3 = [], c3 = t4.length;
s3[0] = 4;
for (var u3 = 0; u3 < c3; u3 += 1) n3 = t4[u3 - e2] || 0, i3 = r3 && r3[u3] || 0, a3 = r3 && r3[u3 - e2] || 0, o3 = h2(n3, i3, a3), s3[u3 + 1] = t4[u3] - o3 + 256 & 255;
return s3;
}, h2 = function(t4, e2, r3) {
if (t4 === e2 && e2 === r3) return t4;
var n3 = Math.abs(e2 - r3), i3 = Math.abs(t4 - r3), a3 = Math.abs(t4 + e2 - r3 - r3);
return n3 <= i3 && n3 <= a3 ? t4 : i3 <= a3 ? e2 : r3;
}, l2 = function() {
return [a2, o2, s2, c2, u2];
}, f2 = function(t4) {
var e2 = t4.map(function(t5) {
return t5.reduce(function(t6, e3) {
return t6 + Math.abs(e3);
}, 0);
});
return e2.indexOf(Math.min.apply(null, e2));
};
t3.processPNG = function(e2, i3, a3, o3) {
var s3, c3, u3, h3, l3, f3, d2, p2, g2, m2, v2, b2, y2, w2, N2, L2 = this.decode.FLATE_DECODE, A5 = "";
if (this.__addimage__.isArrayBuffer(e2) && (e2 = new Uint8Array(e2)), this.__addimage__.isArrayBufferView(e2)) {
if (e2 = (u3 = new Kt(e2)).imgData, c3 = u3.bits, s3 = u3.colorSpace, l3 = u3.colors, -1 !== [4, 6].indexOf(u3.colorType)) {
if (8 === u3.bits) {
g2 = (p2 = 32 == u3.pixelBitlength ? new Uint32Array(u3.decodePixels().buffer) : 16 == u3.pixelBitlength ? new Uint16Array(u3.decodePixels().buffer) : new Uint8Array(u3.decodePixels().buffer)).length, v2 = new Uint8Array(g2 * u3.colors), m2 = new Uint8Array(g2);
var x2, S2 = u3.pixelBitlength - u3.bits;
for (w2 = 0, N2 = 0; w2 < g2; w2++) {
for (y2 = p2[w2], x2 = 0; x2 < S2; ) v2[N2++] = y2 >>> x2 & 255, x2 += u3.bits;
m2[w2] = y2 >>> x2 & 255;
}
}
if (16 === u3.bits) {
g2 = (p2 = new Uint32Array(u3.decodePixels().buffer)).length, v2 = new Uint8Array(g2 * (32 / u3.pixelBitlength) * u3.colors), m2 = new Uint8Array(g2 * (32 / u3.pixelBitlength)), b2 = u3.colors > 1, w2 = 0, N2 = 0;
for (var _2 = 0; w2 < g2; ) y2 = p2[w2++], v2[N2++] = y2 >>> 0 & 255, b2 && (v2[N2++] = y2 >>> 16 & 255, y2 = p2[w2++], v2[N2++] = y2 >>> 0 & 255), m2[_2++] = y2 >>> 16 & 255;
c3 = 8;
}
o3 !== t3.image_compression.NONE && r2() ? (e2 = n2(v2, u3.width * u3.colors, u3.colors, o3), d2 = n2(m2, u3.width, 1, o3)) : (e2 = v2, d2 = m2, L2 = void 0);
}
if (3 === u3.colorType && (s3 = this.color_spaces.INDEXED, f3 = u3.palette, u3.transparency.indexed)) {
var P2 = u3.transparency.indexed, k2 = 0;
for (w2 = 0, g2 = P2.length; w2 < g2; ++w2) k2 += P2[w2];
if ((k2 /= 255) === g2 - 1 && -1 !== P2.indexOf(0)) h3 = [P2.indexOf(0)];
else if (k2 !== g2) {
for (p2 = u3.decodePixels(), m2 = new Uint8Array(p2.length), w2 = 0, g2 = p2.length; w2 < g2; w2++) m2[w2] = P2[p2[w2]];
d2 = n2(m2, u3.width, 1);
}
}
var I2 = function(e3) {
var r3;
switch (e3) {
case t3.image_compression.FAST:
r3 = 11;
break;
case t3.image_compression.MEDIUM:
r3 = 13;
break;
case t3.image_compression.SLOW:
r3 = 14;
break;
default:
r3 = 12;
}
return r3;
}(o3);
return L2 === this.decode.FLATE_DECODE && (A5 = "/Predictor " + I2 + " "), A5 += "/Colors " + l3 + " /BitsPerComponent " + c3 + " /Columns " + u3.width, (this.__addimage__.isArrayBuffer(e2) || this.__addimage__.isArrayBufferView(e2)) && (e2 = this.__addimage__.arrayBufferToBinaryString(e2)), (d2 && this.__addimage__.isArrayBuffer(d2) || this.__addimage__.isArrayBufferView(d2)) && (d2 = this.__addimage__.arrayBufferToBinaryString(d2)), { alias: a3, data: e2, index: i3, filter: L2, decodeParameters: A5, transparency: h3, palette: f3, sMask: d2, predictor: I2, width: u3.width, height: u3.height, bitsPerComponent: c3, colorSpace: s3 };
}
};
}(E$1.API), function(t3) {
t3.processGIF89A = function(e2, r2, n2, i2) {
var a2 = new Zt(e2), o2 = a2.width, s2 = a2.height, c2 = [];
a2.decodeAndBlitFrameRGBA(0, c2);
var u2 = { data: c2, width: o2, height: s2 }, h2 = new Qt(100).encode(u2, 100);
return t3.processJPEG.call(this, h2, r2, n2, i2);
}, t3.processGIF87A = t3.processGIF89A;
}(E$1.API), te.prototype.parseHeader = function() {
if (this.fileSize = this.datav.getUint32(this.pos, true), this.pos += 4, this.reserved = this.datav.getUint32(this.pos, true), this.pos += 4, this.offset = this.datav.getUint32(this.pos, true), this.pos += 4, this.headerSize = this.datav.getUint32(this.pos, true), this.pos += 4, this.width = this.datav.getUint32(this.pos, true), this.pos += 4, this.height = this.datav.getInt32(this.pos, true), this.pos += 4, this.planes = this.datav.getUint16(this.pos, true), this.pos += 2, this.bitPP = this.datav.getUint16(this.pos, true), this.pos += 2, this.compress = this.datav.getUint32(this.pos, true), this.pos += 4, this.rawSize = this.datav.getUint32(this.pos, true), this.pos += 4, this.hr = this.datav.getUint32(this.pos, true), this.pos += 4, this.vr = this.datav.getUint32(this.pos, true), this.pos += 4, this.colors = this.datav.getUint32(this.pos, true), this.pos += 4, this.importantColors = this.datav.getUint32(this.pos, true), this.pos += 4, 16 === this.bitPP && this.is_with_alpha && (this.bitPP = 15), this.bitPP < 15) {
var t3 = 0 === this.colors ? 1 << this.bitPP : this.colors;
this.palette = new Array(t3);
for (var e2 = 0; e2 < t3; e2++) {
var r2 = this.datav.getUint8(this.pos++, true), n2 = this.datav.getUint8(this.pos++, true), i2 = this.datav.getUint8(this.pos++, true), a2 = this.datav.getUint8(this.pos++, true);
this.palette[e2] = { red: i2, green: n2, blue: r2, quad: a2 };
}
}
this.height < 0 && (this.height *= -1, this.bottom_up = false);
}, te.prototype.parseBGR = function() {
this.pos = this.offset;
try {
var t3 = "bit" + this.bitPP, e2 = this.width * this.height * 4;
this.data = new Uint8Array(e2), this[t3]();
} catch (t4) {
a$2.log("bit decode error:" + t4);
}
}, te.prototype.bit1 = function() {
var t3, e2 = Math.ceil(this.width / 8), r2 = e2 % 4;
for (t3 = this.height - 1; t3 >= 0; t3--) {
for (var n2 = this.bottom_up ? t3 : this.height - 1 - t3, i2 = 0; i2 < e2; i2++) for (var a2 = this.datav.getUint8(this.pos++, true), o2 = n2 * this.width * 4 + 8 * i2 * 4, s2 = 0; s2 < 8 && 8 * i2 + s2 < this.width; s2++) {
var c2 = this.palette[a2 >> 7 - s2 & 1];
this.data[o2 + 4 * s2] = c2.blue, this.data[o2 + 4 * s2 + 1] = c2.green, this.data[o2 + 4 * s2 + 2] = c2.red, this.data[o2 + 4 * s2 + 3] = 255;
}
0 !== r2 && (this.pos += 4 - r2);
}
}, te.prototype.bit4 = function() {
for (var t3 = Math.ceil(this.width / 2), e2 = t3 % 4, r2 = this.height - 1; r2 >= 0; r2--) {
for (var n2 = this.bottom_up ? r2 : this.height - 1 - r2, i2 = 0; i2 < t3; i2++) {
var a2 = this.datav.getUint8(this.pos++, true), o2 = n2 * this.width * 4 + 2 * i2 * 4, s2 = a2 >> 4, c2 = 15 & a2, u2 = this.palette[s2];
if (this.data[o2] = u2.blue, this.data[o2 + 1] = u2.green, this.data[o2 + 2] = u2.red, this.data[o2 + 3] = 255, 2 * i2 + 1 >= this.width) break;
u2 = this.palette[c2], this.data[o2 + 4] = u2.blue, this.data[o2 + 4 + 1] = u2.green, this.data[o2 + 4 + 2] = u2.red, this.data[o2 + 4 + 3] = 255;
}
0 !== e2 && (this.pos += 4 - e2);
}
}, te.prototype.bit8 = function() {
for (var t3 = this.width % 4, e2 = this.height - 1; e2 >= 0; e2--) {
for (var r2 = this.bottom_up ? e2 : this.height - 1 - e2, n2 = 0; n2 < this.width; n2++) {
var i2 = this.datav.getUint8(this.pos++, true), a2 = r2 * this.width * 4 + 4 * n2;
if (i2 < this.palette.length) {
var o2 = this.palette[i2];
this.data[a2] = o2.red, this.data[a2 + 1] = o2.green, this.data[a2 + 2] = o2.blue, this.data[a2 + 3] = 255;
} else this.data[a2] = 255, this.data[a2 + 1] = 255, this.data[a2 + 2] = 255, this.data[a2 + 3] = 255;
}
0 !== t3 && (this.pos += 4 - t3);
}
}, te.prototype.bit15 = function() {
for (var t3 = this.width % 3, e2 = parseInt("11111", 2), r2 = this.height - 1; r2 >= 0; r2--) {
for (var n2 = this.bottom_up ? r2 : this.height - 1 - r2, i2 = 0; i2 < this.width; i2++) {
var a2 = this.datav.getUint16(this.pos, true);
this.pos += 2;
var o2 = (a2 & e2) / e2 * 255 | 0, s2 = (a2 >> 5 & e2) / e2 * 255 | 0, c2 = (a2 >> 10 & e2) / e2 * 255 | 0, u2 = a2 >> 15 ? 255 : 0, h2 = n2 * this.width * 4 + 4 * i2;
this.data[h2] = c2, this.data[h2 + 1] = s2, this.data[h2 + 2] = o2, this.data[h2 + 3] = u2;
}
this.pos += t3;
}
}, te.prototype.bit16 = function() {
for (var t3 = this.width % 3, e2 = parseInt("11111", 2), r2 = parseInt("111111", 2), n2 = this.height - 1; n2 >= 0; n2--) {
for (var i2 = this.bottom_up ? n2 : this.height - 1 - n2, a2 = 0; a2 < this.width; a2++) {
var o2 = this.datav.getUint16(this.pos, true);
this.pos += 2;
var s2 = (o2 & e2) / e2 * 255 | 0, c2 = (o2 >> 5 & r2) / r2 * 255 | 0, u2 = (o2 >> 11) / e2 * 255 | 0, h2 = i2 * this.width * 4 + 4 * a2;
this.data[h2] = u2, this.data[h2 + 1] = c2, this.data[h2 + 2] = s2, this.data[h2 + 3] = 255;
}
this.pos += t3;
}
}, te.prototype.bit24 = function() {
for (var t3 = this.height - 1; t3 >= 0; t3--) {
for (var e2 = this.bottom_up ? t3 : this.height - 1 - t3, r2 = 0; r2 < this.width; r2++) {
var n2 = this.datav.getUint8(this.pos++, true), i2 = this.datav.getUint8(this.pos++, true), a2 = this.datav.getUint8(this.pos++, true), o2 = e2 * this.width * 4 + 4 * r2;
this.data[o2] = a2, this.data[o2 + 1] = i2, this.data[o2 + 2] = n2, this.data[o2 + 3] = 255;
}
this.pos += this.width % 4;
}
}, te.prototype.bit32 = function() {
for (var t3 = this.height - 1; t3 >= 0; t3--) for (var e2 = this.bottom_up ? t3 : this.height - 1 - t3, r2 = 0; r2 < this.width; r2++) {
var n2 = this.datav.getUint8(this.pos++, true), i2 = this.datav.getUint8(this.pos++, true), a2 = this.datav.getUint8(this.pos++, true), o2 = this.datav.getUint8(this.pos++, true), s2 = e2 * this.width * 4 + 4 * r2;
this.data[s2] = a2, this.data[s2 + 1] = i2, this.data[s2 + 2] = n2, this.data[s2 + 3] = o2;
}
}, te.prototype.getData = function() {
return this.data;
}, /**
* @license
* Copyright (c) 2018 Aras Abbasi
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function(t3) {
t3.processBMP = function(e2, r2, n2, i2) {
var a2 = new te(e2, false), o2 = a2.width, s2 = a2.height, c2 = { data: a2.getData(), width: o2, height: s2 }, u2 = new Qt(100).encode(c2, 100);
return t3.processJPEG.call(this, u2, r2, n2, i2);
};
}(E$1.API), ee.prototype.getData = function() {
return this.data;
}, /**
* @license
* Copyright (c) 2019 Aras Abbasi
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function(t3) {
t3.processWEBP = function(e2, r2, n2, i2) {
var a2 = new ee(e2), o2 = a2.width, s2 = a2.height, c2 = { data: a2.getData(), width: o2, height: s2 }, u2 = new Qt(100).encode(c2, 100);
return t3.processJPEG.call(this, u2, r2, n2, i2);
};
}(E$1.API), E$1.API.processRGBA = function(t3, e2, r2) {
for (var n2 = t3.data, i2 = n2.length, a2 = new Uint8Array(i2 / 4 * 3), o2 = new Uint8Array(i2 / 4), s2 = 0, c2 = 0, u2 = 0; u2 < i2; u2 += 4) {
var h2 = n2[u2], l2 = n2[u2 + 1], f2 = n2[u2 + 2], d2 = n2[u2 + 3];
a2[s2++] = h2, a2[s2++] = l2, a2[s2++] = f2, o2[c2++] = d2;
}
var p2 = this.__addimage__.arrayBufferToBinaryString(a2);
return { alpha: this.__addimage__.arrayBufferToBinaryString(o2), data: p2, index: e2, alias: r2, colorSpace: "DeviceRGB", bitsPerComponent: 8, width: t3.width, height: t3.height };
}, E$1.API.setLanguage = function(t3) {
return void 0 === this.internal.languageSettings && (this.internal.languageSettings = {}, this.internal.languageSettings.isSubscribed = false), void 0 !== { af: "Afrikaans", sq: "Albanian", ar: "Arabic (Standard)", "ar-DZ": "Arabic (Algeria)", "ar-BH": "Arabic (Bahrain)", "ar-EG": "Arabic (Egypt)", "ar-IQ": "Arabic (Iraq)", "ar-JO": "Arabic (Jordan)", "ar-KW": "Arabic (Kuwait)", "ar-LB": "Arabic (Lebanon)", "ar-LY": "Arabic (Libya)", "ar-MA": "Arabic (Morocco)", "ar-OM": "Arabic (Oman)", "ar-QA": "Arabic (Qatar)", "ar-SA": "Arabic (Saudi Arabia)", "ar-SY": "Arabic (Syria)", "ar-TN": "Arabic (Tunisia)", "ar-AE": "Arabic (U.A.E.)", "ar-YE": "Arabic (Yemen)", an: "Aragonese", hy: "Armenian", as: "Assamese", ast: "Asturian", az: "Azerbaijani", eu: "Basque", be: "Belarusian", bn: "Bengali", bs: "Bosnian", br: "Breton", bg: "Bulgarian", my: "Burmese", ca: "Catalan", ch: "Chamorro", ce: "Chechen", zh: "Chinese", "zh-HK": "Chinese (Hong Kong)", "zh-CN": "Chinese (PRC)", "zh-SG": "Chinese (Singapore)", "zh-TW": "Chinese (Taiwan)", cv: "Chuvash", co: "Corsican", cr: "Cree", hr: "Croatian", cs: "Czech", da: "Danish", nl: "Dutch (Standard)", "nl-BE": "Dutch (Belgian)", en: "English", "en-AU": "English (Australia)", "en-BZ": "English (Belize)", "en-CA": "English (Canada)", "en-IE": "English (Ireland)", "en-JM": "English (Jamaica)", "en-NZ": "English (New Zealand)", "en-PH": "English (Philippines)", "en-ZA": "English (South Africa)", "en-TT": "English (Trinidad & Tobago)", "en-GB": "English (United Kingdom)", "en-US": "English (United States)", "en-ZW": "English (Zimbabwe)", eo: "Esperanto", et: "Estonian", fo: "Faeroese", fj: "Fijian", fi: "Finnish", fr: "French (Standard)", "fr-BE": "French (Belgium)", "fr-CA": "French (Canada)", "fr-FR": "French (France)", "fr-LU": "French (Luxembourg)", "fr-MC": "French (Monaco)", "fr-CH": "French (Switzerland)", fy: "Frisian", fur: "Friulian", gd: "Gaelic (Scots)", "gd-IE": "Gaelic (Irish)", gl: "Galacian", ka: "Georgian", de: "German (Standard)", "de-AT": "German (Austria)", "de-DE": "German (Germany)", "de-LI": "German (Liechtenstein)", "de-LU": "German (Luxembourg)", "de-CH": "German (Switzerland)", el: "Greek", gu: "Gujurati", ht: "Haitian", he: "Hebrew", hi: "Hindi", hu: "Hungarian", is: "Icelandic", id: "Indonesian", iu: "Inuktitut", ga: "Irish", it: "Italian (Standard)", "it-CH": "Italian (Switzerland)", ja: "Japanese", kn: "Kannada", ks: "Kashmiri", kk: "Kazakh", km: "Khmer", ky: "Kirghiz", tlh: "Klingon", ko: "Korean", "ko-KP": "Korean (North Korea)", "ko-KR": "Korean (South Korea)", la: "Latin", lv: "Latvian", lt: "Lithuanian", lb: "Luxembourgish", mk: "North Macedonia", ms: "Malay", ml: "Malayalam", mt: "Maltese", mi: "Maori", mr: "Marathi", mo: "Moldavian", nv: "Navajo", ng: "Ndonga", ne: "Nepali", no: "Norwegian", nb: "Norwegian (Bokmal)", nn: "Norwegian (Nynorsk)", oc: "Occitan", or: "Oriya", om: "Oromo", fa: "Persian", "fa-IR": "Persian/Iran", pl: "Polish", pt: "Portuguese", "pt-BR": "Portuguese (Brazil)", pa: "Punjabi", "pa-IN": "Punjabi (India)", "pa-PK": "Punjabi (Pakistan)", qu: "Quechua", rm: "Rhaeto-Romanic", ro: "Romanian", "ro-MO": "Romanian (Moldavia)", ru: "Russian", "ru-MO": "Russian (Moldavia)", sz: "Sami (Lappish)", sg: "Sango", sa: "Sanskrit", sc: "Sardinian", sd: "Sindhi", si: "Singhalese", sr: "Serbian", sk: "Slovak", sl: "Slovenian", so: "Somani", sb: "Sorbian", es: "Spanish", "es-AR": "Spanish (Argentina)", "es-BO": "Spanish (Bolivia)", "es-CL": "Spanish (Chile)", "es-CO": "Spanish (Colombia)", "es-CR": "Spanish (Costa Rica)", "es-DO": "Spanish (Dominican Republic)", "es-EC": "Spanish (Ecuador)", "es-SV": "Spanish (El Salvador)", "es-GT": "Spanish (Guatemala)", "es-HN": "Spanish (Honduras)", "es-MX": "Spanish (Mexico)", "es-NI": "Spanish (Nicaragua)", "es-PA": "Spanish (Panama)", "es-PY": "Spanish (Paraguay)", "es-PE": "Spanish (Peru)", "es-PR": "Spanish (Puerto Rico)", "es-ES": "Spanish (Spain)", "es-UY": "Spanish (Uruguay)", "es-VE": "Spanish (Venezuela)", sx: "Sutu", sw: "Swahili", sv: "Swedish", "sv-FI": "Swedish (Finland)", "sv-SV": "Swedish (Sweden)", ta: "Tamil", tt: "Tatar", te: "Teluga", th: "Thai", tig: "Tigre", ts: "Tsonga", tn: "Tswana", tr: "Turkish", tk: "Turkmen", uk: "Ukrainian", hsb: "Upper Sorbian", ur: "Urdu", ve: "Venda", vi: "Vietnamese", vo: "Volapuk", wa: "Walloon", cy: "Welsh", xh: "Xhosa", ji: "Yiddish", zu: "Zulu" }[t3] && (this.internal.languageSettings.languageCode = t3, false === this.internal.languageSettings.isSubscribed && (this.internal.events.subscribe("putCatalog", function() {
this.internal.write("/Lang (" + this.internal.languageSettings.languageCode + ")");
}), this.internal.languageSettings.isSubscribed = true)), this;
}, Vt = E$1.API, Gt = Vt.getCharWidthsArray = function(e2, r2) {
var n2, i2, a2 = (r2 = r2 || {}).font || this.internal.getFont(), o2 = r2.fontSize || this.internal.getFontSize(), s2 = r2.charSpace || this.internal.getCharSpace(), c2 = r2.widths ? r2.widths : a2.metadata.Unicode.widths, u2 = c2.fof ? c2.fof : 1, h2 = r2.kerning ? r2.kerning : a2.metadata.Unicode.kerning, l2 = h2.fof ? h2.fof : 1, f2 = false !== r2.doKerning, d2 = 0, p2 = e2.length, g2 = 0, m2 = c2[0] || u2, v2 = [];
for (n2 = 0; n2 < p2; n2++) i2 = e2.charCodeAt(n2), "function" == typeof a2.metadata.widthOfString ? v2.push((a2.metadata.widthOfGlyph(a2.metadata.characterToGlyph(i2)) + s2 * (1e3 / o2) || 0) / 1e3) : (d2 = f2 && "object" === _typeof$2(h2[i2]) && !isNaN(parseInt(h2[i2][g2], 10)) ? h2[i2][g2] / l2 : 0, v2.push((c2[i2] || m2) / u2 + d2)), g2 = i2;
return v2;
}, Yt = Vt.getStringUnitWidth = function(t3, e2) {
var r2 = (e2 = e2 || {}).fontSize || this.internal.getFontSize(), n2 = e2.font || this.internal.getFont(), i2 = e2.charSpace || this.internal.getCharSpace();
return Vt.processArabic && (t3 = Vt.processArabic(t3)), "function" == typeof n2.metadata.widthOfString ? n2.metadata.widthOfString(t3, r2, i2) / r2 : Gt.apply(this, arguments).reduce(function(t4, e3) {
return t4 + e3;
}, 0);
}, Jt = function(t3, e2, r2, n2) {
for (var i2 = [], a2 = 0, o2 = t3.length, s2 = 0; a2 !== o2 && s2 + e2[a2] < r2; ) s2 += e2[a2], a2++;
i2.push(t3.slice(0, a2));
var c2 = a2;
for (s2 = 0; a2 !== o2; ) s2 + e2[a2] > n2 && (i2.push(t3.slice(c2, a2)), s2 = 0, c2 = a2), s2 += e2[a2], a2++;
return c2 !== a2 && i2.push(t3.slice(c2, a2)), i2;
}, Xt = function(t3, e2, r2) {
r2 || (r2 = {});
var n2, i2, a2, o2, s2, c2, u2, h2 = [], l2 = [h2], f2 = r2.textIndent || 0, d2 = 0, p2 = 0, g2 = t3.split(" "), m2 = Gt.apply(this, [" ", r2])[0];
if (c2 = -1 === r2.lineIndent ? g2[0].length + 2 : r2.lineIndent || 0) {
var v2 = Array(c2).join(" "), b2 = [];
g2.map(function(t4) {
(t4 = t4.split(/\s*\n/)).length > 1 ? b2 = b2.concat(t4.map(function(t5, e3) {
return (e3 && t5.length ? "\n" : "") + t5;
})) : b2.push(t4[0]);
}), g2 = b2, c2 = Yt.apply(this, [v2, r2]);
}
for (a2 = 0, o2 = g2.length; a2 < o2; a2++) {
var y2 = 0;
if (n2 = g2[a2], c2 && "\n" == n2[0] && (n2 = n2.substr(1), y2 = 1), f2 + d2 + (p2 = (i2 = Gt.apply(this, [n2, r2])).reduce(function(t4, e3) {
return t4 + e3;
}, 0)) > e2 || y2) {
if (p2 > e2) {
for (s2 = Jt.apply(this, [n2, i2, e2 - (f2 + d2), e2]), h2.push(s2.shift()), h2 = [s2.pop()]; s2.length; ) l2.push([s2.shift()]);
p2 = i2.slice(n2.length - (h2[0] ? h2[0].length : 0)).reduce(function(t4, e3) {
return t4 + e3;
}, 0);
} else h2 = [n2];
l2.push(h2), f2 = p2 + c2, d2 = m2;
} else h2.push(n2), f2 += d2 + p2, d2 = m2;
}
return u2 = c2 ? function(t4, e3) {
return (e3 ? v2 : "") + t4.join(" ");
} : function(t4) {
return t4.join(" ");
}, l2.map(u2);
}, Vt.splitTextToSize = function(t3, e2, r2) {
var n2, i2 = (r2 = r2 || {}).fontSize || this.internal.getFontSize(), a2 = (function(t4) {
if (t4.widths && t4.kerning) return { widths: t4.widths, kerning: t4.kerning };
var e3 = this.internal.getFont(t4.fontName, t4.fontStyle);
return e3.metadata.Unicode ? { widths: e3.metadata.Unicode.widths || { 0: 1 }, kerning: e3.metadata.Unicode.kerning || {} } : { font: e3.metadata, fontSize: this.internal.getFontSize(), charSpace: this.internal.getCharSpace() };
}).call(this, r2);
n2 = Array.isArray(t3) ? t3 : String(t3).split(/\r?\n/);
var o2 = 1 * this.internal.scaleFactor * e2 / i2;
a2.textIndent = r2.textIndent ? 1 * r2.textIndent * this.internal.scaleFactor / i2 : 0, a2.lineIndent = r2.lineIndent;
var s2, c2, u2 = [];
for (s2 = 0, c2 = n2.length; s2 < c2; s2++) u2 = u2.concat(Xt.apply(this, [n2[s2], o2, a2]));
return u2;
}, function(e2) {
e2.__fontmetrics__ = e2.__fontmetrics__ || {};
for (var r2 = "klmnopqrstuvwxyz", n2 = {}, i2 = {}, a2 = 0; a2 < r2.length; a2++) n2[r2[a2]] = "0123456789abcdef"[a2], i2["0123456789abcdef"[a2]] = r2[a2];
var o2 = function(t3) {
return "0x" + parseInt(t3, 10).toString(16);
}, s2 = e2.__fontmetrics__.compress = function(e3) {
var r3, n3, a3, c3, u3 = ["{"];
for (var h3 in e3) {
if (r3 = e3[h3], isNaN(parseInt(h3, 10)) ? n3 = "'" + h3 + "'" : (h3 = parseInt(h3, 10), n3 = (n3 = o2(h3).slice(2)).slice(0, -1) + i2[n3.slice(-1)]), "number" == typeof r3) r3 < 0 ? (a3 = o2(r3).slice(3), c3 = "-") : (a3 = o2(r3).slice(2), c3 = ""), a3 = c3 + a3.slice(0, -1) + i2[a3.slice(-1)];
else {
if ("object" !== _typeof$2(r3)) throw new Error("Don't know what to do with value type " + _typeof$2(r3) + ".");
a3 = s2(r3);
}
u3.push(n3 + a3);
}
return u3.push("}"), u3.join("");
}, c2 = e2.__fontmetrics__.uncompress = function(t3) {
if ("string" != typeof t3) throw new Error("Invalid argument passed to uncompress.");
for (var e3, r3, i3, a3, o3 = {}, s3 = 1, c3 = o3, u3 = [], h3 = "", l3 = "", f2 = t3.length - 1, d2 = 1; d2 < f2; d2 += 1) "'" == (a3 = t3[d2]) ? e3 ? (i3 = e3.join(""), e3 = void 0) : e3 = [] : e3 ? e3.push(a3) : "{" == a3 ? (u3.push([c3, i3]), c3 = {}, i3 = void 0) : "}" == a3 ? ((r3 = u3.pop())[0][r3[1]] = c3, i3 = void 0, c3 = r3[0]) : "-" == a3 ? s3 = -1 : void 0 === i3 ? n2.hasOwnProperty(a3) ? (h3 += n2[a3], i3 = parseInt(h3, 16) * s3, s3 = 1, h3 = "") : h3 += a3 : n2.hasOwnProperty(a3) ? (l3 += n2[a3], c3[i3] = parseInt(l3, 16) * s3, s3 = 1, i3 = void 0, l3 = "") : l3 += a3;
return o3;
}, u2 = { codePages: ["WinAnsiEncoding"], WinAnsiEncoding: c2("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}") }, h2 = { Unicode: { Courier: u2, "Courier-Bold": u2, "Courier-BoldOblique": u2, "Courier-Oblique": u2, Helvetica: u2, "Helvetica-Bold": u2, "Helvetica-BoldOblique": u2, "Helvetica-Oblique": u2, "Times-Roman": u2, "Times-Bold": u2, "Times-BoldItalic": u2, "Times-Italic": u2 } }, l2 = { Unicode: { "Courier-Oblique": c2("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-BoldItalic": c2("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"), "Helvetica-Bold": c2("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"), Courier: c2("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Courier-BoldOblique": c2("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-Bold": c2("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"), Symbol: c2("{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}"), Helvetica: c2("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"), "Helvetica-BoldOblique": c2("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"), ZapfDingbats: c2("{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}"), "Courier-Bold": c2("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-Italic": c2("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"), "Times-Roman": c2("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"), "Helvetica-Oblique": c2("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}") } };
e2.events.push(["addFont", function(t3) {
var e3 = t3.font, r3 = l2.Unicode[e3.postScriptName];
r3 && (e3.metadata.Unicode = {}, e3.metadata.Unicode.widths = r3.widths, e3.metadata.Unicode.kerning = r3.kerning);
var n3 = h2.Unicode[e3.postScriptName];
n3 && (e3.metadata.Unicode.encoding = n3, e3.encoding = n3.codePages[0]);
}]);
}(E$1.API), /**
* @license
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function(t3) {
var e2 = function(t4) {
for (var e3 = t4.length, r2 = new Uint8Array(e3), n2 = 0; n2 < e3; n2++) r2[n2] = t4.charCodeAt(n2);
return r2;
};
t3.API.events.push(["addFont", function(r2) {
var n2 = void 0, i2 = r2.font, a2 = r2.instance;
if (!i2.isStandardFont) {
if (void 0 === a2) throw new Error("Font does not exist in vFS, import fonts or remove declaration doc.addFont('" + i2.postScriptName + "').");
if ("string" != typeof (n2 = false === a2.existsFileInVFS(i2.postScriptName) ? a2.loadFile(i2.postScriptName) : a2.getFileFromVFS(i2.postScriptName))) throw new Error("Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('" + i2.postScriptName + "').");
!function(r3, n3) {
n3 = /^\x00\x01\x00\x00/.test(n3) ? e2(n3) : e2(u$2(n3)), r3.metadata = t3.API.TTFFont.open(n3), r3.metadata.Unicode = r3.metadata.Unicode || { encoding: {}, kerning: {}, widths: [] }, r3.metadata.glyIdsUsed = [0];
}(i2, n2);
}
}]);
}(E$1), /** @license
* Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* ====================================================================
*/
function(t3) {
function e2() {
return (n$1.canvg ? Promise.resolve(n$1.canvg) : Promise.resolve().then(() => index_es)).catch(function(t4) {
return Promise.reject(new Error("Could not load canvg: " + t4));
}).then(function(t4) {
return t4.default ? t4.default : t4;
});
}
E$1.API.addSvgAsImage = function(t4, r2, n2, i2, o2, s2, c2, u2) {
if (isNaN(r2) || isNaN(n2)) throw a$2.error("jsPDF.addSvgAsImage: Invalid coordinates", arguments), new Error("Invalid coordinates passed to jsPDF.addSvgAsImage");
if (isNaN(i2) || isNaN(o2)) throw a$2.error("jsPDF.addSvgAsImage: Invalid measurements", arguments), new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage");
var h2 = document.createElement("canvas");
h2.width = i2, h2.height = o2;
var l2 = h2.getContext("2d");
l2.fillStyle = "#fff", l2.fillRect(0, 0, h2.width, h2.height);
var f2 = { ignoreMouse: true, ignoreAnimation: true, ignoreDimensions: true }, d2 = this;
return e2().then(function(e3) {
return e3.fromString(l2, t4, f2);
}, function() {
return Promise.reject(new Error("Could not load canvg."));
}).then(function(t5) {
return t5.render(f2);
}).then(function() {
d2.addImage(h2.toDataURL("image/jpeg", 1), r2, n2, i2, o2, c2, u2);
});
};
}(), E$1.API.putTotalPages = function(t3) {
var e2, r2 = 0;
parseInt(this.internal.getFont().id.substr(1), 10) < 15 ? (e2 = new RegExp(t3, "g"), r2 = this.internal.getNumberOfPages()) : (e2 = new RegExp(this.pdfEscape16(t3, this.internal.getFont()), "g"), r2 = this.pdfEscape16(this.internal.getNumberOfPages() + "", this.internal.getFont()));
for (var n2 = 1; n2 <= this.internal.getNumberOfPages(); n2++) for (var i2 = 0; i2 < this.internal.pages[n2].length; i2++) this.internal.pages[n2][i2] = this.internal.pages[n2][i2].replace(e2, r2);
return this;
}, E$1.API.viewerPreferences = function(e2, r2) {
var n2;
e2 = e2 || {}, r2 = r2 || false;
var i2, a2, o2, s2 = { HideToolbar: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.3 }, HideMenubar: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.3 }, HideWindowUI: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.3 }, FitWindow: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.3 }, CenterWindow: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.3 }, DisplayDocTitle: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.4 }, NonFullScreenPageMode: { defaultValue: "UseNone", value: "UseNone", type: "name", explicitSet: false, valueSet: ["UseNone", "UseOutlines", "UseThumbs", "UseOC"], pdfVersion: 1.3 }, Direction: { defaultValue: "L2R", value: "L2R", type: "name", explicitSet: false, valueSet: ["L2R", "R2L"], pdfVersion: 1.3 }, ViewArea: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: false, valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"], pdfVersion: 1.4 }, ViewClip: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: false, valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"], pdfVersion: 1.4 }, PrintArea: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: false, valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"], pdfVersion: 1.4 }, PrintClip: { defaultValue: "CropBox", value: "CropBox", type: "name", explicitSet: false, valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"], pdfVersion: 1.4 }, PrintScaling: { defaultValue: "AppDefault", value: "AppDefault", type: "name", explicitSet: false, valueSet: ["AppDefault", "None"], pdfVersion: 1.6 }, Duplex: { defaultValue: "", value: "none", type: "name", explicitSet: false, valueSet: ["Simplex", "DuplexFlipShortEdge", "DuplexFlipLongEdge", "none"], pdfVersion: 1.7 }, PickTrayByPDFSize: { defaultValue: false, value: false, type: "boolean", explicitSet: false, valueSet: [true, false], pdfVersion: 1.7 }, PrintPageRange: { defaultValue: "", value: "", type: "array", explicitSet: false, valueSet: null, pdfVersion: 1.7 }, NumCopies: { defaultValue: 1, value: 1, type: "integer", explicitSet: false, valueSet: null, pdfVersion: 1.7 } }, c2 = Object.keys(s2), u2 = [], h2 = 0, l2 = 0, f2 = 0;
function d2(t3, e3) {
var r3, n3 = false;
for (r3 = 0; r3 < t3.length; r3 += 1) t3[r3] === e3 && (n3 = true);
return n3;
}
if (void 0 === this.internal.viewerpreferences && (this.internal.viewerpreferences = {}, this.internal.viewerpreferences.configuration = JSON.parse(JSON.stringify(s2)), this.internal.viewerpreferences.isSubscribed = false), n2 = this.internal.viewerpreferences.configuration, "reset" === e2 || true === r2) {
var p2 = c2.length;
for (f2 = 0; f2 < p2; f2 += 1) n2[c2[f2]].value = n2[c2[f2]].defaultValue, n2[c2[f2]].explicitSet = false;
}
if ("object" === _typeof$2(e2)) {
for (a2 in e2) if (o2 = e2[a2], d2(c2, a2) && void 0 !== o2) {
if ("boolean" === n2[a2].type && "boolean" == typeof o2) n2[a2].value = o2;
else if ("name" === n2[a2].type && d2(n2[a2].valueSet, o2)) n2[a2].value = o2;
else if ("integer" === n2[a2].type && Number.isInteger(o2)) n2[a2].value = o2;
else if ("array" === n2[a2].type) {
for (h2 = 0; h2 < o2.length; h2 += 1) if (i2 = true, 1 === o2[h2].length && "number" == typeof o2[h2][0]) u2.push(String(o2[h2] - 1));
else if (o2[h2].length > 1) {
for (l2 = 0; l2 < o2[h2].length; l2 += 1) "number" != typeof o2[h2][l2] && (i2 = false);
true === i2 && u2.push([o2[h2][0] - 1, o2[h2][1] - 1].join(" "));
}
n2[a2].value = "[" + u2.join(" ") + "]";
} else n2[a2].value = n2[a2].defaultValue;
n2[a2].explicitSet = true;
}
}
return false === this.internal.viewerpreferences.isSubscribed && (this.internal.events.subscribe("putCatalog", function() {
var t3, e3 = [];
for (t3 in n2) true === n2[t3].explicitSet && ("name" === n2[t3].type ? e3.push("/" + t3 + " /" + n2[t3].value) : e3.push("/" + t3 + " " + n2[t3].value));
0 !== e3.length && this.internal.write("/ViewerPreferences\n<<\n" + e3.join("\n") + "\n>>");
}), this.internal.viewerpreferences.isSubscribed = true), this.internal.viewerpreferences.configuration = n2, this;
}, /** ====================================================================
* @license
* jsPDF XMP metadata plugin
* Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* ====================================================================
*/
function(t3) {
var e2 = function() {
var t4 = '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:jspdf="' + this.internal.__metadata__.namespaceuri + '"><jspdf:metadata>', e3 = unescape(encodeURIComponent('<x:xmpmeta xmlns:x="adobe:ns:meta/">')), r3 = unescape(encodeURIComponent(t4)), n2 = unescape(encodeURIComponent(this.internal.__metadata__.metadata)), i2 = unescape(encodeURIComponent("</jspdf:metadata></rdf:Description></rdf:RDF>")), a2 = unescape(encodeURIComponent("</x:xmpmeta>")), o2 = r3.length + n2.length + i2.length + e3.length + a2.length;
this.internal.__metadata__.metadata_object_number = this.internal.newObject(), this.internal.write("<< /Type /Metadata /Subtype /XML /Length " + o2 + " >>"), this.internal.write("stream"), this.internal.write(e3 + r3 + n2 + i2 + a2), this.internal.write("endstream"), this.internal.write("endobj");
}, r2 = function() {
this.internal.__metadata__.metadata_object_number && this.internal.write("/Metadata " + this.internal.__metadata__.metadata_object_number + " 0 R");
};
t3.addMetadata = function(t4, n2) {
return void 0 === this.internal.__metadata__ && (this.internal.__metadata__ = { metadata: t4, namespaceuri: n2 || "http://jspdf.default.namespaceuri/" }, this.internal.events.subscribe("putCatalog", r2), this.internal.events.subscribe("postPutResources", e2)), this;
};
}(E$1.API), function(t3) {
var e2 = t3.API, r2 = e2.pdfEscape16 = function(t4, e3) {
for (var r3, n3 = e3.metadata.Unicode.widths, i3 = ["", "0", "00", "000", "0000"], a2 = [""], o2 = 0, s2 = t4.length; o2 < s2; ++o2) {
if (r3 = e3.metadata.characterToGlyph(t4.charCodeAt(o2)), e3.metadata.glyIdsUsed.push(r3), e3.metadata.toUnicode[r3] = t4.charCodeAt(o2), -1 == n3.indexOf(r3) && (n3.push(r3), n3.push([parseInt(e3.metadata.widthOfGlyph(r3), 10)])), "0" == r3) return a2.join("");
r3 = r3.toString(16), a2.push(i3[4 - r3.length], r3);
}
return a2.join("");
}, n2 = function(t4) {
var e3, r3, n3, i3, a2, o2, s2;
for (a2 = "/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n /Registry (Adobe)\n /Ordering (UCS)\n /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange", n3 = [], o2 = 0, s2 = (r3 = Object.keys(t4).sort(function(t5, e4) {
return t5 - e4;
})).length; o2 < s2; o2++) e3 = r3[o2], n3.length >= 100 && (a2 += "\n" + n3.length + " beginbfchar\n" + n3.join("\n") + "\nendbfchar", n3 = []), void 0 !== t4[e3] && null !== t4[e3] && "function" == typeof t4[e3].toString && (i3 = ("0000" + t4[e3].toString(16)).slice(-4), e3 = ("0000" + (+e3).toString(16)).slice(-4), n3.push("<" + e3 + "><" + i3 + ">"));
return n3.length && (a2 += "\n" + n3.length + " beginbfchar\n" + n3.join("\n") + "\nendbfchar\n"), a2 += "endcmap\nCMapName currentdict /CMap defineresource pop\nend\nend";
};
e2.events.push(["putFont", function(e3) {
!function(e4) {
var r3 = e4.font, i3 = e4.out, a2 = e4.newObject, o2 = e4.putStream;
if (r3.metadata instanceof t3.API.TTFFont && "Identity-H" === r3.encoding) {
for (var s2 = r3.metadata.Unicode.widths, c2 = r3.metadata.subset.encode(r3.metadata.glyIdsUsed, 1), u2 = "", h2 = 0; h2 < c2.length; h2++) u2 += String.fromCharCode(c2[h2]);
var l2 = a2();
o2({ data: u2, addLength1: true, objectId: l2 }), i3("endobj");
var f2 = a2();
o2({ data: n2(r3.metadata.toUnicode), addLength1: true, objectId: f2 }), i3("endobj");
var d2 = a2();
i3("<<"), i3("/Type /FontDescriptor"), i3("/FontName /" + F$1(r3.fontName)), i3("/FontFile2 " + l2 + " 0 R"), i3("/FontBBox " + t3.API.PDFObject.convert(r3.metadata.bbox)), i3("/Flags " + r3.metadata.flags), i3("/StemV " + r3.metadata.stemV), i3("/ItalicAngle " + r3.metadata.italicAngle), i3("/Ascent " + r3.metadata.ascender), i3("/Descent " + r3.metadata.decender), i3("/CapHeight " + r3.metadata.capHeight), i3(">>"), i3("endobj");
var p2 = a2();
i3("<<"), i3("/Type /Font"), i3("/BaseFont /" + F$1(r3.fontName)), i3("/FontDescriptor " + d2 + " 0 R"), i3("/W " + t3.API.PDFObject.convert(s2)), i3("/CIDToGIDMap /Identity"), i3("/DW 1000"), i3("/Subtype /CIDFontType2"), i3("/CIDSystemInfo"), i3("<<"), i3("/Supplement 0"), i3("/Registry (Adobe)"), i3("/Ordering (" + r3.encoding + ")"), i3(">>"), i3(">>"), i3("endobj"), r3.objectNumber = a2(), i3("<<"), i3("/Type /Font"), i3("/Subtype /Type0"), i3("/ToUnicode " + f2 + " 0 R"), i3("/BaseFont /" + F$1(r3.fontName)), i3("/Encoding /" + r3.encoding), i3("/DescendantFonts [" + p2 + " 0 R]"), i3(">>"), i3("endobj"), r3.isAlreadyPutted = true;
}
}(e3);
}]);
e2.events.push(["putFont", function(e3) {
!function(e4) {
var r3 = e4.font, i3 = e4.out, a2 = e4.newObject, o2 = e4.putStream;
if (r3.metadata instanceof t3.API.TTFFont && "WinAnsiEncoding" === r3.encoding) {
for (var s2 = r3.metadata.rawData, c2 = "", u2 = 0; u2 < s2.length; u2++) c2 += String.fromCharCode(s2[u2]);
var h2 = a2();
o2({ data: c2, addLength1: true, objectId: h2 }), i3("endobj");
var l2 = a2();
o2({ data: n2(r3.metadata.toUnicode), addLength1: true, objectId: l2 }), i3("endobj");
var f2 = a2();
i3("<<"), i3("/Descent " + r3.metadata.decender), i3("/CapHeight " + r3.metadata.capHeight), i3("/StemV " + r3.metadata.stemV), i3("/Type /FontDescriptor"), i3("/FontFile2 " + h2 + " 0 R"), i3("/Flags 96"), i3("/FontBBox " + t3.API.PDFObject.convert(r3.metadata.bbox)), i3("/FontName /" + F$1(r3.fontName)), i3("/ItalicAngle " + r3.metadata.italicAngle), i3("/Ascent " + r3.metadata.ascender), i3(">>"), i3("endobj"), r3.objectNumber = a2();
for (var d2 = 0; d2 < r3.metadata.hmtx.widths.length; d2++) r3.metadata.hmtx.widths[d2] = parseInt(r3.metadata.hmtx.widths[d2] * (1e3 / r3.metadata.head.unitsPerEm));
i3("<</Subtype/TrueType/Type/Font/ToUnicode " + l2 + " 0 R/BaseFont/" + F$1(r3.fontName) + "/FontDescriptor " + f2 + " 0 R/Encoding/" + r3.encoding + " /FirstChar 29 /LastChar 255 /Widths " + t3.API.PDFObject.convert(r3.metadata.hmtx.widths) + ">>"), i3("endobj"), r3.isAlreadyPutted = true;
}
}(e3);
}]);
var i2 = function(t4) {
var e3, n3 = t4.text || "", i3 = t4.x, a2 = t4.y, o2 = t4.options || {}, s2 = t4.mutex || {}, c2 = s2.pdfEscape, u2 = s2.activeFontKey, h2 = s2.fonts, l2 = u2, f2 = "", d2 = 0, p2 = "", g2 = h2[l2].encoding;
if ("Identity-H" !== h2[l2].encoding) return { text: n3, x: i3, y: a2, options: o2, mutex: s2 };
for (p2 = n3, l2 = u2, Array.isArray(n3) && (p2 = n3[0]), d2 = 0; d2 < p2.length; d2 += 1) h2[l2].metadata.hasOwnProperty("cmap") && (e3 = h2[l2].metadata.cmap.unicode.codeMap[p2[d2].charCodeAt(0)]), e3 || p2[d2].charCodeAt(0) < 256 && h2[l2].metadata.hasOwnProperty("Unicode") ? f2 += p2[d2] : f2 += "";
var m2 = "";
return parseInt(l2.slice(1)) < 14 || "WinAnsiEncoding" === g2 ? m2 = c2(f2, l2).split("").map(function(t5) {
return t5.charCodeAt(0).toString(16);
}).join("") : "Identity-H" === g2 && (m2 = r2(f2, h2[l2])), s2.isHex = true, { text: m2, x: i3, y: a2, options: o2, mutex: s2 };
};
e2.events.push(["postProcessText", function(t4) {
var e3 = t4.text || "", r3 = [], n3 = { text: e3, x: t4.x, y: t4.y, options: t4.options, mutex: t4.mutex };
if (Array.isArray(e3)) {
var a2 = 0;
for (a2 = 0; a2 < e3.length; a2 += 1) Array.isArray(e3[a2]) && 3 === e3[a2].length ? r3.push([i2(Object.assign({}, n3, { text: e3[a2][0] })).text, e3[a2][1], e3[a2][2]]) : r3.push(i2(Object.assign({}, n3, { text: e3[a2] })).text);
t4.text = r3;
} else t4.text = i2(Object.assign({}, n3, { text: e3 })).text;
}]);
}(E$1), /**
* @license
* jsPDF virtual FileSystem functionality
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function(t3) {
var e2 = function() {
return void 0 === this.internal.vFS && (this.internal.vFS = {}), true;
};
t3.existsFileInVFS = function(t4) {
return e2.call(this), void 0 !== this.internal.vFS[t4];
}, t3.addFileToVFS = function(t4, r2) {
return e2.call(this), this.internal.vFS[t4] = r2, this;
}, t3.getFileFromVFS = function(t4) {
return e2.call(this), void 0 !== this.internal.vFS[t4] ? this.internal.vFS[t4] : null;
};
}(E$1.API), /**
* @license
* Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)
* MIT License
*/
function(t3) {
t3.__bidiEngine__ = t3.prototype.__bidiEngine__ = function(t4) {
var r3, n2, i2, a2, o2, s2, c2, u2 = e2, h2 = [[0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 17, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 21, 21, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]], l2 = [[2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 33, 3, 1, 1]], f2 = { L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6 }, d2 = { 0: 0, 5: 1, 6: 2, 7: 3, 32: 4, 251: 5, 254: 6, 255: 7 }, p2 = ["(", ")", "(", "<", ">", "<", "[", "]", "[", "{", "}", "{", "«", "»", "«", "‹", "›", "‹", "⁅", "⁆", "⁅", "⁽", "⁾", "⁽", "₍", "₎", "₍", "≤", "≥", "≤", "〈", "〉", "〈", "﹙", "﹚", "﹙", "﹛", "﹜", "﹛", "﹝", "﹞", "﹝", "﹤", "﹥", "﹤"], g2 = new RegExp(/^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/), m2 = false, v2 = 0;
this.__bidiEngine__ = {};
var b2 = function(t5) {
var e3 = t5.charCodeAt(), r4 = e3 >> 8, n3 = d2[r4];
return void 0 !== n3 ? u2[256 * n3 + (255 & e3)] : 252 === r4 || 253 === r4 ? "AL" : g2.test(r4) ? "L" : 8 === r4 ? "R" : "N";
}, y2 = function(t5) {
for (var e3, r4 = 0; r4 < t5.length; r4++) {
if ("L" === (e3 = b2(t5.charAt(r4)))) return false;
if ("R" === e3) return true;
}
return false;
}, w2 = function(t5, e3, o3, s3) {
var c3, u3, h3, l3, f3 = e3[s3];
switch (f3) {
case "L":
case "R":
m2 = false;
break;
case "N":
case "AN":
break;
case "EN":
m2 && (f3 = "AN");
break;
case "AL":
m2 = true, f3 = "R";
break;
case "WS":
f3 = "N";
break;
case "CS":
s3 < 1 || s3 + 1 >= e3.length || "EN" !== (c3 = o3[s3 - 1]) && "AN" !== c3 || "EN" !== (u3 = e3[s3 + 1]) && "AN" !== u3 ? f3 = "N" : m2 && (u3 = "AN"), f3 = u3 === c3 ? u3 : "N";
break;
case "ES":
f3 = "EN" === (c3 = s3 > 0 ? o3[s3 - 1] : "B") && s3 + 1 < e3.length && "EN" === e3[s3 + 1] ? "EN" : "N";
break;
case "ET":
if (s3 > 0 && "EN" === o3[s3 - 1]) {
f3 = "EN";
break;
}
if (m2) {
f3 = "N";
break;
}
for (h3 = s3 + 1, l3 = e3.length; h3 < l3 && "ET" === e3[h3]; ) h3++;
f3 = h3 < l3 && "EN" === e3[h3] ? "EN" : "N";
break;
case "NSM":
if (i2 && !a2) {
for (l3 = e3.length, h3 = s3 + 1; h3 < l3 && "NSM" === e3[h3]; ) h3++;
if (h3 < l3) {
var d3 = t5[s3], p3 = d3 >= 1425 && d3 <= 2303 || 64286 === d3;
if (c3 = e3[h3], p3 && ("R" === c3 || "AL" === c3)) {
f3 = "R";
break;
}
}
}
f3 = s3 < 1 || "B" === (c3 = e3[s3 - 1]) ? "N" : o3[s3 - 1];
break;
case "B":
m2 = false, r3 = true, f3 = v2;
break;
case "S":
n2 = true, f3 = "N";
break;
case "LRE":
case "RLE":
case "LRO":
case "RLO":
case "PDF":
m2 = false;
break;
case "BN":
f3 = "N";
}
return f3;
}, N2 = function(t5, e3, r4) {
var n3 = t5.split("");
return r4 && L2(n3, r4, { hiLevel: v2 }), n3.reverse(), e3 && e3.reverse(), n3.join("");
}, L2 = function(t5, e3, i3) {
var a3, o3, s3, c3, u3, d3 = -1, p3 = t5.length, g3 = 0, y3 = [], N3 = v2 ? l2 : h2, L3 = [];
for (m2 = false, r3 = false, n2 = false, o3 = 0; o3 < p3; o3++) L3[o3] = b2(t5[o3]);
for (s3 = 0; s3 < p3; s3++) {
if (u3 = g3, y3[s3] = w2(t5, L3, y3, s3), a3 = 240 & (g3 = N3[u3][f2[y3[s3]]]), g3 &= 15, e3[s3] = c3 = N3[g3][5], a3 > 0) if (16 === a3) {
for (o3 = d3; o3 < s3; o3++) e3[o3] = 1;
d3 = -1;
} else d3 = -1;
if (N3[g3][6]) -1 === d3 && (d3 = s3);
else if (d3 > -1) {
for (o3 = d3; o3 < s3; o3++) e3[o3] = c3;
d3 = -1;
}
"B" === L3[s3] && (e3[s3] = 0), i3.hiLevel |= c3;
}
n2 && function(t6, e4, r4) {
for (var n3 = 0; n3 < r4; n3++) if ("S" === t6[n3]) {
e4[n3] = v2;
for (var i4 = n3 - 1; i4 >= 0 && "WS" === t6[i4]; i4--) e4[i4] = v2;
}
}(L3, e3, p3);
}, A5 = function(t5, e3, n3, i3, a3) {
if (!(a3.hiLevel < t5)) {
if (1 === t5 && 1 === v2 && !r3) return e3.reverse(), void (n3 && n3.reverse());
for (var o3, s3, c3, u3, h3 = e3.length, l3 = 0; l3 < h3; ) {
if (i3[l3] >= t5) {
for (c3 = l3 + 1; c3 < h3 && i3[c3] >= t5; ) c3++;
for (u3 = l3, s3 = c3 - 1; u3 < s3; u3++, s3--) o3 = e3[u3], e3[u3] = e3[s3], e3[s3] = o3, n3 && (o3 = n3[u3], n3[u3] = n3[s3], n3[s3] = o3);
l3 = c3;
}
l3++;
}
}
}, x2 = function(t5, e3, r4) {
var n3 = t5.split(""), i3 = { hiLevel: v2 };
return r4 || (r4 = []), L2(n3, r4, i3), function(t6, e4, r5) {
if (0 !== r5.hiLevel && c2) for (var n4, i4 = 0; i4 < t6.length; i4++) 1 === e4[i4] && (n4 = p2.indexOf(t6[i4])) >= 0 && (t6[i4] = p2[n4 + 1]);
}(n3, r4, i3), A5(2, n3, e3, r4, i3), A5(1, n3, e3, r4, i3), n3.join("");
};
return this.__bidiEngine__.doBidiReorder = function(t5, e3, r4) {
if (function(t6, e4) {
if (e4) for (var r5 = 0; r5 < t6.length; r5++) e4[r5] = r5;
void 0 === a2 && (a2 = y2(t6)), void 0 === s2 && (s2 = y2(t6));
}(t5, e3), i2 || !o2 || s2) if (i2 && o2 && a2 ^ s2) v2 = a2 ? 1 : 0, t5 = N2(t5, e3, r4);
else if (!i2 && o2 && s2) v2 = a2 ? 1 : 0, t5 = x2(t5, e3, r4), t5 = N2(t5, e3);
else if (!i2 || a2 || o2 || s2) {
if (i2 && !o2 && a2 ^ s2) t5 = N2(t5, e3), a2 ? (v2 = 0, t5 = x2(t5, e3, r4)) : (v2 = 1, t5 = x2(t5, e3, r4), t5 = N2(t5, e3));
else if (i2 && a2 && !o2 && s2) v2 = 1, t5 = x2(t5, e3, r4), t5 = N2(t5, e3);
else if (!i2 && !o2 && a2 ^ s2) {
var n3 = c2;
a2 ? (v2 = 1, t5 = x2(t5, e3, r4), v2 = 0, c2 = false, t5 = x2(t5, e3, r4), c2 = n3) : (v2 = 0, t5 = x2(t5, e3, r4), t5 = N2(t5, e3), v2 = 1, c2 = false, t5 = x2(t5, e3, r4), c2 = n3, t5 = N2(t5, e3));
}
} else v2 = 0, t5 = x2(t5, e3, r4);
else v2 = a2 ? 1 : 0, t5 = x2(t5, e3, r4);
return t5;
}, this.__bidiEngine__.setOptions = function(t5) {
t5 && (i2 = t5.isInputVisual, o2 = t5.isOutputVisual, a2 = t5.isInputRtl, s2 = t5.isOutputRtl, c2 = t5.isSymmetricSwapping);
}, this.__bidiEngine__.setOptions(t4), this.__bidiEngine__;
};
var e2 = ["BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "S", "B", "S", "WS", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "B", "B", "B", "S", "WS", "N", "N", "ET", "ET", "ET", "N", "N", "N", "N", "N", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "BN", "BN", "BN", "BN", "BN", "BN", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "CS", "N", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "L", "N", "N", "BN", "N", "N", "ET", "ET", "EN", "EN", "N", "L", "N", "N", "N", "EN", "L", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "N", "N", "N", "N", "N", "ET", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "R", "NSM", "R", "NSM", "NSM", "R", "NSM", "NSM", "R", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "AN", "AN", "AN", "AN", "AN", "AN", "N", "N", "AL", "ET", "ET", "AL", "CS", "AL", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "ET", "AN", "AN", "AL", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "NSM", "NSM", "N", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "R", "R", "N", "N", "N", "N", "R", "N", "N", "N", "N", "N", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "BN", "BN", "BN", "L", "R", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "WS", "B", "LRE", "RLE", "PDF", "LRO", "RLO", "CS", "ET", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "CS", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "WS", "BN", "BN", "BN", "BN", "BN", "N", "LRI", "RLI", "FSI", "PDI", "BN", "BN", "BN", "BN", "BN", "BN", "EN", "L", "N", "N", "EN", "EN", "EN", "EN", "EN", "EN", "ES", "ES", "N", "N", "N", "L", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "ES", "ES", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "R", "NSM", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "ES", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "N", "R", "R", "R", "R", "R", "N", "R", "N", "R", "R", "N", "R", "R", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "CS", "N", "CS", "N", "N", "CS", "N", "N", "N", "N", "N", "N", "N", "N", "N", "ET", "N", "N", "ES", "ES", "N", "N", "N", "N", "N", "ET", "ET", "N", "N", "N", "N", "N", "AL", "AL", "AL", "AL", "AL", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "N", "BN", "N", "N", "N", "ET", "ET", "ET", "N", "N", "N", "N", "N", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "N", "N", "N", "ET", "ET", "N", "N", "N", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N"], r2 = new t3.__bidiEngine__({ isInputVisual: true });
t3.API.events.push(["postProcessText", function(t4) {
var e3 = t4.text, n2 = (t4.x, t4.y, t4.options || {}), i2 = (t4.mutex, n2.lang, []);
if (n2.isInputVisual = "boolean" != typeof n2.isInputVisual || n2.isInputVisual, r2.setOptions(n2), "[object Array]" === Object.prototype.toString.call(e3)) {
var a2 = 0;
for (i2 = [], a2 = 0; a2 < e3.length; a2 += 1) "[object Array]" === Object.prototype.toString.call(e3[a2]) ? i2.push([r2.doBidiReorder(e3[a2][0]), e3[a2][1], e3[a2][2]]) : i2.push([r2.doBidiReorder(e3[a2])]);
t4.text = i2;
} else t4.text = r2.doBidiReorder(e3);
r2.setOptions({ isInputVisual: true });
}]);
}(E$1), E$1.API.TTFFont = function() {
function t3(t4) {
var e2;
if (this.rawData = t4, e2 = this.contents = new ne(t4), this.contents.pos = 4, "ttcf" === e2.readString(4)) throw new Error("TTCF not supported.");
e2.pos = 0, this.parse(), this.subset = new Le(this), this.registerTTF();
}
return t3.open = function(e2) {
return new t3(e2);
}, t3.prototype.parse = function() {
return this.directory = new ie(this.contents), this.head = new se(this), this.name = new pe(this), this.cmap = new ue(this), this.toUnicode = {}, this.hhea = new he(this), this.maxp = new ge(this), this.hmtx = new me(this), this.post = new fe(this), this.os2 = new le(this), this.loca = new Ne(this), this.glyf = new be(this), this.ascender = this.os2.exists && this.os2.ascender || this.hhea.ascender, this.decender = this.os2.exists && this.os2.decender || this.hhea.decender, this.lineGap = this.os2.exists && this.os2.lineGap || this.hhea.lineGap, this.bbox = [this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax];
}, t3.prototype.registerTTF = function() {
var t4, e2, r2, n2, i2;
if (this.scaleFactor = 1e3 / this.head.unitsPerEm, this.bbox = (function() {
var e3, r3, n3, i3;
for (i3 = [], e3 = 0, r3 = (n3 = this.bbox).length; e3 < r3; e3++) t4 = n3[e3], i3.push(Math.round(t4 * this.scaleFactor));
return i3;
}).call(this), this.stemV = 0, this.post.exists ? (r2 = 255 & (n2 = this.post.italic_angle), 0 != (32768 & (e2 = n2 >> 16)) && (e2 = -(1 + (65535 ^ e2))), this.italicAngle = +(e2 + "." + r2)) : this.italicAngle = 0, this.ascender = Math.round(this.ascender * this.scaleFactor), this.decender = Math.round(this.decender * this.scaleFactor), this.lineGap = Math.round(this.lineGap * this.scaleFactor), this.capHeight = this.os2.exists && this.os2.capHeight || this.ascender, this.xHeight = this.os2.exists && this.os2.xHeight || 0, this.familyClass = (this.os2.exists && this.os2.familyClass || 0) >> 8, this.isSerif = 1 === (i2 = this.familyClass) || 2 === i2 || 3 === i2 || 4 === i2 || 5 === i2 || 7 === i2, this.isScript = 10 === this.familyClass, this.flags = 0, this.post.isFixedPitch && (this.flags |= 1), this.isSerif && (this.flags |= 2), this.isScript && (this.flags |= 8), 0 !== this.italicAngle && (this.flags |= 64), this.flags |= 32, !this.cmap.unicode) throw new Error("No unicode cmap for font");
}, t3.prototype.characterToGlyph = function(t4) {
var e2;
return (null != (e2 = this.cmap.unicode) ? e2.codeMap[t4] : void 0) || 0;
}, t3.prototype.widthOfGlyph = function(t4) {
var e2;
return e2 = 1e3 / this.head.unitsPerEm, this.hmtx.forGlyph(t4).advance * e2;
}, t3.prototype.widthOfString = function(t4, e2, r2) {
var n2, i2, a2, o2;
for (a2 = 0, i2 = 0, o2 = (t4 = "" + t4).length; 0 <= o2 ? i2 < o2 : i2 > o2; i2 = 0 <= o2 ? ++i2 : --i2) n2 = t4.charCodeAt(i2), a2 += this.widthOfGlyph(this.characterToGlyph(n2)) + r2 * (1e3 / e2) || 0;
return a2 * (e2 / 1e3);
}, t3.prototype.lineHeight = function(t4, e2) {
var r2;
return null == e2 && (e2 = false), r2 = e2 ? this.lineGap : 0, (this.ascender + r2 - this.decender) / 1e3 * t4;
}, t3;
}();
var re, ne = function() {
function t3(t4) {
this.data = null != t4 ? t4 : [], this.pos = 0, this.length = this.data.length;
}
return t3.prototype.readByte = function() {
return this.data[this.pos++];
}, t3.prototype.writeByte = function(t4) {
return this.data[this.pos++] = t4;
}, t3.prototype.readUInt32 = function() {
return 16777216 * this.readByte() + (this.readByte() << 16) + (this.readByte() << 8) + this.readByte();
}, t3.prototype.writeUInt32 = function(t4) {
return this.writeByte(t4 >>> 24 & 255), this.writeByte(t4 >> 16 & 255), this.writeByte(t4 >> 8 & 255), this.writeByte(255 & t4);
}, t3.prototype.readInt32 = function() {
var t4;
return (t4 = this.readUInt32()) >= 2147483648 ? t4 - 4294967296 : t4;
}, t3.prototype.writeInt32 = function(t4) {
return t4 < 0 && (t4 += 4294967296), this.writeUInt32(t4);
}, t3.prototype.readUInt16 = function() {
return this.readByte() << 8 | this.readByte();
}, t3.prototype.writeUInt16 = function(t4) {
return this.writeByte(t4 >> 8 & 255), this.writeByte(255 & t4);
}, t3.prototype.readInt16 = function() {
var t4;
return (t4 = this.readUInt16()) >= 32768 ? t4 - 65536 : t4;
}, t3.prototype.writeInt16 = function(t4) {
return t4 < 0 && (t4 += 65536), this.writeUInt16(t4);
}, t3.prototype.readString = function(t4) {
var e2, r2;
for (r2 = [], e2 = 0; 0 <= t4 ? e2 < t4 : e2 > t4; e2 = 0 <= t4 ? ++e2 : --e2) r2[e2] = String.fromCharCode(this.readByte());
return r2.join("");
}, t3.prototype.writeString = function(t4) {
var e2, r2, n2;
for (n2 = [], e2 = 0, r2 = t4.length; 0 <= r2 ? e2 < r2 : e2 > r2; e2 = 0 <= r2 ? ++e2 : --e2) n2.push(this.writeByte(t4.charCodeAt(e2)));
return n2;
}, t3.prototype.readShort = function() {
return this.readInt16();
}, t3.prototype.writeShort = function(t4) {
return this.writeInt16(t4);
}, t3.prototype.readLongLong = function() {
var t4, e2, r2, n2, i2, a2, o2, s2;
return t4 = this.readByte(), e2 = this.readByte(), r2 = this.readByte(), n2 = this.readByte(), i2 = this.readByte(), a2 = this.readByte(), o2 = this.readByte(), s2 = this.readByte(), 128 & t4 ? -1 * (72057594037927940 * (255 ^ t4) + 281474976710656 * (255 ^ e2) + 1099511627776 * (255 ^ r2) + 4294967296 * (255 ^ n2) + 16777216 * (255 ^ i2) + 65536 * (255 ^ a2) + 256 * (255 ^ o2) + (255 ^ s2) + 1) : 72057594037927940 * t4 + 281474976710656 * e2 + 1099511627776 * r2 + 4294967296 * n2 + 16777216 * i2 + 65536 * a2 + 256 * o2 + s2;
}, t3.prototype.writeLongLong = function(t4) {
var e2, r2;
return e2 = Math.floor(t4 / 4294967296), r2 = 4294967295 & t4, this.writeByte(e2 >> 24 & 255), this.writeByte(e2 >> 16 & 255), this.writeByte(e2 >> 8 & 255), this.writeByte(255 & e2), this.writeByte(r2 >> 24 & 255), this.writeByte(r2 >> 16 & 255), this.writeByte(r2 >> 8 & 255), this.writeByte(255 & r2);
}, t3.prototype.readInt = function() {
return this.readInt32();
}, t3.prototype.writeInt = function(t4) {
return this.writeInt32(t4);
}, t3.prototype.read = function(t4) {
var e2, r2;
for (e2 = [], r2 = 0; 0 <= t4 ? r2 < t4 : r2 > t4; r2 = 0 <= t4 ? ++r2 : --r2) e2.push(this.readByte());
return e2;
}, t3.prototype.write = function(t4) {
var e2, r2, n2, i2;
for (i2 = [], r2 = 0, n2 = t4.length; r2 < n2; r2++) e2 = t4[r2], i2.push(this.writeByte(e2));
return i2;
}, t3;
}(), ie = function() {
var t3;
function e2(t4) {
var e3, r2, n2;
for (this.scalarType = t4.readInt(), this.tableCount = t4.readShort(), this.searchRange = t4.readShort(), this.entrySelector = t4.readShort(), this.rangeShift = t4.readShort(), this.tables = {}, r2 = 0, n2 = this.tableCount; 0 <= n2 ? r2 < n2 : r2 > n2; r2 = 0 <= n2 ? ++r2 : --r2) e3 = { tag: t4.readString(4), checksum: t4.readInt(), offset: t4.readInt(), length: t4.readInt() }, this.tables[e3.tag] = e3;
}
return e2.prototype.encode = function(e3) {
var r2, n2, i2, a2, o2, s2, c2, u2, h2, l2, f2, d2, p2;
for (p2 in f2 = Object.keys(e3).length, s2 = Math.log(2), h2 = 16 * Math.floor(Math.log(f2) / s2), a2 = Math.floor(h2 / s2), u2 = 16 * f2 - h2, (n2 = new ne()).writeInt(this.scalarType), n2.writeShort(f2), n2.writeShort(h2), n2.writeShort(a2), n2.writeShort(u2), i2 = 16 * f2, c2 = n2.pos + i2, o2 = null, d2 = [], e3) for (l2 = e3[p2], n2.writeString(p2), n2.writeInt(t3(l2)), n2.writeInt(c2), n2.writeInt(l2.length), d2 = d2.concat(l2), "head" === p2 && (o2 = c2), c2 += l2.length; c2 % 4; ) d2.push(0), c2++;
return n2.write(d2), r2 = 2981146554 - t3(n2.data), n2.pos = o2 + 8, n2.writeUInt32(r2), n2.data;
}, t3 = function(t4) {
var e3, r2, n2, i2;
for (t4 = ve.call(t4); t4.length % 4; ) t4.push(0);
for (n2 = new ne(t4), r2 = 0, e3 = 0, i2 = t4.length; e3 < i2; e3 = e3 += 4) r2 += n2.readUInt32();
return 4294967295 & r2;
}, e2;
}(), ae = {}.hasOwnProperty, oe = function(t3, e2) {
for (var r2 in e2) ae.call(e2, r2) && (t3[r2] = e2[r2]);
function n2() {
this.constructor = t3;
}
return n2.prototype = e2.prototype, t3.prototype = new n2(), t3.__super__ = e2.prototype, t3;
};
re = function() {
function t3(t4) {
var e2;
this.file = t4, e2 = this.file.directory.tables[this.tag], this.exists = !!e2, e2 && (this.offset = e2.offset, this.length = e2.length, this.parse(this.file.contents));
}
return t3.prototype.parse = function() {
}, t3.prototype.encode = function() {
}, t3.prototype.raw = function() {
return this.exists ? (this.file.contents.pos = this.offset, this.file.contents.read(this.length)) : null;
}, t3;
}();
var se = function(t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments);
}
return oe(e2, re), e2.prototype.tag = "head", e2.prototype.parse = function(t4) {
return t4.pos = this.offset, this.version = t4.readInt(), this.revision = t4.readInt(), this.checkSumAdjustment = t4.readInt(), this.magicNumber = t4.readInt(), this.flags = t4.readShort(), this.unitsPerEm = t4.readShort(), this.created = t4.readLongLong(), this.modified = t4.readLongLong(), this.xMin = t4.readShort(), this.yMin = t4.readShort(), this.xMax = t4.readShort(), this.yMax = t4.readShort(), this.macStyle = t4.readShort(), this.lowestRecPPEM = t4.readShort(), this.fontDirectionHint = t4.readShort(), this.indexToLocFormat = t4.readShort(), this.glyphDataFormat = t4.readShort();
}, e2.prototype.encode = function(t4) {
var e3;
return (e3 = new ne()).writeInt(this.version), e3.writeInt(this.revision), e3.writeInt(this.checkSumAdjustment), e3.writeInt(this.magicNumber), e3.writeShort(this.flags), e3.writeShort(this.unitsPerEm), e3.writeLongLong(this.created), e3.writeLongLong(this.modified), e3.writeShort(this.xMin), e3.writeShort(this.yMin), e3.writeShort(this.xMax), e3.writeShort(this.yMax), e3.writeShort(this.macStyle), e3.writeShort(this.lowestRecPPEM), e3.writeShort(this.fontDirectionHint), e3.writeShort(t4), e3.writeShort(this.glyphDataFormat), e3.data;
}, e2;
}(), ce = function() {
function t3(t4, e2) {
var r2, n2, i2, a2, o2, s2, c2, u2, h2, l2, f2, d2, p2, g2, m2, v2, b2;
switch (this.platformID = t4.readUInt16(), this.encodingID = t4.readShort(), this.offset = e2 + t4.readInt(), h2 = t4.pos, t4.pos = this.offset, this.format = t4.readUInt16(), this.length = t4.readUInt16(), this.language = t4.readUInt16(), this.isUnicode = 3 === this.platformID && 1 === this.encodingID && 4 === this.format || 0 === this.platformID && 4 === this.format, this.codeMap = {}, this.format) {
case 0:
for (s2 = 0; s2 < 256; ++s2) this.codeMap[s2] = t4.readByte();
break;
case 4:
for (f2 = t4.readUInt16(), l2 = f2 / 2, t4.pos += 6, i2 = function() {
var e3, r3;
for (r3 = [], s2 = e3 = 0; 0 <= l2 ? e3 < l2 : e3 > l2; s2 = 0 <= l2 ? ++e3 : --e3) r3.push(t4.readUInt16());
return r3;
}(), t4.pos += 2, p2 = function() {
var e3, r3;
for (r3 = [], s2 = e3 = 0; 0 <= l2 ? e3 < l2 : e3 > l2; s2 = 0 <= l2 ? ++e3 : --e3) r3.push(t4.readUInt16());
return r3;
}(), c2 = function() {
var e3, r3;
for (r3 = [], s2 = e3 = 0; 0 <= l2 ? e3 < l2 : e3 > l2; s2 = 0 <= l2 ? ++e3 : --e3) r3.push(t4.readUInt16());
return r3;
}(), u2 = function() {
var e3, r3;
for (r3 = [], s2 = e3 = 0; 0 <= l2 ? e3 < l2 : e3 > l2; s2 = 0 <= l2 ? ++e3 : --e3) r3.push(t4.readUInt16());
return r3;
}(), n2 = (this.length - t4.pos + this.offset) / 2, o2 = function() {
var e3, r3;
for (r3 = [], s2 = e3 = 0; 0 <= n2 ? e3 < n2 : e3 > n2; s2 = 0 <= n2 ? ++e3 : --e3) r3.push(t4.readUInt16());
return r3;
}(), s2 = m2 = 0, b2 = i2.length; m2 < b2; s2 = ++m2) for (g2 = i2[s2], r2 = v2 = d2 = p2[s2]; d2 <= g2 ? v2 <= g2 : v2 >= g2; r2 = d2 <= g2 ? ++v2 : --v2) 0 === u2[s2] ? a2 = r2 + c2[s2] : 0 !== (a2 = o2[u2[s2] / 2 + (r2 - d2) - (l2 - s2)] || 0) && (a2 += c2[s2]), this.codeMap[r2] = 65535 & a2;
}
t4.pos = h2;
}
return t3.encode = function(t4, e2) {
var r2, n2, i2, a2, o2, s2, c2, u2, h2, l2, f2, d2, p2, g2, m2, v2, b2, y2, w2, N2, L2, A5, x2, S2, _2, P2, k2, I2, F2, C2, j2, O2, B3, M2, E2, q2, D2, R2, T2, U2, z2, H4, W2, V2, G2, Y2;
switch (I2 = new ne(), a2 = Object.keys(t4).sort(function(t5, e3) {
return t5 - e3;
}), e2) {
case "macroman":
for (p2 = 0, g2 = function() {
var t5 = [];
for (d2 = 0; d2 < 256; ++d2) t5.push(0);
return t5;
}(), v2 = { 0: 0 }, i2 = {}, F2 = 0, B3 = a2.length; F2 < B3; F2++) null == v2[W2 = t4[n2 = a2[F2]]] && (v2[W2] = ++p2), i2[n2] = { old: t4[n2], new: v2[t4[n2]] }, g2[n2] = v2[t4[n2]];
return I2.writeUInt16(1), I2.writeUInt16(0), I2.writeUInt32(12), I2.writeUInt16(0), I2.writeUInt16(262), I2.writeUInt16(0), I2.write(g2), { charMap: i2, subtable: I2.data, maxGlyphID: p2 + 1 };
case "unicode":
for (P2 = [], h2 = [], b2 = 0, v2 = {}, r2 = {}, m2 = c2 = null, C2 = 0, M2 = a2.length; C2 < M2; C2++) null == v2[w2 = t4[n2 = a2[C2]]] && (v2[w2] = ++b2), r2[n2] = { old: w2, new: v2[w2] }, o2 = v2[w2] - n2, null != m2 && o2 === c2 || (m2 && h2.push(m2), P2.push(n2), c2 = o2), m2 = n2;
for (m2 && h2.push(m2), h2.push(65535), P2.push(65535), S2 = 2 * (x2 = P2.length), A5 = 2 * Math.pow(Math.log(x2) / Math.LN2, 2), l2 = Math.log(A5 / 2) / Math.LN2, L2 = 2 * x2 - A5, s2 = [], N2 = [], f2 = [], d2 = j2 = 0, E2 = P2.length; j2 < E2; d2 = ++j2) {
if (_2 = P2[d2], u2 = h2[d2], 65535 === _2) {
s2.push(0), N2.push(0);
break;
}
if (_2 - (k2 = r2[_2].new) >= 32768) for (s2.push(0), N2.push(2 * (f2.length + x2 - d2)), n2 = O2 = _2; _2 <= u2 ? O2 <= u2 : O2 >= u2; n2 = _2 <= u2 ? ++O2 : --O2) f2.push(r2[n2].new);
else s2.push(k2 - _2), N2.push(0);
}
for (I2.writeUInt16(3), I2.writeUInt16(1), I2.writeUInt32(12), I2.writeUInt16(4), I2.writeUInt16(16 + 8 * x2 + 2 * f2.length), I2.writeUInt16(0), I2.writeUInt16(S2), I2.writeUInt16(A5), I2.writeUInt16(l2), I2.writeUInt16(L2), z2 = 0, q2 = h2.length; z2 < q2; z2++) n2 = h2[z2], I2.writeUInt16(n2);
for (I2.writeUInt16(0), H4 = 0, D2 = P2.length; H4 < D2; H4++) n2 = P2[H4], I2.writeUInt16(n2);
for (V2 = 0, R2 = s2.length; V2 < R2; V2++) o2 = s2[V2], I2.writeUInt16(o2);
for (G2 = 0, T2 = N2.length; G2 < T2; G2++) y2 = N2[G2], I2.writeUInt16(y2);
for (Y2 = 0, U2 = f2.length; Y2 < U2; Y2++) p2 = f2[Y2], I2.writeUInt16(p2);
return { charMap: r2, subtable: I2.data, maxGlyphID: b2 + 1 };
}
}, t3;
}(), ue = function(t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments);
}
return oe(e2, re), e2.prototype.tag = "cmap", e2.prototype.parse = function(t4) {
var e3, r2, n2;
for (t4.pos = this.offset, this.version = t4.readUInt16(), n2 = t4.readUInt16(), this.tables = [], this.unicode = null, r2 = 0; 0 <= n2 ? r2 < n2 : r2 > n2; r2 = 0 <= n2 ? ++r2 : --r2) e3 = new ce(t4, this.offset), this.tables.push(e3), e3.isUnicode && null == this.unicode && (this.unicode = e3);
return true;
}, e2.encode = function(t4, e3) {
var r2, n2;
return null == e3 && (e3 = "macroman"), r2 = ce.encode(t4, e3), (n2 = new ne()).writeUInt16(0), n2.writeUInt16(1), r2.table = n2.data.concat(r2.subtable), r2;
}, e2;
}(), he = function(t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments);
}
return oe(e2, re), e2.prototype.tag = "hhea", e2.prototype.parse = function(t4) {
return t4.pos = this.offset, this.version = t4.readInt(), this.ascender = t4.readShort(), this.decender = t4.readShort(), this.lineGap = t4.readShort(), this.advanceWidthMax = t4.readShort(), this.minLeftSideBearing = t4.readShort(), this.minRightSideBearing = t4.readShort(), this.xMaxExtent = t4.readShort(), this.caretSlopeRise = t4.readShort(), this.caretSlopeRun = t4.readShort(), this.caretOffset = t4.readShort(), t4.pos += 8, this.metricDataFormat = t4.readShort(), this.numberOfMetrics = t4.readUInt16();
}, e2;
}(), le = function(t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments);
}
return oe(e2, re), e2.prototype.tag = "OS/2", e2.prototype.parse = function(t4) {
if (t4.pos = this.offset, this.version = t4.readUInt16(), this.averageCharWidth = t4.readShort(), this.weightClass = t4.readUInt16(), this.widthClass = t4.readUInt16(), this.type = t4.readShort(), this.ySubscriptXSize = t4.readShort(), this.ySubscriptYSize = t4.readShort(), this.ySubscriptXOffset = t4.readShort(), this.ySubscriptYOffset = t4.readShort(), this.ySuperscriptXSize = t4.readShort(), this.ySuperscriptYSize = t4.readShort(), this.ySuperscriptXOffset = t4.readShort(), this.ySuperscriptYOffset = t4.readShort(), this.yStrikeoutSize = t4.readShort(), this.yStrikeoutPosition = t4.readShort(), this.familyClass = t4.readShort(), this.panose = function() {
var e3, r2;
for (r2 = [], e3 = 0; e3 < 10; ++e3) r2.push(t4.readByte());
return r2;
}(), this.charRange = function() {
var e3, r2;
for (r2 = [], e3 = 0; e3 < 4; ++e3) r2.push(t4.readInt());
return r2;
}(), this.vendorID = t4.readString(4), this.selection = t4.readShort(), this.firstCharIndex = t4.readShort(), this.lastCharIndex = t4.readShort(), this.version > 0 && (this.ascent = t4.readShort(), this.descent = t4.readShort(), this.lineGap = t4.readShort(), this.winAscent = t4.readShort(), this.winDescent = t4.readShort(), this.codePageRange = function() {
var e3, r2;
for (r2 = [], e3 = 0; e3 < 2; e3 = ++e3) r2.push(t4.readInt());
return r2;
}(), this.version > 1)) return this.xHeight = t4.readShort(), this.capHeight = t4.readShort(), this.defaultChar = t4.readShort(), this.breakChar = t4.readShort(), this.maxContext = t4.readShort();
}, e2;
}(), fe = function(t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments);
}
return oe(e2, re), e2.prototype.tag = "post", e2.prototype.parse = function(t4) {
var e3, r2, n2;
switch (t4.pos = this.offset, this.format = t4.readInt(), this.italicAngle = t4.readInt(), this.underlinePosition = t4.readShort(), this.underlineThickness = t4.readShort(), this.isFixedPitch = t4.readInt(), this.minMemType42 = t4.readInt(), this.maxMemType42 = t4.readInt(), this.minMemType1 = t4.readInt(), this.maxMemType1 = t4.readInt(), this.format) {
case 65536:
break;
case 131072:
var i2;
for (r2 = t4.readUInt16(), this.glyphNameIndex = [], i2 = 0; 0 <= r2 ? i2 < r2 : i2 > r2; i2 = 0 <= r2 ? ++i2 : --i2) this.glyphNameIndex.push(t4.readUInt16());
for (this.names = [], n2 = []; t4.pos < this.offset + this.length; ) e3 = t4.readByte(), n2.push(this.names.push(t4.readString(e3)));
return n2;
case 151552:
return r2 = t4.readUInt16(), this.offsets = t4.read(r2);
case 196608:
break;
case 262144:
return this.map = (function() {
var e4, r3, n3;
for (n3 = [], i2 = e4 = 0, r3 = this.file.maxp.numGlyphs; 0 <= r3 ? e4 < r3 : e4 > r3; i2 = 0 <= r3 ? ++e4 : --e4) n3.push(t4.readUInt32());
return n3;
}).call(this);
}
}, e2;
}(), de = function(t3, e2) {
this.raw = t3, this.length = t3.length, this.platformID = e2.platformID, this.encodingID = e2.encodingID, this.languageID = e2.languageID;
}, pe = function(t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments);
}
return oe(e2, re), e2.prototype.tag = "name", e2.prototype.parse = function(t4) {
var e3, r2, n2, i2, a2, o2, s2, c2, u2, h2, l2;
for (t4.pos = this.offset, t4.readShort(), e3 = t4.readShort(), o2 = t4.readShort(), r2 = [], i2 = 0; 0 <= e3 ? i2 < e3 : i2 > e3; i2 = 0 <= e3 ? ++i2 : --i2) r2.push({ platformID: t4.readShort(), encodingID: t4.readShort(), languageID: t4.readShort(), nameID: t4.readShort(), length: t4.readShort(), offset: this.offset + o2 + t4.readShort() });
for (s2 = {}, i2 = u2 = 0, h2 = r2.length; u2 < h2; i2 = ++u2) n2 = r2[i2], t4.pos = n2.offset, c2 = t4.readString(n2.length), a2 = new de(c2, n2), null == s2[l2 = n2.nameID] && (s2[l2] = []), s2[n2.nameID].push(a2);
this.strings = s2, this.copyright = s2[0], this.fontFamily = s2[1], this.fontSubfamily = s2[2], this.uniqueSubfamily = s2[3], this.fontName = s2[4], this.version = s2[5];
try {
this.postscriptName = s2[6][0].raw.replace(/[\x00-\x19\x80-\xff]/g, "");
} catch (t5) {
this.postscriptName = s2[4][0].raw.replace(/[\x00-\x19\x80-\xff]/g, "");
}
return this.trademark = s2[7], this.manufacturer = s2[8], this.designer = s2[9], this.description = s2[10], this.vendorUrl = s2[11], this.designerUrl = s2[12], this.license = s2[13], this.licenseUrl = s2[14], this.preferredFamily = s2[15], this.preferredSubfamily = s2[17], this.compatibleFull = s2[18], this.sampleText = s2[19];
}, e2;
}(), ge = function(t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments);
}
return oe(e2, re), e2.prototype.tag = "maxp", e2.prototype.parse = function(t4) {
return t4.pos = this.offset, this.version = t4.readInt(), this.numGlyphs = t4.readUInt16(), this.maxPoints = t4.readUInt16(), this.maxContours = t4.readUInt16(), this.maxCompositePoints = t4.readUInt16(), this.maxComponentContours = t4.readUInt16(), this.maxZones = t4.readUInt16(), this.maxTwilightPoints = t4.readUInt16(), this.maxStorage = t4.readUInt16(), this.maxFunctionDefs = t4.readUInt16(), this.maxInstructionDefs = t4.readUInt16(), this.maxStackElements = t4.readUInt16(), this.maxSizeOfInstructions = t4.readUInt16(), this.maxComponentElements = t4.readUInt16(), this.maxComponentDepth = t4.readUInt16();
}, e2;
}(), me = function(t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments);
}
return oe(e2, re), e2.prototype.tag = "hmtx", e2.prototype.parse = function(t4) {
var e3, r2, n2, i2, a2, o2, s2;
for (t4.pos = this.offset, this.metrics = [], e3 = 0, o2 = this.file.hhea.numberOfMetrics; 0 <= o2 ? e3 < o2 : e3 > o2; e3 = 0 <= o2 ? ++e3 : --e3) this.metrics.push({ advance: t4.readUInt16(), lsb: t4.readInt16() });
for (n2 = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics, this.leftSideBearings = function() {
var r3, i3;
for (i3 = [], e3 = r3 = 0; 0 <= n2 ? r3 < n2 : r3 > n2; e3 = 0 <= n2 ? ++r3 : --r3) i3.push(t4.readInt16());
return i3;
}(), this.widths = (function() {
var t5, e4, r3, n3;
for (n3 = [], t5 = 0, e4 = (r3 = this.metrics).length; t5 < e4; t5++) i2 = r3[t5], n3.push(i2.advance);
return n3;
}).call(this), r2 = this.widths[this.widths.length - 1], s2 = [], e3 = a2 = 0; 0 <= n2 ? a2 < n2 : a2 > n2; e3 = 0 <= n2 ? ++a2 : --a2) s2.push(this.widths.push(r2));
return s2;
}, e2.prototype.forGlyph = function(t4) {
return t4 in this.metrics ? this.metrics[t4] : { advance: this.metrics[this.metrics.length - 1].advance, lsb: this.leftSideBearings[t4 - this.metrics.length] };
}, e2;
}(), ve = [].slice, be = function(t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments);
}
return oe(e2, re), e2.prototype.tag = "glyf", e2.prototype.parse = function() {
return this.cache = {};
}, e2.prototype.glyphFor = function(t4) {
var e3, r2, n2, i2, a2, o2, s2, c2, u2, h2;
return t4 in this.cache ? this.cache[t4] : (i2 = this.file.loca, e3 = this.file.contents, r2 = i2.indexOf(t4), 0 === (n2 = i2.lengthOf(t4)) ? this.cache[t4] = null : (e3.pos = this.offset + r2, a2 = (o2 = new ne(e3.read(n2))).readShort(), c2 = o2.readShort(), h2 = o2.readShort(), s2 = o2.readShort(), u2 = o2.readShort(), this.cache[t4] = -1 === a2 ? new we(o2, c2, h2, s2, u2) : new ye(o2, a2, c2, h2, s2, u2), this.cache[t4]));
}, e2.prototype.encode = function(t4, e3, r2) {
var n2, i2, a2, o2, s2;
for (a2 = [], i2 = [], o2 = 0, s2 = e3.length; o2 < s2; o2++) n2 = t4[e3[o2]], i2.push(a2.length), n2 && (a2 = a2.concat(n2.encode(r2)));
return i2.push(a2.length), { table: a2, offsets: i2 };
}, e2;
}(), ye = function() {
function t3(t4, e2, r2, n2, i2, a2) {
this.raw = t4, this.numberOfContours = e2, this.xMin = r2, this.yMin = n2, this.xMax = i2, this.yMax = a2, this.compound = false;
}
return t3.prototype.encode = function() {
return this.raw.data;
}, t3;
}(), we = function() {
function t3(t4, e2, r2, n2, i2) {
var a2, o2;
for (this.raw = t4, this.xMin = e2, this.yMin = r2, this.xMax = n2, this.yMax = i2, this.compound = true, this.glyphIDs = [], this.glyphOffsets = [], a2 = this.raw; o2 = a2.readShort(), this.glyphOffsets.push(a2.pos), this.glyphIDs.push(a2.readUInt16()), 32 & o2; ) a2.pos += 1 & o2 ? 4 : 2, 128 & o2 ? a2.pos += 8 : 64 & o2 ? a2.pos += 4 : 8 & o2 && (a2.pos += 2);
}
return t3.prototype.encode = function() {
var t4, e2, r2;
for (e2 = new ne(ve.call(this.raw.data)), t4 = 0, r2 = this.glyphIDs.length; t4 < r2; ++t4) e2.pos = this.glyphOffsets[t4];
return e2.data;
}, t3;
}(), Ne = function(t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments);
}
return oe(e2, re), e2.prototype.tag = "loca", e2.prototype.parse = function(t4) {
var e3, r2;
return t4.pos = this.offset, e3 = this.file.head.indexToLocFormat, this.offsets = 0 === e3 ? (function() {
var e4, n2;
for (n2 = [], r2 = 0, e4 = this.length; r2 < e4; r2 += 2) n2.push(2 * t4.readUInt16());
return n2;
}).call(this) : (function() {
var e4, n2;
for (n2 = [], r2 = 0, e4 = this.length; r2 < e4; r2 += 4) n2.push(t4.readUInt32());
return n2;
}).call(this);
}, e2.prototype.indexOf = function(t4) {
return this.offsets[t4];
}, e2.prototype.lengthOf = function(t4) {
return this.offsets[t4 + 1] - this.offsets[t4];
}, e2.prototype.encode = function(t4, e3) {
for (var r2 = new Uint32Array(this.offsets.length), n2 = 0, i2 = 0, a2 = 0; a2 < r2.length; ++a2) if (r2[a2] = n2, i2 < e3.length && e3[i2] == a2) {
++i2, r2[a2] = n2;
var o2 = this.offsets[a2], s2 = this.offsets[a2 + 1] - o2;
s2 > 0 && (n2 += s2);
}
for (var c2 = new Array(4 * r2.length), u2 = 0; u2 < r2.length; ++u2) c2[4 * u2 + 3] = 255 & r2[u2], c2[4 * u2 + 2] = (65280 & r2[u2]) >> 8, c2[4 * u2 + 1] = (16711680 & r2[u2]) >> 16, c2[4 * u2] = (4278190080 & r2[u2]) >> 24;
return c2;
}, e2;
}(), Le = function() {
function t3(t4) {
this.font = t4, this.subset = {}, this.unicodes = {}, this.next = 33;
}
return t3.prototype.generateCmap = function() {
var t4, e2, r2, n2, i2;
for (e2 in n2 = this.font.cmap.tables[0].codeMap, t4 = {}, i2 = this.subset) r2 = i2[e2], t4[e2] = n2[r2];
return t4;
}, t3.prototype.glyphsFor = function(t4) {
var e2, r2, n2, i2, a2, o2, s2;
for (n2 = {}, a2 = 0, o2 = t4.length; a2 < o2; a2++) n2[i2 = t4[a2]] = this.font.glyf.glyphFor(i2);
for (i2 in e2 = [], n2) (null != (r2 = n2[i2]) ? r2.compound : void 0) && e2.push.apply(e2, r2.glyphIDs);
if (e2.length > 0) for (i2 in s2 = this.glyphsFor(e2)) r2 = s2[i2], n2[i2] = r2;
return n2;
}, t3.prototype.encode = function(t4, e2) {
var r2, n2, i2, a2, o2, s2, c2, u2, h2, l2, f2, d2, p2, g2, m2;
for (n2 in r2 = ue.encode(this.generateCmap(), "unicode"), a2 = this.glyphsFor(t4), f2 = { 0: 0 }, m2 = r2.charMap) f2[(s2 = m2[n2]).old] = s2.new;
for (d2 in l2 = r2.maxGlyphID, a2) d2 in f2 || (f2[d2] = l2++);
return u2 = function(t5) {
var e3, r3;
for (e3 in r3 = {}, t5) r3[t5[e3]] = e3;
return r3;
}(f2), h2 = Object.keys(u2).sort(function(t5, e3) {
return t5 - e3;
}), p2 = function() {
var t5, e3, r3;
for (r3 = [], t5 = 0, e3 = h2.length; t5 < e3; t5++) o2 = h2[t5], r3.push(u2[o2]);
return r3;
}(), i2 = this.font.glyf.encode(a2, p2, f2), c2 = this.font.loca.encode(i2.offsets, p2), g2 = { cmap: this.font.cmap.raw(), glyf: i2.table, loca: c2, hmtx: this.font.hmtx.raw(), hhea: this.font.hhea.raw(), maxp: this.font.maxp.raw(), post: this.font.post.raw(), name: this.font.name.raw(), head: this.font.head.encode(e2) }, this.font.os2.exists && (g2["OS/2"] = this.font.os2.raw()), this.font.directory.encode(g2);
}, t3;
}();
E$1.API.PDFObject = function() {
var t3;
function e2() {
}
return t3 = function(t4, e3) {
return (Array(e3 + 1).join("0") + t4).slice(-e3);
}, e2.convert = function(r2) {
var n2, i2, a2, o2;
if (Array.isArray(r2)) return "[" + function() {
var t4, i3, a3;
for (a3 = [], t4 = 0, i3 = r2.length; t4 < i3; t4++) n2 = r2[t4], a3.push(e2.convert(n2));
return a3;
}().join(" ") + "]";
if ("string" == typeof r2) return "/" + r2;
if (null != r2 ? r2.isString : void 0) return "(" + r2 + ")";
if (r2 instanceof Date) return "(D:" + t3(r2.getUTCFullYear(), 4) + t3(r2.getUTCMonth(), 2) + t3(r2.getUTCDate(), 2) + t3(r2.getUTCHours(), 2) + t3(r2.getUTCMinutes(), 2) + t3(r2.getUTCSeconds(), 2) + "Z)";
if ("[object Object]" === {}.toString.call(r2)) {
for (i2 in a2 = ["<<"], r2) o2 = r2[i2], a2.push("/" + i2 + " " + e2.convert(o2));
return a2.push(">>"), a2.join("\n");
}
return "" + r2;
}, e2;
}();
const _sfc_main$I = /* @__PURE__ */ defineComponent({
__name: "OlPrintdialogControl",
props: {
className: {},
lang: {},
imageType: {},
quality: {},
orientation: {},
immediate: { type: Boolean },
openWindow: { type: Boolean },
copy: { type: Boolean },
print: { type: Boolean },
pdf: { type: Boolean },
saveAs: { type: Function },
northImage: {},
jsPDF: {},
element: {},
render: { type: Function },
target: {}
},
emits: ["change", "error", "propertychange", "printing"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(PrintDialog, properties, attrs, ["printing"]);
control.value.on(["print", "error"], (e2) => {
if (e2.image) {
if (e2.pdf) {
const pdf = new E$1({
orientation: e2.print.orientation,
unit: e2.print.unit,
format: e2.print.size
});
pdf.addImage(
e2.image,
"JPEG",
e2.print.position[0],
e2.print.position[0],
e2.print.imageWidth,
e2.print.imageHeight
);
pdf.save(e2.print.legend ? "legend.pdf" : "map.pdf");
} else {
e2.canvas.toBlob(
(blob) => {
const name = (e2.print.legend ? "legend." : "map.") + e2.imageType.replace("image/", "");
FileSaver_minExports.saveAs(blob, name);
},
e2.imageType,
e2.quality
);
}
} else {
console.warn("No canvas to export");
}
});
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$H = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlProfileControl",
props: {
className: {},
title: {},
style: {},
selectStyle: {},
info: {},
width: {},
height: {},
feature: {},
selectable: { type: Boolean },
zoomable: { type: Boolean },
element: {},
render: { type: Function },
target: {}
},
emits: ["change", "error", "propertychange", "over", "out", "show", "dragstart", "dragging", "dragend", "dragcancel"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Profile, properties, attrs);
useOpenLayersEvents(control, [
"over",
"out",
"show",
"dragstart",
"dragging",
"dragend",
"dragcancel"
]);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$G = /* @__PURE__ */ defineComponent({
__name: "OlRotateControl",
props: {
className: {},
label: {},
tipLabel: {},
compassClassName: {},
duration: {},
autoHide: { type: Boolean, default: true },
render: {},
resetNorth: {},
target: {}
},
emits: ["change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Rotate$1, properties, attrs);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$F = /* @__PURE__ */ defineComponent({
__name: "OlScalelineControl",
props: {
className: {},
minWidth: {},
maxWidth: {},
render: { type: Function },
target: {},
units: {},
bar: { type: Boolean },
steps: {},
text: { type: Boolean },
dpi: {}
},
emits: ["change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(ScaleLine, properties, attrs);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$E = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlSearchControl",
props: {
className: {},
title: {},
label: {},
reverseTitle: {},
placeholder: {},
reverse: { type: Boolean },
inputLabel: {},
collapsed: { type: Boolean, default: true },
noCollapse: { type: Boolean },
typing: {},
minLength: {},
maxItems: {},
maxHistory: {},
getTitle: {},
autocomplete: {},
onselect: {},
centerOnSelect: { type: Boolean },
zoomOnSelect: {},
element: {},
render: {},
target: {}
},
emits: ["change", "error", "propertychange", "select"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Search, properties, attrs);
useOpenLayersEvents(control, ["select"]);
__expose({ control });
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$D = /* @__PURE__ */ defineComponent({
__name: "OlSwipeControl",
props: {
layers: {},
rightLayers: {},
className: { default: "ol-swipe" },
position: {},
orientation: {},
element: {},
render: {},
target: {},
layerList: {}
},
emits: ["change", "error", "propertychange", "moving"],
setup(__props, { expose: __expose }) {
var _a2;
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Swipe, properties, attrs, ["moving"]);
(_a2 = props.layerList) == null ? void 0 : _a2.forEach((layer, index2) => {
control.value.addLayer(layer, index2 === 1);
});
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$C = /* @__PURE__ */ defineComponent({
__name: "OlToggleControl",
props: {
className: {},
title: {},
html: {},
interaction: {},
active: { type: Boolean },
disable: { type: Boolean },
bar: {},
autoActive: { type: Boolean },
onToggle: { type: Function },
element: {},
render: { type: Function },
target: {}
},
emits: ["change", "error", "propertychange", "change:active", "change:disable"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Toggle, properties, attrs, [
"change:active",
"change:disable"
]);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$B = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlVideorecorderControl",
props: {
className: {},
frameRate: {},
videoBitsPerSecond: {},
videoTarget: {},
element: {},
render: {},
target: {},
downloadName: { default: "mapVideo.mp4" }
},
emits: ["change", "error", "propertychange", "start", "stop", "pause", "result"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(VideoRecorder, properties, attrs, [
"start",
"stop",
"pause",
"resume"
]);
control.value.on(
// @ts-expect-error because of wrong typings
"stop",
(event) => {
if (props.downloadName) {
FileSaver_minExports.saveAs(event.videoURL, props.downloadName);
}
}
);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$A = /* @__PURE__ */ defineComponent({
__name: "OlZoneControl",
props: {
className: { default: "ol-mapzone" },
layer: {},
projection: { default: "EPSG:3857" },
centerOnClick: { type: Boolean, default: true },
element: {},
render: {},
target: {},
zones: {}
},
emits: ["change", "error", "propertychange", "select"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(MapZone, properties, attrs, ["select"]);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$z = /* @__PURE__ */ defineComponent({
__name: "OlZoomControl",
props: {
duration: {},
className: {},
zoomInClassName: {},
zoomOutClassName: {},
zoomInLabel: {},
zoomOutLabel: {},
zoomInTipLabel: {},
zoomOutTipLabel: {},
delta: {},
target: {}
},
emits: ["change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Zoom, properties, attrs);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$y = /* @__PURE__ */ defineComponent({
__name: "OlZoomsliderControl",
props: {
className: {},
duration: {},
render: { type: Function },
target: {}
},
emits: ["change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(ZoomSlider, properties, attrs);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$x = /* @__PURE__ */ defineComponent({
__name: "OlZoomtoextentControl",
props: {
className: {},
target: {},
label: {},
tipLabel: {},
extent: {}
},
emits: ["change", "error", "propertychange"],
setup(__props, { expose: __expose }) {
const props = __props;
const attrs = useAttrs();
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(ZoomToExtent, properties, attrs);
__expose({
control
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
function install$6(app, options) {
app.component("OlAttributionControl", _sfc_main$R);
app.component("OlFullscreenControl", _sfc_main$N);
app.component("OlMousepositionControl", _sfc_main$K);
app.component("OlOverviewmapControl", _sfc_main$J);
app.component("OlScalelineControl", _sfc_main$F);
app.component("OlZoomControl", _sfc_main$z);
app.component("OlZoomsliderControl", _sfc_main$y);
app.component("OlZoomtoextentControl", _sfc_main$x);
app.component("OlRotateControl", _sfc_main$G);
app.component("OlContextMenuControl", _sfc_main$P);
app.component("OlSearchControl", _sfc_main$E);
app.component("OlSwipeControl", _sfc_main$D);
app.component("OlControlBar", _sfc_main$O);
app.component("OlToggleControl", _sfc_main$C);
app.component("OlButtonControl", _sfc_main$Q);
app.component("OlPrintdialogControl", _sfc_main$I);
app.component("OlProfileControl", _sfc_main$H);
app.component("OlVideorecorderControl", _sfc_main$B);
app.component("OlLayerswitcherControl", _sfc_main$M);
app.component("OlLayerswitcherimageControl", _sfc_main$L);
app.component("OlZoneControl", _sfc_main$A);
if (options) {
app.provide("ol-options", options);
}
}
const index$5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
OlAttributionControl: _sfc_main$R,
OlButtonControl: _sfc_main$Q,
OlContextMenuControl: _sfc_main$P,
OlControlBar: _sfc_main$O,
OlFullscreenControl: _sfc_main$N,
OlLayerswitcherControl: _sfc_main$M,
OlLayerswitcherimageControl: _sfc_main$L,
OlMousepositionControl: _sfc_main$K,
OlOverviewmapControl: _sfc_main$J,
OlPrintdialogControl: _sfc_main$I,
OlProfileControl: _sfc_main$H,
OlRotateControl: _sfc_main$G,
OlScalelineControl: _sfc_main$F,
OlSearchControl: _sfc_main$E,
OlSwipeControl: _sfc_main$D,
OlToggleControl: _sfc_main$C,
OlVideorecorderControl: _sfc_main$B,
OlZoneControl: _sfc_main$A,
OlZoomControl: _sfc_main$z,
OlZoomsliderControl: _sfc_main$y,
OlZoomtoextentControl: _sfc_main$x,
default: install$6,
install: install$6
}, Symbol.toStringTag, { value: "Module" }));
function useGeometry(GeometryType, props) {
const feature = inject("feature");
const properties = usePropsAsObjectProperties(props);
const geometry = computed(() => {
const parameters = Object.values(properties);
return new GeometryType(
...parameters
);
});
watch(properties, () => {
var _a2, _b2;
(_a2 = feature == null ? void 0 : feature.value) == null ? void 0 : _a2.setGeometry(geometry.value);
(_b2 = feature == null ? void 0 : feature.value) == null ? void 0 : _b2.changed();
});
watch(
() => feature,
() => {
var _a2;
(_a2 = feature == null ? void 0 : feature.value) == null ? void 0 : _a2.setGeometry(geometry.value);
}
);
onMounted(() => {
var _a2;
(_a2 = feature == null ? void 0 : feature.value) == null ? void 0 : _a2.setGeometry(geometry.value);
});
onUnmounted(() => {
var _a2;
(_a2 = feature == null ? void 0 : feature.value) == null ? void 0 : _a2.setGeometry(void 0);
});
return geometry;
}
const _sfc_main$w = /* @__PURE__ */ defineComponent({
__name: "OlGeomCircle",
props: {
center: {},
radius: {},
layout: { default: "XY" }
},
setup(__props, { expose: __expose }) {
const props = __props;
const geometry = useGeometry(Circle, props);
__expose({
geometry
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$v = /* @__PURE__ */ defineComponent({
__name: "OlGeomLineString",
props: {
coordinates: {},
layout: { default: "XY" }
},
setup(__props, { expose: __expose }) {
const props = __props;
const geometry = useGeometry(LineString, props);
__expose({
geometry
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$u = /* @__PURE__ */ defineComponent({
__name: "OlGeomMultiLineString",
props: {
coordinates: {},
layout: { default: "XY" },
ends: {}
},
setup(__props, { expose: __expose }) {
const props = __props;
const geometry = useGeometry(MultiLineString, props);
__expose({
geometry
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$t = /* @__PURE__ */ defineComponent({
__name: "OlGeomMultiPoint",
props: {
coordinates: {},
layout: { default: "XY" }
},
setup(__props, { expose: __expose }) {
const props = __props;
const geometry = useGeometry(MultiPoint, props);
__expose({
geometry
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$s = /* @__PURE__ */ defineComponent({
__name: "OlGeomMultiPolygon",
props: {
coordinates: {},
layout: { default: "XY" },
endss: {}
},
setup(__props, { expose: __expose }) {
const props = __props;
const geometry = useGeometry(MultiPolygon, props);
__expose({
geometry
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$r = /* @__PURE__ */ defineComponent({
__name: "OlGeomPoint",
props: {
coordinates: {},
layout: { default: "XY" }
},
setup(__props, { expose: __expose }) {
const props = __props;
const geometry = useGeometry(Point$2, props);
__expose({
geometry
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$q = /* @__PURE__ */ defineComponent({
__name: "OlGeomPolygon",
props: {
coordinates: {},
layout: { default: "XY" },
ends: {}
},
setup(__props, { expose: __expose }) {
const props = __props;
const geometry = useGeometry(Polygon, props);
__expose({
geometry
});
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
function install$5(app, options) {
app.component("OlGeomCircle", _sfc_main$w);
app.component("OlGeomLineString", _sfc_main$v);
app.component("OlGeomMultiLineString", _sfc_main$u);
app.component("OlGeomMultiPoint", _sfc_main$t);
app.component("OlGeomMultiPolygon", _sfc_main$s);
app.component("OlGeomPoint", _sfc_main$r);
app.component("OlGeomPolygon", _sfc_main$q);
if (options) {
app.provide("ol-options", options);
}
}
const index$4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
OlGeomCircle: _sfc_main$w,
OlGeomLineString: _sfc_main$v,
OlGeomMultiLineString: _sfc_main$u,
OlGeomMultiPoint: _sfc_main$t,
OlGeomMultiPolygon: _sfc_main$s,
OlGeomPoint: _sfc_main$r,
OlGeomPolygon: _sfc_main$q,
default: install$5,
install: install$5
}, Symbol.toStringTag, { value: "Module" }));
const _sfc_main$p = /* @__PURE__ */ defineComponent({
__name: "OlStyle",
props: {
zIndex: {},
overrideStyleFunction: {}
},
setup(__props, { expose: __expose }) {
const props = __props;
const styledObj = inject("stylable", void 0);
const properties = usePropsAsObjectProperties(props);
const style = computed(() => new Style(properties));
const setStyle = (val) => {
const st2 = styledObj == null ? void 0 : styledObj.value;
if (!st2) {
return;
}
if (st2 instanceof Draw || st2 instanceof Modify) {
st2.getOverlay().setStyle(val);
st2.changed();
st2.dispatchEvent("styleChanged");
} else {
try {
st2.setStyle(val);
st2.changed();
st2.dispatchEvent("styleChanged");
} catch (error) {
st2.style_ = val;
st2.values_.style = val;
st2.changed();
st2.dispatchEvent("styleChanged");
}
}
};
const styleFunc = computed(() => {
return (feature, resolution) => {
if (properties.overrideStyleFunction) {
return properties.overrideStyleFunction(feature, style.value, resolution);
}
return style.value;
};
});
watch(
properties,
() => setStyle(properties.overrideStyleFunction ? styleFunc.value : style.value)
);
onMounted(
() => setStyle(properties.overrideStyleFunction ? styleFunc.value : style.value)
);
onUnmounted(() => {
setStyle(new Style());
});
provide("style", style);
provide("styledObj", styledObj);
__expose({
style
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$o = /* @__PURE__ */ defineComponent({
__name: "OlStyleCircle",
props: {
radius: {},
scale: {}
},
setup(__props) {
const props = __props;
const style = inject("style", null);
const styledObj = inject(
"styledObj",
null
);
const properties = usePropsAsObjectProperties(props);
const createCircleStyle = (innerProperties) => {
return new CircleStyle({
...innerProperties,
fill: new Fill(),
stroke: new Stroke()
});
};
const circle = computed(() => createCircleStyle(properties));
const applyStyle = () => {
var _a2;
(_a2 = style == null ? void 0 : style.value) == null ? void 0 : _a2.setImage(circle.value);
if ((styledObj == null ? void 0 : styledObj.value) instanceof Interaction) {
styledObj.value.changed();
}
};
watch(properties, () => applyStyle());
watch(
() => style,
() => applyStyle()
);
onMounted(() => applyStyle());
onUnmounted(() => {
var _a2;
(_a2 = style == null ? void 0 : style.value) == null ? void 0 : _a2.setImage(null);
});
provide("circle", circle);
provide("styledObj", styledObj);
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$n = /* @__PURE__ */ defineComponent({
__name: "OlStyleStroke",
props: {
color: {},
lineCap: {},
lineJoin: {},
lineDash: {},
lineDashOffset: {},
miterLimit: {},
width: { default: 1 }
},
setup(__props) {
var _a2;
const props = __props;
const style = inject("style", null);
const styledObj = inject(
"styledObj",
null
);
const circle = inject("circle", null);
const properties = usePropsAsObjectProperties(props);
if (style != null && circle == null) {
let stroke = new Stroke(properties);
(_a2 = style.value) == null ? void 0 : _a2.setStroke(stroke);
const applyStroke = () => {
var _a3, _b2;
(_a3 = style == null ? void 0 : style.value) == null ? void 0 : _a3.setStroke(new Stroke());
stroke = new Stroke(properties);
(_b2 = style == null ? void 0 : style.value) == null ? void 0 : _b2.setStroke(stroke);
};
watch(properties, () => {
applyStroke();
});
watch(style, () => {
applyStroke();
});
onMounted(() => {
var _a3;
(_a3 = style == null ? void 0 : style.value) == null ? void 0 : _a3.setStroke(stroke);
});
onUnmounted(() => {
var _a3;
(_a3 = style == null ? void 0 : style.value) == null ? void 0 : _a3.setStroke(new Stroke());
});
} else if (circle != null) {
const applyStroketoCircle = (innerProperties) => {
var _a3, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
(_b2 = (_a3 = circle == null ? void 0 : circle.value) == null ? void 0 : _a3.getStroke()) == null ? void 0 : _b2.setColor(innerProperties.color || "");
(_d = (_c = circle == null ? void 0 : circle.value) == null ? void 0 : _c.getStroke()) == null ? void 0 : _d.setLineCap(innerProperties.lineCap);
(_f = (_e = circle == null ? void 0 : circle.value) == null ? void 0 : _e.getStroke()) == null ? void 0 : _f.setLineDash(innerProperties.lineDash || []);
(_h = (_g = circle == null ? void 0 : circle.value) == null ? void 0 : _g.getStroke()) == null ? void 0 : _h.setLineDashOffset(innerProperties.lineDashOffset);
(_j = (_i = circle == null ? void 0 : circle.value) == null ? void 0 : _i.getStroke()) == null ? void 0 : _j.setLineJoin(innerProperties.lineJoin);
(_l = (_k = circle == null ? void 0 : circle.value) == null ? void 0 : _k.getStroke()) == null ? void 0 : _l.setMiterLimit(innerProperties.miterLimit);
(_n = (_m = circle == null ? void 0 : circle.value) == null ? void 0 : _m.getStroke()) == null ? void 0 : _n.setWidth(innerProperties.width);
(_p = circle == null ? void 0 : circle.value) == null ? void 0 : _p.setRadius((_o = circle == null ? void 0 : circle.value) == null ? void 0 : _o.getRadius());
if ((styledObj == null ? void 0 : styledObj.value) instanceof Interaction) {
styledObj.value.changed();
}
};
applyStroketoCircle(properties);
watch(properties, (newVal) => {
applyStroketoCircle(newVal);
});
watch(circle, () => {
applyStroketoCircle(properties);
});
}
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
const _sfc_main$m = /* @__PURE__ */ defineComponent({
__name: "OlStyleFill",
props: {
color: {},
gradient: {}
},
setup(__props) {
const props = __props;
const style = inject("style", ref(null));
const circle = inject("circle", ref(null));
const properties = usePropsAsObjectProperties(props);
const createGradientFill = (gradient, width = 256, height = 256) => {
const gradientCanvas = document.createElement("canvas");
const ctx = gradientCanvas.getContext("2d");
if (!ctx) throw new Error("Unable to get canvas context");
gradientCanvas.width = width;
gradientCanvas.height = height;
let grad;
if (gradient) {
switch (gradient.type) {
case "linear":
grad = ctx.createLinearGradient(
gradient.x0,
gradient.y0,
gradient.x1,
gradient.y1
);
break;
case "radial":
grad = ctx.createRadialGradient(
gradient.x0,
gradient.y0,
gradient.r0,
gradient.x1,
gradient.y1,
gradient.r1
);
break;
case "conic":
grad = ctx.createConicGradient(
gradient.x,
gradient.y,
gradient.startAngle
);
break;
default:
throw new Error("Unsupported gradient type");
}
gradient.colorStops.forEach(([offset, gradientColor]) => {
grad.addColorStop(offset, gradientColor);
});
ctx.fillStyle = grad;
} else {
if (typeof properties.color === "string") {
ctx.fillStyle = properties.color ?? "transparent";
} else {
ctx.fillStyle = "transparent";
}
}
ctx.fillRect(0, 0, width, height);
const dataURL = gradientCanvas.toDataURL();
return new Fill({ color: { src: dataURL } });
};
const gradFill = properties.gradient ? createGradientFill(properties.gradient) : null;
const applyFillToStyle = () => {
if (style.value) {
const fill = gradFill ? gradFill : new Fill({ color: properties.color || "transparent" });
style.value.setFill(fill);
}
};
const applyFillToCircle = (color2) => {
var _a2, _b2, _c;
if (circle.value) {
(_b2 = (_a2 = circle == null ? void 0 : circle.value) == null ? void 0 : _a2.getFill()) == null ? void 0 : _b2.setColor(color2 || null);
(_c = circle == null ? void 0 : circle.value) == null ? void 0 : _c.setRadius(circle == null ? void 0 : circle.value.getRadius());
}
};
if (style.value && !circle.value) {
applyFillToStyle();
watch(properties, applyFillToStyle, { immediate: true });
watch(
style,
(newStyle) => {
if (newStyle) applyFillToStyle();
},
{ immediate: true }
);
onMounted(applyFillToStyle);
onUnmounted(() => {
var _a2;
(_a2 = style.value) == null ? void 0 : _a2.setFill(new Fill());
});
} else if (circle.value) {
applyFillToCircle(properties.color);
watch(
properties,
() => {
if (circle.value) applyFillToCircle(properties.color);
},
{ immediate: true }
);
watch(
circle,
(newCircle) => {
if (newCircle) applyFillToCircle(properties.color);
},
{ immediate: true }
);
}
return (_ctx, _cache) => {
return createCommentVNode("", true);
};
}
});
var domToImageMore_min = { exports: {} };
/*! dom-to-image-more 29-07-2024 */
(function(module, exports2) {
!function(l2) {
let d2 = /* @__PURE__ */ function() {
let e3 = 0;
return { escape: function(e4) {
return e4.replace(/([.*+?^${}()|[]\/\\])/g, "\\$1");
}, isDataUrl: function(e4) {
return -1 !== e4.search(/^(data:)/);
}, canvasToBlob: function(t5) {
if (t5.toBlob) return new Promise(function(e4) {
t5.toBlob(e4);
});
return function(r4) {
return new Promise(function(e4) {
var t6 = s2(r4.toDataURL().split(",")[1]), n4 = t6.length, o4 = new Uint8Array(n4);
for (let e5 = 0; e5 < n4; e5++) o4[e5] = t6.charCodeAt(e5);
e4(new Blob([o4], { type: "image/png" }));
});
}(t5);
}, resolveUrl: function(e4, t5) {
var n4 = document.implementation.createHTMLDocument(), o4 = n4.createElement("base"), r4 = (n4.head.appendChild(o4), n4.createElement("a"));
return n4.body.appendChild(r4), o4.href = t5, r4.href = e4, r4.href;
}, getAndEncode: function(u3) {
let e4 = a2.impl.urlCache.find(function(e5) {
return e5.url === u3;
});
e4 || (e4 = { url: u3, promise: null }, a2.impl.urlCache.push(e4));
null === e4.promise && (a2.impl.options.cacheBust && (u3 += (/\?/.test(u3) ? "&" : "?") + (/* @__PURE__ */ new Date()).getTime()), e4.promise = new Promise(function(t5) {
let e5 = a2.impl.options.httpTimeout, r4 = new XMLHttpRequest();
if (r4.onreadystatechange = function() {
if (4 === r4.readyState) if (300 <= r4.status) n4 ? t5(n4) : l3(`cannot fetch resource: ${u3}, status: ` + r4.status);
else {
let e6 = new FileReader();
e6.onloadend = function() {
t5(e6.result);
}, e6.readAsDataURL(r4.response);
}
}, r4.ontimeout = function() {
n4 ? t5(n4) : l3(`timeout of ${e5}ms occured while fetching resource: ` + u3);
}, r4.responseType = "blob", r4.timeout = e5, 0 < a2.impl.options.useCredentialsFilters.length && (a2.impl.options.useCredentials = 0 < a2.impl.options.useCredentialsFilters.filter((e6) => 0 <= u3.search(e6)).length), a2.impl.options.useCredentials && (r4.withCredentials = true), a2.impl.options.corsImg && 0 === u3.indexOf("http") && -1 === u3.indexOf(window.location.origin)) {
var i4 = "POST" === (a2.impl.options.corsImg.method || "GET").toUpperCase() ? "POST" : "GET";
r4.open(i4, (a2.impl.options.corsImg.url || "").replace("#{cors}", u3), true);
let t6 = false, n5 = a2.impl.options.corsImg.headers || {}, o4 = (Object.keys(n5).forEach(function(e6) {
-1 !== n5[e6].indexOf("application/json") && (t6 = true), r4.setRequestHeader(e6, n5[e6]);
}), function(e6) {
try {
return JSON.parse(JSON.stringify(e6));
} catch (e7) {
l3("corsImg.data is missing or invalid");
}
}(a2.impl.options.corsImg.data || ""));
Object.keys(o4).forEach(function(e6) {
"string" == typeof o4[e6] && (o4[e6] = o4[e6].replace("#{cors}", u3));
}), r4.send(t6 ? JSON.stringify(o4) : o4);
} else r4.open("GET", u3, true), r4.send();
let n4;
function l3(e6) {
console.error(e6), t5("");
}
a2.impl.options.imagePlaceholder && (i4 = a2.impl.options.imagePlaceholder.split(/,/)) && i4[1] && (n4 = i4[1]);
}));
return e4.promise;
}, uid: function() {
return "u" + ("0000" + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4) + e3++;
}, delay: function(n4) {
return function(t5) {
return new Promise(function(e4) {
setTimeout(function() {
e4(t5);
}, n4);
});
};
}, asArray: function(t5) {
var n4 = [], o4 = t5.length;
for (let e4 = 0; e4 < o4; e4++) n4.push(t5[e4]);
return n4;
}, escapeXhtml: function(e4) {
return e4.replace(/%/g, "%25").replace(/#/g, "%23").replace(/\n/g, "%0A");
}, makeImage: function(o4) {
return "data:," !== o4 ? new Promise(function(e4, t5) {
let n4 = new Image();
a2.impl.options.useCredentials && (n4.crossOrigin = "use-credentials"), n4.onload = function() {
window && window.requestAnimationFrame ? window.requestAnimationFrame(function() {
e4(n4);
}) : e4(n4);
}, n4.onerror = t5, n4.src = o4;
}) : Promise.resolve();
}, width: function(e4) {
var t5 = i3(e4, "width");
if (!isNaN(t5)) return t5;
var t5 = i3(e4, "border-left-width"), n4 = i3(e4, "border-right-width");
return e4.scrollWidth + t5 + n4;
}, height: function(e4) {
var t5 = i3(e4, "height");
if (!isNaN(t5)) return t5;
var t5 = i3(e4, "border-top-width"), n4 = i3(e4, "border-bottom-width");
return e4.scrollHeight + t5 + n4;
}, getWindow: t4, isElement: r3, isElementHostForOpenShadowRoot: function(e4) {
return r3(e4) && null !== e4.shadowRoot;
}, isShadowRoot: n3, isInShadowRoot: o3, isHTMLElement: function(e4) {
return e4 instanceof t4(e4).HTMLElement;
}, isHTMLCanvasElement: function(e4) {
return e4 instanceof t4(e4).HTMLCanvasElement;
}, isHTMLInputElement: function(e4) {
return e4 instanceof t4(e4).HTMLInputElement;
}, isHTMLImageElement: function(e4) {
return e4 instanceof t4(e4).HTMLImageElement;
}, isHTMLLinkElement: function(e4) {
return e4 instanceof t4(e4).HTMLLinkElement;
}, isHTMLScriptElement: function(e4) {
return e4 instanceof t4(e4).HTMLScriptElement;
}, isHTMLStyleElement: function(e4) {
return e4 instanceof t4(e4).HTMLStyleElement;
}, isHTMLTextAreaElement: function(e4) {
return e4 instanceof t4(e4).HTMLTextAreaElement;
}, isShadowSlotElement: function(e4) {
return o3(e4) && e4 instanceof t4(e4).HTMLSlotElement;
}, isSVGElement: function(e4) {
return e4 instanceof t4(e4).SVGElement;
}, isSVGRectElement: function(e4) {
return e4 instanceof t4(e4).SVGRectElement;
}, isDimensionMissing: function(e4) {
return isNaN(e4) || e4 <= 0;
} };
function t4(e4) {
e4 = e4 ? e4.ownerDocument : void 0;
return (e4 ? e4.defaultView : void 0) || l2 || window;
}
function n3(e4) {
return e4 instanceof t4(e4).ShadowRoot;
}
function o3(e4) {
return null !== e4 && Object.prototype.hasOwnProperty.call(e4, "getRootNode") && n3(e4.getRootNode());
}
function r3(e4) {
return e4 instanceof t4(e4).Element;
}
function i3(t5, n4) {
if (t5.nodeType === c2) {
let e4 = m2(t5).getPropertyValue(n4);
if ("px" === e4.slice(-2)) return e4 = e4.slice(0, -2), parseFloat(e4);
}
return NaN;
}
}(), r2 = /* @__PURE__ */ function() {
let o3 = /url\(['"]?([^'"]+?)['"]?\)/g;
return { inlineAll: function(t4, o4, r3) {
if (!e3(t4)) return Promise.resolve(t4);
return Promise.resolve(t4).then(n3).then(function(e4) {
let n4 = Promise.resolve(t4);
return e4.forEach(function(t5) {
n4 = n4.then(function(e5) {
return i3(e5, t5, o4, r3);
});
}), n4;
});
}, shouldProcess: e3, impl: { readUrls: n3, inline: i3 } };
function e3(e4) {
return -1 !== e4.search(o3);
}
function n3(e4) {
for (var t4, n4 = []; null !== (t4 = o3.exec(e4)); ) n4.push(t4[1]);
return n4.filter(function(e5) {
return !d2.isDataUrl(e5);
});
}
function i3(n4, o4, t4, e4) {
return Promise.resolve(o4).then(function(e5) {
return t4 ? d2.resolveUrl(e5, t4) : e5;
}).then(e4 || d2.getAndEncode).then(function(e5) {
return n4.replace((t5 = o4, new RegExp(`(url\\(['"]?)(${d2.escape(t5)})(['"]?\\))`, "g")), `$1${e5}$3`);
var t5;
});
}
}(), e2 = { resolveAll: function() {
return t3().then(function(e3) {
return Promise.all(e3.map(function(e4) {
return e4.resolve();
}));
}).then(function(e3) {
return e3.join("\n");
});
}, impl: { readAll: t3 } };
function t3() {
return Promise.resolve(d2.asArray(document.styleSheets)).then(function(e3) {
let n3 = [];
return e3.forEach(function(t5) {
if (Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(t5), "cssRules")) try {
d2.asArray(t5.cssRules || []).forEach(n3.push.bind(n3));
} catch (e4) {
console.error("domtoimage: Error while reading CSS rules from " + t5.href, e4.toString());
}
}), n3;
}).then(function(e3) {
return e3.filter(function(e4) {
return e4.type === CSSRule.FONT_FACE_RULE;
}).filter(function(e4) {
return r2.shouldProcess(e4.style.getPropertyValue("src"));
});
}).then(function(e3) {
return e3.map(t4);
});
function t4(t5) {
return { resolve: function() {
var e3 = (t5.parentStyleSheet || {}).href;
return r2.inlineAll(t5.cssText, e3);
}, src: function() {
return t5.style.getPropertyValue("src");
} };
}
}
let n2 = { inlineAll: function t4(e3) {
if (!d2.isElement(e3)) return Promise.resolve(e3);
return n3(e3).then(function() {
return d2.isHTMLImageElement(e3) ? o2(e3).inline() : Promise.all(d2.asArray(e3.childNodes).map(function(e4) {
return t4(e4);
}));
});
function n3(o3) {
let e4 = ["background", "background-image"], t5 = e4.map(function(t6) {
let e5 = o3.style.getPropertyValue(t6), n4 = o3.style.getPropertyPriority(t6);
return e5 ? r2.inlineAll(e5).then(function(e6) {
o3.style.setProperty(t6, e6, n4);
}) : Promise.resolve();
});
return Promise.all(t5).then(function() {
return o3;
});
}
}, impl: { newImage: o2 } };
function o2(n3) {
return { inline: function(e3) {
if (d2.isDataUrl(n3.src)) return Promise.resolve();
return Promise.resolve(n3.src).then(e3 || d2.getAndEncode).then(function(t4) {
return new Promise(function(e4) {
n3.onload = e4, n3.onerror = e4, n3.src = t4;
});
});
} };
}
let u2 = { copyDefaultStyles: true, imagePlaceholder: void 0, cacheBust: false, useCredentials: false, useCredentialsFilters: [], httpTimeout: 3e4, styleCaching: "strict", corsImg: void 0, adjustClonedNode: void 0 }, a2 = { toSvg: f2, toPng: function(e3, t4) {
return i2(e3, t4).then(function(e4) {
return e4.toDataURL();
});
}, toJpeg: function(e3, t4) {
return i2(e3, t4).then(function(e4) {
return e4.toDataURL("image/jpeg", (t4 ? t4.quality : void 0) || 1);
});
}, toBlob: function(e3, t4) {
return i2(e3, t4).then(d2.canvasToBlob);
}, toPixelData: function(t4, e3) {
return i2(t4, e3).then(function(e4) {
return e4.getContext("2d").getImageData(0, 0, d2.width(t4), d2.height(t4)).data;
});
}, toCanvas: i2, impl: { fontFaces: e2, images: n2, util: d2, inliner: r2, urlCache: [], options: {} } }, c2 = (module.exports = a2, ("undefined" != typeof Node ? Node.ELEMENT_NODE : void 0) || 1), m2 = (void 0 !== l2 ? l2.getComputedStyle : void 0) || ("undefined" != typeof window ? window.getComputedStyle : void 0) || globalThis.getComputedStyle, s2 = (void 0 !== l2 ? l2.atob : void 0) || ("undefined" != typeof window ? window.atob : void 0) || globalThis.atob;
function f2(e3, r3) {
a2.impl.util.getWindow(e3);
var n3 = r3 = r3 || {};
void 0 === n3.copyDefaultStyles ? a2.impl.options.copyDefaultStyles = u2.copyDefaultStyles : a2.impl.options.copyDefaultStyles = n3.copyDefaultStyles, a2.impl.options.imagePlaceholder = (void 0 === n3.imagePlaceholder ? u2 : n3).imagePlaceholder, a2.impl.options.cacheBust = (void 0 === n3.cacheBust ? u2 : n3).cacheBust, a2.impl.options.corsImg = (void 0 === n3.corsImg ? u2 : n3).corsImg, a2.impl.options.useCredentials = (void 0 === n3.useCredentials ? u2 : n3).useCredentials, a2.impl.options.useCredentialsFilters = (void 0 === n3.useCredentialsFilters ? u2 : n3).useCredentialsFilters, a2.impl.options.httpTimeout = (void 0 === n3.httpTimeout ? u2 : n3).httpTimeout, a2.impl.options.styleCaching = (void 0 === n3.styleCaching ? u2 : n3).styleCaching;
let i3 = [];
return Promise.resolve(e3).then(function(e4) {
if (e4.nodeType === c2) return e4;
var t4 = e4, n4 = e4.parentNode, o3 = document.createElement("span");
return n4.replaceChild(o3, t4), o3.append(e4), i3.push({ parent: n4, child: t4, wrapper: o3 }), o3;
}).then(function(e4) {
return function l3(t4, u3, r4, s3) {
let e5 = u3.filter;
if (t4 === h2 || d2.isHTMLScriptElement(t4) || d2.isHTMLStyleElement(t4) || d2.isHTMLLinkElement(t4) || null !== r4 && e5 && !e5(t4)) return Promise.resolve();
return Promise.resolve(t4).then(n4).then(o3).then(function(e6) {
return c3(e6, a3(t4));
}).then(i4).then(function(e6) {
return f3(e6, t4);
});
function n4(e6) {
return d2.isHTMLCanvasElement(e6) ? d2.makeImage(e6.toDataURL()) : e6.cloneNode(false);
}
function o3(e6) {
return u3.adjustClonedNode && u3.adjustClonedNode(t4, e6, false), Promise.resolve(e6);
}
function i4(e6) {
return u3.adjustClonedNode && u3.adjustClonedNode(t4, e6, true), Promise.resolve(e6);
}
function a3(e6) {
return d2.isElementHostForOpenShadowRoot(e6) ? e6.shadowRoot : e6;
}
function c3(n5, e6) {
let o4 = t5(e6), r5 = Promise.resolve();
if (0 !== o4.length) {
let t6 = m2(i5(e6));
d2.asArray(o4).forEach(function(e7) {
r5 = r5.then(function() {
return l3(e7, u3, t6).then(function(e8) {
e8 && n5.appendChild(e8);
});
});
});
}
return r5.then(function() {
return n5;
});
function i5(e7) {
return d2.isShadowRoot(e7) ? e7.host : e7;
}
function t5(e7) {
return d2.isShadowSlotElement(e7) ? e7.assignedNodes() : e7.childNodes;
}
}
function f3(s4, a4) {
return !d2.isElement(s4) || d2.isShadowSlotElement(a4) ? Promise.resolve(s4) : Promise.resolve().then(e6).then(t5).then(n5).then(o4).then(function() {
return s4;
});
function e6() {
function o5(e8, t6) {
t6.font = e8.font, t6.fontFamily = e8.fontFamily, t6.fontFeatureSettings = e8.fontFeatureSettings, t6.fontKerning = e8.fontKerning, t6.fontSize = e8.fontSize, t6.fontStretch = e8.fontStretch, t6.fontStyle = e8.fontStyle, t6.fontVariant = e8.fontVariant, t6.fontVariantCaps = e8.fontVariantCaps, t6.fontVariantEastAsian = e8.fontVariantEastAsian, t6.fontVariantLigatures = e8.fontVariantLigatures, t6.fontVariantNumeric = e8.fontVariantNumeric, t6.fontVariationSettings = e8.fontVariationSettings, t6.fontWeight = e8.fontWeight;
}
function e7(e8, t6) {
let n6 = m2(e8);
n6.cssText ? (t6.style.cssText = n6.cssText, o5(n6, t6.style)) : (y2(u3, e8, n6, r4, t6), null === r4 && (["inset-block", "inset-block-start", "inset-block-end"].forEach((e9) => t6.style.removeProperty(e9)), ["left", "right", "top", "bottom"].forEach((e9) => {
t6.style.getPropertyValue(e9) && t6.style.setProperty(e9, "0px");
})));
}
e7(a4, s4);
}
function t5() {
let u4 = d2.uid();
function t6(r5) {
let i5 = m2(a4, r5), l4 = i5.getPropertyValue("content");
if ("" !== l4 && "none" !== l4) {
let n6 = function() {
let e8 = `.${u4}:` + r5, t8 = (i5.cssText ? n7 : o5)();
return document.createTextNode(e8 + `{${t8}}`);
function n7() {
return `${i5.cssText} content: ${l4};`;
}
function o5() {
let e9 = d2.asArray(i5).map(t9).join("; ");
return e9 + ";";
function t9(e10) {
let t10 = i5.getPropertyValue(e10), n8 = i5.getPropertyPriority(e10) ? " !important" : "";
return e10 + ": " + t10 + n8;
}
}
};
let e7 = s4.getAttribute("class") || "", t7 = (s4.setAttribute("class", e7 + " " + u4), document.createElement("style"));
t7.appendChild(n6()), s4.appendChild(t7);
}
}
[":before", ":after"].forEach(function(e7) {
t6(e7);
});
}
function n5() {
d2.isHTMLTextAreaElement(a4) && (s4.innerHTML = a4.value), d2.isHTMLInputElement(a4) && s4.setAttribute("value", a4.value);
}
function o4() {
d2.isSVGElement(s4) && (s4.setAttribute("xmlns", "http://www.w3.org/2000/svg"), d2.isSVGRectElement(s4)) && ["width", "height"].forEach(function(e7) {
let t6 = s4.getAttribute(e7);
t6 && s4.style.setProperty(e7, t6);
});
}
}
}(e4, r3, null);
}).then(p2).then(g2).then(function(t4) {
r3.bgcolor && (t4.style.backgroundColor = r3.bgcolor);
r3.width && (t4.style.width = r3.width + "px");
r3.height && (t4.style.height = r3.height + "px");
r3.style && Object.keys(r3.style).forEach(function(e5) {
t4.style[e5] = r3.style[e5];
});
let e4 = null;
"function" == typeof r3.onclone && (e4 = r3.onclone(t4));
return Promise.resolve(e4).then(function() {
return t4;
});
}).then(function(e4) {
let n4 = r3.width || d2.width(e4), o3 = r3.height || d2.height(e4);
return Promise.resolve(e4).then(function(e5) {
return e5.setAttribute("xmlns", "http://www.w3.org/1999/xhtml"), new XMLSerializer().serializeToString(e5);
}).then(d2.escapeXhtml).then(function(e5) {
var t4 = (d2.isDimensionMissing(n4) ? ' width="100%"' : ` width="${n4}"`) + (d2.isDimensionMissing(o3) ? ' height="100%"' : ` height="${o3}"`);
return `<svg xmlns="http://www.w3.org/2000/svg"${(d2.isDimensionMissing(n4) ? "" : ` width="${n4}"`) + (d2.isDimensionMissing(o3) ? "" : ` height="${o3}"`)}><foreignObject${t4}>${e5}</foreignObject></svg>`;
}).then(function(e5) {
return "data:image/svg+xml;charset=utf-8," + e5;
});
}).then(function(e4) {
for (; 0 < i3.length; ) {
var t4 = i3.pop();
t4.parent.replaceChild(t4.child, t4.wrapper);
}
return e4;
}).then(function(e4) {
return a2.impl.urlCache = [], function() {
h2 && (document.body.removeChild(h2), h2 = null);
w2 && clearTimeout(w2);
w2 = setTimeout(() => {
w2 = null, v2 = {};
}, 2e4);
}(), e4;
});
}
function i2(r3, i3) {
return f2(r3, i3 = i3 || {}).then(d2.makeImage).then(function(e3) {
var t4 = "number" != typeof i3.scale ? 1 : i3.scale, n3 = function(e4, t5) {
let n4 = i3.width || d2.width(e4), o4 = i3.height || d2.height(e4);
d2.isDimensionMissing(n4) && (n4 = d2.isDimensionMissing(o4) ? 300 : 2 * o4);
d2.isDimensionMissing(o4) && (o4 = n4 / 2);
e4 = document.createElement("canvas");
e4.width = n4 * t5, e4.height = o4 * t5, i3.bgcolor && ((t5 = e4.getContext("2d")).fillStyle = i3.bgcolor, t5.fillRect(0, 0, e4.width, e4.height));
return e4;
}(r3, t4), o3 = n3.getContext("2d");
return o3.msImageSmoothingEnabled = false, o3.imageSmoothingEnabled = false, e3 && (o3.scale(t4, t4), o3.drawImage(e3, 0, 0)), n3;
});
}
let h2 = null;
function p2(n3) {
return e2.resolveAll().then(function(e3) {
var t4;
return "" !== e3 && (t4 = document.createElement("style"), n3.appendChild(t4), t4.appendChild(document.createTextNode(e3))), n3;
});
}
function g2(e3) {
return n2.inlineAll(e3).then(function() {
return e3;
});
}
function y2(e3, t4, i3, l3, n3) {
let u3 = a2.impl.options.copyDefaultStyles ? function(t5, e4) {
var e4 = function(e5) {
var t6 = [];
do {
if (e5.nodeType === c2) {
var n5 = e5.tagName;
if (t6.push(n5), E2.includes(n5)) break;
}
} while (e5 = e5.parentNode, e5);
return t6;
}(e4), n4 = function(e5) {
return ("relaxed" !== t5.styleCaching ? e5 : e5.filter((e6, t6, n5) => 0 === t6 || t6 === n5.length - 1)).join(">");
}(e4);
if (v2[n4]) return v2[n4];
var o3 = function() {
if (h2) return h2.contentWindow;
var e5 = document.characterSet || "UTF-8", t6 = document.doctype, t6 = t6 ? (`<!DOCTYPE ${n5(t6.name)} ${n5(t6.publicId)} ` + n5(t6.systemId)).trim() + ">" : "";
return (h2 = document.createElement("iframe")).id = "domtoimage-sandbox-" + d2.uid(), h2.style.visibility = "hidden", h2.style.position = "fixed", document.body.appendChild(h2), function(e6, t7, n6, o4) {
try {
return e6.contentWindow.document.write(t7 + `<html><head><meta charset='${n6}'><title>${o4}</title></head><body></body></html>`), e6.contentWindow;
} catch (e7) {
}
var r3 = document.createElement("meta");
r3.setAttribute("charset", n6);
try {
var i4 = document.implementation.createHTMLDocument(o4), l4 = (i4.head.appendChild(r3), t7 + i4.documentElement.outerHTML);
return e6.setAttribute("srcdoc", l4), e6.contentWindow;
} catch (e7) {
}
return e6.contentDocument.head.appendChild(r3), e6.contentDocument.title = o4, e6.contentWindow;
}(h2, t6, e5, "domtoimage-sandbox");
function n5(e6) {
var t7;
return e6 ? ((t7 = document.createElement("div")).innerText = e6, t7.innerHTML) : "";
}
}(), e4 = function(e5, t6) {
let n5 = e5.body;
do {
var o4 = t6.pop(), o4 = e5.createElement(o4);
n5.appendChild(o4), n5 = o4;
} while (0 < t6.length);
return n5.textContent = "", n5;
}(o3.document, e4), o3 = function(e5, t6) {
let n5 = {}, o4 = e5.getComputedStyle(t6);
return d2.asArray(o4).forEach(function(e6) {
n5[e6] = "width" === e6 || "height" === e6 ? "auto" : o4.getPropertyValue(e6);
}), n5;
}(o3, e4);
return function(e5) {
do {
var t6 = e5.parentElement;
null !== t6 && t6.removeChild(e5), e5 = t6;
} while (e5 && "BODY" !== e5.tagName);
}(e4), v2[n4] = o3;
}(e3, t4) : {}, s3 = n3.style;
d2.asArray(i3).forEach(function(e4) {
var t5, n4 = i3.getPropertyValue(e4), o3 = u3[e4], r3 = l3 ? l3.getPropertyValue(e4) : void 0;
s3.getPropertyValue(e4) || (n4 !== o3 || l3 && n4 !== r3) && (o3 = i3.getPropertyPriority(e4), r3 = s3, n4 = n4, o3 = o3, t5 = 0 <= ["background-clip"].indexOf(e4 = e4), o3 ? (r3.setProperty(e4, n4, o3), t5 && r3.setProperty("-webkit-" + e4, n4, o3)) : (r3.setProperty(e4, n4), t5 && r3.setProperty("-webkit-" + e4, n4)));
});
}
let w2 = null, v2 = {}, E2 = ["ADDRESS", "ARTICLE", "ASIDE", "BLOCKQUOTE", "DETAILS", "DIALOG", "DD", "DIV", "DL", "DT", "FIELDSET", "FIGCAPTION", "FIGURE", "FOOTER", "FORM", "H1", "H2", "H3", "H4", "H5", "H6", "HEADER", "HGROUP", "HR", "LI", "MAIN", "NAV", "OL", "P", "PRE", "SECTION", "SVG", "TABLE", "UL", "math", "svg", "BODY", "HEAD", "HTML"];
}(commonjsGlobal);
})(domToImageMore_min);
var domToImageMore_minExports = domToImageMore_min.exports;
const domtoimage = /* @__PURE__ */ getDefaultExportFromCjs(domToImageMore_minExports);
const _sfc_main$l = /* @__PURE__ */ defineComponent({
__name: "OlStyleIcon",
props: {
anchor: {},
anchorOrigin: {},
anchorXUnits: {},
anchorYUnits: {},
color: {},
crossOrigin: {},
img: {},
displacement: {},
opacity: {},
width: {},
height: {},
scale: {},
rotateWithView: { type: Boolean },
rotation: {},
offset: {},
offsetOrigin: {},
size: {},
src: {},
declutterMode: {}
},
setup(__props) {
const props = __props;
const slots = useSlots();
const htmlContent = ref();
const srcImageUrl = ref("");
const style = inject("style", null);
const styledObj = inject(
"styledObj",
null
);
const properties = usePropsAsObjectProperties(props);
const icon = computed(() => {
const ic = new Icon({
...properties,
src: properties.src || srcImageUrl.value
});
ic.load();
return ic;
});
const applyStyle = () => {
var _a2, _b2;
(_a2 = style == null ? void 0 : style.value) == null ? void 0 : _a2.setImage(icon.value);
if ((styledObj == null ? void 0 : styledObj.value) instanceof Interaction) {
(_b2 = styledObj == null ? void 0 : styledObj.value) == null ? void 0 : _b2.changed();
}
};
watch(properties, () => applyStyle());
watch(
() => style,
() => applyStyle()
);
onMounted(async () => {
if (slots.default && htmlContent.value) {
srcImageUrl.value = await domtoimage.toSvg(htmlContent.value, {
width: htmlContent.value.offsetWidth,
height: htmlContent.value.offsetHeight,
copyDefaultStyles: true
});
}
applyStyle();
});
onUnmounted(() => {
var _a2;
(_a2 = style == null ? void 0 : style.value) == null ? void 0 : _a2.setImage(null);
});
return (_ctx, _cache) => {
return !srcImageUrl.value ? (openBlock(), createElementBlock("div", {
key: 0,
ref_key: "htmlContent",
ref: htmlContent,
style: { "display": "flex", "position": "absolute", "z-index": "-1000" }
}, [
renderSlot(_ctx.$slots, "default")
], 512)) : createCommentVNode("", true);
};
}
});
const _sfc_main$k = /* @__PURE__ */ defineComponent({
__name: "OlStyleText",
props: {
font: {},
maxAngle: {},
offsetX: {},
offsetY: {},
overflow: { type: Boolean },
placement: {},
scale: {},
rotateWithView: { type: Boolean },
rotation: {},
text: {},
textAlign: {},
textBaseline: {},
padding: {},
fill: {},
stroke: {},
backgroundFill: {},
backgroundStroke: {}
},
setup(__props) {
const props = __props;
const style = inject("style", null);
const styledObj = inject(
"styledObj",
null
);
const properties = usePropsAsObjectProperties(props);
const createText = (properties2) => {
const innerProperties = properties2;
const options = {
...innerProperties
};
if (properties2.fill) {
options.fill = new Fill({ color: properties2.fill });
}
if (properties2.stroke) {
options.stroke = new Stroke(properties2.stroke);
}
if (properties2.backgroundFill) {
options.backgroundFill = new Fill({ color: properties2.backgroundFill });
}
if (properties2.backgroundStroke) {
options.backgroundStroke = new Stroke(properties2.backgroundStroke);
}
return new Text(options);
};
const textContent = computed(() => createText(properties));
const applyStyle = () => {
var _a2, _b2;
(_a2 = style == null ? void 0 : style.value) == null ? void 0 : _a2.setText(new Text());
(_b2 = style == null ? void 0 : style.value) == null ? void 0 : _b2.setText(textContent.value);
if ((styledObj == null ? void 0 : styledObj.value) instanceof Interaction) {
styledObj.value.changed();
}
};
watch(properties, () => applyStyle());
watch(
() => style == null ? void 0 : style.value,
() => applyStyle()
);
onMounted(() => {
var _a2;
return (_a2 = style == null ? void 0 : style.value) == null ? void 0 : _a2.setText(textContent.value);
});
onUnmounted(() => {
var _a2;
return (_a2 = style == null ? void 0 : style.value) == null ? void 0 : _a2.setText(new Text());
});
provide("style", textContent);
provide("styledObj", styledObj);
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
const _sfc_main$j = /* @__PURE__ */ defineComponent({
__name: "OlStyleFlowline",
props: {
visible: { type: Boolean },
width: {},
width2: {},
color: {},
color2: {},
arrowClor: {},
lineCap: { default: "butt" },
arrowSize: {},
arrow: {},
noOverlap: { type: Boolean },
offset0: {},
offset1: {},
overrideStyleFunction: {}
},
setup(__props, { expose: __expose }) {
const props = __props;
const styledObj = inject(
"stylable",
null
);
const properties = usePropsAsObjectProperties(props);
const style = computed(() => new FlowLine(properties));
const setStyle = (val) => {
if (!(styledObj == null ? void 0 : styledObj.value)) {
return;
}
if (styledObj.value instanceof Draw || (styledObj == null ? void 0 : styledObj.value) instanceof Modify) {
styledObj.value.getOverlay().setStyle(val);
styledObj.value.dispatchEvent("styleChanged");
return;
}
try {
if (styledObj.value instanceof Feature) {
styledObj.value.setStyle(val);
}
styledObj.value.changed();
styledObj.value.dispatchEvent("styleChanged");
} catch (error) {
if (styledObj == null ? void 0 : styledObj.value) {
styledObj.value.style_ = val;
styledObj.value.values_.style = val;
styledObj.value.changed();
styledObj.value.dispatchEvent("styleChanged");
}
}
};
const styleFunc = computed(() => {
return (feature, resolution) => {
if (properties.overrideStyleFunction) {
properties.overrideStyleFunction(feature, style.value, resolution);
}
return style.value;
};
});
watch(
properties,
() => setStyle(properties.overrideStyleFunction ? styleFunc.value : style.value)
);
onMounted(
() => setStyle(properties.overrideStyleFunction ? styleFunc.value : style.value)
);
onUnmounted(() => setStyle(new Style()));
__expose({
style
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
function install$4(app, options) {
app.component("OlStyle", _sfc_main$p);
app.component("OlStyleCircle", _sfc_main$o);
app.component("OlStyleStroke", _sfc_main$n);
app.component("OlStyleFill", _sfc_main$m);
app.component("OlStyleIcon", _sfc_main$l);
app.component("OlStyleText", _sfc_main$k);
app.component("OlStyleFlowline", _sfc_main$j);
if (options) {
app.provide("ol-options", options);
}
}
const index$3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
OlStyle: _sfc_main$p,
OlStyleCircle: _sfc_main$o,
OlStyleFill: _sfc_main$m,
OlStyleFlowline: _sfc_main$j,
OlStyleIcon: _sfc_main$l,
OlStyleStroke: _sfc_main$n,
OlStyleText: _sfc_main$k,
default: install$4,
install: install$4
}, Symbol.toStringTag, { value: "Module" }));
const _sfc_main$i = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlInteractionClusterselect",
props: {
featureStyle: {},
selectCluster: { type: Boolean, default: true },
pointRadius: { default: 7 },
spiral: { type: Boolean, default: true },
circleMaxObject: {},
maxObjects: {},
animate: { type: Boolean, default: true },
animationDuration: { default: 500 },
autoClose: { type: Boolean, default: true },
addCondition: {},
condition: {},
layers: {},
style: {},
removeCondition: {},
toggleCondition: {},
multi: { type: Boolean, default: false },
features: {},
filter: {},
hitTolerance: {}
},
emits: ["change", "error", "propertychange", "select"],
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const properties = usePropsAsObjectProperties(props);
const select = computed(
() => new SelectCluster({
style: new Style(),
...properties
})
);
useOpenLayersEvents(select, ["select"]);
watch(select, (newVal, oldVal) => {
map == null ? void 0 : map.removeInteraction(oldVal);
map == null ? void 0 : map.addInteraction(newVal);
map == null ? void 0 : map.changed();
});
onMounted(() => {
map == null ? void 0 : map.addInteraction(select.value);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(select.value);
});
provide("stylable", select);
__expose({
select
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$h = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlInteractionDragbox",
props: {
className: {},
condition: { type: Function },
minArea: {},
boxEndCondition: { type: Function },
onBoxEnd: { type: Function }
},
emits: ["change", "error", "propertychange", "boxcancel", "boxdrag", "boxend", "boxstart"],
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const properties = usePropsAsObjectProperties(props);
const dragbox = computed(() => new DragBox(properties));
useOpenLayersEvents(dragbox, ["boxcancel", "boxdrag", "boxend", "boxstart"]);
watch(dragbox, (newVal, oldVal) => {
map == null ? void 0 : map.removeInteraction(oldVal);
map == null ? void 0 : map.addInteraction(newVal);
map == null ? void 0 : map.changed();
});
onMounted(() => {
map == null ? void 0 : map.addInteraction(dragbox.value);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(dragbox.value);
});
__expose({
dragbox
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$g = /* @__PURE__ */ defineComponent({
__name: "OlInteractionDragrotate",
props: {
condition: { type: Function },
duration: {}
},
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const properties = usePropsAsObjectProperties(props);
const dragrotate = computed(() => {
const s2 = new DragRotate(properties);
return s2;
});
watch(dragrotate, (newVal, oldVal) => {
map == null ? void 0 : map.removeInteraction(oldVal);
map == null ? void 0 : map.addInteraction(newVal);
map == null ? void 0 : map.changed();
});
onMounted(() => {
map == null ? void 0 : map.addInteraction(dragrotate.value);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(dragrotate.value);
});
__expose({
dragrotate
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$f = /* @__PURE__ */ defineComponent({
__name: "OlInteractionDragrotatezoom",
props: {
condition: { type: Function },
duration: {}
},
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const properties = usePropsAsObjectProperties(props);
const dragRotateZoom = computed(() => new DragRotateAndZoom(properties));
watch(dragRotateZoom, (newVal, oldVal) => {
map == null ? void 0 : map.removeInteraction(oldVal);
map == null ? void 0 : map.addInteraction(newVal);
map == null ? void 0 : map.changed();
});
onMounted(() => {
map == null ? void 0 : map.addInteraction(dragRotateZoom.value);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(dragRotateZoom.value);
});
__expose({
dragRotateZoom
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$e = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlInteractionLink",
props: {
animate: { type: [Boolean, Object], default: true },
params: { default: () => ["x", "y", "z", "r", "l"] },
replace: { type: Boolean, default: false },
prefix: { default: "" }
},
emits: ["change", "error", "propertychange", "change:active"],
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const properties = usePropsAsObjectProperties(props);
const link = shallowRef(new Link(properties));
useOpenLayersEvents(link, ["change:active"]);
watch(link, (newVal, oldVal) => {
map == null ? void 0 : map.removeInteraction(oldVal);
map == null ? void 0 : map.addInteraction(newVal);
map == null ? void 0 : map.changed();
});
onMounted(() => {
map == null ? void 0 : map.addInteraction(link.value);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(link.value);
});
provide("stylable", link);
__expose({
link
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$d = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlInteractionSelect",
props: {
addCondition: { type: Function },
condition: { type: Function },
layers: { type: [Array, Function] },
style: { type: [Object, Array, Function, null] },
removeCondition: { type: Function },
toggleCondition: { type: Function },
multi: { type: Boolean },
features: {},
filter: { type: Function },
hitTolerance: {}
},
emits: ["change", "error", "propertychange", "select"],
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const properties = usePropsAsObjectProperties(props);
const select = computed(
() => new Select({
...properties,
style: new Style()
})
);
useOpenLayersEvents(select, ["select"]);
watch(select, (newVal, oldVal) => {
map == null ? void 0 : map.removeInteraction(oldVal);
map == null ? void 0 : map.addInteraction(newVal);
map == null ? void 0 : map.changed();
});
onMounted(() => {
map == null ? void 0 : map.addInteraction(select.value);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(select.value);
});
provide("stylable", select);
__expose({
select
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$c = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlInteractionDraw",
props: {
type: {},
clickTolerance: {},
features: {},
source: {},
dragVertexDelay: {},
snapTolerance: {},
stopClick: { type: Boolean },
maxPoints: {},
minPoints: {},
finishCondition: { type: Function },
style: { type: [Object, Array, Function] },
geometryFunction: { type: Function },
geometryName: {},
condition: { type: Function },
freehand: { type: Boolean },
freehandCondition: { type: Function },
trace: { type: [Boolean, Function] },
traceSource: {},
wrapX: { type: Boolean },
geometryLayout: {}
},
emits: ["change", "error", "propertychange", "drawstart", "drawend"],
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const vectorSource = inject("vectorSource", null);
const {
source,
type,
clickTolerance,
dragVertexDelay,
snapTolerance,
stopClick,
maxPoints,
minPoints,
finishCondition,
geometryFunction,
geometryName,
condition,
freehand,
freehandCondition,
wrapX,
features,
geometryLayout,
trace,
traceSource
} = toRefs(props);
function createDraw() {
return new Draw({
source: source.value || (vectorSource == null ? void 0 : vectorSource.value),
type: type.value,
clickTolerance: clickTolerance.value,
dragVertexDelay: dragVertexDelay.value,
snapTolerance: snapTolerance.value,
stopClick: stopClick.value,
maxPoints: maxPoints.value,
minPoints: minPoints.value,
finishCondition: finishCondition.value,
geometryFunction: geometryFunction.value,
geometryName: geometryName.value,
condition: condition.value,
freehand: freehand.value,
freehandCondition: freehandCondition.value,
wrapX: wrapX.value,
features: features.value,
geometryLayout: geometryLayout.value,
trace: trace.value,
traceSource: traceSource.value
});
}
const draw = shallowRef(createDraw());
const { updateOpenLayersEventHandlers } = useOpenLayersEvents(draw, [
"drawstart",
"drawend"
]);
watch(
[
source,
type,
clickTolerance,
dragVertexDelay,
snapTolerance,
stopClick,
maxPoints,
minPoints,
finishCondition,
geometryFunction,
geometryName,
condition,
freehand,
freehandCondition,
wrapX,
features,
geometryLayout,
trace,
traceSource
],
() => {
draw.value.abortDrawing();
map == null ? void 0 : map.removeInteraction(draw.value);
draw.value = createDraw();
updateOpenLayersEventHandlers();
map == null ? void 0 : map.addInteraction(draw.value);
map == null ? void 0 : map.changed();
}
);
onMounted(() => {
map == null ? void 0 : map.addInteraction(draw.value);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(draw.value);
});
provide("stylable", draw);
__expose({
draw: draw.value
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$b = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlInteractionModify",
props: {
condition: { type: Function },
deleteCondition: { type: Function },
insertVertexCondition: { type: Function },
pixelTolerance: {},
style: { type: [Object, Array, Function] },
source: {},
hitDetection: { type: Boolean },
features: {},
wrapX: { type: Boolean },
snapToPointer: { type: Boolean }
},
emits: ["change", "error", "propertychange", "modifystart", "modifyend"],
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const vectorSource = inject("vectorSource", null);
const {
source,
features,
condition,
deleteCondition,
insertVertexCondition,
pixelTolerance,
wrapX,
hitDetection,
snapToPointer
} = toRefs(props);
function createModify() {
if (!((source == null ? void 0 : source.value) || features.value)) {
console.error(
`[Vue3-OpenLayers Error] OlInteractionModify: Modify interactions needs either a source or features to work.
Please provide either the props 'source' or 'feature' or use the component with an '<OlSourceVector>' component.`
);
}
return new Modify({
source: source.value || (vectorSource == null ? void 0 : vectorSource.value),
features: features.value,
condition: condition.value,
deleteCondition: deleteCondition.value,
insertVertexCondition: insertVertexCondition.value,
pixelTolerance: pixelTolerance.value,
wrapX: wrapX.value,
hitDetection: hitDetection.value,
snapToPointer: snapToPointer.value
});
}
let modify = createModify();
useOpenLayersEvents(modify, ["modifystart", "modifyend"]);
watch(
[
condition,
deleteCondition,
insertVertexCondition,
pixelTolerance,
wrapX,
hitDetection,
snapToPointer
],
() => {
modify.dispose();
map == null ? void 0 : map.removeInteraction(modify);
modify = createModify();
map == null ? void 0 : map.addInteraction(modify);
map == null ? void 0 : map.changed();
}
);
onMounted(() => {
map == null ? void 0 : map.addInteraction(modify);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(modify);
});
provide("stylable", ref(modify));
__expose({
modify
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$a = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlInteractionPointer",
props: {
handleEvent: { type: Function },
stopDown: { type: Function }
},
emits: ["change", "error", "propertychange", "down", "move", "up", "drag", "change:active"],
setup(__props, { expose: __expose, emit: __emit }) {
const props = __props;
const emit = __emit;
const map = inject("map");
const properties = usePropsAsObjectProperties(props);
const pointer = shallowRef(
new Pointer({
...properties,
handleDownEvent: (e2) => {
emit("down", e2);
return true;
},
handleDragEvent: (e2) => {
emit("drag", e2);
return true;
},
handleMoveEvent: (e2) => {
emit("move", e2);
},
handleUpEvent: (e2) => {
emit("up", e2);
return true;
}
})
);
useOpenLayersEvents(pointer, ["change:active"]);
watch(pointer, (newVal, oldVal) => {
map == null ? void 0 : map.removeInteraction(oldVal);
map == null ? void 0 : map.addInteraction(newVal);
map == null ? void 0 : map.changed();
});
onMounted(() => {
map == null ? void 0 : map.addInteraction(pointer.value);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(pointer.value);
});
__expose({
pointer
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
__name: "OlInteractionSnap",
props: {
features: {},
edge: { type: Boolean, default: true },
vertex: { type: Boolean, default: true },
pixelTolerance: {},
source: {}
},
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const vectorSource = inject("vectorSource");
const properties = usePropsAsObjectProperties(props);
const createSnap = () => new Snap({
...properties,
source: props.source || (vectorSource == null ? void 0 : vectorSource.value)
});
let snap = createSnap();
watch(properties, () => {
map == null ? void 0 : map.removeInteraction(snap);
snap = createSnap();
map == null ? void 0 : map.addInteraction(snap);
map == null ? void 0 : map.changed();
});
onMounted(() => {
map == null ? void 0 : map.addInteraction(snap);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(snap);
});
__expose({
snap
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
...{
inheritAttrs: false
},
__name: "OlInteractionTransform",
props: {
filter: {},
layers: {},
features: {},
addCondition: {},
hitTolerance: {},
translateFeature: { type: Boolean, default: true },
translate: { type: Boolean, default: true },
translateBBox: { type: Boolean },
stretch: { type: Boolean, default: true },
scale: { type: Boolean, default: true },
rotate: { type: Boolean, default: true },
noFlip: { type: Boolean },
selection: { type: Boolean },
keepAspectRatio: { type: Function, default: always },
modifyCenter: {},
enableRotatedTransform: { type: Boolean },
keepRectangle: { type: Boolean },
style: {},
pointRadius: {}
},
emits: ["change", "error", "propertychange", "select", "rotatestart", "rotating", "rotateend", "translatestart", "translating", "translateend", "scalestart", "scaling", "scaleend"],
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const properties = usePropsAsObjectProperties(props);
const transform2 = computed(() => new Transform$1(properties));
useOpenLayersEvents(transform2, [
"select",
"rotatestart",
"rotating",
"rotateend",
"translatestart",
"translating",
"translateend",
"scalestart",
"scaling",
"scaleend"
]);
watch(transform2, (newVal, oldVal) => {
map == null ? void 0 : map.removeInteraction(oldVal);
map == null ? void 0 : map.addInteraction(newVal);
map == null ? void 0 : map.changed();
});
onMounted(() => {
map == null ? void 0 : map.addInteraction(transform2.value);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(transform2.value);
});
provide("stylable", transform2);
__expose({
transform: transform2
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
__name: "OlInteractionMouseWheelZoom",
props: {
condition: {},
onFocusOnly: { type: Boolean },
maxDelta: {},
duration: {},
timeout: {},
useAnchor: { type: Boolean, default: true },
constrainResolution: { type: Boolean }
},
setup(__props, { expose: __expose }) {
const props = __props;
const map = inject("map");
const properties = usePropsAsObjectProperties(props);
const mouseWheelZoom = computed(() => new MouseWheelZoom(properties));
watch(mouseWheelZoom, (newVal, oldVal) => {
map == null ? void 0 : map.removeInteraction(oldVal);
map == null ? void 0 : map.addInteraction(newVal);
map == null ? void 0 : map.changed();
});
onMounted(() => {
map == null ? void 0 : map.getInteractions().forEach((interaction) => {
if (interaction instanceof MouseWheelZoom) {
map == null ? void 0 : map.removeInteraction(interaction);
}
});
map == null ? void 0 : map.addInteraction(mouseWheelZoom.value);
});
onUnmounted(() => {
map == null ? void 0 : map.removeInteraction(mouseWheelZoom.value);
});
__expose({
mouseWheelZoom
});
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
function install$3(app, options) {
app.component("OlInteractionClusterselect", _sfc_main$i);
app.component("OlInteractionDragbox", _sfc_main$h);
app.component("OlInteractionDragrotate", _sfc_main$g);
app.component("OlInteractionDragrotatezoom", _sfc_main$f);
app.component("OlInteractionLink", _sfc_main$e);
app.component("OlInteractionSelect", _sfc_main$d);
app.component("OlInteractionDraw", _sfc_main$c);
app.component("OlInteractionModify", _sfc_main$b);
app.component("OlInteractionPointer", _sfc_main$a);
app.component("OlInteractionSnap", _sfc_main$9);
app.component("OlInteractionTransform", _sfc_main$8);
app.component("OlInteractionMouseWheelZoom", _sfc_main$7);
if (options) {
app.provide("ol-options", options);
}
}
const index$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
OlInteractionClusterselect: _sfc_main$i,
OlInteractionDragbox: _sfc_main$h,
OlInteractionDragrotate: _sfc_main$g,
OlInteractionDragrotatezoom: _sfc_main$f,
OlInteractionDraw: _sfc_main$c,
OlInteractionLink: _sfc_main$e,
OlInteractionModify: _sfc_main$b,
OlInteractionMouseWheelZoom: _sfc_main$7,
OlInteractionPointer: _sfc_main$a,
OlInteractionSelect: _sfc_main$d,
OlInteractionSnap: _sfc_main$9,
OlInteractionTransform: _sfc_main$8,
default: install$3,
install: install$3
}, Symbol.toStringTag, { value: "Module" }));
function useAnimation(AnimationType, props) {
const map = inject("map");
const vectorLayer = inject("vectorLayer");
const properties = usePropsAsObjectProperties(props);
const animation = computed(() => new AnimationType(properties));
provide("animation", animation);
return {
map,
vectorLayer,
animation,
properties
};
}
const animationCommonDefaultProps = {
duration: 1e3,
revers: false,
repeat: 0,
easing: easeOut
};
function useDefaults(overrides) {
return { ...animationCommonDefaultProps, ...overrides };
}
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
__name: "OlAnimationDrop",
props: /* @__PURE__ */ mergeDefaults({
speed: {},
side: {},
duration: {},
revers: { type: Boolean },
repeat: {},
hiddenStyle: {},
horizontal: { type: Boolean },
fade: { type: Function },
easing: { type: Function }
}, useDefaults({
side: "top",
speed: 0
})),
setup(__props, { expose: __expose }) {
const props = __props;
const exposed = useAnimation(Drop, props);
__expose(exposed);
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
__name: "OlAnimationFade",
props: /* @__PURE__ */ mergeDefaults({
speed: {},
duration: {},
side: {},
revers: { type: Boolean },
repeat: {},
hiddenStyle: {},
horizontal: { type: Boolean },
fade: { type: Function },
easing: { type: Function }
}, useDefaults()),
setup(__props, { expose: __expose }) {
const props = __props;
const exposed = useAnimation(Fade, props);
__expose(exposed);
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
__name: "OlAnimationPath",
props: /* @__PURE__ */ mergeDefaults({
speed: {},
rotate: { type: [Number, Boolean] },
path: {},
duration: {},
side: {},
revers: { type: Boolean },
repeat: {},
hiddenStyle: {},
horizontal: { type: Boolean },
fade: { type: Function },
easing: { type: Function }
}, useDefaults()),
setup(__props, { expose: __expose }) {
const props = __props;
const exposed = useAnimation(Path, props);
__expose(exposed);
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
__name: "OlAnimationShake",
props: /* @__PURE__ */ mergeDefaults({
bounce: {},
amplitude: {},
horizontal: { type: Boolean },
speed: {},
duration: {},
side: {},
revers: { type: Boolean },
repeat: {},
hiddenStyle: {},
fade: { type: Function },
easing: { type: Function }
}, useDefaults()),
setup(__props, { expose: __expose }) {
const props = __props;
const exposed = useAnimation(Shake, props);
__expose(exposed);
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
__name: "OlAnimationSlide",
props: /* @__PURE__ */ mergeDefaults({
speed: {},
duration: {},
side: {},
revers: { type: Boolean },
repeat: {},
hiddenStyle: {},
horizontal: { type: Boolean },
fade: { type: Function },
easing: { type: Function }
}, useDefaults()),
setup(__props, { expose: __expose }) {
const props = __props;
const exposed = useAnimation(Slide, props);
__expose(exposed);
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
__name: "OlAnimationTeleport",
props: /* @__PURE__ */ mergeDefaults({
speed: {},
duration: {},
side: {},
revers: { type: Boolean },
repeat: {},
hiddenStyle: {},
horizontal: { type: Boolean },
fade: { type: Function },
easing: { type: Function }
}, useDefaults()),
setup(__props, { expose: __expose }) {
const props = __props;
const exposed = useAnimation(Teleport, props);
__expose(exposed);
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "OlAnimationZoom",
props: /* @__PURE__ */ mergeDefaults({
zoomOut: { type: Boolean },
speed: {},
duration: {},
side: {},
revers: { type: Boolean },
repeat: {},
hiddenStyle: {},
horizontal: { type: Boolean },
fade: { type: Function },
easing: { type: Function }
}, useDefaults()),
setup(__props, { expose: __expose }) {
const props = __props;
const exposed = useAnimation(Zoom$1, props);
__expose(exposed);
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
});
function install$2(app, options) {
app.component("OlAnimationDrop", _sfc_main$6);
app.component("OlAnimationFade", _sfc_main$5);
app.component("OlAnimationPath", _sfc_main$4);
app.component("OlAnimationShake", _sfc_main$3);
app.component("OlAnimationSlide", _sfc_main$2);
app.component("OlAnimationTeleport", _sfc_main$1);
app.component("OlAnimationZoom", _sfc_main);
if (options) {
app.provide("ol-options", options);
}
}
const index$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
OlAnimationDrop: _sfc_main$6,
OlAnimationFade: _sfc_main$5,
OlAnimationPath: _sfc_main$4,
OlAnimationShake: _sfc_main$3,
OlAnimationSlide: _sfc_main$2,
OlAnimationTeleport: _sfc_main$1,
OlAnimationZoom: _sfc_main,
default: install$2,
install: install$2
}, Symbol.toStringTag, { value: "Module" }));
const install$1 = (app, options) => {
app.provide("ol-feature", Feature);
app.provide("ol-geom", geom);
app.provide("ol-animations", animations);
app.provide("ol-format", format);
app.provide("ol-loadingstrategy", loadingstrategy);
app.provide("ol-selectconditions", selectconditions);
app.provide("ol-extent", extent);
if (options) {
app.provide("ol-options", options);
}
};
const plugin$1 = { install: install$1 };
const install = (app, options) => {
app.use(install$9);
app.use(install$8);
app.use(install$7);
app.use(install$6);
app.use(install$5);
app.use(install$4);
app.use(install$3);
app.use(install$2);
app.use(plugin$1.install);
app.provide("ol-options", options);
};
const plugin = { install };
/*!
* html2canvas 1.4.1 <https://html2canvas.hertzen.com>
* Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
* Released under MIT License
*/
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var extendStatics = function(d2, b2) {
extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {
d3.__proto__ = b3;
} || function(d3, b3) {
for (var p2 in b3) if (Object.prototype.hasOwnProperty.call(b3, p2)) d3[p2] = b3[p2];
};
return extendStatics(d2, b2);
};
function __extends(d2, b2) {
if (typeof b2 !== "function" && b2 !== null)
throw new TypeError("Class extends value " + String(b2) + " is not a constructor or null");
extendStatics(d2, b2);
function __() {
this.constructor = d2;
}
d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign2(t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2];
for (var p2 in s2) if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2];
}
return t3;
};
return __assign.apply(this, arguments);
};
function __awaiter(thisArg, _arguments, P2, generator) {
function adopt(value) {
return value instanceof P2 ? value : new P2(function(resolve2) {
resolve2(value);
});
}
return new (P2 || (P2 = Promise))(function(resolve2, reject2) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e2) {
reject2(e2);
}
}
function rejected(value) {
try {
step(generator["throw"](value));
} catch (e2) {
reject2(e2);
}
}
function step(result) {
result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _2 = { label: 0, sent: function() {
if (t3[0] & 1) throw t3[1];
return t3[1];
}, trys: [], ops: [] }, f2, y2, t3, g2;
return g2 = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g2[Symbol.iterator] = function() {
return this;
}), g2;
function verb(n2) {
return function(v2) {
return step([n2, v2]);
};
}
function step(op) {
if (f2) throw new TypeError("Generator is already executing.");
while (_2) try {
if (f2 = 1, y2 && (t3 = op[0] & 2 ? y2["return"] : op[0] ? y2["throw"] || ((t3 = y2["return"]) && t3.call(y2), 0) : y2.next) && !(t3 = t3.call(y2, op[1])).done) return t3;
if (y2 = 0, t3) op = [op[0] & 2, t3.value];
switch (op[0]) {
case 0:
case 1:
t3 = op;
break;
case 4:
_2.label++;
return { value: op[1], done: false };
case 5:
_2.label++;
y2 = op[1];
op = [0];
continue;
case 7:
op = _2.ops.pop();
_2.trys.pop();
continue;
default:
if (!(t3 = _2.trys, t3 = t3.length > 0 && t3[t3.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_2 = 0;
continue;
}
if (op[0] === 3 && (!t3 || op[1] > t3[0] && op[1] < t3[3])) {
_2.label = op[1];
break;
}
if (op[0] === 6 && _2.label < t3[1]) {
_2.label = t3[1];
t3 = op;
break;
}
if (t3 && _2.label < t3[2]) {
_2.label = t3[2];
_2.ops.push(op);
break;
}
if (t3[2]) _2.ops.pop();
_2.trys.pop();
continue;
}
op = body.call(thisArg, _2);
} catch (e2) {
op = [6, e2];
y2 = 0;
} finally {
f2 = t3 = 0;
}
if (op[0] & 5) throw op[1];
return { value: op[0] ? op[1] : void 0, done: true };
}
}
function __spreadArray(to, from, pack2) {
if (pack2 || arguments.length === 2) for (var i2 = 0, l2 = from.length, ar; i2 < l2; i2++) {
if (ar || !(i2 in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i2);
ar[i2] = from[i2];
}
}
return to.concat(ar || from);
}
var Bounds = (
/** @class */
function() {
function Bounds2(left, top, width, height) {
this.left = left;
this.top = top;
this.width = width;
this.height = height;
}
Bounds2.prototype.add = function(x2, y2, w2, h2) {
return new Bounds2(this.left + x2, this.top + y2, this.width + w2, this.height + h2);
};
Bounds2.fromClientRect = function(context, clientRect) {
return new Bounds2(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);
};
Bounds2.fromDOMRectList = function(context, domRectList) {
var domRect = Array.from(domRectList).find(function(rect) {
return rect.width !== 0;
});
return domRect ? new Bounds2(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height) : Bounds2.EMPTY;
};
Bounds2.EMPTY = new Bounds2(0, 0, 0, 0);
return Bounds2;
}()
);
var parseBounds = function(context, node2) {
return Bounds.fromClientRect(context, node2.getBoundingClientRect());
};
var parseDocumentSize = function(document2) {
var body = document2.body;
var documentElement = document2.documentElement;
if (!body || !documentElement) {
throw new Error("Unable to get document size");
}
var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));
var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));
return new Bounds(0, 0, width, height);
};
var toCodePoints$1 = function(str) {
var codePoints = [];
var i2 = 0;
var length = str.length;
while (i2 < length) {
var value = str.charCodeAt(i2++);
if (value >= 55296 && value <= 56319 && i2 < length) {
var extra = str.charCodeAt(i2++);
if ((extra & 64512) === 56320) {
codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536);
} else {
codePoints.push(value);
i2--;
}
} else {
codePoints.push(value);
}
}
return codePoints;
};
var fromCodePoint$1 = function() {
var codePoints = [];
for (var _i = 0; _i < arguments.length; _i++) {
codePoints[_i] = arguments[_i];
}
if (String.fromCodePoint) {
return String.fromCodePoint.apply(String, codePoints);
}
var length = codePoints.length;
if (!length) {
return "";
}
var codeUnits = [];
var index2 = -1;
var result = "";
while (++index2 < length) {
var codePoint = codePoints[index2];
if (codePoint <= 65535) {
codeUnits.push(codePoint);
} else {
codePoint -= 65536;
codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
}
if (index2 + 1 === length || codeUnits.length > 16384) {
result += String.fromCharCode.apply(String, codeUnits);
codeUnits.length = 0;
}
}
return result;
};
var chars$2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var lookup$2 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
for (var i$2 = 0; i$2 < chars$2.length; i$2++) {
lookup$2[chars$2.charCodeAt(i$2)] = i$2;
}
var chars$1$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var lookup$1$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {
lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;
}
var decode$1 = function(base642) {
var bufferLength = base642.length * 0.75, len = base642.length, i2, p2 = 0, encoded1, encoded2, encoded3, encoded4;
if (base642[base642.length - 1] === "=") {
bufferLength--;
if (base642[base642.length - 2] === "=") {
bufferLength--;
}
}
var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength);
var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
for (i2 = 0; i2 < len; i2 += 4) {
encoded1 = lookup$1$1[base642.charCodeAt(i2)];
encoded2 = lookup$1$1[base642.charCodeAt(i2 + 1)];
encoded3 = lookup$1$1[base642.charCodeAt(i2 + 2)];
encoded4 = lookup$1$1[base642.charCodeAt(i2 + 3)];
bytes[p2++] = encoded1 << 2 | encoded2 >> 4;
bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2;
bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63;
}
return buffer;
};
var polyUint16Array$1 = function(buffer) {
var length = buffer.length;
var bytes = [];
for (var i2 = 0; i2 < length; i2 += 2) {
bytes.push(buffer[i2 + 1] << 8 | buffer[i2]);
}
return bytes;
};
var polyUint32Array$1 = function(buffer) {
var length = buffer.length;
var bytes = [];
for (var i2 = 0; i2 < length; i2 += 4) {
bytes.push(buffer[i2 + 3] << 24 | buffer[i2 + 2] << 16 | buffer[i2 + 1] << 8 | buffer[i2]);
}
return bytes;
};
var UTRIE2_SHIFT_2$1 = 5;
var UTRIE2_SHIFT_1$1 = 6 + 5;
var UTRIE2_INDEX_SHIFT$1 = 2;
var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;
var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 65536 >> UTRIE2_SHIFT_2$1;
var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;
var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;
var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 1024 >> UTRIE2_SHIFT_2$1;
var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;
var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;
var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 2048 >> 6;
var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;
var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 65536 >> UTRIE2_SHIFT_1$1;
var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;
var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;
var slice16$1 = function(view, start2, end) {
if (view.slice) {
return view.slice(start2, end);
}
return new Uint16Array(Array.prototype.slice.call(view, start2, end));
};
var slice32$1 = function(view, start2, end) {
if (view.slice) {
return view.slice(start2, end);
}
return new Uint32Array(Array.prototype.slice.call(view, start2, end));
};
var createTrieFromBase64$1 = function(base642, _byteLength) {
var buffer = decode$1(base642);
var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);
var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);
var headerLength = 24;
var index2 = slice16$1(view16, headerLength / 2, view32[4] / 2);
var data2 = view32[5] === 2 ? slice16$1(view16, (headerLength + view32[4]) / 2) : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));
return new Trie$1(view32[0], view32[1], view32[2], view32[3], index2, data2);
};
var Trie$1 = (
/** @class */
function() {
function Trie2(initialValue, errorValue, highStart, highValueIndex, index2, data2) {
this.initialValue = initialValue;
this.errorValue = errorValue;
this.highStart = highStart;
this.highValueIndex = highValueIndex;
this.index = index2;
this.data = data2;
}
Trie2.prototype.get = function(codePoint) {
var ix;
if (codePoint >= 0) {
if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) {
ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];
ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
return this.data[ix];
}
if (codePoint <= 65535) {
ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + (codePoint - 55296 >> UTRIE2_SHIFT_2$1)];
ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
return this.data[ix];
}
if (codePoint < this.highStart) {
ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);
ix = this.index[ix];
ix += codePoint >> UTRIE2_SHIFT_2$1 & UTRIE2_INDEX_2_MASK$1;
ix = this.index[ix];
ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
return this.data[ix];
}
if (codePoint <= 1114111) {
return this.data[this.highValueIndex];
}
}
return this.errorValue;
};
return Trie2;
}()
);
var chars$3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var lookup$3 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
for (var i$3 = 0; i$3 < chars$3.length; i$3++) {
lookup$3[chars$3.charCodeAt(i$3)] = i$3;
}
var base64$1 = "KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==";
var LETTER_NUMBER_MODIFIER = 50;
var BK = 1;
var CR$1 = 2;
var LF$1 = 3;
var CM = 4;
var NL = 5;
var WJ = 7;
var ZW = 8;
var GL = 9;
var SP = 10;
var ZWJ$1 = 11;
var B2 = 12;
var BA = 13;
var BB = 14;
var HY = 15;
var CB = 16;
var CL = 17;
var CP = 18;
var EX = 19;
var IN = 20;
var NS = 21;
var OP = 22;
var QU = 23;
var IS = 24;
var NU = 25;
var PO = 26;
var PR = 27;
var SY = 28;
var AI = 29;
var AL = 30;
var CJ = 31;
var EB = 32;
var EM = 33;
var H2 = 34;
var H3 = 35;
var HL = 36;
var ID = 37;
var JL = 38;
var JV = 39;
var JT = 40;
var RI$1 = 41;
var SA = 42;
var XX = 43;
var ea_OP = [9001, 65288];
var BREAK_MANDATORY = "!";
var BREAK_NOT_ALLOWED$1 = "×";
var BREAK_ALLOWED$1 = "÷";
var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);
var ALPHABETICS = [AL, HL];
var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];
var SPACE$1 = [SP, ZW];
var PREFIX_POSTFIX = [PR, PO];
var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);
var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];
var HYPHEN = [HY, BA];
var codePointsToCharacterClasses = function(codePoints, lineBreak2) {
if (lineBreak2 === void 0) {
lineBreak2 = "strict";
}
var types = [];
var indices = [];
var categories = [];
codePoints.forEach(function(codePoint, index2) {
var classType = UnicodeTrie$1.get(codePoint);
if (classType > LETTER_NUMBER_MODIFIER) {
categories.push(true);
classType -= LETTER_NUMBER_MODIFIER;
} else {
categories.push(false);
}
if (["normal", "auto", "loose"].indexOf(lineBreak2) !== -1) {
if ([8208, 8211, 12316, 12448].indexOf(codePoint) !== -1) {
indices.push(index2);
return types.push(CB);
}
}
if (classType === CM || classType === ZWJ$1) {
if (index2 === 0) {
indices.push(index2);
return types.push(AL);
}
var prev = types[index2 - 1];
if (LINE_BREAKS.indexOf(prev) === -1) {
indices.push(indices[index2 - 1]);
return types.push(prev);
}
indices.push(index2);
return types.push(AL);
}
indices.push(index2);
if (classType === CJ) {
return types.push(lineBreak2 === "strict" ? NS : ID);
}
if (classType === SA) {
return types.push(AL);
}
if (classType === AI) {
return types.push(AL);
}
if (classType === XX) {
if (codePoint >= 131072 && codePoint <= 196605 || codePoint >= 196608 && codePoint <= 262141) {
return types.push(ID);
} else {
return types.push(AL);
}
}
types.push(classType);
});
return [indices, types, categories];
};
var isAdjacentWithSpaceIgnored = function(a2, b2, currentIndex, classTypes) {
var current = classTypes[currentIndex];
if (Array.isArray(a2) ? a2.indexOf(current) !== -1 : a2 === current) {
var i2 = currentIndex;
while (i2 <= classTypes.length) {
i2++;
var next = classTypes[i2];
if (next === b2) {
return true;
}
if (next !== SP) {
break;
}
}
}
if (current === SP) {
var i2 = currentIndex;
while (i2 > 0) {
i2--;
var prev = classTypes[i2];
if (Array.isArray(a2) ? a2.indexOf(prev) !== -1 : a2 === prev) {
var n2 = currentIndex;
while (n2 <= classTypes.length) {
n2++;
var next = classTypes[n2];
if (next === b2) {
return true;
}
if (next !== SP) {
break;
}
}
}
if (prev !== SP) {
break;
}
}
}
return false;
};
var previousNonSpaceClassType = function(currentIndex, classTypes) {
var i2 = currentIndex;
while (i2 >= 0) {
var type = classTypes[i2];
if (type === SP) {
i2--;
} else {
return type;
}
}
return 0;
};
var _lineBreakAtIndex = function(codePoints, classTypes, indicies, index2, forbiddenBreaks) {
if (indicies[index2] === 0) {
return BREAK_NOT_ALLOWED$1;
}
var currentIndex = index2 - 1;
if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {
return BREAK_NOT_ALLOWED$1;
}
var beforeIndex = currentIndex - 1;
var afterIndex = currentIndex + 1;
var current = classTypes[currentIndex];
var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;
var next = classTypes[afterIndex];
if (current === CR$1 && next === LF$1) {
return BREAK_NOT_ALLOWED$1;
}
if (HARD_LINE_BREAKS.indexOf(current) !== -1) {
return BREAK_MANDATORY;
}
if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED$1;
}
if (SPACE$1.indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED$1;
}
if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
return BREAK_ALLOWED$1;
}
if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {
return BREAK_NOT_ALLOWED$1;
}
if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {
return BREAK_NOT_ALLOWED$1;
}
if (current === WJ || next === WJ) {
return BREAK_NOT_ALLOWED$1;
}
if (current === GL) {
return BREAK_NOT_ALLOWED$1;
}
if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {
return BREAK_NOT_ALLOWED$1;
}
if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED$1;
}
if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
return BREAK_NOT_ALLOWED$1;
}
if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
return BREAK_NOT_ALLOWED$1;
}
if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {
return BREAK_NOT_ALLOWED$1;
}
if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
return BREAK_NOT_ALLOWED$1;
}
if (current === SP) {
return BREAK_ALLOWED$1;
}
if (current === QU || next === QU) {
return BREAK_NOT_ALLOWED$1;
}
if (next === CB || current === CB) {
return BREAK_ALLOWED$1;
}
if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {
return BREAK_NOT_ALLOWED$1;
}
if (before === HL && HYPHEN.indexOf(current) !== -1) {
return BREAK_NOT_ALLOWED$1;
}
if (current === SY && next === HL) {
return BREAK_NOT_ALLOWED$1;
}
if (next === IN) {
return BREAK_NOT_ALLOWED$1;
}
if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {
return BREAK_NOT_ALLOWED$1;
}
if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {
return BREAK_NOT_ALLOWED$1;
}
if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED$1;
}
if (
// (PR | PO) × ( OP | HY )? NU
[PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) || // ( OP | HY ) × NU
[OP, HY].indexOf(current) !== -1 && next === NU || // NU × (NU | SY | IS)
current === NU && [NU, SY, IS].indexOf(next) !== -1
) {
return BREAK_NOT_ALLOWED$1;
}
if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
var prevIndex = currentIndex;
while (prevIndex >= 0) {
var type = classTypes[prevIndex];
if (type === NU) {
return BREAK_NOT_ALLOWED$1;
} else if ([SY, IS].indexOf(type) !== -1) {
prevIndex--;
} else {
break;
}
}
}
if ([PR, PO].indexOf(next) !== -1) {
var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;
while (prevIndex >= 0) {
var type = classTypes[prevIndex];
if (type === NU) {
return BREAK_NOT_ALLOWED$1;
} else if ([SY, IS].indexOf(type) !== -1) {
prevIndex--;
} else {
break;
}
}
}
if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {
return BREAK_NOT_ALLOWED$1;
}
if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {
return BREAK_NOT_ALLOWED$1;
}
if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED$1;
}
if (current === IS && ALPHABETICS.indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED$1;
}
if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP && ea_OP.indexOf(codePoints[afterIndex]) === -1 || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {
return BREAK_NOT_ALLOWED$1;
}
if (current === RI$1 && next === RI$1) {
var i2 = indicies[currentIndex];
var count = 1;
while (i2 > 0) {
i2--;
if (classTypes[i2] === RI$1) {
count++;
} else {
break;
}
}
if (count % 2 !== 0) {
return BREAK_NOT_ALLOWED$1;
}
}
if (current === EB && next === EM) {
return BREAK_NOT_ALLOWED$1;
}
return BREAK_ALLOWED$1;
};
var cssFormattedClasses = function(codePoints, options) {
if (!options) {
options = { lineBreak: "normal", wordBreak: "normal" };
}
var _a2 = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a2[0], classTypes = _a2[1], isLetterNumber = _a2[2];
if (options.wordBreak === "break-all" || options.wordBreak === "break-word") {
classTypes = classTypes.map(function(type) {
return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;
});
}
var forbiddenBreakpoints = options.wordBreak === "keep-all" ? isLetterNumber.map(function(letterNumber, i2) {
return letterNumber && codePoints[i2] >= 19968 && codePoints[i2] <= 40959;
}) : void 0;
return [indicies, classTypes, forbiddenBreakpoints];
};
var Break = (
/** @class */
function() {
function Break2(codePoints, lineBreak2, start2, end) {
this.codePoints = codePoints;
this.required = lineBreak2 === BREAK_MANDATORY;
this.start = start2;
this.end = end;
}
Break2.prototype.slice = function() {
return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));
};
return Break2;
}()
);
var LineBreaker = function(str, options) {
var codePoints = toCodePoints$1(str);
var _a2 = cssFormattedClasses(codePoints, options), indicies = _a2[0], classTypes = _a2[1], forbiddenBreakpoints = _a2[2];
var length = codePoints.length;
var lastEnd = 0;
var nextIndex = 0;
return {
next: function() {
if (nextIndex >= length) {
return { done: true, value: null };
}
var lineBreak2 = BREAK_NOT_ALLOWED$1;
while (nextIndex < length && (lineBreak2 = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED$1) {
}
if (lineBreak2 !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {
var value = new Break(codePoints, lineBreak2, lastEnd, nextIndex);
lastEnd = nextIndex;
return { value, done: false };
}
return { done: true, value: null };
}
};
};
var FLAG_UNRESTRICTED = 1 << 0;
var FLAG_ID = 1 << 1;
var FLAG_INTEGER = 1 << 2;
var FLAG_NUMBER = 1 << 3;
var LINE_FEED = 10;
var SOLIDUS = 47;
var REVERSE_SOLIDUS = 92;
var CHARACTER_TABULATION = 9;
var SPACE = 32;
var QUOTATION_MARK = 34;
var EQUALS_SIGN = 61;
var NUMBER_SIGN = 35;
var DOLLAR_SIGN = 36;
var PERCENTAGE_SIGN = 37;
var APOSTROPHE = 39;
var LEFT_PARENTHESIS = 40;
var RIGHT_PARENTHESIS = 41;
var LOW_LINE = 95;
var HYPHEN_MINUS = 45;
var EXCLAMATION_MARK = 33;
var LESS_THAN_SIGN = 60;
var GREATER_THAN_SIGN = 62;
var COMMERCIAL_AT = 64;
var LEFT_SQUARE_BRACKET = 91;
var RIGHT_SQUARE_BRACKET = 93;
var CIRCUMFLEX_ACCENT = 61;
var LEFT_CURLY_BRACKET = 123;
var QUESTION_MARK = 63;
var RIGHT_CURLY_BRACKET = 125;
var VERTICAL_LINE = 124;
var TILDE = 126;
var CONTROL = 128;
var REPLACEMENT_CHARACTER = 65533;
var ASTERISK = 42;
var PLUS_SIGN = 43;
var COMMA = 44;
var COLON = 58;
var SEMICOLON = 59;
var FULL_STOP = 46;
var NULL = 0;
var BACKSPACE = 8;
var LINE_TABULATION = 11;
var SHIFT_OUT = 14;
var INFORMATION_SEPARATOR_ONE = 31;
var DELETE = 127;
var EOF = -1;
var ZERO = 48;
var a$1 = 97;
var e$1 = 101;
var f$1 = 102;
var u$1 = 117;
var z = 122;
var A = 65;
var E = 69;
var F = 70;
var U = 85;
var Z = 90;
var isDigit = function(codePoint) {
return codePoint >= ZERO && codePoint <= 57;
};
var isSurrogateCodePoint = function(codePoint) {
return codePoint >= 55296 && codePoint <= 57343;
};
var isHex = function(codePoint) {
return isDigit(codePoint) || codePoint >= A && codePoint <= F || codePoint >= a$1 && codePoint <= f$1;
};
var isLowerCaseLetter = function(codePoint) {
return codePoint >= a$1 && codePoint <= z;
};
var isUpperCaseLetter = function(codePoint) {
return codePoint >= A && codePoint <= Z;
};
var isLetter = function(codePoint) {
return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);
};
var isNonASCIICodePoint = function(codePoint) {
return codePoint >= CONTROL;
};
var isWhiteSpace = function(codePoint) {
return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;
};
var isNameStartCodePoint = function(codePoint) {
return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;
};
var isNameCodePoint = function(codePoint) {
return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;
};
var isNonPrintableCodePoint = function(codePoint) {
return codePoint >= NULL && codePoint <= BACKSPACE || codePoint === LINE_TABULATION || codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE || codePoint === DELETE;
};
var isValidEscape = function(c1, c2) {
if (c1 !== REVERSE_SOLIDUS) {
return false;
}
return c2 !== LINE_FEED;
};
var isIdentifierStart = function(c1, c2, c3) {
if (c1 === HYPHEN_MINUS) {
return isNameStartCodePoint(c2) || isValidEscape(c2, c3);
} else if (isNameStartCodePoint(c1)) {
return true;
} else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {
return true;
}
return false;
};
var isNumberStart = function(c1, c2, c3) {
if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
if (isDigit(c2)) {
return true;
}
return c2 === FULL_STOP && isDigit(c3);
}
if (c1 === FULL_STOP) {
return isDigit(c2);
}
return isDigit(c1);
};
var stringToNumber = function(codePoints) {
var c2 = 0;
var sign2 = 1;
if (codePoints[c2] === PLUS_SIGN || codePoints[c2] === HYPHEN_MINUS) {
if (codePoints[c2] === HYPHEN_MINUS) {
sign2 = -1;
}
c2++;
}
var integers = [];
while (isDigit(codePoints[c2])) {
integers.push(codePoints[c2++]);
}
var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;
if (codePoints[c2] === FULL_STOP) {
c2++;
}
var fraction = [];
while (isDigit(codePoints[c2])) {
fraction.push(codePoints[c2++]);
}
var fracd = fraction.length;
var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;
if (codePoints[c2] === E || codePoints[c2] === e$1) {
c2++;
}
var expsign = 1;
if (codePoints[c2] === PLUS_SIGN || codePoints[c2] === HYPHEN_MINUS) {
if (codePoints[c2] === HYPHEN_MINUS) {
expsign = -1;
}
c2++;
}
var exponent = [];
while (isDigit(codePoints[c2])) {
exponent.push(codePoints[c2++]);
}
var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;
return sign2 * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);
};
var LEFT_PARENTHESIS_TOKEN = {
type: 2
/* LEFT_PARENTHESIS_TOKEN */
};
var RIGHT_PARENTHESIS_TOKEN = {
type: 3
/* RIGHT_PARENTHESIS_TOKEN */
};
var COMMA_TOKEN = {
type: 4
/* COMMA_TOKEN */
};
var SUFFIX_MATCH_TOKEN = {
type: 13
/* SUFFIX_MATCH_TOKEN */
};
var PREFIX_MATCH_TOKEN = {
type: 8
/* PREFIX_MATCH_TOKEN */
};
var COLUMN_TOKEN = {
type: 21
/* COLUMN_TOKEN */
};
var DASH_MATCH_TOKEN = {
type: 9
/* DASH_MATCH_TOKEN */
};
var INCLUDE_MATCH_TOKEN = {
type: 10
/* INCLUDE_MATCH_TOKEN */
};
var LEFT_CURLY_BRACKET_TOKEN = {
type: 11
/* LEFT_CURLY_BRACKET_TOKEN */
};
var RIGHT_CURLY_BRACKET_TOKEN = {
type: 12
/* RIGHT_CURLY_BRACKET_TOKEN */
};
var SUBSTRING_MATCH_TOKEN = {
type: 14
/* SUBSTRING_MATCH_TOKEN */
};
var BAD_URL_TOKEN = {
type: 23
/* BAD_URL_TOKEN */
};
var BAD_STRING_TOKEN = {
type: 1
/* BAD_STRING_TOKEN */
};
var CDO_TOKEN = {
type: 25
/* CDO_TOKEN */
};
var CDC_TOKEN = {
type: 24
/* CDC_TOKEN */
};
var COLON_TOKEN = {
type: 26
/* COLON_TOKEN */
};
var SEMICOLON_TOKEN = {
type: 27
/* SEMICOLON_TOKEN */
};
var LEFT_SQUARE_BRACKET_TOKEN = {
type: 28
/* LEFT_SQUARE_BRACKET_TOKEN */
};
var RIGHT_SQUARE_BRACKET_TOKEN = {
type: 29
/* RIGHT_SQUARE_BRACKET_TOKEN */
};
var WHITESPACE_TOKEN = {
type: 31
/* WHITESPACE_TOKEN */
};
var EOF_TOKEN = {
type: 32
/* EOF_TOKEN */
};
var Tokenizer = (
/** @class */
function() {
function Tokenizer2() {
this._value = [];
}
Tokenizer2.prototype.write = function(chunk) {
this._value = this._value.concat(toCodePoints$1(chunk));
};
Tokenizer2.prototype.read = function() {
var tokens = [];
var token = this.consumeToken();
while (token !== EOF_TOKEN) {
tokens.push(token);
token = this.consumeToken();
}
return tokens;
};
Tokenizer2.prototype.consumeToken = function() {
var codePoint = this.consumeCodePoint();
switch (codePoint) {
case QUOTATION_MARK:
return this.consumeStringToken(QUOTATION_MARK);
case NUMBER_SIGN:
var c1 = this.peekCodePoint(0);
var c2 = this.peekCodePoint(1);
var c3 = this.peekCodePoint(2);
if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {
var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;
var value = this.consumeName();
return { type: 5, value, flags };
}
break;
case DOLLAR_SIGN:
if (this.peekCodePoint(0) === EQUALS_SIGN) {
this.consumeCodePoint();
return SUFFIX_MATCH_TOKEN;
}
break;
case APOSTROPHE:
return this.consumeStringToken(APOSTROPHE);
case LEFT_PARENTHESIS:
return LEFT_PARENTHESIS_TOKEN;
case RIGHT_PARENTHESIS:
return RIGHT_PARENTHESIS_TOKEN;
case ASTERISK:
if (this.peekCodePoint(0) === EQUALS_SIGN) {
this.consumeCodePoint();
return SUBSTRING_MATCH_TOKEN;
}
break;
case PLUS_SIGN:
if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
this.reconsumeCodePoint(codePoint);
return this.consumeNumericToken();
}
break;
case COMMA:
return COMMA_TOKEN;
case HYPHEN_MINUS:
var e1 = codePoint;
var e2 = this.peekCodePoint(0);
var e3 = this.peekCodePoint(1);
if (isNumberStart(e1, e2, e3)) {
this.reconsumeCodePoint(codePoint);
return this.consumeNumericToken();
}
if (isIdentifierStart(e1, e2, e3)) {
this.reconsumeCodePoint(codePoint);
return this.consumeIdentLikeToken();
}
if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {
this.consumeCodePoint();
this.consumeCodePoint();
return CDC_TOKEN;
}
break;
case FULL_STOP:
if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
this.reconsumeCodePoint(codePoint);
return this.consumeNumericToken();
}
break;
case SOLIDUS:
if (this.peekCodePoint(0) === ASTERISK) {
this.consumeCodePoint();
while (true) {
var c4 = this.consumeCodePoint();
if (c4 === ASTERISK) {
c4 = this.consumeCodePoint();
if (c4 === SOLIDUS) {
return this.consumeToken();
}
}
if (c4 === EOF) {
return this.consumeToken();
}
}
}
break;
case COLON:
return COLON_TOKEN;
case SEMICOLON:
return SEMICOLON_TOKEN;
case LESS_THAN_SIGN:
if (this.peekCodePoint(0) === EXCLAMATION_MARK && this.peekCodePoint(1) === HYPHEN_MINUS && this.peekCodePoint(2) === HYPHEN_MINUS) {
this.consumeCodePoint();
this.consumeCodePoint();
return CDO_TOKEN;
}
break;
case COMMERCIAL_AT:
var a1 = this.peekCodePoint(0);
var a2 = this.peekCodePoint(1);
var a3 = this.peekCodePoint(2);
if (isIdentifierStart(a1, a2, a3)) {
var value = this.consumeName();
return { type: 7, value };
}
break;
case LEFT_SQUARE_BRACKET:
return LEFT_SQUARE_BRACKET_TOKEN;
case REVERSE_SOLIDUS:
if (isValidEscape(codePoint, this.peekCodePoint(0))) {
this.reconsumeCodePoint(codePoint);
return this.consumeIdentLikeToken();
}
break;
case RIGHT_SQUARE_BRACKET:
return RIGHT_SQUARE_BRACKET_TOKEN;
case CIRCUMFLEX_ACCENT:
if (this.peekCodePoint(0) === EQUALS_SIGN) {
this.consumeCodePoint();
return PREFIX_MATCH_TOKEN;
}
break;
case LEFT_CURLY_BRACKET:
return LEFT_CURLY_BRACKET_TOKEN;
case RIGHT_CURLY_BRACKET:
return RIGHT_CURLY_BRACKET_TOKEN;
case u$1:
case U:
var u1 = this.peekCodePoint(0);
var u2 = this.peekCodePoint(1);
if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {
this.consumeCodePoint();
this.consumeUnicodeRangeToken();
}
this.reconsumeCodePoint(codePoint);
return this.consumeIdentLikeToken();
case VERTICAL_LINE:
if (this.peekCodePoint(0) === EQUALS_SIGN) {
this.consumeCodePoint();
return DASH_MATCH_TOKEN;
}
if (this.peekCodePoint(0) === VERTICAL_LINE) {
this.consumeCodePoint();
return COLUMN_TOKEN;
}
break;
case TILDE:
if (this.peekCodePoint(0) === EQUALS_SIGN) {
this.consumeCodePoint();
return INCLUDE_MATCH_TOKEN;
}
break;
case EOF:
return EOF_TOKEN;
}
if (isWhiteSpace(codePoint)) {
this.consumeWhiteSpace();
return WHITESPACE_TOKEN;
}
if (isDigit(codePoint)) {
this.reconsumeCodePoint(codePoint);
return this.consumeNumericToken();
}
if (isNameStartCodePoint(codePoint)) {
this.reconsumeCodePoint(codePoint);
return this.consumeIdentLikeToken();
}
return { type: 6, value: fromCodePoint$1(codePoint) };
};
Tokenizer2.prototype.consumeCodePoint = function() {
var value = this._value.shift();
return typeof value === "undefined" ? -1 : value;
};
Tokenizer2.prototype.reconsumeCodePoint = function(codePoint) {
this._value.unshift(codePoint);
};
Tokenizer2.prototype.peekCodePoint = function(delta) {
if (delta >= this._value.length) {
return -1;
}
return this._value[delta];
};
Tokenizer2.prototype.consumeUnicodeRangeToken = function() {
var digits = [];
var codePoint = this.consumeCodePoint();
while (isHex(codePoint) && digits.length < 6) {
digits.push(codePoint);
codePoint = this.consumeCodePoint();
}
var questionMarks = false;
while (codePoint === QUESTION_MARK && digits.length < 6) {
digits.push(codePoint);
codePoint = this.consumeCodePoint();
questionMarks = true;
}
if (questionMarks) {
var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) {
return digit === QUESTION_MARK ? ZERO : digit;
})), 16);
var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) {
return digit === QUESTION_MARK ? F : digit;
})), 16);
return { type: 30, start: start_1, end };
}
var start2 = parseInt(fromCodePoint$1.apply(void 0, digits), 16);
if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {
this.consumeCodePoint();
codePoint = this.consumeCodePoint();
var endDigits = [];
while (isHex(codePoint) && endDigits.length < 6) {
endDigits.push(codePoint);
codePoint = this.consumeCodePoint();
}
var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);
return { type: 30, start: start2, end };
} else {
return { type: 30, start: start2, end: start2 };
}
};
Tokenizer2.prototype.consumeIdentLikeToken = function() {
var value = this.consumeName();
if (value.toLowerCase() === "url" && this.peekCodePoint(0) === LEFT_PARENTHESIS) {
this.consumeCodePoint();
return this.consumeUrlToken();
} else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {
this.consumeCodePoint();
return { type: 19, value };
}
return { type: 20, value };
};
Tokenizer2.prototype.consumeUrlToken = function() {
var value = [];
this.consumeWhiteSpace();
if (this.peekCodePoint(0) === EOF) {
return { type: 22, value: "" };
}
var next = this.peekCodePoint(0);
if (next === APOSTROPHE || next === QUOTATION_MARK) {
var stringToken = this.consumeStringToken(this.consumeCodePoint());
if (stringToken.type === 0) {
this.consumeWhiteSpace();
if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
this.consumeCodePoint();
return { type: 22, value: stringToken.value };
}
}
this.consumeBadUrlRemnants();
return BAD_URL_TOKEN;
}
while (true) {
var codePoint = this.consumeCodePoint();
if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {
return { type: 22, value: fromCodePoint$1.apply(void 0, value) };
} else if (isWhiteSpace(codePoint)) {
this.consumeWhiteSpace();
if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
this.consumeCodePoint();
return { type: 22, value: fromCodePoint$1.apply(void 0, value) };
}
this.consumeBadUrlRemnants();
return BAD_URL_TOKEN;
} else if (codePoint === QUOTATION_MARK || codePoint === APOSTROPHE || codePoint === LEFT_PARENTHESIS || isNonPrintableCodePoint(codePoint)) {
this.consumeBadUrlRemnants();
return BAD_URL_TOKEN;
} else if (codePoint === REVERSE_SOLIDUS) {
if (isValidEscape(codePoint, this.peekCodePoint(0))) {
value.push(this.consumeEscapedCodePoint());
} else {
this.consumeBadUrlRemnants();
return BAD_URL_TOKEN;
}
} else {
value.push(codePoint);
}
}
};
Tokenizer2.prototype.consumeWhiteSpace = function() {
while (isWhiteSpace(this.peekCodePoint(0))) {
this.consumeCodePoint();
}
};
Tokenizer2.prototype.consumeBadUrlRemnants = function() {
while (true) {
var codePoint = this.consumeCodePoint();
if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {
return;
}
if (isValidEscape(codePoint, this.peekCodePoint(0))) {
this.consumeEscapedCodePoint();
}
}
};
Tokenizer2.prototype.consumeStringSlice = function(count) {
var SLICE_STACK_SIZE = 5e4;
var value = "";
while (count > 0) {
var amount = Math.min(SLICE_STACK_SIZE, count);
value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));
count -= amount;
}
this._value.shift();
return value;
};
Tokenizer2.prototype.consumeStringToken = function(endingCodePoint) {
var value = "";
var i2 = 0;
do {
var codePoint = this._value[i2];
if (codePoint === EOF || codePoint === void 0 || codePoint === endingCodePoint) {
value += this.consumeStringSlice(i2);
return { type: 0, value };
}
if (codePoint === LINE_FEED) {
this._value.splice(0, i2);
return BAD_STRING_TOKEN;
}
if (codePoint === REVERSE_SOLIDUS) {
var next = this._value[i2 + 1];
if (next !== EOF && next !== void 0) {
if (next === LINE_FEED) {
value += this.consumeStringSlice(i2);
i2 = -1;
this._value.shift();
} else if (isValidEscape(codePoint, next)) {
value += this.consumeStringSlice(i2);
value += fromCodePoint$1(this.consumeEscapedCodePoint());
i2 = -1;
}
}
}
i2++;
} while (true);
};
Tokenizer2.prototype.consumeNumber = function() {
var repr = [];
var type = FLAG_INTEGER;
var c1 = this.peekCodePoint(0);
if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
repr.push(this.consumeCodePoint());
}
while (isDigit(this.peekCodePoint(0))) {
repr.push(this.consumeCodePoint());
}
c1 = this.peekCodePoint(0);
var c2 = this.peekCodePoint(1);
if (c1 === FULL_STOP && isDigit(c2)) {
repr.push(this.consumeCodePoint(), this.consumeCodePoint());
type = FLAG_NUMBER;
while (isDigit(this.peekCodePoint(0))) {
repr.push(this.consumeCodePoint());
}
}
c1 = this.peekCodePoint(0);
c2 = this.peekCodePoint(1);
var c3 = this.peekCodePoint(2);
if ((c1 === E || c1 === e$1) && ((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3) || isDigit(c2))) {
repr.push(this.consumeCodePoint(), this.consumeCodePoint());
type = FLAG_NUMBER;
while (isDigit(this.peekCodePoint(0))) {
repr.push(this.consumeCodePoint());
}
}
return [stringToNumber(repr), type];
};
Tokenizer2.prototype.consumeNumericToken = function() {
var _a2 = this.consumeNumber(), number = _a2[0], flags = _a2[1];
var c1 = this.peekCodePoint(0);
var c2 = this.peekCodePoint(1);
var c3 = this.peekCodePoint(2);
if (isIdentifierStart(c1, c2, c3)) {
var unit = this.consumeName();
return { type: 15, number, flags, unit };
}
if (c1 === PERCENTAGE_SIGN) {
this.consumeCodePoint();
return { type: 16, number, flags };
}
return { type: 17, number, flags };
};
Tokenizer2.prototype.consumeEscapedCodePoint = function() {
var codePoint = this.consumeCodePoint();
if (isHex(codePoint)) {
var hex = fromCodePoint$1(codePoint);
while (isHex(this.peekCodePoint(0)) && hex.length < 6) {
hex += fromCodePoint$1(this.consumeCodePoint());
}
if (isWhiteSpace(this.peekCodePoint(0))) {
this.consumeCodePoint();
}
var hexCodePoint = parseInt(hex, 16);
if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 1114111) {
return REPLACEMENT_CHARACTER;
}
return hexCodePoint;
}
if (codePoint === EOF) {
return REPLACEMENT_CHARACTER;
}
return codePoint;
};
Tokenizer2.prototype.consumeName = function() {
var result = "";
while (true) {
var codePoint = this.consumeCodePoint();
if (isNameCodePoint(codePoint)) {
result += fromCodePoint$1(codePoint);
} else if (isValidEscape(codePoint, this.peekCodePoint(0))) {
result += fromCodePoint$1(this.consumeEscapedCodePoint());
} else {
this.reconsumeCodePoint(codePoint);
return result;
}
}
};
return Tokenizer2;
}()
);
var Parser$1 = (
/** @class */
function() {
function Parser2(tokens) {
this._tokens = tokens;
}
Parser2.create = function(value) {
var tokenizer = new Tokenizer();
tokenizer.write(value);
return new Parser2(tokenizer.read());
};
Parser2.parseValue = function(value) {
return Parser2.create(value).parseComponentValue();
};
Parser2.parseValues = function(value) {
return Parser2.create(value).parseComponentValues();
};
Parser2.prototype.parseComponentValue = function() {
var token = this.consumeToken();
while (token.type === 31) {
token = this.consumeToken();
}
if (token.type === 32) {
throw new SyntaxError("Error parsing CSS component value, unexpected EOF");
}
this.reconsumeToken(token);
var value = this.consumeComponentValue();
do {
token = this.consumeToken();
} while (token.type === 31);
if (token.type === 32) {
return value;
}
throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one");
};
Parser2.prototype.parseComponentValues = function() {
var values2 = [];
while (true) {
var value = this.consumeComponentValue();
if (value.type === 32) {
return values2;
}
values2.push(value);
values2.push();
}
};
Parser2.prototype.consumeComponentValue = function() {
var token = this.consumeToken();
switch (token.type) {
case 11:
case 28:
case 2:
return this.consumeSimpleBlock(token.type);
case 19:
return this.consumeFunction(token);
}
return token;
};
Parser2.prototype.consumeSimpleBlock = function(type) {
var block = { type, values: [] };
var token = this.consumeToken();
while (true) {
if (token.type === 32 || isEndingTokenFor(token, type)) {
return block;
}
this.reconsumeToken(token);
block.values.push(this.consumeComponentValue());
token = this.consumeToken();
}
};
Parser2.prototype.consumeFunction = function(functionToken) {
var cssFunction = {
name: functionToken.value,
values: [],
type: 18
/* FUNCTION */
};
while (true) {
var token = this.consumeToken();
if (token.type === 32 || token.type === 3) {
return cssFunction;
}
this.reconsumeToken(token);
cssFunction.values.push(this.consumeComponentValue());
}
};
Parser2.prototype.consumeToken = function() {
var token = this._tokens.shift();
return typeof token === "undefined" ? EOF_TOKEN : token;
};
Parser2.prototype.reconsumeToken = function(token) {
this._tokens.unshift(token);
};
return Parser2;
}()
);
var isDimensionToken = function(token) {
return token.type === 15;
};
var isNumberToken = function(token) {
return token.type === 17;
};
var isIdentToken = function(token) {
return token.type === 20;
};
var isStringToken = function(token) {
return token.type === 0;
};
var isIdentWithValue = function(token, value) {
return isIdentToken(token) && token.value === value;
};
var nonWhiteSpace = function(token) {
return token.type !== 31;
};
var nonFunctionArgSeparator = function(token) {
return token.type !== 31 && token.type !== 4;
};
var parseFunctionArgs = function(tokens) {
var args = [];
var arg = [];
tokens.forEach(function(token) {
if (token.type === 4) {
if (arg.length === 0) {
throw new Error("Error parsing function args, zero tokens for arg");
}
args.push(arg);
arg = [];
return;
}
if (token.type !== 31) {
arg.push(token);
}
});
if (arg.length) {
args.push(arg);
}
return args;
};
var isEndingTokenFor = function(token, type) {
if (type === 11 && token.type === 12) {
return true;
}
if (type === 28 && token.type === 29) {
return true;
}
return type === 2 && token.type === 3;
};
var isLength = function(token) {
return token.type === 17 || token.type === 15;
};
var isLengthPercentage = function(token) {
return token.type === 16 || isLength(token);
};
var parseLengthPercentageTuple = function(tokens) {
return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];
};
var ZERO_LENGTH = {
type: 17,
number: 0,
flags: FLAG_INTEGER
};
var FIFTY_PERCENT = {
type: 16,
number: 50,
flags: FLAG_INTEGER
};
var HUNDRED_PERCENT = {
type: 16,
number: 100,
flags: FLAG_INTEGER
};
var getAbsoluteValueForTuple = function(tuple, width, height) {
var x2 = tuple[0], y2 = tuple[1];
return [getAbsoluteValue(x2, width), getAbsoluteValue(typeof y2 !== "undefined" ? y2 : x2, height)];
};
var getAbsoluteValue = function(token, parent) {
if (token.type === 16) {
return token.number / 100 * parent;
}
if (isDimensionToken(token)) {
switch (token.unit) {
case "rem":
case "em":
return 16 * token.number;
case "px":
default:
return token.number;
}
}
return token.number;
};
var DEG = "deg";
var GRAD = "grad";
var RAD = "rad";
var TURN = "turn";
var angle = {
name: "angle",
parse: function(_context, value) {
if (value.type === 15) {
switch (value.unit) {
case DEG:
return Math.PI * value.number / 180;
case GRAD:
return Math.PI / 200 * value.number;
case RAD:
return value.number;
case TURN:
return Math.PI * 2 * value.number;
}
}
throw new Error("Unsupported angle type");
}
};
var isAngle = function(value) {
if (value.type === 15) {
if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {
return true;
}
}
return false;
};
var parseNamedSide = function(tokens) {
var sideOrCorner = tokens.filter(isIdentToken).map(function(ident) {
return ident.value;
}).join(" ");
switch (sideOrCorner) {
case "to bottom right":
case "to right bottom":
case "left top":
case "top left":
return [ZERO_LENGTH, ZERO_LENGTH];
case "to top":
case "bottom":
return deg(0);
case "to bottom left":
case "to left bottom":
case "right top":
case "top right":
return [ZERO_LENGTH, HUNDRED_PERCENT];
case "to right":
case "left":
return deg(90);
case "to top left":
case "to left top":
case "right bottom":
case "bottom right":
return [HUNDRED_PERCENT, HUNDRED_PERCENT];
case "to bottom":
case "top":
return deg(180);
case "to top right":
case "to right top":
case "left bottom":
case "bottom left":
return [HUNDRED_PERCENT, ZERO_LENGTH];
case "to left":
case "right":
return deg(270);
}
return 0;
};
var deg = function(deg2) {
return Math.PI * deg2 / 180;
};
var color$1 = {
name: "color",
parse: function(context, value) {
if (value.type === 18) {
var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];
if (typeof colorFunction === "undefined") {
throw new Error('Attempting to parse an unsupported color function "' + value.name + '"');
}
return colorFunction(context, value.values);
}
if (value.type === 5) {
if (value.value.length === 3) {
var r2 = value.value.substring(0, 1);
var g2 = value.value.substring(1, 2);
var b2 = value.value.substring(2, 3);
return pack(parseInt(r2 + r2, 16), parseInt(g2 + g2, 16), parseInt(b2 + b2, 16), 1);
}
if (value.value.length === 4) {
var r2 = value.value.substring(0, 1);
var g2 = value.value.substring(1, 2);
var b2 = value.value.substring(2, 3);
var a2 = value.value.substring(3, 4);
return pack(parseInt(r2 + r2, 16), parseInt(g2 + g2, 16), parseInt(b2 + b2, 16), parseInt(a2 + a2, 16) / 255);
}
if (value.value.length === 6) {
var r2 = value.value.substring(0, 2);
var g2 = value.value.substring(2, 4);
var b2 = value.value.substring(4, 6);
return pack(parseInt(r2, 16), parseInt(g2, 16), parseInt(b2, 16), 1);
}
if (value.value.length === 8) {
var r2 = value.value.substring(0, 2);
var g2 = value.value.substring(2, 4);
var b2 = value.value.substring(4, 6);
var a2 = value.value.substring(6, 8);
return pack(parseInt(r2, 16), parseInt(g2, 16), parseInt(b2, 16), parseInt(a2, 16) / 255);
}
}
if (value.type === 20) {
var namedColor = COLORS[value.value.toUpperCase()];
if (typeof namedColor !== "undefined") {
return namedColor;
}
}
return COLORS.TRANSPARENT;
}
};
var isTransparent = function(color2) {
return (255 & color2) === 0;
};
var asString = function(color2) {
var alpha = 255 & color2;
var blue = 255 & color2 >> 8;
var green = 255 & color2 >> 16;
var red = 255 & color2 >> 24;
return alpha < 255 ? "rgba(" + red + "," + green + "," + blue + "," + alpha / 255 + ")" : "rgb(" + red + "," + green + "," + blue + ")";
};
var pack = function(r2, g2, b2, a2) {
return (r2 << 24 | g2 << 16 | b2 << 8 | Math.round(a2 * 255) << 0) >>> 0;
};
var getTokenColorValue = function(token, i2) {
if (token.type === 17) {
return token.number;
}
if (token.type === 16) {
var max2 = i2 === 3 ? 1 : 255;
return i2 === 3 ? token.number / 100 * max2 : Math.round(token.number / 100 * max2);
}
return 0;
};
var rgb = function(_context, args) {
var tokens = args.filter(nonFunctionArgSeparator);
if (tokens.length === 3) {
var _a2 = tokens.map(getTokenColorValue), r2 = _a2[0], g2 = _a2[1], b2 = _a2[2];
return pack(r2, g2, b2, 1);
}
if (tokens.length === 4) {
var _b2 = tokens.map(getTokenColorValue), r2 = _b2[0], g2 = _b2[1], b2 = _b2[2], a2 = _b2[3];
return pack(r2, g2, b2, a2);
}
return 0;
};
function hue2rgb(t1, t22, hue) {
if (hue < 0) {
hue += 1;
}
if (hue >= 1) {
hue -= 1;
}
if (hue < 1 / 6) {
return (t22 - t1) * hue * 6 + t1;
} else if (hue < 1 / 2) {
return t22;
} else if (hue < 2 / 3) {
return (t22 - t1) * 6 * (2 / 3 - hue) + t1;
} else {
return t1;
}
}
var hsl = function(context, args) {
var tokens = args.filter(nonFunctionArgSeparator);
var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];
var h2 = (hue.type === 17 ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);
var s2 = isLengthPercentage(saturation) ? saturation.number / 100 : 0;
var l2 = isLengthPercentage(lightness) ? lightness.number / 100 : 0;
var a2 = typeof alpha !== "undefined" && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;
if (s2 === 0) {
return pack(l2 * 255, l2 * 255, l2 * 255, 1);
}
var t22 = l2 <= 0.5 ? l2 * (s2 + 1) : l2 + s2 - l2 * s2;
var t1 = l2 * 2 - t22;
var r2 = hue2rgb(t1, t22, h2 + 1 / 3);
var g2 = hue2rgb(t1, t22, h2);
var b2 = hue2rgb(t1, t22, h2 - 1 / 3);
return pack(r2 * 255, g2 * 255, b2 * 255, a2);
};
var SUPPORTED_COLOR_FUNCTIONS = {
hsl,
hsla: hsl,
rgb,
rgba: rgb
};
var parseColor = function(context, value) {
return color$1.parse(context, Parser$1.create(value).parseComponentValue());
};
var COLORS = {
ALICEBLUE: 4042850303,
ANTIQUEWHITE: 4209760255,
AQUA: 16777215,
AQUAMARINE: 2147472639,
AZURE: 4043309055,
BEIGE: 4126530815,
BISQUE: 4293182719,
BLACK: 255,
BLANCHEDALMOND: 4293643775,
BLUE: 65535,
BLUEVIOLET: 2318131967,
BROWN: 2771004159,
BURLYWOOD: 3736635391,
CADETBLUE: 1604231423,
CHARTREUSE: 2147418367,
CHOCOLATE: 3530104575,
CORAL: 4286533887,
CORNFLOWERBLUE: 1687547391,
CORNSILK: 4294499583,
CRIMSON: 3692313855,
CYAN: 16777215,
DARKBLUE: 35839,
DARKCYAN: 9145343,
DARKGOLDENROD: 3095837695,
DARKGRAY: 2846468607,
DARKGREEN: 6553855,
DARKGREY: 2846468607,
DARKKHAKI: 3182914559,
DARKMAGENTA: 2332068863,
DARKOLIVEGREEN: 1433087999,
DARKORANGE: 4287365375,
DARKORCHID: 2570243327,
DARKRED: 2332033279,
DARKSALMON: 3918953215,
DARKSEAGREEN: 2411499519,
DARKSLATEBLUE: 1211993087,
DARKSLATEGRAY: 793726975,
DARKSLATEGREY: 793726975,
DARKTURQUOISE: 13554175,
DARKVIOLET: 2483082239,
DEEPPINK: 4279538687,
DEEPSKYBLUE: 12582911,
DIMGRAY: 1768516095,
DIMGREY: 1768516095,
DODGERBLUE: 512819199,
FIREBRICK: 2988581631,
FLORALWHITE: 4294635775,
FORESTGREEN: 579543807,
FUCHSIA: 4278255615,
GAINSBORO: 3705462015,
GHOSTWHITE: 4177068031,
GOLD: 4292280575,
GOLDENROD: 3668254975,
GRAY: 2155905279,
GREEN: 8388863,
GREENYELLOW: 2919182335,
GREY: 2155905279,
HONEYDEW: 4043305215,
HOTPINK: 4285117695,
INDIANRED: 3445382399,
INDIGO: 1258324735,
IVORY: 4294963455,
KHAKI: 4041641215,
LAVENDER: 3873897215,
LAVENDERBLUSH: 4293981695,
LAWNGREEN: 2096890111,
LEMONCHIFFON: 4294626815,
LIGHTBLUE: 2916673279,
LIGHTCORAL: 4034953471,
LIGHTCYAN: 3774873599,
LIGHTGOLDENRODYELLOW: 4210742015,
LIGHTGRAY: 3553874943,
LIGHTGREEN: 2431553791,
LIGHTGREY: 3553874943,
LIGHTPINK: 4290167295,
LIGHTSALMON: 4288707327,
LIGHTSEAGREEN: 548580095,
LIGHTSKYBLUE: 2278488831,
LIGHTSLATEGRAY: 2005441023,
LIGHTSLATEGREY: 2005441023,
LIGHTSTEELBLUE: 2965692159,
LIGHTYELLOW: 4294959359,
LIME: 16711935,
LIMEGREEN: 852308735,
LINEN: 4210091775,
MAGENTA: 4278255615,
MAROON: 2147483903,
MEDIUMAQUAMARINE: 1724754687,
MEDIUMBLUE: 52735,
MEDIUMORCHID: 3126187007,
MEDIUMPURPLE: 2473647103,
MEDIUMSEAGREEN: 1018393087,
MEDIUMSLATEBLUE: 2070474495,
MEDIUMSPRINGGREEN: 16423679,
MEDIUMTURQUOISE: 1221709055,
MEDIUMVIOLETRED: 3340076543,
MIDNIGHTBLUE: 421097727,
MINTCREAM: 4127193855,
MISTYROSE: 4293190143,
MOCCASIN: 4293178879,
NAVAJOWHITE: 4292783615,
NAVY: 33023,
OLDLACE: 4260751103,
OLIVE: 2155872511,
OLIVEDRAB: 1804477439,
ORANGE: 4289003775,
ORANGERED: 4282712319,
ORCHID: 3664828159,
PALEGOLDENROD: 4008225535,
PALEGREEN: 2566625535,
PALETURQUOISE: 2951671551,
PALEVIOLETRED: 3681588223,
PAPAYAWHIP: 4293907967,
PEACHPUFF: 4292524543,
PERU: 3448061951,
PINK: 4290825215,
PLUM: 3718307327,
POWDERBLUE: 2967529215,
PURPLE: 2147516671,
REBECCAPURPLE: 1714657791,
RED: 4278190335,
ROSYBROWN: 3163525119,
ROYALBLUE: 1097458175,
SADDLEBROWN: 2336560127,
SALMON: 4202722047,
SANDYBROWN: 4104413439,
SEAGREEN: 780883967,
SEASHELL: 4294307583,
SIENNA: 2689740287,
SILVER: 3233857791,
SKYBLUE: 2278484991,
SLATEBLUE: 1784335871,
SLATEGRAY: 1887473919,
SLATEGREY: 1887473919,
SNOW: 4294638335,
SPRINGGREEN: 16744447,
STEELBLUE: 1182971135,
TAN: 3535047935,
TEAL: 8421631,
THISTLE: 3636451583,
TOMATO: 4284696575,
TRANSPARENT: 0,
TURQUOISE: 1088475391,
VIOLET: 4001558271,
WHEAT: 4125012991,
WHITE: 4294967295,
WHITESMOKE: 4126537215,
YELLOW: 4294902015,
YELLOWGREEN: 2597139199
};
var backgroundClip = {
name: "background-clip",
initialValue: "border-box",
prefix: false,
type: 1,
parse: function(_context, tokens) {
return tokens.map(function(token) {
if (isIdentToken(token)) {
switch (token.value) {
case "padding-box":
return 1;
case "content-box":
return 2;
}
}
return 0;
});
}
};
var backgroundColor = {
name: "background-color",
initialValue: "transparent",
prefix: false,
type: 3,
format: "color"
};
var parseColorStop = function(context, args) {
var color2 = color$1.parse(context, args[0]);
var stop = args[1];
return stop && isLengthPercentage(stop) ? { color: color2, stop } : { color: color2, stop: null };
};
var processColorStops = function(stops, lineLength) {
var first = stops[0];
var last = stops[stops.length - 1];
if (first.stop === null) {
first.stop = ZERO_LENGTH;
}
if (last.stop === null) {
last.stop = HUNDRED_PERCENT;
}
var processStops = [];
var previous = 0;
for (var i2 = 0; i2 < stops.length; i2++) {
var stop_1 = stops[i2].stop;
if (stop_1 !== null) {
var absoluteValue = getAbsoluteValue(stop_1, lineLength);
if (absoluteValue > previous) {
processStops.push(absoluteValue);
} else {
processStops.push(previous);
}
previous = absoluteValue;
} else {
processStops.push(null);
}
}
var gapBegin = null;
for (var i2 = 0; i2 < processStops.length; i2++) {
var stop_2 = processStops[i2];
if (stop_2 === null) {
if (gapBegin === null) {
gapBegin = i2;
}
} else if (gapBegin !== null) {
var gapLength = i2 - gapBegin;
var beforeGap = processStops[gapBegin - 1];
var gapValue = (stop_2 - beforeGap) / (gapLength + 1);
for (var g2 = 1; g2 <= gapLength; g2++) {
processStops[gapBegin + g2 - 1] = gapValue * g2;
}
gapBegin = null;
}
}
return stops.map(function(_a2, i3) {
var color2 = _a2.color;
return { color: color2, stop: Math.max(Math.min(1, processStops[i3] / lineLength), 0) };
});
};
var getAngleFromCorner = function(corner, width, height) {
var centerX = width / 2;
var centerY = height / 2;
var x2 = getAbsoluteValue(corner[0], width) - centerX;
var y2 = centerY - getAbsoluteValue(corner[1], height);
return (Math.atan2(y2, x2) + Math.PI * 2) % (Math.PI * 2);
};
var calculateGradientDirection = function(angle2, width, height) {
var radian = typeof angle2 === "number" ? angle2 : getAngleFromCorner(angle2, width, height);
var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));
var halfWidth = width / 2;
var halfHeight = height / 2;
var halfLineLength = lineLength / 2;
var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;
var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;
return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];
};
var distance = function(a2, b2) {
return Math.sqrt(a2 * a2 + b2 * b2);
};
var findCorner = function(width, height, x2, y2, closest) {
var corners = [
[0, 0],
[0, height],
[width, 0],
[width, height]
];
return corners.reduce(function(stat, corner) {
var cx = corner[0], cy = corner[1];
var d2 = distance(x2 - cx, y2 - cy);
if (closest ? d2 < stat.optimumDistance : d2 > stat.optimumDistance) {
return {
optimumCorner: corner,
optimumDistance: d2
};
}
return stat;
}, {
optimumDistance: closest ? Infinity : -Infinity,
optimumCorner: null
}).optimumCorner;
};
var calculateRadius = function(gradient, x2, y2, width, height) {
var rx = 0;
var ry = 0;
switch (gradient.size) {
case 0:
if (gradient.shape === 0) {
rx = ry = Math.min(Math.abs(x2), Math.abs(x2 - width), Math.abs(y2), Math.abs(y2 - height));
} else if (gradient.shape === 1) {
rx = Math.min(Math.abs(x2), Math.abs(x2 - width));
ry = Math.min(Math.abs(y2), Math.abs(y2 - height));
}
break;
case 2:
if (gradient.shape === 0) {
rx = ry = Math.min(distance(x2, y2), distance(x2, y2 - height), distance(x2 - width, y2), distance(x2 - width, y2 - height));
} else if (gradient.shape === 1) {
var c2 = Math.min(Math.abs(y2), Math.abs(y2 - height)) / Math.min(Math.abs(x2), Math.abs(x2 - width));
var _a2 = findCorner(width, height, x2, y2, true), cx = _a2[0], cy = _a2[1];
rx = distance(cx - x2, (cy - y2) / c2);
ry = c2 * rx;
}
break;
case 1:
if (gradient.shape === 0) {
rx = ry = Math.max(Math.abs(x2), Math.abs(x2 - width), Math.abs(y2), Math.abs(y2 - height));
} else if (gradient.shape === 1) {
rx = Math.max(Math.abs(x2), Math.abs(x2 - width));
ry = Math.max(Math.abs(y2), Math.abs(y2 - height));
}
break;
case 3:
if (gradient.shape === 0) {
rx = ry = Math.max(distance(x2, y2), distance(x2, y2 - height), distance(x2 - width, y2), distance(x2 - width, y2 - height));
} else if (gradient.shape === 1) {
var c2 = Math.max(Math.abs(y2), Math.abs(y2 - height)) / Math.max(Math.abs(x2), Math.abs(x2 - width));
var _b2 = findCorner(width, height, x2, y2, false), cx = _b2[0], cy = _b2[1];
rx = distance(cx - x2, (cy - y2) / c2);
ry = c2 * rx;
}
break;
}
if (Array.isArray(gradient.size)) {
rx = getAbsoluteValue(gradient.size[0], width);
ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;
}
return [rx, ry];
};
var linearGradient = function(context, tokens) {
var angle$1 = deg(180);
var stops = [];
parseFunctionArgs(tokens).forEach(function(arg, i2) {
if (i2 === 0) {
var firstToken = arg[0];
if (firstToken.type === 20 && firstToken.value === "to") {
angle$1 = parseNamedSide(arg);
return;
} else if (isAngle(firstToken)) {
angle$1 = angle.parse(context, firstToken);
return;
}
}
var colorStop = parseColorStop(context, arg);
stops.push(colorStop);
});
return {
angle: angle$1,
stops,
type: 1
/* LINEAR_GRADIENT */
};
};
var prefixLinearGradient = function(context, tokens) {
var angle$1 = deg(180);
var stops = [];
parseFunctionArgs(tokens).forEach(function(arg, i2) {
if (i2 === 0) {
var firstToken = arg[0];
if (firstToken.type === 20 && ["top", "left", "right", "bottom"].indexOf(firstToken.value) !== -1) {
angle$1 = parseNamedSide(arg);
return;
} else if (isAngle(firstToken)) {
angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);
return;
}
}
var colorStop = parseColorStop(context, arg);
stops.push(colorStop);
});
return {
angle: angle$1,
stops,
type: 1
/* LINEAR_GRADIENT */
};
};
var webkitGradient = function(context, tokens) {
var angle2 = deg(180);
var stops = [];
var type = 1;
var shape = 0;
var size = 3;
var position2 = [];
parseFunctionArgs(tokens).forEach(function(arg, i2) {
var firstToken = arg[0];
if (i2 === 0) {
if (isIdentToken(firstToken) && firstToken.value === "linear") {
type = 1;
return;
} else if (isIdentToken(firstToken) && firstToken.value === "radial") {
type = 2;
return;
}
}
if (firstToken.type === 18) {
if (firstToken.name === "from") {
var color2 = color$1.parse(context, firstToken.values[0]);
stops.push({ stop: ZERO_LENGTH, color: color2 });
} else if (firstToken.name === "to") {
var color2 = color$1.parse(context, firstToken.values[0]);
stops.push({ stop: HUNDRED_PERCENT, color: color2 });
} else if (firstToken.name === "color-stop") {
var values2 = firstToken.values.filter(nonFunctionArgSeparator);
if (values2.length === 2) {
var color2 = color$1.parse(context, values2[1]);
var stop_1 = values2[0];
if (isNumberToken(stop_1)) {
stops.push({
stop: { type: 16, number: stop_1.number * 100, flags: stop_1.flags },
color: color2
});
}
}
}
}
});
return type === 1 ? {
angle: (angle2 + deg(180)) % deg(360),
stops,
type
} : { size, shape, stops, position: position2, type };
};
var CLOSEST_SIDE = "closest-side";
var FARTHEST_SIDE = "farthest-side";
var CLOSEST_CORNER = "closest-corner";
var FARTHEST_CORNER = "farthest-corner";
var CIRCLE = "circle";
var ELLIPSE = "ellipse";
var COVER = "cover";
var CONTAIN = "contain";
var radialGradient = function(context, tokens) {
var shape = 0;
var size = 3;
var stops = [];
var position2 = [];
parseFunctionArgs(tokens).forEach(function(arg, i2) {
var isColorStop = true;
if (i2 === 0) {
var isAtPosition_1 = false;
isColorStop = arg.reduce(function(acc, token) {
if (isAtPosition_1) {
if (isIdentToken(token)) {
switch (token.value) {
case "center":
position2.push(FIFTY_PERCENT);
return acc;
case "top":
case "left":
position2.push(ZERO_LENGTH);
return acc;
case "right":
case "bottom":
position2.push(HUNDRED_PERCENT);
return acc;
}
} else if (isLengthPercentage(token) || isLength(token)) {
position2.push(token);
}
} else if (isIdentToken(token)) {
switch (token.value) {
case CIRCLE:
shape = 0;
return false;
case ELLIPSE:
shape = 1;
return false;
case "at":
isAtPosition_1 = true;
return false;
case CLOSEST_SIDE:
size = 0;
return false;
case COVER:
case FARTHEST_SIDE:
size = 1;
return false;
case CONTAIN:
case CLOSEST_CORNER:
size = 2;
return false;
case FARTHEST_CORNER:
size = 3;
return false;
}
} else if (isLength(token) || isLengthPercentage(token)) {
if (!Array.isArray(size)) {
size = [];
}
size.push(token);
return false;
}
return acc;
}, isColorStop);
}
if (isColorStop) {
var colorStop = parseColorStop(context, arg);
stops.push(colorStop);
}
});
return {
size,
shape,
stops,
position: position2,
type: 2
/* RADIAL_GRADIENT */
};
};
var prefixRadialGradient = function(context, tokens) {
var shape = 0;
var size = 3;
var stops = [];
var position2 = [];
parseFunctionArgs(tokens).forEach(function(arg, i2) {
var isColorStop = true;
if (i2 === 0) {
isColorStop = arg.reduce(function(acc, token) {
if (isIdentToken(token)) {
switch (token.value) {
case "center":
position2.push(FIFTY_PERCENT);
return false;
case "top":
case "left":
position2.push(ZERO_LENGTH);
return false;
case "right":
case "bottom":
position2.push(HUNDRED_PERCENT);
return false;
}
} else if (isLengthPercentage(token) || isLength(token)) {
position2.push(token);
return false;
}
return acc;
}, isColorStop);
} else if (i2 === 1) {
isColorStop = arg.reduce(function(acc, token) {
if (isIdentToken(token)) {
switch (token.value) {
case CIRCLE:
shape = 0;
return false;
case ELLIPSE:
shape = 1;
return false;
case CONTAIN:
case CLOSEST_SIDE:
size = 0;
return false;
case FARTHEST_SIDE:
size = 1;
return false;
case CLOSEST_CORNER:
size = 2;
return false;
case COVER:
case FARTHEST_CORNER:
size = 3;
return false;
}
} else if (isLength(token) || isLengthPercentage(token)) {
if (!Array.isArray(size)) {
size = [];
}
size.push(token);
return false;
}
return acc;
}, isColorStop);
}
if (isColorStop) {
var colorStop = parseColorStop(context, arg);
stops.push(colorStop);
}
});
return {
size,
shape,
stops,
position: position2,
type: 2
/* RADIAL_GRADIENT */
};
};
var isLinearGradient = function(background) {
return background.type === 1;
};
var isRadialGradient = function(background) {
return background.type === 2;
};
var image = {
name: "image",
parse: function(context, value) {
if (value.type === 22) {
var image_1 = {
url: value.value,
type: 0
/* URL */
};
context.cache.addImage(value.value);
return image_1;
}
if (value.type === 18) {
var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];
if (typeof imageFunction === "undefined") {
throw new Error('Attempting to parse an unsupported image function "' + value.name + '"');
}
return imageFunction(context, value.values);
}
throw new Error("Unsupported image type " + value.type);
}
};
function isSupportedImage(value) {
return !(value.type === 20 && value.value === "none") && (value.type !== 18 || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]);
}
var SUPPORTED_IMAGE_FUNCTIONS = {
"linear-gradient": linearGradient,
"-moz-linear-gradient": prefixLinearGradient,
"-ms-linear-gradient": prefixLinearGradient,
"-o-linear-gradient": prefixLinearGradient,
"-webkit-linear-gradient": prefixLinearGradient,
"radial-gradient": radialGradient,
"-moz-radial-gradient": prefixRadialGradient,
"-ms-radial-gradient": prefixRadialGradient,
"-o-radial-gradient": prefixRadialGradient,
"-webkit-radial-gradient": prefixRadialGradient,
"-webkit-gradient": webkitGradient
};
var backgroundImage = {
name: "background-image",
initialValue: "none",
type: 1,
prefix: false,
parse: function(context, tokens) {
if (tokens.length === 0) {
return [];
}
var first = tokens[0];
if (first.type === 20 && first.value === "none") {
return [];
}
return tokens.filter(function(value) {
return nonFunctionArgSeparator(value) && isSupportedImage(value);
}).map(function(value) {
return image.parse(context, value);
});
}
};
var backgroundOrigin = {
name: "background-origin",
initialValue: "border-box",
prefix: false,
type: 1,
parse: function(_context, tokens) {
return tokens.map(function(token) {
if (isIdentToken(token)) {
switch (token.value) {
case "padding-box":
return 1;
case "content-box":
return 2;
}
}
return 0;
});
}
};
var backgroundPosition = {
name: "background-position",
initialValue: "0% 0%",
type: 1,
prefix: false,
parse: function(_context, tokens) {
return parseFunctionArgs(tokens).map(function(values2) {
return values2.filter(isLengthPercentage);
}).map(parseLengthPercentageTuple);
}
};
var backgroundRepeat = {
name: "background-repeat",
initialValue: "repeat",
prefix: false,
type: 1,
parse: function(_context, tokens) {
return parseFunctionArgs(tokens).map(function(values2) {
return values2.filter(isIdentToken).map(function(token) {
return token.value;
}).join(" ");
}).map(parseBackgroundRepeat);
}
};
var parseBackgroundRepeat = function(value) {
switch (value) {
case "no-repeat":
return 1;
case "repeat-x":
case "repeat no-repeat":
return 2;
case "repeat-y":
case "no-repeat repeat":
return 3;
case "repeat":
default:
return 0;
}
};
var BACKGROUND_SIZE;
(function(BACKGROUND_SIZE2) {
BACKGROUND_SIZE2["AUTO"] = "auto";
BACKGROUND_SIZE2["CONTAIN"] = "contain";
BACKGROUND_SIZE2["COVER"] = "cover";
})(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));
var backgroundSize = {
name: "background-size",
initialValue: "0",
prefix: false,
type: 1,
parse: function(_context, tokens) {
return parseFunctionArgs(tokens).map(function(values2) {
return values2.filter(isBackgroundSizeInfoToken);
});
}
};
var isBackgroundSizeInfoToken = function(value) {
return isIdentToken(value) || isLengthPercentage(value);
};
var borderColorForSide = function(side) {
return {
name: "border-" + side + "-color",
initialValue: "transparent",
prefix: false,
type: 3,
format: "color"
};
};
var borderTopColor = borderColorForSide("top");
var borderRightColor = borderColorForSide("right");
var borderBottomColor = borderColorForSide("bottom");
var borderLeftColor = borderColorForSide("left");
var borderRadiusForSide = function(side) {
return {
name: "border-radius-" + side,
initialValue: "0 0",
prefix: false,
type: 1,
parse: function(_context, tokens) {
return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));
}
};
};
var borderTopLeftRadius = borderRadiusForSide("top-left");
var borderTopRightRadius = borderRadiusForSide("top-right");
var borderBottomRightRadius = borderRadiusForSide("bottom-right");
var borderBottomLeftRadius = borderRadiusForSide("bottom-left");
var borderStyleForSide = function(side) {
return {
name: "border-" + side + "-style",
initialValue: "solid",
prefix: false,
type: 2,
parse: function(_context, style) {
switch (style) {
case "none":
return 0;
case "dashed":
return 2;
case "dotted":
return 3;
case "double":
return 4;
}
return 1;
}
};
};
var borderTopStyle = borderStyleForSide("top");
var borderRightStyle = borderStyleForSide("right");
var borderBottomStyle = borderStyleForSide("bottom");
var borderLeftStyle = borderStyleForSide("left");
var borderWidthForSide = function(side) {
return {
name: "border-" + side + "-width",
initialValue: "0",
type: 0,
prefix: false,
parse: function(_context, token) {
if (isDimensionToken(token)) {
return token.number;
}
return 0;
}
};
};
var borderTopWidth = borderWidthForSide("top");
var borderRightWidth = borderWidthForSide("right");
var borderBottomWidth = borderWidthForSide("bottom");
var borderLeftWidth = borderWidthForSide("left");
var color = {
name: "color",
initialValue: "transparent",
prefix: false,
type: 3,
format: "color"
};
var direction = {
name: "direction",
initialValue: "ltr",
prefix: false,
type: 2,
parse: function(_context, direction2) {
switch (direction2) {
case "rtl":
return 1;
case "ltr":
default:
return 0;
}
}
};
var display = {
name: "display",
initialValue: "inline-block",
prefix: false,
type: 1,
parse: function(_context, tokens) {
return tokens.filter(isIdentToken).reduce(
function(bit, token) {
return bit | parseDisplayValue(token.value);
},
0
/* NONE */
);
}
};
var parseDisplayValue = function(display2) {
switch (display2) {
case "block":
case "-webkit-box":
return 2;
case "inline":
return 4;
case "run-in":
return 8;
case "flow":
return 16;
case "flow-root":
return 32;
case "table":
return 64;
case "flex":
case "-webkit-flex":
return 128;
case "grid":
case "-ms-grid":
return 256;
case "ruby":
return 512;
case "subgrid":
return 1024;
case "list-item":
return 2048;
case "table-row-group":
return 4096;
case "table-header-group":
return 8192;
case "table-footer-group":
return 16384;
case "table-row":
return 32768;
case "table-cell":
return 65536;
case "table-column-group":
return 131072;
case "table-column":
return 262144;
case "table-caption":
return 524288;
case "ruby-base":
return 1048576;
case "ruby-text":
return 2097152;
case "ruby-base-container":
return 4194304;
case "ruby-text-container":
return 8388608;
case "contents":
return 16777216;
case "inline-block":
return 33554432;
case "inline-list-item":
return 67108864;
case "inline-table":
return 134217728;
case "inline-flex":
return 268435456;
case "inline-grid":
return 536870912;
}
return 0;
};
var float = {
name: "float",
initialValue: "none",
prefix: false,
type: 2,
parse: function(_context, float2) {
switch (float2) {
case "left":
return 1;
case "right":
return 2;
case "inline-start":
return 3;
case "inline-end":
return 4;
}
return 0;
}
};
var letterSpacing = {
name: "letter-spacing",
initialValue: "0",
prefix: false,
type: 0,
parse: function(_context, token) {
if (token.type === 20 && token.value === "normal") {
return 0;
}
if (token.type === 17) {
return token.number;
}
if (token.type === 15) {
return token.number;
}
return 0;
}
};
var LINE_BREAK;
(function(LINE_BREAK2) {
LINE_BREAK2["NORMAL"] = "normal";
LINE_BREAK2["STRICT"] = "strict";
})(LINE_BREAK || (LINE_BREAK = {}));
var lineBreak = {
name: "line-break",
initialValue: "normal",
prefix: false,
type: 2,
parse: function(_context, lineBreak2) {
switch (lineBreak2) {
case "strict":
return LINE_BREAK.STRICT;
case "normal":
default:
return LINE_BREAK.NORMAL;
}
}
};
var lineHeight = {
name: "line-height",
initialValue: "normal",
prefix: false,
type: 4
/* TOKEN_VALUE */
};
var computeLineHeight = function(token, fontSize2) {
if (isIdentToken(token) && token.value === "normal") {
return 1.2 * fontSize2;
} else if (token.type === 17) {
return fontSize2 * token.number;
} else if (isLengthPercentage(token)) {
return getAbsoluteValue(token, fontSize2);
}
return fontSize2;
};
var listStyleImage = {
name: "list-style-image",
initialValue: "none",
type: 0,
prefix: false,
parse: function(context, token) {
if (token.type === 20 && token.value === "none") {
return null;
}
return image.parse(context, token);
}
};
var listStylePosition = {
name: "list-style-position",
initialValue: "outside",
prefix: false,
type: 2,
parse: function(_context, position2) {
switch (position2) {
case "inside":
return 0;
case "outside":
default:
return 1;
}
}
};
var listStyleType = {
name: "list-style-type",
initialValue: "none",
prefix: false,
type: 2,
parse: function(_context, type) {
switch (type) {
case "disc":
return 0;
case "circle":
return 1;
case "square":
return 2;
case "decimal":
return 3;
case "cjk-decimal":
return 4;
case "decimal-leading-zero":
return 5;
case "lower-roman":
return 6;
case "upper-roman":
return 7;
case "lower-greek":
return 8;
case "lower-alpha":
return 9;
case "upper-alpha":
return 10;
case "arabic-indic":
return 11;
case "armenian":
return 12;
case "bengali":
return 13;
case "cambodian":
return 14;
case "cjk-earthly-branch":
return 15;
case "cjk-heavenly-stem":
return 16;
case "cjk-ideographic":
return 17;
case "devanagari":
return 18;
case "ethiopic-numeric":
return 19;
case "georgian":
return 20;
case "gujarati":
return 21;
case "gurmukhi":
return 22;
case "hebrew":
return 22;
case "hiragana":
return 23;
case "hiragana-iroha":
return 24;
case "japanese-formal":
return 25;
case "japanese-informal":
return 26;
case "kannada":
return 27;
case "katakana":
return 28;
case "katakana-iroha":
return 29;
case "khmer":
return 30;
case "korean-hangul-formal":
return 31;
case "korean-hanja-formal":
return 32;
case "korean-hanja-informal":
return 33;
case "lao":
return 34;
case "lower-armenian":
return 35;
case "malayalam":
return 36;
case "mongolian":
return 37;
case "myanmar":
return 38;
case "oriya":
return 39;
case "persian":
return 40;
case "simp-chinese-formal":
return 41;
case "simp-chinese-informal":
return 42;
case "tamil":
return 43;
case "telugu":
return 44;
case "thai":
return 45;
case "tibetan":
return 46;
case "trad-chinese-formal":
return 47;
case "trad-chinese-informal":
return 48;
case "upper-armenian":
return 49;
case "disclosure-open":
return 50;
case "disclosure-closed":
return 51;
case "none":
default:
return -1;
}
}
};
var marginForSide = function(side) {
return {
name: "margin-" + side,
initialValue: "0",
prefix: false,
type: 4
/* TOKEN_VALUE */
};
};
var marginTop = marginForSide("top");
var marginRight = marginForSide("right");
var marginBottom = marginForSide("bottom");
var marginLeft = marginForSide("left");
var overflow = {
name: "overflow",
initialValue: "visible",
prefix: false,
type: 1,
parse: function(_context, tokens) {
return tokens.filter(isIdentToken).map(function(overflow2) {
switch (overflow2.value) {
case "hidden":
return 1;
case "scroll":
return 2;
case "clip":
return 3;
case "auto":
return 4;
case "visible":
default:
return 0;
}
});
}
};
var overflowWrap = {
name: "overflow-wrap",
initialValue: "normal",
prefix: false,
type: 2,
parse: function(_context, overflow2) {
switch (overflow2) {
case "break-word":
return "break-word";
case "normal":
default:
return "normal";
}
}
};
var paddingForSide = function(side) {
return {
name: "padding-" + side,
initialValue: "0",
prefix: false,
type: 3,
format: "length-percentage"
};
};
var paddingTop = paddingForSide("top");
var paddingRight = paddingForSide("right");
var paddingBottom = paddingForSide("bottom");
var paddingLeft = paddingForSide("left");
var textAlign = {
name: "text-align",
initialValue: "left",
prefix: false,
type: 2,
parse: function(_context, textAlign2) {
switch (textAlign2) {
case "right":
return 2;
case "center":
case "justify":
return 1;
case "left":
default:
return 0;
}
}
};
var position = {
name: "position",
initialValue: "static",
prefix: false,
type: 2,
parse: function(_context, position2) {
switch (position2) {
case "relative":
return 1;
case "absolute":
return 2;
case "fixed":
return 3;
case "sticky":
return 4;
}
return 0;
}
};
var textShadow = {
name: "text-shadow",
initialValue: "none",
type: 1,
prefix: false,
parse: function(context, tokens) {
if (tokens.length === 1 && isIdentWithValue(tokens[0], "none")) {
return [];
}
return parseFunctionArgs(tokens).map(function(values2) {
var shadow = {
color: COLORS.TRANSPARENT,
offsetX: ZERO_LENGTH,
offsetY: ZERO_LENGTH,
blur: ZERO_LENGTH
};
var c2 = 0;
for (var i2 = 0; i2 < values2.length; i2++) {
var token = values2[i2];
if (isLength(token)) {
if (c2 === 0) {
shadow.offsetX = token;
} else if (c2 === 1) {
shadow.offsetY = token;
} else {
shadow.blur = token;
}
c2++;
} else {
shadow.color = color$1.parse(context, token);
}
}
return shadow;
});
}
};
var textTransform = {
name: "text-transform",
initialValue: "none",
prefix: false,
type: 2,
parse: function(_context, textTransform2) {
switch (textTransform2) {
case "uppercase":
return 2;
case "lowercase":
return 1;
case "capitalize":
return 3;
}
return 0;
}
};
var transform$1 = {
name: "transform",
initialValue: "none",
prefix: true,
type: 0,
parse: function(_context, token) {
if (token.type === 20 && token.value === "none") {
return null;
}
if (token.type === 18) {
var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];
if (typeof transformFunction === "undefined") {
throw new Error('Attempting to parse an unsupported transform function "' + token.name + '"');
}
return transformFunction(token.values);
}
return null;
}
};
var matrix = function(args) {
var values2 = args.filter(function(arg) {
return arg.type === 17;
}).map(function(arg) {
return arg.number;
});
return values2.length === 6 ? values2 : null;
};
var matrix3d = function(args) {
var values2 = args.filter(function(arg) {
return arg.type === 17;
}).map(function(arg) {
return arg.number;
});
var a1 = values2[0], b1 = values2[1];
values2[2];
values2[3];
var a2 = values2[4], b2 = values2[5];
values2[6];
values2[7];
values2[8];
values2[9];
values2[10];
values2[11];
var a4 = values2[12], b4 = values2[13];
values2[14];
values2[15];
return values2.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;
};
var SUPPORTED_TRANSFORM_FUNCTIONS = {
matrix,
matrix3d
};
var DEFAULT_VALUE = {
type: 16,
number: 50,
flags: FLAG_INTEGER
};
var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];
var transformOrigin = {
name: "transform-origin",
initialValue: "50% 50%",
prefix: true,
type: 1,
parse: function(_context, tokens) {
var origins = tokens.filter(isLengthPercentage);
if (origins.length !== 2) {
return DEFAULT;
}
return [origins[0], origins[1]];
}
};
var visibility = {
name: "visible",
initialValue: "none",
prefix: false,
type: 2,
parse: function(_context, visibility2) {
switch (visibility2) {
case "hidden":
return 1;
case "collapse":
return 2;
case "visible":
default:
return 0;
}
}
};
var WORD_BREAK;
(function(WORD_BREAK2) {
WORD_BREAK2["NORMAL"] = "normal";
WORD_BREAK2["BREAK_ALL"] = "break-all";
WORD_BREAK2["KEEP_ALL"] = "keep-all";
})(WORD_BREAK || (WORD_BREAK = {}));
var wordBreak = {
name: "word-break",
initialValue: "normal",
prefix: false,
type: 2,
parse: function(_context, wordBreak2) {
switch (wordBreak2) {
case "break-all":
return WORD_BREAK.BREAK_ALL;
case "keep-all":
return WORD_BREAK.KEEP_ALL;
case "normal":
default:
return WORD_BREAK.NORMAL;
}
}
};
var zIndex = {
name: "z-index",
initialValue: "auto",
prefix: false,
type: 0,
parse: function(_context, token) {
if (token.type === 20) {
return { auto: true, order: 0 };
}
if (isNumberToken(token)) {
return { auto: false, order: token.number };
}
throw new Error("Invalid z-index number parsed");
}
};
var time = {
name: "time",
parse: function(_context, value) {
if (value.type === 15) {
switch (value.unit.toLowerCase()) {
case "s":
return 1e3 * value.number;
case "ms":
return value.number;
}
}
throw new Error("Unsupported time type");
}
};
var opacity = {
name: "opacity",
initialValue: "1",
type: 0,
prefix: false,
parse: function(_context, token) {
if (isNumberToken(token)) {
return token.number;
}
return 1;
}
};
var textDecorationColor = {
name: "text-decoration-color",
initialValue: "transparent",
prefix: false,
type: 3,
format: "color"
};
var textDecorationLine = {
name: "text-decoration-line",
initialValue: "none",
prefix: false,
type: 1,
parse: function(_context, tokens) {
return tokens.filter(isIdentToken).map(function(token) {
switch (token.value) {
case "underline":
return 1;
case "overline":
return 2;
case "line-through":
return 3;
case "none":
return 4;
}
return 0;
}).filter(function(line) {
return line !== 0;
});
}
};
var fontFamily = {
name: "font-family",
initialValue: "",
prefix: false,
type: 1,
parse: function(_context, tokens) {
var accumulator = [];
var results = [];
tokens.forEach(function(token) {
switch (token.type) {
case 20:
case 0:
accumulator.push(token.value);
break;
case 17:
accumulator.push(token.number.toString());
break;
case 4:
results.push(accumulator.join(" "));
accumulator.length = 0;
break;
}
});
if (accumulator.length) {
results.push(accumulator.join(" "));
}
return results.map(function(result) {
return result.indexOf(" ") === -1 ? result : "'" + result + "'";
});
}
};
var fontSize = {
name: "font-size",
initialValue: "0",
prefix: false,
type: 3,
format: "length"
};
var fontWeight = {
name: "font-weight",
initialValue: "normal",
type: 0,
prefix: false,
parse: function(_context, token) {
if (isNumberToken(token)) {
return token.number;
}
if (isIdentToken(token)) {
switch (token.value) {
case "bold":
return 700;
case "normal":
default:
return 400;
}
}
return 400;
}
};
var fontVariant = {
name: "font-variant",
initialValue: "none",
type: 1,
prefix: false,
parse: function(_context, tokens) {
return tokens.filter(isIdentToken).map(function(token) {
return token.value;
});
}
};
var fontStyle = {
name: "font-style",
initialValue: "normal",
prefix: false,
type: 2,
parse: function(_context, overflow2) {
switch (overflow2) {
case "oblique":
return "oblique";
case "italic":
return "italic";
case "normal":
default:
return "normal";
}
}
};
var contains = function(bit, value) {
return (bit & value) !== 0;
};
var content = {
name: "content",
initialValue: "none",
type: 1,
prefix: false,
parse: function(_context, tokens) {
if (tokens.length === 0) {
return [];
}
var first = tokens[0];
if (first.type === 20 && first.value === "none") {
return [];
}
return tokens;
}
};
var counterIncrement = {
name: "counter-increment",
initialValue: "none",
prefix: true,
type: 1,
parse: function(_context, tokens) {
if (tokens.length === 0) {
return null;
}
var first = tokens[0];
if (first.type === 20 && first.value === "none") {
return null;
}
var increments = [];
var filtered = tokens.filter(nonWhiteSpace);
for (var i2 = 0; i2 < filtered.length; i2++) {
var counter2 = filtered[i2];
var next = filtered[i2 + 1];
if (counter2.type === 20) {
var increment = next && isNumberToken(next) ? next.number : 1;
increments.push({ counter: counter2.value, increment });
}
}
return increments;
}
};
var counterReset = {
name: "counter-reset",
initialValue: "none",
prefix: true,
type: 1,
parse: function(_context, tokens) {
if (tokens.length === 0) {
return [];
}
var resets = [];
var filtered = tokens.filter(nonWhiteSpace);
for (var i2 = 0; i2 < filtered.length; i2++) {
var counter2 = filtered[i2];
var next = filtered[i2 + 1];
if (isIdentToken(counter2) && counter2.value !== "none") {
var reset = next && isNumberToken(next) ? next.number : 0;
resets.push({ counter: counter2.value, reset });
}
}
return resets;
}
};
var duration = {
name: "duration",
initialValue: "0s",
prefix: false,
type: 1,
parse: function(context, tokens) {
return tokens.filter(isDimensionToken).map(function(token) {
return time.parse(context, token);
});
}
};
var quotes = {
name: "quotes",
initialValue: "none",
prefix: true,
type: 1,
parse: function(_context, tokens) {
if (tokens.length === 0) {
return null;
}
var first = tokens[0];
if (first.type === 20 && first.value === "none") {
return null;
}
var quotes2 = [];
var filtered = tokens.filter(isStringToken);
if (filtered.length % 2 !== 0) {
return null;
}
for (var i2 = 0; i2 < filtered.length; i2 += 2) {
var open_1 = filtered[i2].value;
var close_1 = filtered[i2 + 1].value;
quotes2.push({ open: open_1, close: close_1 });
}
return quotes2;
}
};
var getQuote = function(quotes2, depth, open2) {
if (!quotes2) {
return "";
}
var quote = quotes2[Math.min(depth, quotes2.length - 1)];
if (!quote) {
return "";
}
return open2 ? quote.open : quote.close;
};
var boxShadow = {
name: "box-shadow",
initialValue: "none",
type: 1,
prefix: false,
parse: function(context, tokens) {
if (tokens.length === 1 && isIdentWithValue(tokens[0], "none")) {
return [];
}
return parseFunctionArgs(tokens).map(function(values2) {
var shadow = {
color: 255,
offsetX: ZERO_LENGTH,
offsetY: ZERO_LENGTH,
blur: ZERO_LENGTH,
spread: ZERO_LENGTH,
inset: false
};
var c2 = 0;
for (var i2 = 0; i2 < values2.length; i2++) {
var token = values2[i2];
if (isIdentWithValue(token, "inset")) {
shadow.inset = true;
} else if (isLength(token)) {
if (c2 === 0) {
shadow.offsetX = token;
} else if (c2 === 1) {
shadow.offsetY = token;
} else if (c2 === 2) {
shadow.blur = token;
} else {
shadow.spread = token;
}
c2++;
} else {
shadow.color = color$1.parse(context, token);
}
}
return shadow;
});
}
};
var paintOrder = {
name: "paint-order",
initialValue: "normal",
prefix: false,
type: 1,
parse: function(_context, tokens) {
var DEFAULT_VALUE2 = [
0,
1,
2
/* MARKERS */
];
var layers = [];
tokens.filter(isIdentToken).forEach(function(token) {
switch (token.value) {
case "stroke":
layers.push(
1
/* STROKE */
);
break;
case "fill":
layers.push(
0
/* FILL */
);
break;
case "markers":
layers.push(
2
/* MARKERS */
);
break;
}
});
DEFAULT_VALUE2.forEach(function(value) {
if (layers.indexOf(value) === -1) {
layers.push(value);
}
});
return layers;
}
};
var webkitTextStrokeColor = {
name: "-webkit-text-stroke-color",
initialValue: "currentcolor",
prefix: false,
type: 3,
format: "color"
};
var webkitTextStrokeWidth = {
name: "-webkit-text-stroke-width",
initialValue: "0",
type: 0,
prefix: false,
parse: function(_context, token) {
if (isDimensionToken(token)) {
return token.number;
}
return 0;
}
};
var CSSParsedDeclaration = (
/** @class */
function() {
function CSSParsedDeclaration2(context, declaration) {
var _a2, _b2;
this.animationDuration = parse(context, duration, declaration.animationDuration);
this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);
this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);
this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);
this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);
this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);
this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);
this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);
this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);
this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);
this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);
this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);
this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);
this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);
this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);
this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);
this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);
this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);
this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);
this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);
this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);
this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);
this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);
this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);
this.boxShadow = parse(context, boxShadow, declaration.boxShadow);
this.color = parse(context, color, declaration.color);
this.direction = parse(context, direction, declaration.direction);
this.display = parse(context, display, declaration.display);
this.float = parse(context, float, declaration.cssFloat);
this.fontFamily = parse(context, fontFamily, declaration.fontFamily);
this.fontSize = parse(context, fontSize, declaration.fontSize);
this.fontStyle = parse(context, fontStyle, declaration.fontStyle);
this.fontVariant = parse(context, fontVariant, declaration.fontVariant);
this.fontWeight = parse(context, fontWeight, declaration.fontWeight);
this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);
this.lineBreak = parse(context, lineBreak, declaration.lineBreak);
this.lineHeight = parse(context, lineHeight, declaration.lineHeight);
this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);
this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);
this.listStyleType = parse(context, listStyleType, declaration.listStyleType);
this.marginTop = parse(context, marginTop, declaration.marginTop);
this.marginRight = parse(context, marginRight, declaration.marginRight);
this.marginBottom = parse(context, marginBottom, declaration.marginBottom);
this.marginLeft = parse(context, marginLeft, declaration.marginLeft);
this.opacity = parse(context, opacity, declaration.opacity);
var overflowTuple = parse(context, overflow, declaration.overflow);
this.overflowX = overflowTuple[0];
this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];
this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);
this.paddingTop = parse(context, paddingTop, declaration.paddingTop);
this.paddingRight = parse(context, paddingRight, declaration.paddingRight);
this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);
this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);
this.paintOrder = parse(context, paintOrder, declaration.paintOrder);
this.position = parse(context, position, declaration.position);
this.textAlign = parse(context, textAlign, declaration.textAlign);
this.textDecorationColor = parse(context, textDecorationColor, (_a2 = declaration.textDecorationColor) !== null && _a2 !== void 0 ? _a2 : declaration.color);
this.textDecorationLine = parse(context, textDecorationLine, (_b2 = declaration.textDecorationLine) !== null && _b2 !== void 0 ? _b2 : declaration.textDecoration);
this.textShadow = parse(context, textShadow, declaration.textShadow);
this.textTransform = parse(context, textTransform, declaration.textTransform);
this.transform = parse(context, transform$1, declaration.transform);
this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);
this.visibility = parse(context, visibility, declaration.visibility);
this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);
this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);
this.wordBreak = parse(context, wordBreak, declaration.wordBreak);
this.zIndex = parse(context, zIndex, declaration.zIndex);
}
CSSParsedDeclaration2.prototype.isVisible = function() {
return this.display > 0 && this.opacity > 0 && this.visibility === 0;
};
CSSParsedDeclaration2.prototype.isTransparent = function() {
return isTransparent(this.backgroundColor);
};
CSSParsedDeclaration2.prototype.isTransformed = function() {
return this.transform !== null;
};
CSSParsedDeclaration2.prototype.isPositioned = function() {
return this.position !== 0;
};
CSSParsedDeclaration2.prototype.isPositionedWithZIndex = function() {
return this.isPositioned() && !this.zIndex.auto;
};
CSSParsedDeclaration2.prototype.isFloating = function() {
return this.float !== 0;
};
CSSParsedDeclaration2.prototype.isInlineLevel = function() {
return contains(
this.display,
4
/* INLINE */
) || contains(
this.display,
33554432
/* INLINE_BLOCK */
) || contains(
this.display,
268435456
/* INLINE_FLEX */
) || contains(
this.display,
536870912
/* INLINE_GRID */
) || contains(
this.display,
67108864
/* INLINE_LIST_ITEM */
) || contains(
this.display,
134217728
/* INLINE_TABLE */
);
};
return CSSParsedDeclaration2;
}()
);
var CSSParsedPseudoDeclaration = (
/** @class */
/* @__PURE__ */ function() {
function CSSParsedPseudoDeclaration2(context, declaration) {
this.content = parse(context, content, declaration.content);
this.quotes = parse(context, quotes, declaration.quotes);
}
return CSSParsedPseudoDeclaration2;
}()
);
var CSSParsedCounterDeclaration = (
/** @class */
/* @__PURE__ */ function() {
function CSSParsedCounterDeclaration2(context, declaration) {
this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);
this.counterReset = parse(context, counterReset, declaration.counterReset);
}
return CSSParsedCounterDeclaration2;
}()
);
var parse = function(context, descriptor, style) {
var tokenizer = new Tokenizer();
var value = style !== null && typeof style !== "undefined" ? style.toString() : descriptor.initialValue;
tokenizer.write(value);
var parser = new Parser$1(tokenizer.read());
switch (descriptor.type) {
case 2:
var token = parser.parseComponentValue();
return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);
case 0:
return descriptor.parse(context, parser.parseComponentValue());
case 1:
return descriptor.parse(context, parser.parseComponentValues());
case 4:
return parser.parseComponentValue();
case 3:
switch (descriptor.format) {
case "angle":
return angle.parse(context, parser.parseComponentValue());
case "color":
return color$1.parse(context, parser.parseComponentValue());
case "image":
return image.parse(context, parser.parseComponentValue());
case "length":
var length_1 = parser.parseComponentValue();
return isLength(length_1) ? length_1 : ZERO_LENGTH;
case "length-percentage":
var value_1 = parser.parseComponentValue();
return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;
case "time":
return time.parse(context, parser.parseComponentValue());
}
break;
}
};
var elementDebuggerAttribute = "data-html2canvas-debug";
var getElementDebugType = function(element) {
var attribute = element.getAttribute(elementDebuggerAttribute);
switch (attribute) {
case "all":
return 1;
case "clone":
return 2;
case "parse":
return 3;
case "render":
return 4;
default:
return 0;
}
};
var isDebugging = function(element, type) {
var elementType = getElementDebugType(element);
return elementType === 1 || type === elementType;
};
var ElementContainer = (
/** @class */
/* @__PURE__ */ function() {
function ElementContainer2(context, element) {
this.context = context;
this.textNodes = [];
this.elements = [];
this.flags = 0;
if (isDebugging(
element,
3
/* PARSE */
)) {
debugger;
}
this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));
if (isHTMLElementNode(element)) {
if (this.styles.animationDuration.some(function(duration2) {
return duration2 > 0;
})) {
element.style.animationDuration = "0s";
}
if (this.styles.transform !== null) {
element.style.transform = "none";
}
}
this.bounds = parseBounds(this.context, element);
if (isDebugging(
element,
4
/* RENDER */
)) {
this.flags |= 16;
}
}
return ElementContainer2;
}()
);
var base64 = "AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=";
var chars$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var lookup$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
for (var i$1$2 = 0; i$1$2 < chars$1.length; i$1$2++) {
lookup$1[chars$1.charCodeAt(i$1$2)] = i$1$2;
}
var decode = function(base642) {
var bufferLength = base642.length * 0.75, len = base642.length, i2, p2 = 0, encoded1, encoded2, encoded3, encoded4;
if (base642[base642.length - 1] === "=") {
bufferLength--;
if (base642[base642.length - 2] === "=") {
bufferLength--;
}
}
var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength);
var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
for (i2 = 0; i2 < len; i2 += 4) {
encoded1 = lookup$1[base642.charCodeAt(i2)];
encoded2 = lookup$1[base642.charCodeAt(i2 + 1)];
encoded3 = lookup$1[base642.charCodeAt(i2 + 2)];
encoded4 = lookup$1[base642.charCodeAt(i2 + 3)];
bytes[p2++] = encoded1 << 2 | encoded2 >> 4;
bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2;
bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63;
}
return buffer;
};
var polyUint16Array = function(buffer) {
var length = buffer.length;
var bytes = [];
for (var i2 = 0; i2 < length; i2 += 2) {
bytes.push(buffer[i2 + 1] << 8 | buffer[i2]);
}
return bytes;
};
var polyUint32Array = function(buffer) {
var length = buffer.length;
var bytes = [];
for (var i2 = 0; i2 < length; i2 += 4) {
bytes.push(buffer[i2 + 3] << 24 | buffer[i2 + 2] << 16 | buffer[i2 + 1] << 8 | buffer[i2]);
}
return bytes;
};
var UTRIE2_SHIFT_2 = 5;
var UTRIE2_SHIFT_1 = 6 + 5;
var UTRIE2_INDEX_SHIFT = 2;
var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;
var UTRIE2_LSCP_INDEX_2_OFFSET = 65536 >> UTRIE2_SHIFT_2;
var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;
var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;
var UTRIE2_LSCP_INDEX_2_LENGTH = 1024 >> UTRIE2_SHIFT_2;
var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;
var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;
var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 2048 >> 6;
var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;
var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 65536 >> UTRIE2_SHIFT_1;
var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;
var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;
var slice16 = function(view, start2, end) {
if (view.slice) {
return view.slice(start2, end);
}
return new Uint16Array(Array.prototype.slice.call(view, start2, end));
};
var slice32 = function(view, start2, end) {
if (view.slice) {
return view.slice(start2, end);
}
return new Uint32Array(Array.prototype.slice.call(view, start2, end));
};
var createTrieFromBase64 = function(base642, _byteLength) {
var buffer = decode(base642);
var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);
var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);
var headerLength = 24;
var index2 = slice16(view16, headerLength / 2, view32[4] / 2);
var data2 = view32[5] === 2 ? slice16(view16, (headerLength + view32[4]) / 2) : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));
return new Trie(view32[0], view32[1], view32[2], view32[3], index2, data2);
};
var Trie = (
/** @class */
function() {
function Trie2(initialValue, errorValue, highStart, highValueIndex, index2, data2) {
this.initialValue = initialValue;
this.errorValue = errorValue;
this.highStart = highStart;
this.highValueIndex = highValueIndex;
this.index = index2;
this.data = data2;
}
Trie2.prototype.get = function(codePoint) {
var ix;
if (codePoint >= 0) {
if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) {
ix = this.index[codePoint >> UTRIE2_SHIFT_2];
ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
return this.data[ix];
}
if (codePoint <= 65535) {
ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 55296 >> UTRIE2_SHIFT_2)];
ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
return this.data[ix];
}
if (codePoint < this.highStart) {
ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);
ix = this.index[ix];
ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;
ix = this.index[ix];
ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
return this.data[ix];
}
if (codePoint <= 1114111) {
return this.data[this.highValueIndex];
}
}
return this.errorValue;
};
return Trie2;
}()
);
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var lookup = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
for (var i$4 = 0; i$4 < chars.length; i$4++) {
lookup[chars.charCodeAt(i$4)] = i$4;
}
var Prepend = 1;
var CR = 2;
var LF = 3;
var Control = 4;
var Extend = 5;
var SpacingMark = 7;
var L = 8;
var V = 9;
var T$1 = 10;
var LV = 11;
var LVT = 12;
var ZWJ = 13;
var Extended_Pictographic = 14;
var RI = 15;
var toCodePoints = function(str) {
var codePoints = [];
var i2 = 0;
var length = str.length;
while (i2 < length) {
var value = str.charCodeAt(i2++);
if (value >= 55296 && value <= 56319 && i2 < length) {
var extra = str.charCodeAt(i2++);
if ((extra & 64512) === 56320) {
codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536);
} else {
codePoints.push(value);
i2--;
}
} else {
codePoints.push(value);
}
}
return codePoints;
};
var fromCodePoint = function() {
var codePoints = [];
for (var _i = 0; _i < arguments.length; _i++) {
codePoints[_i] = arguments[_i];
}
if (String.fromCodePoint) {
return String.fromCodePoint.apply(String, codePoints);
}
var length = codePoints.length;
if (!length) {
return "";
}
var codeUnits = [];
var index2 = -1;
var result = "";
while (++index2 < length) {
var codePoint = codePoints[index2];
if (codePoint <= 65535) {
codeUnits.push(codePoint);
} else {
codePoint -= 65536;
codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
}
if (index2 + 1 === length || codeUnits.length > 16384) {
result += String.fromCharCode.apply(String, codeUnits);
codeUnits.length = 0;
}
}
return result;
};
var UnicodeTrie = createTrieFromBase64(base64);
var BREAK_NOT_ALLOWED = "×";
var BREAK_ALLOWED = "÷";
var codePointToClass = function(codePoint) {
return UnicodeTrie.get(codePoint);
};
var _graphemeBreakAtIndex = function(_codePoints, classTypes, index2) {
var prevIndex = index2 - 2;
var prev = classTypes[prevIndex];
var current = classTypes[index2 - 1];
var next = classTypes[index2];
if (current === CR && next === LF) {
return BREAK_NOT_ALLOWED;
}
if (current === CR || current === LF || current === Control) {
return BREAK_ALLOWED;
}
if (next === CR || next === LF || next === Control) {
return BREAK_ALLOWED;
}
if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED;
}
if ((current === LV || current === V) && (next === V || next === T$1)) {
return BREAK_NOT_ALLOWED;
}
if ((current === LVT || current === T$1) && next === T$1) {
return BREAK_NOT_ALLOWED;
}
if (next === ZWJ || next === Extend) {
return BREAK_NOT_ALLOWED;
}
if (next === SpacingMark) {
return BREAK_NOT_ALLOWED;
}
if (current === Prepend) {
return BREAK_NOT_ALLOWED;
}
if (current === ZWJ && next === Extended_Pictographic) {
while (prev === Extend) {
prev = classTypes[--prevIndex];
}
if (prev === Extended_Pictographic) {
return BREAK_NOT_ALLOWED;
}
}
if (current === RI && next === RI) {
var countRI = 0;
while (prev === RI) {
countRI++;
prev = classTypes[--prevIndex];
}
if (countRI % 2 === 0) {
return BREAK_NOT_ALLOWED;
}
}
return BREAK_ALLOWED;
};
var GraphemeBreaker = function(str) {
var codePoints = toCodePoints(str);
var length = codePoints.length;
var index2 = 0;
var lastEnd = 0;
var classTypes = codePoints.map(codePointToClass);
return {
next: function() {
if (index2 >= length) {
return { done: true, value: null };
}
var graphemeBreak = BREAK_NOT_ALLOWED;
while (index2 < length && (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index2)) === BREAK_NOT_ALLOWED) {
}
if (graphemeBreak !== BREAK_NOT_ALLOWED || index2 === length) {
var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index2));
lastEnd = index2;
return { value, done: false };
}
return { done: true, value: null };
}
};
};
var splitGraphemes = function(str) {
var breaker = GraphemeBreaker(str);
var graphemes = [];
var bk;
while (!(bk = breaker.next()).done) {
if (bk.value) {
graphemes.push(bk.value.slice());
}
}
return graphemes;
};
var testRangeBounds = function(document2) {
var TEST_HEIGHT = 123;
if (document2.createRange) {
var range = document2.createRange();
if (range.getBoundingClientRect) {
var testElement = document2.createElement("boundtest");
testElement.style.height = TEST_HEIGHT + "px";
testElement.style.display = "block";
document2.body.appendChild(testElement);
range.selectNode(testElement);
var rangeBounds = range.getBoundingClientRect();
var rangeHeight = Math.round(rangeBounds.height);
document2.body.removeChild(testElement);
if (rangeHeight === TEST_HEIGHT) {
return true;
}
}
}
return false;
};
var testIOSLineBreak = function(document2) {
var testElement = document2.createElement("boundtest");
testElement.style.width = "50px";
testElement.style.display = "block";
testElement.style.fontSize = "12px";
testElement.style.letterSpacing = "0px";
testElement.style.wordSpacing = "0px";
document2.body.appendChild(testElement);
var range = document2.createRange();
testElement.innerHTML = typeof "".repeat === "function" ? "👨".repeat(10) : "";
var node2 = testElement.firstChild;
var textList = toCodePoints$1(node2.data).map(function(i2) {
return fromCodePoint$1(i2);
});
var offset = 0;
var prev = {};
var supports = textList.every(function(text2, i2) {
range.setStart(node2, offset);
range.setEnd(node2, offset + text2.length);
var rect = range.getBoundingClientRect();
offset += text2.length;
var boundAhead = rect.x > prev.x || rect.y > prev.y;
prev = rect;
if (i2 === 0) {
return true;
}
return boundAhead;
});
document2.body.removeChild(testElement);
return supports;
};
var testCORS = function() {
return typeof new Image().crossOrigin !== "undefined";
};
var testResponseType = function() {
return typeof new XMLHttpRequest().responseType === "string";
};
var testSVG = function(document2) {
var img = new Image();
var canvas = document2.createElement("canvas");
var ctx = canvas.getContext("2d");
if (!ctx) {
return false;
}
img.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
try {
ctx.drawImage(img, 0, 0);
canvas.toDataURL();
} catch (e2) {
return false;
}
return true;
};
var isGreenPixel = function(data2) {
return data2[0] === 0 && data2[1] === 255 && data2[2] === 0 && data2[3] === 255;
};
var testForeignObject = function(document2) {
var canvas = document2.createElement("canvas");
var size = 100;
canvas.width = size;
canvas.height = size;
var ctx = canvas.getContext("2d");
if (!ctx) {
return Promise.reject(false);
}
ctx.fillStyle = "rgb(0, 255, 0)";
ctx.fillRect(0, 0, size, size);
var img = new Image();
var greenImageSrc = canvas.toDataURL();
img.src = greenImageSrc;
var svg2 = createForeignObjectSVG(size, size, 0, 0, img);
ctx.fillStyle = "red";
ctx.fillRect(0, 0, size, size);
return loadSerializedSVG$1(svg2).then(function(img2) {
ctx.drawImage(img2, 0, 0);
var data2 = ctx.getImageData(0, 0, size, size).data;
ctx.fillStyle = "red";
ctx.fillRect(0, 0, size, size);
var node2 = document2.createElement("div");
node2.style.backgroundImage = "url(" + greenImageSrc + ")";
node2.style.height = size + "px";
return isGreenPixel(data2) ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node2)) : Promise.reject(false);
}).then(function(img2) {
ctx.drawImage(img2, 0, 0);
return isGreenPixel(ctx.getImageData(0, 0, size, size).data);
}).catch(function() {
return false;
});
};
var createForeignObjectSVG = function(width, height, x2, y2, node2) {
var xmlns = "http://www.w3.org/2000/svg";
var svg2 = document.createElementNS(xmlns, "svg");
var foreignObject = document.createElementNS(xmlns, "foreignObject");
svg2.setAttributeNS(null, "width", width.toString());
svg2.setAttributeNS(null, "height", height.toString());
foreignObject.setAttributeNS(null, "width", "100%");
foreignObject.setAttributeNS(null, "height", "100%");
foreignObject.setAttributeNS(null, "x", x2.toString());
foreignObject.setAttributeNS(null, "y", y2.toString());
foreignObject.setAttributeNS(null, "externalResourcesRequired", "true");
svg2.appendChild(foreignObject);
foreignObject.appendChild(node2);
return svg2;
};
var loadSerializedSVG$1 = function(svg2) {
return new Promise(function(resolve2, reject2) {
var img = new Image();
img.onload = function() {
return resolve2(img);
};
img.onerror = reject2;
img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg2));
});
};
var FEATURES = {
get SUPPORT_RANGE_BOUNDS() {
var value = testRangeBounds(document);
Object.defineProperty(FEATURES, "SUPPORT_RANGE_BOUNDS", { value });
return value;
},
get SUPPORT_WORD_BREAKING() {
var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);
Object.defineProperty(FEATURES, "SUPPORT_WORD_BREAKING", { value });
return value;
},
get SUPPORT_SVG_DRAWING() {
var value = testSVG(document);
Object.defineProperty(FEATURES, "SUPPORT_SVG_DRAWING", { value });
return value;
},
get SUPPORT_FOREIGNOBJECT_DRAWING() {
var value = typeof Array.from === "function" && typeof window.fetch === "function" ? testForeignObject(document) : Promise.resolve(false);
Object.defineProperty(FEATURES, "SUPPORT_FOREIGNOBJECT_DRAWING", { value });
return value;
},
get SUPPORT_CORS_IMAGES() {
var value = testCORS();
Object.defineProperty(FEATURES, "SUPPORT_CORS_IMAGES", { value });
return value;
},
get SUPPORT_RESPONSE_TYPE() {
var value = testResponseType();
Object.defineProperty(FEATURES, "SUPPORT_RESPONSE_TYPE", { value });
return value;
},
get SUPPORT_CORS_XHR() {
var value = "withCredentials" in new XMLHttpRequest();
Object.defineProperty(FEATURES, "SUPPORT_CORS_XHR", { value });
return value;
},
get SUPPORT_NATIVE_TEXT_SEGMENTATION() {
var value = !!(typeof Intl !== "undefined" && Intl.Segmenter);
Object.defineProperty(FEATURES, "SUPPORT_NATIVE_TEXT_SEGMENTATION", { value });
return value;
}
};
var TextBounds = (
/** @class */
/* @__PURE__ */ function() {
function TextBounds2(text2, bounds) {
this.text = text2;
this.bounds = bounds;
}
return TextBounds2;
}()
);
var parseTextBounds = function(context, value, styles, node2) {
var textList = breakText(value, styles);
var textBounds = [];
var offset = 0;
textList.forEach(function(text2) {
if (styles.textDecorationLine.length || text2.trim().length > 0) {
if (FEATURES.SUPPORT_RANGE_BOUNDS) {
var clientRects = createRange(node2, offset, text2.length).getClientRects();
if (clientRects.length > 1) {
var subSegments = segmentGraphemes(text2);
var subOffset_1 = 0;
subSegments.forEach(function(subSegment) {
textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node2, subOffset_1 + offset, subSegment.length).getClientRects())));
subOffset_1 += subSegment.length;
});
} else {
textBounds.push(new TextBounds(text2, Bounds.fromDOMRectList(context, clientRects)));
}
} else {
var replacementNode = node2.splitText(text2.length);
textBounds.push(new TextBounds(text2, getWrapperBounds(context, node2)));
node2 = replacementNode;
}
} else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {
node2 = node2.splitText(text2.length);
}
offset += text2.length;
});
return textBounds;
};
var getWrapperBounds = function(context, node2) {
var ownerDocument = node2.ownerDocument;
if (ownerDocument) {
var wrapper = ownerDocument.createElement("html2canvaswrapper");
wrapper.appendChild(node2.cloneNode(true));
var parentNode = node2.parentNode;
if (parentNode) {
parentNode.replaceChild(wrapper, node2);
var bounds = parseBounds(context, wrapper);
if (wrapper.firstChild) {
parentNode.replaceChild(wrapper.firstChild, wrapper);
}
return bounds;
}
}
return Bounds.EMPTY;
};
var createRange = function(node2, offset, length) {
var ownerDocument = node2.ownerDocument;
if (!ownerDocument) {
throw new Error("Node has no owner document");
}
var range = ownerDocument.createRange();
range.setStart(node2, offset);
range.setEnd(node2, offset + length);
return range;
};
var segmentGraphemes = function(value) {
if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
var segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
return Array.from(segmenter.segment(value)).map(function(segment) {
return segment.segment;
});
}
return splitGraphemes(value);
};
var segmentWords = function(value, styles) {
if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
var segmenter = new Intl.Segmenter(void 0, {
granularity: "word"
});
return Array.from(segmenter.segment(value)).map(function(segment) {
return segment.segment;
});
}
return breakWords(value, styles);
};
var breakText = function(value, styles) {
return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);
};
var wordSeparators = [32, 160, 4961, 65792, 65793, 4153, 4241];
var breakWords = function(str, styles) {
var breaker = LineBreaker(str, {
lineBreak: styles.lineBreak,
wordBreak: styles.overflowWrap === "break-word" ? "break-word" : styles.wordBreak
});
var words = [];
var bk;
var _loop_1 = function() {
if (bk.value) {
var value = bk.value.slice();
var codePoints = toCodePoints$1(value);
var word_1 = "";
codePoints.forEach(function(codePoint) {
if (wordSeparators.indexOf(codePoint) === -1) {
word_1 += fromCodePoint$1(codePoint);
} else {
if (word_1.length) {
words.push(word_1);
}
words.push(fromCodePoint$1(codePoint));
word_1 = "";
}
});
if (word_1.length) {
words.push(word_1);
}
}
};
while (!(bk = breaker.next()).done) {
_loop_1();
}
return words;
};
var TextContainer = (
/** @class */
/* @__PURE__ */ function() {
function TextContainer2(context, node2, styles) {
this.text = transform(node2.data, styles.textTransform);
this.textBounds = parseTextBounds(context, this.text, styles, node2);
}
return TextContainer2;
}()
);
var transform = function(text2, transform2) {
switch (transform2) {
case 1:
return text2.toLowerCase();
case 3:
return text2.replace(CAPITALIZE, capitalize);
case 2:
return text2.toUpperCase();
default:
return text2;
}
};
var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g;
var capitalize = function(m2, p1, p2) {
if (m2.length > 0) {
return p1 + p2.toUpperCase();
}
return m2;
};
var ImageElementContainer = (
/** @class */
function(_super) {
__extends(ImageElementContainer2, _super);
function ImageElementContainer2(context, img) {
var _this = _super.call(this, context, img) || this;
_this.src = img.currentSrc || img.src;
_this.intrinsicWidth = img.naturalWidth;
_this.intrinsicHeight = img.naturalHeight;
_this.context.cache.addImage(_this.src);
return _this;
}
return ImageElementContainer2;
}(ElementContainer)
);
var CanvasElementContainer = (
/** @class */
function(_super) {
__extends(CanvasElementContainer2, _super);
function CanvasElementContainer2(context, canvas) {
var _this = _super.call(this, context, canvas) || this;
_this.canvas = canvas;
_this.intrinsicWidth = canvas.width;
_this.intrinsicHeight = canvas.height;
return _this;
}
return CanvasElementContainer2;
}(ElementContainer)
);
var SVGElementContainer = (
/** @class */
function(_super) {
__extends(SVGElementContainer2, _super);
function SVGElementContainer2(context, img) {
var _this = _super.call(this, context, img) || this;
var s2 = new XMLSerializer();
var bounds = parseBounds(context, img);
img.setAttribute("width", bounds.width + "px");
img.setAttribute("height", bounds.height + "px");
_this.svg = "data:image/svg+xml," + encodeURIComponent(s2.serializeToString(img));
_this.intrinsicWidth = img.width.baseVal.value;
_this.intrinsicHeight = img.height.baseVal.value;
_this.context.cache.addImage(_this.svg);
return _this;
}
return SVGElementContainer2;
}(ElementContainer)
);
var LIElementContainer = (
/** @class */
function(_super) {
__extends(LIElementContainer2, _super);
function LIElementContainer2(context, element) {
var _this = _super.call(this, context, element) || this;
_this.value = element.value;
return _this;
}
return LIElementContainer2;
}(ElementContainer)
);
var OLElementContainer = (
/** @class */
function(_super) {
__extends(OLElementContainer2, _super);
function OLElementContainer2(context, element) {
var _this = _super.call(this, context, element) || this;
_this.start = element.start;
_this.reversed = typeof element.reversed === "boolean" && element.reversed === true;
return _this;
}
return OLElementContainer2;
}(ElementContainer)
);
var CHECKBOX_BORDER_RADIUS = [
{
type: 15,
flags: 0,
unit: "px",
number: 3
}
];
var RADIO_BORDER_RADIUS = [
{
type: 16,
flags: 0,
number: 50
}
];
var reformatInputBounds = function(bounds) {
if (bounds.width > bounds.height) {
return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);
} else if (bounds.width < bounds.height) {
return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);
}
return bounds;
};
var getInputValue = function(node2) {
var value = node2.type === PASSWORD ? new Array(node2.value.length + 1).join("•") : node2.value;
return value.length === 0 ? node2.placeholder || "" : value;
};
var CHECKBOX = "checkbox";
var RADIO = "radio";
var PASSWORD = "password";
var INPUT_COLOR = 707406591;
var InputElementContainer = (
/** @class */
function(_super) {
__extends(InputElementContainer2, _super);
function InputElementContainer2(context, input) {
var _this = _super.call(this, context, input) || this;
_this.type = input.type.toLowerCase();
_this.checked = input.checked;
_this.value = getInputValue(input);
if (_this.type === CHECKBOX || _this.type === RADIO) {
_this.styles.backgroundColor = 3739148031;
_this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 2779096575;
_this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;
_this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle = 1;
_this.styles.backgroundClip = [
0
/* BORDER_BOX */
];
_this.styles.backgroundOrigin = [
0
/* BORDER_BOX */
];
_this.bounds = reformatInputBounds(_this.bounds);
}
switch (_this.type) {
case CHECKBOX:
_this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;
break;
case RADIO:
_this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;
break;
}
return _this;
}
return InputElementContainer2;
}(ElementContainer)
);
var SelectElementContainer = (
/** @class */
function(_super) {
__extends(SelectElementContainer2, _super);
function SelectElementContainer2(context, element) {
var _this = _super.call(this, context, element) || this;
var option = element.options[element.selectedIndex || 0];
_this.value = option ? option.text || "" : "";
return _this;
}
return SelectElementContainer2;
}(ElementContainer)
);
var TextareaElementContainer = (
/** @class */
function(_super) {
__extends(TextareaElementContainer2, _super);
function TextareaElementContainer2(context, element) {
var _this = _super.call(this, context, element) || this;
_this.value = element.value;
return _this;
}
return TextareaElementContainer2;
}(ElementContainer)
);
var IFrameElementContainer = (
/** @class */
function(_super) {
__extends(IFrameElementContainer2, _super);
function IFrameElementContainer2(context, iframe) {
var _this = _super.call(this, context, iframe) || this;
_this.src = iframe.src;
_this.width = parseInt(iframe.width, 10) || 0;
_this.height = parseInt(iframe.height, 10) || 0;
_this.backgroundColor = _this.styles.backgroundColor;
try {
if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.documentElement) {
_this.tree = parseTree(context, iframe.contentWindow.document.documentElement);
var documentBackgroundColor = iframe.contentWindow.document.documentElement ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor) : COLORS.TRANSPARENT;
var bodyBackgroundColor = iframe.contentWindow.document.body ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor) : COLORS.TRANSPARENT;
_this.backgroundColor = isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? _this.styles.backgroundColor : bodyBackgroundColor : documentBackgroundColor;
}
} catch (e2) {
}
return _this;
}
return IFrameElementContainer2;
}(ElementContainer)
);
var LIST_OWNERS = ["OL", "UL", "MENU"];
var parseNodeTree = function(context, node2, parent, root2) {
for (var childNode = node2.firstChild, nextNode = void 0; childNode; childNode = nextNode) {
nextNode = childNode.nextSibling;
if (isTextNode(childNode) && childNode.data.trim().length > 0) {
parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
} else if (isElementNode(childNode)) {
if (isSlotElement(childNode) && childNode.assignedNodes) {
childNode.assignedNodes().forEach(function(childNode2) {
return parseNodeTree(context, childNode2, parent, root2);
});
} else {
var container = createContainer(context, childNode);
if (container.styles.isVisible()) {
if (createsRealStackingContext(childNode, container, root2)) {
container.flags |= 4;
} else if (createsStackingContext(container.styles)) {
container.flags |= 2;
}
if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
container.flags |= 8;
}
parent.elements.push(container);
childNode.slot;
if (childNode.shadowRoot) {
parseNodeTree(context, childNode.shadowRoot, container, root2);
} else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {
parseNodeTree(context, childNode, container, root2);
}
}
}
}
}
};
var createContainer = function(context, element) {
if (isImageElement(element)) {
return new ImageElementContainer(context, element);
}
if (isCanvasElement(element)) {
return new CanvasElementContainer(context, element);
}
if (isSVGElement(element)) {
return new SVGElementContainer(context, element);
}
if (isLIElement(element)) {
return new LIElementContainer(context, element);
}
if (isOLElement(element)) {
return new OLElementContainer(context, element);
}
if (isInputElement(element)) {
return new InputElementContainer(context, element);
}
if (isSelectElement(element)) {
return new SelectElementContainer(context, element);
}
if (isTextareaElement(element)) {
return new TextareaElementContainer(context, element);
}
if (isIFrameElement(element)) {
return new IFrameElementContainer(context, element);
}
return new ElementContainer(context, element);
};
var parseTree = function(context, element) {
var container = createContainer(context, element);
container.flags |= 4;
parseNodeTree(context, element, container, container);
return container;
};
var createsRealStackingContext = function(node2, container, root2) {
return container.styles.isPositionedWithZIndex() || container.styles.opacity < 1 || container.styles.isTransformed() || isBodyElement(node2) && root2.styles.isTransparent();
};
var createsStackingContext = function(styles) {
return styles.isPositioned() || styles.isFloating();
};
var isTextNode = function(node2) {
return node2.nodeType === Node.TEXT_NODE;
};
var isElementNode = function(node2) {
return node2.nodeType === Node.ELEMENT_NODE;
};
var isHTMLElementNode = function(node2) {
return isElementNode(node2) && typeof node2.style !== "undefined" && !isSVGElementNode(node2);
};
var isSVGElementNode = function(element) {
return typeof element.className === "object";
};
var isLIElement = function(node2) {
return node2.tagName === "LI";
};
var isOLElement = function(node2) {
return node2.tagName === "OL";
};
var isInputElement = function(node2) {
return node2.tagName === "INPUT";
};
var isHTMLElement = function(node2) {
return node2.tagName === "HTML";
};
var isSVGElement = function(node2) {
return node2.tagName === "svg";
};
var isBodyElement = function(node2) {
return node2.tagName === "BODY";
};
var isCanvasElement = function(node2) {
return node2.tagName === "CANVAS";
};
var isVideoElement = function(node2) {
return node2.tagName === "VIDEO";
};
var isImageElement = function(node2) {
return node2.tagName === "IMG";
};
var isIFrameElement = function(node2) {
return node2.tagName === "IFRAME";
};
var isStyleElement = function(node2) {
return node2.tagName === "STYLE";
};
var isScriptElement = function(node2) {
return node2.tagName === "SCRIPT";
};
var isTextareaElement = function(node2) {
return node2.tagName === "TEXTAREA";
};
var isSelectElement = function(node2) {
return node2.tagName === "SELECT";
};
var isSlotElement = function(node2) {
return node2.tagName === "SLOT";
};
var isCustomElement = function(node2) {
return node2.tagName.indexOf("-") > 0;
};
var CounterState = (
/** @class */
function() {
function CounterState2() {
this.counters = {};
}
CounterState2.prototype.getCounterValue = function(name) {
var counter2 = this.counters[name];
if (counter2 && counter2.length) {
return counter2[counter2.length - 1];
}
return 1;
};
CounterState2.prototype.getCounterValues = function(name) {
var counter2 = this.counters[name];
return counter2 ? counter2 : [];
};
CounterState2.prototype.pop = function(counters) {
var _this = this;
counters.forEach(function(counter2) {
return _this.counters[counter2].pop();
});
};
CounterState2.prototype.parse = function(style) {
var _this = this;
var counterIncrement2 = style.counterIncrement;
var counterReset2 = style.counterReset;
var canReset = true;
if (counterIncrement2 !== null) {
counterIncrement2.forEach(function(entry) {
var counter2 = _this.counters[entry.counter];
if (counter2 && entry.increment !== 0) {
canReset = false;
if (!counter2.length) {
counter2.push(1);
}
counter2[Math.max(0, counter2.length - 1)] += entry.increment;
}
});
}
var counterNames = [];
if (canReset) {
counterReset2.forEach(function(entry) {
var counter2 = _this.counters[entry.counter];
counterNames.push(entry.counter);
if (!counter2) {
counter2 = _this.counters[entry.counter] = [];
}
counter2.push(entry.reset);
});
}
return counterNames;
};
return CounterState2;
}()
);
var ROMAN_UPPER = {
integers: [1e3, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
values: ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
};
var ARMENIAN = {
integers: [
9e3,
8e3,
7e3,
6e3,
5e3,
4e3,
3e3,
2e3,
1e3,
900,
800,
700,
600,
500,
400,
300,
200,
100,
90,
80,
70,
60,
50,
40,
30,
20,
10,
9,
8,
7,
6,
5,
4,
3,
2,
1
],
values: [
"Ք",
"Փ",
"Ւ",
"Ց",
"Ր",
"Տ",
"Վ",
"Ս",
"Ռ",
"Ջ",
"Պ",
"Չ",
"Ո",
"Շ",
"Ն",
"Յ",
"Մ",
"Ճ",
"Ղ",
"Ձ",
"Հ",
"Կ",
"Ծ",
"Խ",
"Լ",
"Ի",
"Ժ",
"Թ",
"Ը",
"Է",
"Զ",
"Ե",
"Դ",
"Գ",
"Բ",
"Ա"
]
};
var HEBREW = {
integers: [
1e4,
9e3,
8e3,
7e3,
6e3,
5e3,
4e3,
3e3,
2e3,
1e3,
400,
300,
200,
100,
90,
80,
70,
60,
50,
40,
30,
20,
19,
18,
17,
16,
15,
10,
9,
8,
7,
6,
5,
4,
3,
2,
1
],
values: [
"י׳",
"ט׳",
"ח׳",
"ז׳",
"ו׳",
"ה׳",
"ד׳",
"ג׳",
"ב׳",
"א׳",
"ת",
"ש",
"ר",
"ק",
"צ",
"פ",
"ע",
"ס",
"נ",
"מ",
"ל",
"כ",
"יט",
"יח",
"יז",
"טז",
"טו",
"י",
"ט",
"ח",
"ז",
"ו",
"ה",
"ד",
"ג",
"ב",
"א"
]
};
var GEORGIAN = {
integers: [
1e4,
9e3,
8e3,
7e3,
6e3,
5e3,
4e3,
3e3,
2e3,
1e3,
900,
800,
700,
600,
500,
400,
300,
200,
100,
90,
80,
70,
60,
50,
40,
30,
20,
10,
9,
8,
7,
6,
5,
4,
3,
2,
1
],
values: [
"ჵ",
"ჰ",
"ჯ",
"ჴ",
"ხ",
"ჭ",
"წ",
"ძ",
"ც",
"ჩ",
"შ",
"ყ",
"ღ",
"ქ",
"ფ",
"ჳ",
"ტ",
"ს",
"რ",
"ჟ",
"პ",
"ო",
"ჲ",
"ნ",
"მ",
"ლ",
"კ",
"ი",
"თ",
"ჱ",
"ზ",
"ვ",
"ე",
"დ",
"გ",
"ბ",
"ა"
]
};
var createAdditiveCounter = function(value, min2, max2, symbols, fallback, suffix2) {
if (value < min2 || value > max2) {
return createCounterText(value, fallback, suffix2.length > 0);
}
return symbols.integers.reduce(function(string, integer, index2) {
while (value >= integer) {
value -= integer;
string += symbols.values[index2];
}
return string;
}, "") + suffix2;
};
var createCounterStyleWithSymbolResolver = function(value, codePointRangeLength, isNumeric, resolver) {
var string = "";
do {
if (!isNumeric) {
value--;
}
string = resolver(value) + string;
value /= codePointRangeLength;
} while (value * codePointRangeLength >= codePointRangeLength);
return string;
};
var createCounterStyleFromRange = function(value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix2) {
var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;
return (value < 0 ? "-" : "") + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function(codePoint) {
return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);
}) + suffix2);
};
var createCounterStyleFromSymbols = function(value, symbols, suffix2) {
if (suffix2 === void 0) {
suffix2 = ". ";
}
var codePointRangeLength = symbols.length;
return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function(codePoint) {
return symbols[Math.floor(codePoint % codePointRangeLength)];
}) + suffix2;
};
var CJK_ZEROS = 1 << 0;
var CJK_TEN_COEFFICIENTS = 1 << 1;
var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;
var CJK_HUNDRED_COEFFICIENTS = 1 << 3;
var createCJKCounter = function(value, numbers, multipliers, negativeSign, suffix2, flags) {
if (value < -9999 || value > 9999) {
return createCounterText(value, 4, suffix2.length > 0);
}
var tmp = Math.abs(value);
var string = suffix2;
if (tmp === 0) {
return numbers[0] + string;
}
for (var digit = 0; tmp > 0 && digit <= 4; digit++) {
var coefficient = tmp % 10;
if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== "") {
string = numbers[coefficient] + string;
} else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS)) {
string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : "") + string;
} else if (coefficient === 1 && digit > 0) {
string = multipliers[digit - 1] + string;
}
tmp = Math.floor(tmp / 10);
}
return (value < 0 ? negativeSign : "") + string;
};
var CHINESE_INFORMAL_MULTIPLIERS = "十百千萬";
var CHINESE_FORMAL_MULTIPLIERS = "拾佰仟萬";
var JAPANESE_NEGATIVE = "マイナス";
var KOREAN_NEGATIVE = "마이너스";
var createCounterText = function(value, type, appendSuffix) {
var defaultSuffix = appendSuffix ? ". " : "";
var cjkSuffix = appendSuffix ? "、" : "";
var koreanSuffix = appendSuffix ? ", " : "";
var spaceSuffix = appendSuffix ? " " : "";
switch (type) {
case 0:
return "•" + spaceSuffix;
case 1:
return "◦" + spaceSuffix;
case 2:
return "◾" + spaceSuffix;
case 5:
var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
return string.length < 4 ? "0" + string : string;
case 4:
return createCounterStyleFromSymbols(value, "〇一二三四五六七八九", cjkSuffix);
case 6:
return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix).toLowerCase();
case 7:
return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix);
case 8:
return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);
case 9:
return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);
case 10:
return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);
case 11:
return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);
case 12:
case 49:
return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix);
case 35:
return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix).toLowerCase();
case 13:
return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);
case 14:
case 30:
return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);
case 15:
return createCounterStyleFromSymbols(value, "子丑寅卯辰巳午未申酉戌亥", cjkSuffix);
case 16:
return createCounterStyleFromSymbols(value, "甲乙丙丁戊己庚辛壬癸", cjkSuffix);
case 17:
case 48:
return createCJKCounter(value, "零一二三四五六七八九", CHINESE_INFORMAL_MULTIPLIERS, "負", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
case 47:
return createCJKCounter(value, "零壹貳參肆伍陸柒捌玖", CHINESE_FORMAL_MULTIPLIERS, "負", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
case 42:
return createCJKCounter(value, "零一二三四五六七八九", CHINESE_INFORMAL_MULTIPLIERS, "负", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
case 41:
return createCJKCounter(value, "零壹贰叁肆伍陆柒捌玖", CHINESE_FORMAL_MULTIPLIERS, "负", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
case 26:
return createCJKCounter(value, "〇一二三四五六七八九", "十百千万", JAPANESE_NEGATIVE, cjkSuffix, 0);
case 25:
return createCJKCounter(value, "零壱弐参四伍六七八九", "拾百千万", JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
case 31:
return createCJKCounter(value, "영일이삼사오육칠팔구", "십백천만", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
case 33:
return createCJKCounter(value, "零一二三四五六七八九", "十百千萬", KOREAN_NEGATIVE, koreanSuffix, 0);
case 32:
return createCJKCounter(value, "零壹貳參四五六七八九", "拾百千", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
case 18:
return createCounterStyleFromRange(value, 2406, 2415, true, defaultSuffix);
case 20:
return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3, defaultSuffix);
case 21:
return createCounterStyleFromRange(value, 2790, 2799, true, defaultSuffix);
case 22:
return createCounterStyleFromRange(value, 2662, 2671, true, defaultSuffix);
case 22:
return createAdditiveCounter(value, 1, 10999, HEBREW, 3, defaultSuffix);
case 23:
return createCounterStyleFromSymbols(value, "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");
case 24:
return createCounterStyleFromSymbols(value, "いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");
case 27:
return createCounterStyleFromRange(value, 3302, 3311, true, defaultSuffix);
case 28:
return createCounterStyleFromSymbols(value, "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン", cjkSuffix);
case 29:
return createCounterStyleFromSymbols(value, "イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス", cjkSuffix);
case 34:
return createCounterStyleFromRange(value, 3792, 3801, true, defaultSuffix);
case 37:
return createCounterStyleFromRange(value, 6160, 6169, true, defaultSuffix);
case 38:
return createCounterStyleFromRange(value, 4160, 4169, true, defaultSuffix);
case 39:
return createCounterStyleFromRange(value, 2918, 2927, true, defaultSuffix);
case 40:
return createCounterStyleFromRange(value, 1776, 1785, true, defaultSuffix);
case 43:
return createCounterStyleFromRange(value, 3046, 3055, true, defaultSuffix);
case 44:
return createCounterStyleFromRange(value, 3174, 3183, true, defaultSuffix);
case 45:
return createCounterStyleFromRange(value, 3664, 3673, true, defaultSuffix);
case 46:
return createCounterStyleFromRange(value, 3872, 3881, true, defaultSuffix);
case 3:
default:
return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
}
};
var IGNORE_ATTRIBUTE = "data-html2canvas-ignore";
var DocumentCloner = (
/** @class */
function() {
function DocumentCloner2(context, element, options) {
this.context = context;
this.options = options;
this.scrolledElements = [];
this.referenceElement = element;
this.counters = new CounterState();
this.quoteDepth = 0;
if (!element.ownerDocument) {
throw new Error("Cloned element does not have an owner document");
}
this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);
}
DocumentCloner2.prototype.toIFrame = function(ownerDocument, windowSize) {
var _this = this;
var iframe = createIFrameContainer(ownerDocument, windowSize);
if (!iframe.contentWindow) {
return Promise.reject("Unable to find iframe window");
}
var scrollX = ownerDocument.defaultView.pageXOffset;
var scrollY = ownerDocument.defaultView.pageYOffset;
var cloneWindow = iframe.contentWindow;
var documentClone = cloneWindow.document;
var iframeLoad = iframeLoader(iframe).then(function() {
return __awaiter(_this, void 0, void 0, function() {
var onclone, referenceElement;
return __generator(this, function(_a2) {
switch (_a2.label) {
case 0:
this.scrolledElements.forEach(restoreNodeScroll);
if (cloneWindow) {
cloneWindow.scrollTo(windowSize.left, windowSize.top);
if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {
this.context.logger.warn("Unable to restore scroll position for cloned document");
this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);
}
}
onclone = this.options.onclone;
referenceElement = this.clonedReferenceElement;
if (typeof referenceElement === "undefined") {
return [2, Promise.reject("Error finding the " + this.referenceElement.nodeName + " in the cloned document")];
}
if (!(documentClone.fonts && documentClone.fonts.ready)) return [3, 2];
return [4, documentClone.fonts.ready];
case 1:
_a2.sent();
_a2.label = 2;
case 2:
if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3, 4];
return [4, imagesReady(documentClone)];
case 3:
_a2.sent();
_a2.label = 4;
case 4:
if (typeof onclone === "function") {
return [2, Promise.resolve().then(function() {
return onclone(documentClone, referenceElement);
}).then(function() {
return iframe;
})];
}
return [2, iframe];
}
});
});
});
documentClone.open();
documentClone.write(serializeDoctype(document.doctype) + "<html></html>");
restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);
documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);
documentClone.close();
return iframeLoad;
};
DocumentCloner2.prototype.createElementClone = function(node2) {
if (isDebugging(
node2,
2
/* CLONE */
)) {
debugger;
}
if (isCanvasElement(node2)) {
return this.createCanvasClone(node2);
}
if (isVideoElement(node2)) {
return this.createVideoClone(node2);
}
if (isStyleElement(node2)) {
return this.createStyleClone(node2);
}
var clone2 = node2.cloneNode(false);
if (isImageElement(clone2)) {
if (isImageElement(node2) && node2.currentSrc && node2.currentSrc !== node2.src) {
clone2.src = node2.currentSrc;
clone2.srcset = "";
}
if (clone2.loading === "lazy") {
clone2.loading = "eager";
}
}
if (isCustomElement(clone2)) {
return this.createCustomElementClone(clone2);
}
return clone2;
};
DocumentCloner2.prototype.createCustomElementClone = function(node2) {
var clone2 = document.createElement("html2canvascustomelement");
copyCSSStyles(node2.style, clone2);
return clone2;
};
DocumentCloner2.prototype.createStyleClone = function(node2) {
try {
var sheet = node2.sheet;
if (sheet && sheet.cssRules) {
var css = [].slice.call(sheet.cssRules, 0).reduce(function(css2, rule) {
if (rule && typeof rule.cssText === "string") {
return css2 + rule.cssText;
}
return css2;
}, "");
var style = node2.cloneNode(false);
style.textContent = css;
return style;
}
} catch (e2) {
this.context.logger.error("Unable to access cssRules property", e2);
if (e2.name !== "SecurityError") {
throw e2;
}
}
return node2.cloneNode(false);
};
DocumentCloner2.prototype.createCanvasClone = function(canvas) {
var _a2;
if (this.options.inlineImages && canvas.ownerDocument) {
var img = canvas.ownerDocument.createElement("img");
try {
img.src = canvas.toDataURL();
return img;
} catch (e2) {
this.context.logger.info("Unable to inline canvas contents, canvas is tainted", canvas);
}
}
var clonedCanvas = canvas.cloneNode(false);
try {
clonedCanvas.width = canvas.width;
clonedCanvas.height = canvas.height;
var ctx = canvas.getContext("2d");
var clonedCtx = clonedCanvas.getContext("2d");
if (clonedCtx) {
if (!this.options.allowTaint && ctx) {
clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
} else {
var gl = (_a2 = canvas.getContext("webgl2")) !== null && _a2 !== void 0 ? _a2 : canvas.getContext("webgl");
if (gl) {
var attribs = gl.getContextAttributes();
if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {
this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false", canvas);
}
}
clonedCtx.drawImage(canvas, 0, 0);
}
}
return clonedCanvas;
} catch (e2) {
this.context.logger.info("Unable to clone canvas as it is tainted", canvas);
}
return clonedCanvas;
};
DocumentCloner2.prototype.createVideoClone = function(video) {
var canvas = video.ownerDocument.createElement("canvas");
canvas.width = video.offsetWidth;
canvas.height = video.offsetHeight;
var ctx = canvas.getContext("2d");
try {
if (ctx) {
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
if (!this.options.allowTaint) {
ctx.getImageData(0, 0, canvas.width, canvas.height);
}
}
return canvas;
} catch (e2) {
this.context.logger.info("Unable to clone video as it is tainted", video);
}
var blankCanvas = video.ownerDocument.createElement("canvas");
blankCanvas.width = video.offsetWidth;
blankCanvas.height = video.offsetHeight;
return blankCanvas;
};
DocumentCloner2.prototype.appendChildNode = function(clone2, child, copyStyles) {
if (!isElementNode(child) || !isScriptElement(child) && !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== "function" || !this.options.ignoreElements(child))) {
if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {
clone2.appendChild(this.cloneNode(child, copyStyles));
}
}
};
DocumentCloner2.prototype.cloneChildNodes = function(node2, clone2, copyStyles) {
var _this = this;
for (var child = node2.shadowRoot ? node2.shadowRoot.firstChild : node2.firstChild; child; child = child.nextSibling) {
if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === "function") {
var assignedNodes = child.assignedNodes();
if (assignedNodes.length) {
assignedNodes.forEach(function(assignedNode) {
return _this.appendChildNode(clone2, assignedNode, copyStyles);
});
}
} else {
this.appendChildNode(clone2, child, copyStyles);
}
}
};
DocumentCloner2.prototype.cloneNode = function(node2, copyStyles) {
if (isTextNode(node2)) {
return document.createTextNode(node2.data);
}
if (!node2.ownerDocument) {
return node2.cloneNode(false);
}
var window2 = node2.ownerDocument.defaultView;
if (window2 && isElementNode(node2) && (isHTMLElementNode(node2) || isSVGElementNode(node2))) {
var clone2 = this.createElementClone(node2);
clone2.style.transitionProperty = "none";
var style = window2.getComputedStyle(node2);
var styleBefore = window2.getComputedStyle(node2, ":before");
var styleAfter = window2.getComputedStyle(node2, ":after");
if (this.referenceElement === node2 && isHTMLElementNode(clone2)) {
this.clonedReferenceElement = clone2;
}
if (isBodyElement(clone2)) {
createPseudoHideStyles(clone2);
}
var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
var before = this.resolvePseudoContent(node2, clone2, styleBefore, PseudoElementType.BEFORE);
if (isCustomElement(node2)) {
copyStyles = true;
}
if (!isVideoElement(node2)) {
this.cloneChildNodes(node2, clone2, copyStyles);
}
if (before) {
clone2.insertBefore(before, clone2.firstChild);
}
var after = this.resolvePseudoContent(node2, clone2, styleAfter, PseudoElementType.AFTER);
if (after) {
clone2.appendChild(after);
}
this.counters.pop(counters);
if (style && (this.options.copyStyles || isSVGElementNode(node2)) && !isIFrameElement(node2) || copyStyles) {
copyCSSStyles(style, clone2);
}
if (node2.scrollTop !== 0 || node2.scrollLeft !== 0) {
this.scrolledElements.push([clone2, node2.scrollLeft, node2.scrollTop]);
}
if ((isTextareaElement(node2) || isSelectElement(node2)) && (isTextareaElement(clone2) || isSelectElement(clone2))) {
clone2.value = node2.value;
}
return clone2;
}
return node2.cloneNode(false);
};
DocumentCloner2.prototype.resolvePseudoContent = function(node2, clone2, style, pseudoElt) {
var _this = this;
if (!style) {
return;
}
var value = style.content;
var document2 = clone2.ownerDocument;
if (!document2 || !value || value === "none" || value === "-moz-alt-content" || style.display === "none") {
return;
}
this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
var declaration = new CSSParsedPseudoDeclaration(this.context, style);
var anonymousReplacedElement = document2.createElement("html2canvaspseudoelement");
copyCSSStyles(style, anonymousReplacedElement);
declaration.content.forEach(function(token) {
if (token.type === 0) {
anonymousReplacedElement.appendChild(document2.createTextNode(token.value));
} else if (token.type === 22) {
var img = document2.createElement("img");
img.src = token.value;
img.style.opacity = "1";
anonymousReplacedElement.appendChild(img);
} else if (token.type === 18) {
if (token.name === "attr") {
var attr = token.values.filter(isIdentToken);
if (attr.length) {
anonymousReplacedElement.appendChild(document2.createTextNode(node2.getAttribute(attr[0].value) || ""));
}
} else if (token.name === "counter") {
var _a2 = token.values.filter(nonFunctionArgSeparator), counter2 = _a2[0], counterStyle = _a2[1];
if (counter2 && isIdentToken(counter2)) {
var counterState = _this.counters.getCounterValue(counter2.value);
var counterType = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3;
anonymousReplacedElement.appendChild(document2.createTextNode(createCounterText(counterState, counterType, false)));
}
} else if (token.name === "counters") {
var _b2 = token.values.filter(nonFunctionArgSeparator), counter2 = _b2[0], delim = _b2[1], counterStyle = _b2[2];
if (counter2 && isIdentToken(counter2)) {
var counterStates = _this.counters.getCounterValues(counter2.value);
var counterType_1 = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3;
var separator = delim && delim.type === 0 ? delim.value : "";
var text2 = counterStates.map(function(value2) {
return createCounterText(value2, counterType_1, false);
}).join(separator);
anonymousReplacedElement.appendChild(document2.createTextNode(text2));
}
} else ;
} else if (token.type === 20) {
switch (token.value) {
case "open-quote":
anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));
break;
case "close-quote":
anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));
break;
default:
anonymousReplacedElement.appendChild(document2.createTextNode(token.value));
}
}
});
anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
var newClassName = pseudoElt === PseudoElementType.BEFORE ? " " + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
if (isSVGElementNode(clone2)) {
clone2.className.baseValue += newClassName;
} else {
clone2.className += newClassName;
}
return anonymousReplacedElement;
};
DocumentCloner2.destroy = function(container) {
if (container.parentNode) {
container.parentNode.removeChild(container);
return true;
}
return false;
};
return DocumentCloner2;
}()
);
var PseudoElementType;
(function(PseudoElementType2) {
PseudoElementType2[PseudoElementType2["BEFORE"] = 0] = "BEFORE";
PseudoElementType2[PseudoElementType2["AFTER"] = 1] = "AFTER";
})(PseudoElementType || (PseudoElementType = {}));
var createIFrameContainer = function(ownerDocument, bounds) {
var cloneIframeContainer = ownerDocument.createElement("iframe");
cloneIframeContainer.className = "html2canvas-container";
cloneIframeContainer.style.visibility = "hidden";
cloneIframeContainer.style.position = "fixed";
cloneIframeContainer.style.left = "-10000px";
cloneIframeContainer.style.top = "0px";
cloneIframeContainer.style.border = "0";
cloneIframeContainer.width = bounds.width.toString();
cloneIframeContainer.height = bounds.height.toString();
cloneIframeContainer.scrolling = "no";
cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, "true");
ownerDocument.body.appendChild(cloneIframeContainer);
return cloneIframeContainer;
};
var imageReady = function(img) {
return new Promise(function(resolve2) {
if (img.complete) {
resolve2();
return;
}
if (!img.src) {
resolve2();
return;
}
img.onload = resolve2;
img.onerror = resolve2;
});
};
var imagesReady = function(document2) {
return Promise.all([].slice.call(document2.images, 0).map(imageReady));
};
var iframeLoader = function(iframe) {
return new Promise(function(resolve2, reject2) {
var cloneWindow = iframe.contentWindow;
if (!cloneWindow) {
return reject2("No window assigned for iframe");
}
var documentClone = cloneWindow.document;
cloneWindow.onload = iframe.onload = function() {
cloneWindow.onload = iframe.onload = null;
var interval = setInterval(function() {
if (documentClone.body.childNodes.length > 0 && documentClone.readyState === "complete") {
clearInterval(interval);
resolve2(iframe);
}
}, 50);
};
});
};
var ignoredStyleProperties = [
"all",
"d",
"content"
// Safari shows pseudoelements if content is set
];
var copyCSSStyles = function(style, target) {
for (var i2 = style.length - 1; i2 >= 0; i2--) {
var property = style.item(i2);
if (ignoredStyleProperties.indexOf(property) === -1) {
target.style.setProperty(property, style.getPropertyValue(property));
}
}
return target;
};
var serializeDoctype = function(doctype) {
var str = "";
if (doctype) {
str += "<!DOCTYPE ";
if (doctype.name) {
str += doctype.name;
}
if (doctype.internalSubset) {
str += doctype.internalSubset;
}
if (doctype.publicId) {
str += '"' + doctype.publicId + '"';
}
if (doctype.systemId) {
str += '"' + doctype.systemId + '"';
}
str += ">";
}
return str;
};
var restoreOwnerScroll = function(ownerDocument, x2, y2) {
if (ownerDocument && ownerDocument.defaultView && (x2 !== ownerDocument.defaultView.pageXOffset || y2 !== ownerDocument.defaultView.pageYOffset)) {
ownerDocument.defaultView.scrollTo(x2, y2);
}
};
var restoreNodeScroll = function(_a2) {
var element = _a2[0], x2 = _a2[1], y2 = _a2[2];
element.scrollLeft = x2;
element.scrollTop = y2;
};
var PSEUDO_BEFORE = ":before";
var PSEUDO_AFTER = ":after";
var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = "___html2canvas___pseudoelement_before";
var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = "___html2canvas___pseudoelement_after";
var PSEUDO_HIDE_ELEMENT_STYLE = '{\n content: "" !important;\n display: none !important;\n}';
var createPseudoHideStyles = function(body) {
createStyles(body, "." + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + "\n ." + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);
};
var createStyles = function(body, styles) {
var document2 = body.ownerDocument;
if (document2) {
var style = document2.createElement("style");
style.textContent = styles;
body.appendChild(style);
}
};
var CacheStorage = (
/** @class */
function() {
function CacheStorage2() {
}
CacheStorage2.getOrigin = function(url) {
var link = CacheStorage2._link;
if (!link) {
return "about:blank";
}
link.href = url;
link.href = link.href;
return link.protocol + link.hostname + link.port;
};
CacheStorage2.isSameOrigin = function(src) {
return CacheStorage2.getOrigin(src) === CacheStorage2._origin;
};
CacheStorage2.setContext = function(window2) {
CacheStorage2._link = window2.document.createElement("a");
CacheStorage2._origin = CacheStorage2.getOrigin(window2.location.href);
};
CacheStorage2._origin = "about:blank";
return CacheStorage2;
}()
);
var Cache = (
/** @class */
function() {
function Cache2(context, _options) {
this.context = context;
this._options = _options;
this._cache = {};
}
Cache2.prototype.addImage = function(src) {
var result = Promise.resolve();
if (this.has(src)) {
return result;
}
if (isBlobImage(src) || isRenderable(src)) {
(this._cache[src] = this.loadImage(src)).catch(function() {
});
return result;
}
return result;
};
Cache2.prototype.match = function(src) {
return this._cache[src];
};
Cache2.prototype.loadImage = function(key) {
return __awaiter(this, void 0, void 0, function() {
var isSameOrigin, useCORS, useProxy, src;
var _this = this;
return __generator(this, function(_a2) {
switch (_a2.label) {
case 0:
isSameOrigin = CacheStorage.isSameOrigin(key);
useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;
useProxy = !isInlineImage(key) && !isSameOrigin && !isBlobImage(key) && typeof this._options.proxy === "string" && FEATURES.SUPPORT_CORS_XHR && !useCORS;
if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !isBlobImage(key) && !useProxy && !useCORS) {
return [
2
/*return*/
];
}
src = key;
if (!useProxy) return [3, 2];
return [4, this.proxy(src)];
case 1:
src = _a2.sent();
_a2.label = 2;
case 2:
this.context.logger.debug("Added image " + key.substring(0, 256));
return [4, new Promise(function(resolve2, reject2) {
var img = new Image();
img.onload = function() {
return resolve2(img);
};
img.onerror = reject2;
if (isInlineBase64Image(src) || useCORS) {
img.crossOrigin = "anonymous";
}
img.src = src;
if (img.complete === true) {
setTimeout(function() {
return resolve2(img);
}, 500);
}
if (_this._options.imageTimeout > 0) {
setTimeout(function() {
return reject2("Timed out (" + _this._options.imageTimeout + "ms) loading image");
}, _this._options.imageTimeout);
}
})];
case 3:
return [2, _a2.sent()];
}
});
});
};
Cache2.prototype.has = function(key) {
return typeof this._cache[key] !== "undefined";
};
Cache2.prototype.keys = function() {
return Promise.resolve(Object.keys(this._cache));
};
Cache2.prototype.proxy = function(src) {
var _this = this;
var proxy = this._options.proxy;
if (!proxy) {
throw new Error("No proxy defined");
}
var key = src.substring(0, 256);
return new Promise(function(resolve2, reject2) {
var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? "blob" : "text";
var xhr = new XMLHttpRequest();
xhr.onload = function() {
if (xhr.status === 200) {
if (responseType === "text") {
resolve2(xhr.response);
} else {
var reader_1 = new FileReader();
reader_1.addEventListener("load", function() {
return resolve2(reader_1.result);
}, false);
reader_1.addEventListener("error", function(e2) {
return reject2(e2);
}, false);
reader_1.readAsDataURL(xhr.response);
}
} else {
reject2("Failed to proxy resource " + key + " with status code " + xhr.status);
}
};
xhr.onerror = reject2;
var queryString = proxy.indexOf("?") > -1 ? "&" : "?";
xhr.open("GET", "" + proxy + queryString + "url=" + encodeURIComponent(src) + "&responseType=" + responseType);
if (responseType !== "text" && xhr instanceof XMLHttpRequest) {
xhr.responseType = responseType;
}
if (_this._options.imageTimeout) {
var timeout_1 = _this._options.imageTimeout;
xhr.timeout = timeout_1;
xhr.ontimeout = function() {
return reject2("Timed out (" + timeout_1 + "ms) proxying " + key);
};
}
xhr.send();
});
};
return Cache2;
}()
);
var INLINE_SVG = /^data:image\/svg\+xml/i;
var INLINE_BASE64 = /^data:image\/.*;base64,/i;
var INLINE_IMG = /^data:image\/.*/i;
var isRenderable = function(src) {
return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);
};
var isInlineImage = function(src) {
return INLINE_IMG.test(src);
};
var isInlineBase64Image = function(src) {
return INLINE_BASE64.test(src);
};
var isBlobImage = function(src) {
return src.substr(0, 4) === "blob";
};
var isSVG = function(src) {
return src.substr(-3).toLowerCase() === "svg" || INLINE_SVG.test(src);
};
var Vector = (
/** @class */
function() {
function Vector2(x2, y2) {
this.type = 0;
this.x = x2;
this.y = y2;
}
Vector2.prototype.add = function(deltaX, deltaY) {
return new Vector2(this.x + deltaX, this.y + deltaY);
};
return Vector2;
}()
);
var lerp = function(a2, b2, t3) {
return new Vector(a2.x + (b2.x - a2.x) * t3, a2.y + (b2.y - a2.y) * t3);
};
var BezierCurve = (
/** @class */
function() {
function BezierCurve2(start2, startControl, endControl, end) {
this.type = 1;
this.start = start2;
this.startControl = startControl;
this.endControl = endControl;
this.end = end;
}
BezierCurve2.prototype.subdivide = function(t3, firstHalf) {
var ab = lerp(this.start, this.startControl, t3);
var bc = lerp(this.startControl, this.endControl, t3);
var cd = lerp(this.endControl, this.end, t3);
var abbc = lerp(ab, bc, t3);
var bccd = lerp(bc, cd, t3);
var dest = lerp(abbc, bccd, t3);
return firstHalf ? new BezierCurve2(this.start, ab, abbc, dest) : new BezierCurve2(dest, bccd, cd, this.end);
};
BezierCurve2.prototype.add = function(deltaX, deltaY) {
return new BezierCurve2(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));
};
BezierCurve2.prototype.reverse = function() {
return new BezierCurve2(this.end, this.endControl, this.startControl, this.start);
};
return BezierCurve2;
}()
);
var isBezierCurve = function(path) {
return path.type === 1;
};
var BoundCurves = (
/** @class */
/* @__PURE__ */ function() {
function BoundCurves2(element) {
var styles = element.styles;
var bounds = element.bounds;
var _a2 = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a2[0], tlv = _a2[1];
var _b2 = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b2[0], trv = _b2[1];
var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];
var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];
var factors = [];
factors.push((tlh + trh) / bounds.width);
factors.push((blh + brh) / bounds.width);
factors.push((tlv + blv) / bounds.height);
factors.push((trv + brv) / bounds.height);
var maxFactor = Math.max.apply(Math, factors);
if (maxFactor > 1) {
tlh /= maxFactor;
tlv /= maxFactor;
trh /= maxFactor;
trv /= maxFactor;
brh /= maxFactor;
brv /= maxFactor;
blh /= maxFactor;
blv /= maxFactor;
}
var topWidth = bounds.width - trh;
var rightHeight = bounds.height - brv;
var bottomWidth = bounds.width - brh;
var leftHeight = bounds.height - blv;
var borderTopWidth2 = styles.borderTopWidth;
var borderRightWidth2 = styles.borderRightWidth;
var borderBottomWidth2 = styles.borderBottomWidth;
var borderLeftWidth2 = styles.borderLeftWidth;
var paddingTop2 = getAbsoluteValue(styles.paddingTop, element.bounds.width);
var paddingRight2 = getAbsoluteValue(styles.paddingRight, element.bounds.width);
var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, element.bounds.width);
var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, element.bounds.width);
this.topLeftBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3, tlh - borderLeftWidth2 / 3, tlv - borderTopWidth2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3);
this.topRightBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 3, trh - borderRightWidth2 / 3, trv - borderTopWidth2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + borderTopWidth2 / 3);
this.bottomRightBorderDoubleOuterBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 3, brv - borderBottomWidth2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3);
this.bottomLeftBorderDoubleOuterBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 / 3, blv - borderBottomWidth2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3);
this.topLeftBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3, tlh - borderLeftWidth2 * 2 / 3, tlv - borderTopWidth2 * 2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3);
this.topRightBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 * 2 / 3, trh - borderRightWidth2 * 2 / 3, trv - borderTopWidth2 * 2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3);
this.bottomRightBorderDoubleInnerBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 * 2 / 3, brv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3);
this.bottomLeftBorderDoubleInnerBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 * 2 / 3, blv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3);
this.topLeftBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2, tlh - borderLeftWidth2 / 2, tlv - borderTopWidth2 / 2, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2);
this.topRightBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 2, trh - borderRightWidth2 / 2, trv - borderTopWidth2 / 2, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + borderTopWidth2 / 2);
this.bottomRightBorderStroke = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 2, brv - borderBottomWidth2 / 2, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2);
this.bottomLeftBorderStroke = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + leftHeight, blh - borderLeftWidth2 / 2, blv - borderBottomWidth2 / 2, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2);
this.topLeftBorderBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new Vector(bounds.left, bounds.top);
this.topRightBorderBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top);
this.bottomRightBorderBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);
this.bottomLeftBorderBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT) : new Vector(bounds.left, bounds.top + bounds.height);
this.topLeftPaddingBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2, Math.max(0, tlh - borderLeftWidth2), Math.max(0, tlv - borderTopWidth2), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2);
this.topRightPaddingBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth2), bounds.top + borderTopWidth2, topWidth > bounds.width + borderRightWidth2 ? 0 : Math.max(0, trh - borderRightWidth2), Math.max(0, trv - borderTopWidth2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + borderTopWidth2);
this.bottomRightPaddingBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth2), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth2), Math.max(0, brh - borderRightWidth2), Math.max(0, brv - borderBottomWidth2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + bounds.height - borderBottomWidth2);
this.bottomLeftPaddingBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth2), Math.max(0, blh - borderLeftWidth2), Math.max(0, blv - borderBottomWidth2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + bounds.height - borderBottomWidth2);
this.topLeftContentBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2, Math.max(0, tlh - (borderLeftWidth2 + paddingLeft2)), Math.max(0, tlv - (borderTopWidth2 + paddingTop2)), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2);
this.topRightContentBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth2 + paddingLeft2), bounds.top + borderTopWidth2 + paddingTop2, topWidth > bounds.width + borderLeftWidth2 + paddingLeft2 ? 0 : trh - borderLeftWidth2 + paddingLeft2, trv - (borderTopWidth2 + paddingTop2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + borderTopWidth2 + paddingTop2);
this.bottomRightContentBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth2 + paddingLeft2)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth2 + paddingTop2), Math.max(0, brh - (borderRightWidth2 + paddingRight2)), brv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2));
this.bottomLeftContentBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth2 + paddingLeft2)), blv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2));
}
return BoundCurves2;
}()
);
var CORNER;
(function(CORNER2) {
CORNER2[CORNER2["TOP_LEFT"] = 0] = "TOP_LEFT";
CORNER2[CORNER2["TOP_RIGHT"] = 1] = "TOP_RIGHT";
CORNER2[CORNER2["BOTTOM_RIGHT"] = 2] = "BOTTOM_RIGHT";
CORNER2[CORNER2["BOTTOM_LEFT"] = 3] = "BOTTOM_LEFT";
})(CORNER || (CORNER = {}));
var getCurvePoints = function(x2, y2, r1, r2, position2) {
var kappa = 4 * ((Math.sqrt(2) - 1) / 3);
var ox = r1 * kappa;
var oy = r2 * kappa;
var xm = x2 + r1;
var ym = y2 + r2;
switch (position2) {
case CORNER.TOP_LEFT:
return new BezierCurve(new Vector(x2, ym), new Vector(x2, ym - oy), new Vector(xm - ox, y2), new Vector(xm, y2));
case CORNER.TOP_RIGHT:
return new BezierCurve(new Vector(x2, y2), new Vector(x2 + ox, y2), new Vector(xm, ym - oy), new Vector(xm, ym));
case CORNER.BOTTOM_RIGHT:
return new BezierCurve(new Vector(xm, y2), new Vector(xm, y2 + oy), new Vector(x2 + ox, ym), new Vector(x2, ym));
case CORNER.BOTTOM_LEFT:
default:
return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x2, y2 + oy), new Vector(x2, y2));
}
};
var calculateBorderBoxPath = function(curves) {
return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];
};
var calculateContentBoxPath = function(curves) {
return [
curves.topLeftContentBox,
curves.topRightContentBox,
curves.bottomRightContentBox,
curves.bottomLeftContentBox
];
};
var calculatePaddingBoxPath = function(curves) {
return [
curves.topLeftPaddingBox,
curves.topRightPaddingBox,
curves.bottomRightPaddingBox,
curves.bottomLeftPaddingBox
];
};
var TransformEffect = (
/** @class */
/* @__PURE__ */ function() {
function TransformEffect2(offsetX, offsetY, matrix2) {
this.offsetX = offsetX;
this.offsetY = offsetY;
this.matrix = matrix2;
this.type = 0;
this.target = 2 | 4;
}
return TransformEffect2;
}()
);
var ClipEffect = (
/** @class */
/* @__PURE__ */ function() {
function ClipEffect2(path, target) {
this.path = path;
this.target = target;
this.type = 1;
}
return ClipEffect2;
}()
);
var OpacityEffect = (
/** @class */
/* @__PURE__ */ function() {
function OpacityEffect2(opacity2) {
this.opacity = opacity2;
this.type = 2;
this.target = 2 | 4;
}
return OpacityEffect2;
}()
);
var isTransformEffect = function(effect) {
return effect.type === 0;
};
var isClipEffect = function(effect) {
return effect.type === 1;
};
var isOpacityEffect = function(effect) {
return effect.type === 2;
};
var equalPath = function(a2, b2) {
if (a2.length === b2.length) {
return a2.some(function(v2, i2) {
return v2 === b2[i2];
});
}
return false;
};
var transformPath = function(path, deltaX, deltaY, deltaW, deltaH) {
return path.map(function(point, index2) {
switch (index2) {
case 0:
return point.add(deltaX, deltaY);
case 1:
return point.add(deltaX + deltaW, deltaY);
case 2:
return point.add(deltaX + deltaW, deltaY + deltaH);
case 3:
return point.add(deltaX, deltaY + deltaH);
}
return point;
});
};
var StackingContext = (
/** @class */
/* @__PURE__ */ function() {
function StackingContext2(container) {
this.element = container;
this.inlineLevel = [];
this.nonInlineLevel = [];
this.negativeZIndex = [];
this.zeroOrAutoZIndexOrTransformedOrOpacity = [];
this.positiveZIndex = [];
this.nonPositionedFloats = [];
this.nonPositionedInlineLevel = [];
}
return StackingContext2;
}()
);
var ElementPaint = (
/** @class */
function() {
function ElementPaint2(container, parent) {
this.container = container;
this.parent = parent;
this.effects = [];
this.curves = new BoundCurves(this.container);
if (this.container.styles.opacity < 1) {
this.effects.push(new OpacityEffect(this.container.styles.opacity));
}
if (this.container.styles.transform !== null) {
var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;
var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;
var matrix2 = this.container.styles.transform;
this.effects.push(new TransformEffect(offsetX, offsetY, matrix2));
}
if (this.container.styles.overflowX !== 0) {
var borderBox = calculateBorderBoxPath(this.curves);
var paddingBox2 = calculatePaddingBoxPath(this.curves);
if (equalPath(borderBox, paddingBox2)) {
this.effects.push(new ClipEffect(
borderBox,
2 | 4
/* CONTENT */
));
} else {
this.effects.push(new ClipEffect(
borderBox,
2
/* BACKGROUND_BORDERS */
));
this.effects.push(new ClipEffect(
paddingBox2,
4
/* CONTENT */
));
}
}
}
ElementPaint2.prototype.getEffects = function(target) {
var inFlow = [
2,
3
/* FIXED */
].indexOf(this.container.styles.position) === -1;
var parent = this.parent;
var effects = this.effects.slice(0);
while (parent) {
var croplessEffects = parent.effects.filter(function(effect) {
return !isClipEffect(effect);
});
if (inFlow || parent.container.styles.position !== 0 || !parent.parent) {
effects.unshift.apply(effects, croplessEffects);
inFlow = [
2,
3
/* FIXED */
].indexOf(parent.container.styles.position) === -1;
if (parent.container.styles.overflowX !== 0) {
var borderBox = calculateBorderBoxPath(parent.curves);
var paddingBox2 = calculatePaddingBoxPath(parent.curves);
if (!equalPath(borderBox, paddingBox2)) {
effects.unshift(new ClipEffect(
paddingBox2,
2 | 4
/* CONTENT */
));
}
}
} else {
effects.unshift.apply(effects, croplessEffects);
}
parent = parent.parent;
}
return effects.filter(function(effect) {
return contains(effect.target, target);
});
};
return ElementPaint2;
}()
);
var parseStackTree = function(parent, stackingContext, realStackingContext, listItems) {
parent.container.elements.forEach(function(child) {
var treatAsRealStackingContext = contains(
child.flags,
4
/* CREATES_REAL_STACKING_CONTEXT */
);
var createsStackingContext2 = contains(
child.flags,
2
/* CREATES_STACKING_CONTEXT */
);
var paintContainer = new ElementPaint(child, parent);
if (contains(
child.styles.display,
2048
/* LIST_ITEM */
)) {
listItems.push(paintContainer);
}
var listOwnerItems = contains(
child.flags,
8
/* IS_LIST_OWNER */
) ? [] : listItems;
if (treatAsRealStackingContext || createsStackingContext2) {
var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;
var stack = new StackingContext(paintContainer);
if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {
var order_1 = child.styles.zIndex.order;
if (order_1 < 0) {
var index_1 = 0;
parentStack.negativeZIndex.some(function(current, i2) {
if (order_1 > current.element.container.styles.zIndex.order) {
index_1 = i2;
return false;
} else if (index_1 > 0) {
return true;
}
return false;
});
parentStack.negativeZIndex.splice(index_1, 0, stack);
} else if (order_1 > 0) {
var index_2 = 0;
parentStack.positiveZIndex.some(function(current, i2) {
if (order_1 >= current.element.container.styles.zIndex.order) {
index_2 = i2 + 1;
return false;
} else if (index_2 > 0) {
return true;
}
return false;
});
parentStack.positiveZIndex.splice(index_2, 0, stack);
} else {
parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);
}
} else {
if (child.styles.isFloating()) {
parentStack.nonPositionedFloats.push(stack);
} else {
parentStack.nonPositionedInlineLevel.push(stack);
}
}
parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);
} else {
if (child.styles.isInlineLevel()) {
stackingContext.inlineLevel.push(paintContainer);
} else {
stackingContext.nonInlineLevel.push(paintContainer);
}
parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);
}
if (contains(
child.flags,
8
/* IS_LIST_OWNER */
)) {
processListItems(child, listOwnerItems);
}
});
};
var processListItems = function(owner, elements2) {
var numbering = owner instanceof OLElementContainer ? owner.start : 1;
var reversed = owner instanceof OLElementContainer ? owner.reversed : false;
for (var i2 = 0; i2 < elements2.length; i2++) {
var item = elements2[i2];
if (item.container instanceof LIElementContainer && typeof item.container.value === "number" && item.container.value !== 0) {
numbering = item.container.value;
}
item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);
numbering += reversed ? -1 : 1;
}
};
var parseStackingContexts = function(container) {
var paintContainer = new ElementPaint(container, null);
var root2 = new StackingContext(paintContainer);
var listItems = [];
parseStackTree(paintContainer, root2, root2, listItems);
processListItems(paintContainer.container, listItems);
return root2;
};
var parsePathForBorder = function(curves, borderSide) {
switch (borderSide) {
case 0:
return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);
case 1:
return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);
case 2:
return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);
case 3:
default:
return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);
}
};
var parsePathForBorderDoubleOuter = function(curves, borderSide) {
switch (borderSide) {
case 0:
return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);
case 1:
return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);
case 2:
return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);
case 3:
default:
return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);
}
};
var parsePathForBorderDoubleInner = function(curves, borderSide) {
switch (borderSide) {
case 0:
return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);
case 1:
return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);
case 2:
return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);
case 3:
default:
return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);
}
};
var parsePathForBorderStroke = function(curves, borderSide) {
switch (borderSide) {
case 0:
return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);
case 1:
return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);
case 2:
return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);
case 3:
default:
return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);
}
};
var createStrokePathFromCurves = function(outer1, outer2) {
var path = [];
if (isBezierCurve(outer1)) {
path.push(outer1.subdivide(0.5, false));
} else {
path.push(outer1);
}
if (isBezierCurve(outer2)) {
path.push(outer2.subdivide(0.5, true));
} else {
path.push(outer2);
}
return path;
};
var createPathFromCurves = function(outer1, inner1, outer2, inner2) {
var path = [];
if (isBezierCurve(outer1)) {
path.push(outer1.subdivide(0.5, false));
} else {
path.push(outer1);
}
if (isBezierCurve(outer2)) {
path.push(outer2.subdivide(0.5, true));
} else {
path.push(outer2);
}
if (isBezierCurve(inner2)) {
path.push(inner2.subdivide(0.5, true).reverse());
} else {
path.push(inner2);
}
if (isBezierCurve(inner1)) {
path.push(inner1.subdivide(0.5, false).reverse());
} else {
path.push(inner1);
}
return path;
};
var paddingBox = function(element) {
var bounds = element.bounds;
var styles = element.styles;
return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));
};
var contentBox = function(element) {
var styles = element.styles;
var bounds = element.bounds;
var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, bounds.width);
var paddingRight2 = getAbsoluteValue(styles.paddingRight, bounds.width);
var paddingTop2 = getAbsoluteValue(styles.paddingTop, bounds.width);
var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, bounds.width);
return bounds.add(paddingLeft2 + styles.borderLeftWidth, paddingTop2 + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft2 + paddingRight2), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop2 + paddingBottom2));
};
var calculateBackgroundPositioningArea = function(backgroundOrigin2, element) {
if (backgroundOrigin2 === 0) {
return element.bounds;
}
if (backgroundOrigin2 === 2) {
return contentBox(element);
}
return paddingBox(element);
};
var calculateBackgroundPaintingArea = function(backgroundClip2, element) {
if (backgroundClip2 === 0) {
return element.bounds;
}
if (backgroundClip2 === 2) {
return contentBox(element);
}
return paddingBox(element);
};
var calculateBackgroundRendering = function(container, index2, intrinsicSize) {
var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index2), container);
var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index2), container);
var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index2), intrinsicSize, backgroundPositioningArea);
var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];
var position2 = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index2), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);
var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index2), position2, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);
var offsetX = Math.round(backgroundPositioningArea.left + position2[0]);
var offsetY = Math.round(backgroundPositioningArea.top + position2[1]);
return [path, offsetX, offsetY, sizeWidth, sizeHeight];
};
var isAuto = function(token) {
return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;
};
var hasIntrinsicValue = function(value) {
return typeof value === "number";
};
var calculateBackgroundSize = function(size, _a2, bounds) {
var intrinsicWidth = _a2[0], intrinsicHeight = _a2[1], intrinsicProportion = _a2[2];
var first = size[0], second = size[1];
if (!first) {
return [0, 0];
}
if (isLengthPercentage(first) && second && isLengthPercentage(second)) {
return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];
}
var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);
if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {
if (hasIntrinsicValue(intrinsicProportion)) {
var targetRatio = bounds.width / bounds.height;
return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER) ? [bounds.width, bounds.width / intrinsicProportion] : [bounds.height * intrinsicProportion, bounds.height];
}
return [bounds.width, bounds.height];
}
var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);
var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);
var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;
if (isAuto(first) && (!second || isAuto(second))) {
if (hasIntrinsicWidth && hasIntrinsicHeight) {
return [intrinsicWidth, intrinsicHeight];
}
if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {
return [bounds.width, bounds.height];
}
if (hasIntrinsicDimensions && hasIntrinsicProportion) {
var width_1 = hasIntrinsicWidth ? intrinsicWidth : intrinsicHeight * intrinsicProportion;
var height_1 = hasIntrinsicHeight ? intrinsicHeight : intrinsicWidth / intrinsicProportion;
return [width_1, height_1];
}
var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;
var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;
return [width_2, height_2];
}
if (hasIntrinsicProportion) {
var width_3 = 0;
var height_3 = 0;
if (isLengthPercentage(first)) {
width_3 = getAbsoluteValue(first, bounds.width);
} else if (isLengthPercentage(second)) {
height_3 = getAbsoluteValue(second, bounds.height);
}
if (isAuto(first)) {
width_3 = height_3 * intrinsicProportion;
} else if (!second || isAuto(second)) {
height_3 = width_3 / intrinsicProportion;
}
return [width_3, height_3];
}
var width = null;
var height = null;
if (isLengthPercentage(first)) {
width = getAbsoluteValue(first, bounds.width);
} else if (second && isLengthPercentage(second)) {
height = getAbsoluteValue(second, bounds.height);
}
if (width !== null && (!second || isAuto(second))) {
height = hasIntrinsicWidth && hasIntrinsicHeight ? width / intrinsicWidth * intrinsicHeight : bounds.height;
}
if (height !== null && isAuto(first)) {
width = hasIntrinsicWidth && hasIntrinsicHeight ? height / intrinsicHeight * intrinsicWidth : bounds.width;
}
if (width !== null && height !== null) {
return [width, height];
}
throw new Error("Unable to calculate background-size for element");
};
var getBackgroundValueForIndex = function(values2, index2) {
var value = values2[index2];
if (typeof value === "undefined") {
return values2[0];
}
return value;
};
var calculateBackgroundRepeatPath = function(repeat, _a2, _b2, backgroundPositioningArea, backgroundPaintingArea) {
var x2 = _a2[0], y2 = _a2[1];
var width = _b2[0], height = _b2[1];
switch (repeat) {
case 2:
return [
new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y2)),
new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y2)),
new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y2)),
new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y2))
];
case 3:
return [
new Vector(Math.round(backgroundPositioningArea.left + x2), Math.round(backgroundPositioningArea.top)),
new Vector(Math.round(backgroundPositioningArea.left + x2 + width), Math.round(backgroundPositioningArea.top)),
new Vector(Math.round(backgroundPositioningArea.left + x2 + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),
new Vector(Math.round(backgroundPositioningArea.left + x2), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))
];
case 1:
return [
new Vector(Math.round(backgroundPositioningArea.left + x2), Math.round(backgroundPositioningArea.top + y2)),
new Vector(Math.round(backgroundPositioningArea.left + x2 + width), Math.round(backgroundPositioningArea.top + y2)),
new Vector(Math.round(backgroundPositioningArea.left + x2 + width), Math.round(backgroundPositioningArea.top + y2 + height)),
new Vector(Math.round(backgroundPositioningArea.left + x2), Math.round(backgroundPositioningArea.top + y2 + height))
];
default:
return [
new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),
new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),
new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),
new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))
];
}
};
var SMALL_IMAGE = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
var SAMPLE_TEXT = "Hidden Text";
var FontMetrics = (
/** @class */
function() {
function FontMetrics2(document2) {
this._data = {};
this._document = document2;
}
FontMetrics2.prototype.parseMetrics = function(fontFamily2, fontSize2) {
var container = this._document.createElement("div");
var img = this._document.createElement("img");
var span = this._document.createElement("span");
var body = this._document.body;
container.style.visibility = "hidden";
container.style.fontFamily = fontFamily2;
container.style.fontSize = fontSize2;
container.style.margin = "0";
container.style.padding = "0";
container.style.whiteSpace = "nowrap";
body.appendChild(container);
img.src = SMALL_IMAGE;
img.width = 1;
img.height = 1;
img.style.margin = "0";
img.style.padding = "0";
img.style.verticalAlign = "baseline";
span.style.fontFamily = fontFamily2;
span.style.fontSize = fontSize2;
span.style.margin = "0";
span.style.padding = "0";
span.appendChild(this._document.createTextNode(SAMPLE_TEXT));
container.appendChild(span);
container.appendChild(img);
var baseline = img.offsetTop - span.offsetTop + 2;
container.removeChild(span);
container.appendChild(this._document.createTextNode(SAMPLE_TEXT));
container.style.lineHeight = "normal";
img.style.verticalAlign = "super";
var middle = img.offsetTop - container.offsetTop + 2;
body.removeChild(container);
return { baseline, middle };
};
FontMetrics2.prototype.getMetrics = function(fontFamily2, fontSize2) {
var key = fontFamily2 + " " + fontSize2;
if (typeof this._data[key] === "undefined") {
this._data[key] = this.parseMetrics(fontFamily2, fontSize2);
}
return this._data[key];
};
return FontMetrics2;
}()
);
var Renderer = (
/** @class */
/* @__PURE__ */ function() {
function Renderer2(context, options) {
this.context = context;
this.options = options;
}
return Renderer2;
}()
);
var MASK_OFFSET = 1e4;
var CanvasRenderer = (
/** @class */
function(_super) {
__extends(CanvasRenderer2, _super);
function CanvasRenderer2(context, options) {
var _this = _super.call(this, context, options) || this;
_this._activeEffects = [];
_this.canvas = options.canvas ? options.canvas : document.createElement("canvas");
_this.ctx = _this.canvas.getContext("2d");
if (!options.canvas) {
_this.canvas.width = Math.floor(options.width * options.scale);
_this.canvas.height = Math.floor(options.height * options.scale);
_this.canvas.style.width = options.width + "px";
_this.canvas.style.height = options.height + "px";
}
_this.fontMetrics = new FontMetrics(document);
_this.ctx.scale(_this.options.scale, _this.options.scale);
_this.ctx.translate(-options.x, -options.y);
_this.ctx.textBaseline = "bottom";
_this._activeEffects = [];
_this.context.logger.debug("Canvas renderer initialized (" + options.width + "x" + options.height + ") with scale " + options.scale);
return _this;
}
CanvasRenderer2.prototype.applyEffects = function(effects) {
var _this = this;
while (this._activeEffects.length) {
this.popEffect();
}
effects.forEach(function(effect) {
return _this.applyEffect(effect);
});
};
CanvasRenderer2.prototype.applyEffect = function(effect) {
this.ctx.save();
if (isOpacityEffect(effect)) {
this.ctx.globalAlpha = effect.opacity;
}
if (isTransformEffect(effect)) {
this.ctx.translate(effect.offsetX, effect.offsetY);
this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);
this.ctx.translate(-effect.offsetX, -effect.offsetY);
}
if (isClipEffect(effect)) {
this.path(effect.path);
this.ctx.clip();
}
this._activeEffects.push(effect);
};
CanvasRenderer2.prototype.popEffect = function() {
this._activeEffects.pop();
this.ctx.restore();
};
CanvasRenderer2.prototype.renderStack = function(stack) {
return __awaiter(this, void 0, void 0, function() {
var styles;
return __generator(this, function(_a2) {
switch (_a2.label) {
case 0:
styles = stack.element.container.styles;
if (!styles.isVisible()) return [3, 2];
return [4, this.renderStackContent(stack)];
case 1:
_a2.sent();
_a2.label = 2;
case 2:
return [
2
/*return*/
];
}
});
});
};
CanvasRenderer2.prototype.renderNode = function(paint) {
return __awaiter(this, void 0, void 0, function() {
return __generator(this, function(_a2) {
switch (_a2.label) {
case 0:
if (contains(
paint.container.flags,
16
/* DEBUG_RENDER */
)) {
debugger;
}
if (!paint.container.styles.isVisible()) return [3, 3];
return [4, this.renderNodeBackgroundAndBorders(paint)];
case 1:
_a2.sent();
return [4, this.renderNodeContent(paint)];
case 2:
_a2.sent();
_a2.label = 3;
case 3:
return [
2
/*return*/
];
}
});
});
};
CanvasRenderer2.prototype.renderTextWithLetterSpacing = function(text2, letterSpacing2, baseline) {
var _this = this;
if (letterSpacing2 === 0) {
this.ctx.fillText(text2.text, text2.bounds.left, text2.bounds.top + baseline);
} else {
var letters = segmentGraphemes(text2.text);
letters.reduce(function(left, letter) {
_this.ctx.fillText(letter, left, text2.bounds.top + baseline);
return left + _this.ctx.measureText(letter).width;
}, text2.bounds.left);
}
};
CanvasRenderer2.prototype.createFontStyle = function(styles) {
var fontVariant2 = styles.fontVariant.filter(function(variant) {
return variant === "normal" || variant === "small-caps";
}).join("");
var fontFamily2 = fixIOSSystemFonts(styles.fontFamily).join(", ");
var fontSize2 = isDimensionToken(styles.fontSize) ? "" + styles.fontSize.number + styles.fontSize.unit : styles.fontSize.number + "px";
return [
[styles.fontStyle, fontVariant2, styles.fontWeight, fontSize2, fontFamily2].join(" "),
fontFamily2,
fontSize2
];
};
CanvasRenderer2.prototype.renderTextNode = function(text2, styles) {
return __awaiter(this, void 0, void 0, function() {
var _a2, font, fontFamily2, fontSize2, _b2, baseline, middle, paintOrder2;
var _this = this;
return __generator(this, function(_c) {
_a2 = this.createFontStyle(styles), font = _a2[0], fontFamily2 = _a2[1], fontSize2 = _a2[2];
this.ctx.font = font;
this.ctx.direction = styles.direction === 1 ? "rtl" : "ltr";
this.ctx.textAlign = "left";
this.ctx.textBaseline = "alphabetic";
_b2 = this.fontMetrics.getMetrics(fontFamily2, fontSize2), baseline = _b2.baseline, middle = _b2.middle;
paintOrder2 = styles.paintOrder;
text2.textBounds.forEach(function(text3) {
paintOrder2.forEach(function(paintOrderLayer) {
switch (paintOrderLayer) {
case 0:
_this.ctx.fillStyle = asString(styles.color);
_this.renderTextWithLetterSpacing(text3, styles.letterSpacing, baseline);
var textShadows = styles.textShadow;
if (textShadows.length && text3.text.trim().length) {
textShadows.slice(0).reverse().forEach(function(textShadow2) {
_this.ctx.shadowColor = asString(textShadow2.color);
_this.ctx.shadowOffsetX = textShadow2.offsetX.number * _this.options.scale;
_this.ctx.shadowOffsetY = textShadow2.offsetY.number * _this.options.scale;
_this.ctx.shadowBlur = textShadow2.blur.number;
_this.renderTextWithLetterSpacing(text3, styles.letterSpacing, baseline);
});
_this.ctx.shadowColor = "";
_this.ctx.shadowOffsetX = 0;
_this.ctx.shadowOffsetY = 0;
_this.ctx.shadowBlur = 0;
}
if (styles.textDecorationLine.length) {
_this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);
styles.textDecorationLine.forEach(function(textDecorationLine2) {
switch (textDecorationLine2) {
case 1:
_this.ctx.fillRect(text3.bounds.left, Math.round(text3.bounds.top + baseline), text3.bounds.width, 1);
break;
case 2:
_this.ctx.fillRect(text3.bounds.left, Math.round(text3.bounds.top), text3.bounds.width, 1);
break;
case 3:
_this.ctx.fillRect(text3.bounds.left, Math.ceil(text3.bounds.top + middle), text3.bounds.width, 1);
break;
}
});
}
break;
case 1:
if (styles.webkitTextStrokeWidth && text3.text.trim().length) {
_this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);
_this.ctx.lineWidth = styles.webkitTextStrokeWidth;
_this.ctx.lineJoin = !!window.chrome ? "miter" : "round";
_this.ctx.strokeText(text3.text, text3.bounds.left, text3.bounds.top + baseline);
}
_this.ctx.strokeStyle = "";
_this.ctx.lineWidth = 0;
_this.ctx.lineJoin = "miter";
break;
}
});
});
return [
2
/*return*/
];
});
});
};
CanvasRenderer2.prototype.renderReplacedElement = function(container, curves, image2) {
if (image2 && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {
var box = contentBox(container);
var path = calculatePaddingBoxPath(curves);
this.path(path);
this.ctx.save();
this.ctx.clip();
this.ctx.drawImage(image2, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);
this.ctx.restore();
}
};
CanvasRenderer2.prototype.renderNodeContent = function(paint) {
return __awaiter(this, void 0, void 0, function() {
var container, curves, styles, _i, _a2, child, image2, image2, iframeRenderer, canvas, size, _b2, fontFamily2, fontSize2, baseline, bounds, x2, textBounds, img, image2, url, fontFamily2, bounds;
return __generator(this, function(_c) {
switch (_c.label) {
case 0:
this.applyEffects(paint.getEffects(
4
/* CONTENT */
));
container = paint.container;
curves = paint.curves;
styles = container.styles;
_i = 0, _a2 = container.textNodes;
_c.label = 1;
case 1:
if (!(_i < _a2.length)) return [3, 4];
child = _a2[_i];
return [4, this.renderTextNode(child, styles)];
case 2:
_c.sent();
_c.label = 3;
case 3:
_i++;
return [3, 1];
case 4:
if (!(container instanceof ImageElementContainer)) return [3, 8];
_c.label = 5;
case 5:
_c.trys.push([5, 7, , 8]);
return [4, this.context.cache.match(container.src)];
case 6:
image2 = _c.sent();
this.renderReplacedElement(container, curves, image2);
return [3, 8];
case 7:
_c.sent();
this.context.logger.error("Error loading image " + container.src);
return [3, 8];
case 8:
if (container instanceof CanvasElementContainer) {
this.renderReplacedElement(container, curves, container.canvas);
}
if (!(container instanceof SVGElementContainer)) return [3, 12];
_c.label = 9;
case 9:
_c.trys.push([9, 11, , 12]);
return [4, this.context.cache.match(container.svg)];
case 10:
image2 = _c.sent();
this.renderReplacedElement(container, curves, image2);
return [3, 12];
case 11:
_c.sent();
this.context.logger.error("Error loading svg " + container.svg.substring(0, 255));
return [3, 12];
case 12:
if (!(container instanceof IFrameElementContainer && container.tree)) return [3, 14];
iframeRenderer = new CanvasRenderer2(this.context, {
scale: this.options.scale,
backgroundColor: container.backgroundColor,
x: 0,
y: 0,
width: container.width,
height: container.height
});
return [4, iframeRenderer.render(container.tree)];
case 13:
canvas = _c.sent();
if (container.width && container.height) {
this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);
}
_c.label = 14;
case 14:
if (container instanceof InputElementContainer) {
size = Math.min(container.bounds.width, container.bounds.height);
if (container.type === CHECKBOX) {
if (container.checked) {
this.ctx.save();
this.path([
new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),
new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),
new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),
new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),
new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),
new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),
new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)
]);
this.ctx.fillStyle = asString(INPUT_COLOR);
this.ctx.fill();
this.ctx.restore();
}
} else if (container.type === RADIO) {
if (container.checked) {
this.ctx.save();
this.ctx.beginPath();
this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);
this.ctx.fillStyle = asString(INPUT_COLOR);
this.ctx.fill();
this.ctx.restore();
}
}
}
if (isTextInputElement(container) && container.value.length) {
_b2 = this.createFontStyle(styles), fontFamily2 = _b2[0], fontSize2 = _b2[1];
baseline = this.fontMetrics.getMetrics(fontFamily2, fontSize2).baseline;
this.ctx.font = fontFamily2;
this.ctx.fillStyle = asString(styles.color);
this.ctx.textBaseline = "alphabetic";
this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);
bounds = contentBox(container);
x2 = 0;
switch (container.styles.textAlign) {
case 1:
x2 += bounds.width / 2;
break;
case 2:
x2 += bounds.width;
break;
}
textBounds = bounds.add(x2, 0, 0, -bounds.height / 2 + 1);
this.ctx.save();
this.path([
new Vector(bounds.left, bounds.top),
new Vector(bounds.left + bounds.width, bounds.top),
new Vector(bounds.left + bounds.width, bounds.top + bounds.height),
new Vector(bounds.left, bounds.top + bounds.height)
]);
this.ctx.clip();
this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);
this.ctx.restore();
this.ctx.textBaseline = "alphabetic";
this.ctx.textAlign = "left";
}
if (!contains(
container.styles.display,
2048
/* LIST_ITEM */
)) return [3, 20];
if (!(container.styles.listStyleImage !== null)) return [3, 19];
img = container.styles.listStyleImage;
if (!(img.type === 0)) return [3, 18];
image2 = void 0;
url = img.url;
_c.label = 15;
case 15:
_c.trys.push([15, 17, , 18]);
return [4, this.context.cache.match(url)];
case 16:
image2 = _c.sent();
this.ctx.drawImage(image2, container.bounds.left - (image2.width + 10), container.bounds.top);
return [3, 18];
case 17:
_c.sent();
this.context.logger.error("Error loading list-style-image " + url);
return [3, 18];
case 18:
return [3, 20];
case 19:
if (paint.listValue && container.styles.listStyleType !== -1) {
fontFamily2 = this.createFontStyle(styles)[0];
this.ctx.font = fontFamily2;
this.ctx.fillStyle = asString(styles.color);
this.ctx.textBaseline = "middle";
this.ctx.textAlign = "right";
bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);
this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);
this.ctx.textBaseline = "bottom";
this.ctx.textAlign = "left";
}
_c.label = 20;
case 20:
return [
2
/*return*/
];
}
});
});
};
CanvasRenderer2.prototype.renderStackContent = function(stack) {
return __awaiter(this, void 0, void 0, function() {
var _i, _a2, child, _b2, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;
return __generator(this, function(_p) {
switch (_p.label) {
case 0:
if (contains(
stack.element.container.flags,
16
/* DEBUG_RENDER */
)) {
debugger;
}
return [4, this.renderNodeBackgroundAndBorders(stack.element)];
case 1:
_p.sent();
_i = 0, _a2 = stack.negativeZIndex;
_p.label = 2;
case 2:
if (!(_i < _a2.length)) return [3, 5];
child = _a2[_i];
return [4, this.renderStack(child)];
case 3:
_p.sent();
_p.label = 4;
case 4:
_i++;
return [3, 2];
case 5:
return [4, this.renderNodeContent(stack.element)];
case 6:
_p.sent();
_b2 = 0, _c = stack.nonInlineLevel;
_p.label = 7;
case 7:
if (!(_b2 < _c.length)) return [3, 10];
child = _c[_b2];
return [4, this.renderNode(child)];
case 8:
_p.sent();
_p.label = 9;
case 9:
_b2++;
return [3, 7];
case 10:
_d = 0, _e = stack.nonPositionedFloats;
_p.label = 11;
case 11:
if (!(_d < _e.length)) return [3, 14];
child = _e[_d];
return [4, this.renderStack(child)];
case 12:
_p.sent();
_p.label = 13;
case 13:
_d++;
return [3, 11];
case 14:
_f = 0, _g = stack.nonPositionedInlineLevel;
_p.label = 15;
case 15:
if (!(_f < _g.length)) return [3, 18];
child = _g[_f];
return [4, this.renderStack(child)];
case 16:
_p.sent();
_p.label = 17;
case 17:
_f++;
return [3, 15];
case 18:
_h = 0, _j = stack.inlineLevel;
_p.label = 19;
case 19:
if (!(_h < _j.length)) return [3, 22];
child = _j[_h];
return [4, this.renderNode(child)];
case 20:
_p.sent();
_p.label = 21;
case 21:
_h++;
return [3, 19];
case 22:
_k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;
_p.label = 23;
case 23:
if (!(_k < _l.length)) return [3, 26];
child = _l[_k];
return [4, this.renderStack(child)];
case 24:
_p.sent();
_p.label = 25;
case 25:
_k++;
return [3, 23];
case 26:
_m = 0, _o = stack.positiveZIndex;
_p.label = 27;
case 27:
if (!(_m < _o.length)) return [3, 30];
child = _o[_m];
return [4, this.renderStack(child)];
case 28:
_p.sent();
_p.label = 29;
case 29:
_m++;
return [3, 27];
case 30:
return [
2
/*return*/
];
}
});
});
};
CanvasRenderer2.prototype.mask = function(paths) {
this.ctx.beginPath();
this.ctx.moveTo(0, 0);
this.ctx.lineTo(this.canvas.width, 0);
this.ctx.lineTo(this.canvas.width, this.canvas.height);
this.ctx.lineTo(0, this.canvas.height);
this.ctx.lineTo(0, 0);
this.formatPath(paths.slice(0).reverse());
this.ctx.closePath();
};
CanvasRenderer2.prototype.path = function(paths) {
this.ctx.beginPath();
this.formatPath(paths);
this.ctx.closePath();
};
CanvasRenderer2.prototype.formatPath = function(paths) {
var _this = this;
paths.forEach(function(point, index2) {
var start2 = isBezierCurve(point) ? point.start : point;
if (index2 === 0) {
_this.ctx.moveTo(start2.x, start2.y);
} else {
_this.ctx.lineTo(start2.x, start2.y);
}
if (isBezierCurve(point)) {
_this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);
}
});
};
CanvasRenderer2.prototype.renderRepeat = function(path, pattern, offsetX, offsetY) {
this.path(path);
this.ctx.fillStyle = pattern;
this.ctx.translate(offsetX, offsetY);
this.ctx.fill();
this.ctx.translate(-offsetX, -offsetY);
};
CanvasRenderer2.prototype.resizeImage = function(image2, width, height) {
var _a2;
if (image2.width === width && image2.height === height) {
return image2;
}
var ownerDocument = (_a2 = this.canvas.ownerDocument) !== null && _a2 !== void 0 ? _a2 : document;
var canvas = ownerDocument.createElement("canvas");
canvas.width = Math.max(1, width);
canvas.height = Math.max(1, height);
var ctx = canvas.getContext("2d");
ctx.drawImage(image2, 0, 0, image2.width, image2.height, 0, 0, width, height);
return canvas;
};
CanvasRenderer2.prototype.renderBackgroundImage = function(container) {
return __awaiter(this, void 0, void 0, function() {
var index2, _loop_1, this_1, _i, _a2, backgroundImage2;
return __generator(this, function(_b2) {
switch (_b2.label) {
case 0:
index2 = container.styles.backgroundImage.length - 1;
_loop_1 = function(backgroundImage3) {
var image2, url, _c, path, x2, y2, width, height, pattern, _d, path, x2, y2, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position2, x2, y2, _g, rx, ry, radialGradient_1, midX, midY, f2, invF;
return __generator(this, function(_h) {
switch (_h.label) {
case 0:
if (!(backgroundImage3.type === 0)) return [3, 5];
image2 = void 0;
url = backgroundImage3.url;
_h.label = 1;
case 1:
_h.trys.push([1, 3, , 4]);
return [4, this_1.context.cache.match(url)];
case 2:
image2 = _h.sent();
return [3, 4];
case 3:
_h.sent();
this_1.context.logger.error("Error loading background-image " + url);
return [3, 4];
case 4:
if (image2) {
_c = calculateBackgroundRendering(container, index2, [
image2.width,
image2.height,
image2.width / image2.height
]), path = _c[0], x2 = _c[1], y2 = _c[2], width = _c[3], height = _c[4];
pattern = this_1.ctx.createPattern(this_1.resizeImage(image2, width, height), "repeat");
this_1.renderRepeat(path, pattern, x2, y2);
}
return [3, 6];
case 5:
if (isLinearGradient(backgroundImage3)) {
_d = calculateBackgroundRendering(container, index2, [null, null, null]), path = _d[0], x2 = _d[1], y2 = _d[2], width = _d[3], height = _d[4];
_e = calculateGradientDirection(backgroundImage3.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];
canvas = document.createElement("canvas");
canvas.width = width;
canvas.height = height;
ctx = canvas.getContext("2d");
gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);
processColorStops(backgroundImage3.stops, lineLength).forEach(function(colorStop) {
return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
});
ctx.fillStyle = gradient_1;
ctx.fillRect(0, 0, width, height);
if (width > 0 && height > 0) {
pattern = this_1.ctx.createPattern(canvas, "repeat");
this_1.renderRepeat(path, pattern, x2, y2);
}
} else if (isRadialGradient(backgroundImage3)) {
_f = calculateBackgroundRendering(container, index2, [
null,
null,
null
]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];
position2 = backgroundImage3.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage3.position;
x2 = getAbsoluteValue(position2[0], width);
y2 = getAbsoluteValue(position2[position2.length - 1], height);
_g = calculateRadius(backgroundImage3, x2, y2, width, height), rx = _g[0], ry = _g[1];
if (rx > 0 && ry > 0) {
radialGradient_1 = this_1.ctx.createRadialGradient(left + x2, top_1 + y2, 0, left + x2, top_1 + y2, rx);
processColorStops(backgroundImage3.stops, rx * 2).forEach(function(colorStop) {
return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
});
this_1.path(path);
this_1.ctx.fillStyle = radialGradient_1;
if (rx !== ry) {
midX = container.bounds.left + 0.5 * container.bounds.width;
midY = container.bounds.top + 0.5 * container.bounds.height;
f2 = ry / rx;
invF = 1 / f2;
this_1.ctx.save();
this_1.ctx.translate(midX, midY);
this_1.ctx.transform(1, 0, 0, f2, 0, 0);
this_1.ctx.translate(-midX, -midY);
this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);
this_1.ctx.restore();
} else {
this_1.ctx.fill();
}
}
}
_h.label = 6;
case 6:
index2--;
return [
2
/*return*/
];
}
});
};
this_1 = this;
_i = 0, _a2 = container.styles.backgroundImage.slice(0).reverse();
_b2.label = 1;
case 1:
if (!(_i < _a2.length)) return [3, 4];
backgroundImage2 = _a2[_i];
return [5, _loop_1(backgroundImage2)];
case 2:
_b2.sent();
_b2.label = 3;
case 3:
_i++;
return [3, 1];
case 4:
return [
2
/*return*/
];
}
});
});
};
CanvasRenderer2.prototype.renderSolidBorder = function(color2, side, curvePoints) {
return __awaiter(this, void 0, void 0, function() {
return __generator(this, function(_a2) {
this.path(parsePathForBorder(curvePoints, side));
this.ctx.fillStyle = asString(color2);
this.ctx.fill();
return [
2
/*return*/
];
});
});
};
CanvasRenderer2.prototype.renderDoubleBorder = function(color2, width, side, curvePoints) {
return __awaiter(this, void 0, void 0, function() {
var outerPaths, innerPaths;
return __generator(this, function(_a2) {
switch (_a2.label) {
case 0:
if (!(width < 3)) return [3, 2];
return [4, this.renderSolidBorder(color2, side, curvePoints)];
case 1:
_a2.sent();
return [
2
/*return*/
];
case 2:
outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);
this.path(outerPaths);
this.ctx.fillStyle = asString(color2);
this.ctx.fill();
innerPaths = parsePathForBorderDoubleInner(curvePoints, side);
this.path(innerPaths);
this.ctx.fill();
return [
2
/*return*/
];
}
});
});
};
CanvasRenderer2.prototype.renderNodeBackgroundAndBorders = function(paint) {
return __awaiter(this, void 0, void 0, function() {
var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;
var _this = this;
return __generator(this, function(_a2) {
switch (_a2.label) {
case 0:
this.applyEffects(paint.getEffects(
2
/* BACKGROUND_BORDERS */
));
styles = paint.container.styles;
hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;
borders = [
{ style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },
{ style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },
{ style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },
{ style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }
];
backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);
if (!(hasBackground || styles.boxShadow.length)) return [3, 2];
this.ctx.save();
this.path(backgroundPaintingArea);
this.ctx.clip();
if (!isTransparent(styles.backgroundColor)) {
this.ctx.fillStyle = asString(styles.backgroundColor);
this.ctx.fill();
}
return [4, this.renderBackgroundImage(paint.container)];
case 1:
_a2.sent();
this.ctx.restore();
styles.boxShadow.slice(0).reverse().forEach(function(shadow) {
_this.ctx.save();
var borderBoxArea = calculateBorderBoxPath(paint.curves);
var maskOffset = shadow.inset ? 0 : MASK_OFFSET;
var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));
if (shadow.inset) {
_this.path(borderBoxArea);
_this.ctx.clip();
_this.mask(shadowPaintingArea);
} else {
_this.mask(borderBoxArea);
_this.ctx.clip();
_this.path(shadowPaintingArea);
}
_this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;
_this.ctx.shadowOffsetY = shadow.offsetY.number;
_this.ctx.shadowColor = asString(shadow.color);
_this.ctx.shadowBlur = shadow.blur.number;
_this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : "rgba(0,0,0,1)";
_this.ctx.fill();
_this.ctx.restore();
});
_a2.label = 2;
case 2:
side = 0;
_i = 0, borders_1 = borders;
_a2.label = 3;
case 3:
if (!(_i < borders_1.length)) return [3, 13];
border = borders_1[_i];
if (!(border.style !== 0 && !isTransparent(border.color) && border.width > 0)) return [3, 11];
if (!(border.style === 2)) return [3, 5];
return [4, this.renderDashedDottedBorder(
border.color,
border.width,
side,
paint.curves,
2
/* DASHED */
)];
case 4:
_a2.sent();
return [3, 11];
case 5:
if (!(border.style === 3)) return [3, 7];
return [4, this.renderDashedDottedBorder(
border.color,
border.width,
side,
paint.curves,
3
/* DOTTED */
)];
case 6:
_a2.sent();
return [3, 11];
case 7:
if (!(border.style === 4)) return [3, 9];
return [4, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];
case 8:
_a2.sent();
return [3, 11];
case 9:
return [4, this.renderSolidBorder(border.color, side, paint.curves)];
case 10:
_a2.sent();
_a2.label = 11;
case 11:
side++;
_a2.label = 12;
case 12:
_i++;
return [3, 3];
case 13:
return [
2
/*return*/
];
}
});
});
};
CanvasRenderer2.prototype.renderDashedDottedBorder = function(color2, width, side, curvePoints, style) {
return __awaiter(this, void 0, void 0, function() {
var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;
return __generator(this, function(_a2) {
this.ctx.save();
strokePaths = parsePathForBorderStroke(curvePoints, side);
boxPaths = parsePathForBorder(curvePoints, side);
if (style === 2) {
this.path(boxPaths);
this.ctx.clip();
}
if (isBezierCurve(boxPaths[0])) {
startX = boxPaths[0].start.x;
startY = boxPaths[0].start.y;
} else {
startX = boxPaths[0].x;
startY = boxPaths[0].y;
}
if (isBezierCurve(boxPaths[1])) {
endX = boxPaths[1].end.x;
endY = boxPaths[1].end.y;
} else {
endX = boxPaths[1].x;
endY = boxPaths[1].y;
}
if (side === 0 || side === 2) {
length = Math.abs(startX - endX);
} else {
length = Math.abs(startY - endY);
}
this.ctx.beginPath();
if (style === 3) {
this.formatPath(strokePaths);
} else {
this.formatPath(boxPaths.slice(0, 2));
}
dashLength = width < 3 ? width * 3 : width * 2;
spaceLength = width < 3 ? width * 2 : width;
if (style === 3) {
dashLength = width;
spaceLength = width;
}
useLineDash = true;
if (length <= dashLength * 2) {
useLineDash = false;
} else if (length <= dashLength * 2 + spaceLength) {
multiplier = length / (2 * dashLength + spaceLength);
dashLength *= multiplier;
spaceLength *= multiplier;
} else {
numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));
minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);
maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;
spaceLength = maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace) ? minSpace : maxSpace;
}
if (useLineDash) {
if (style === 3) {
this.ctx.setLineDash([0, dashLength + spaceLength]);
} else {
this.ctx.setLineDash([dashLength, spaceLength]);
}
}
if (style === 3) {
this.ctx.lineCap = "round";
this.ctx.lineWidth = width;
} else {
this.ctx.lineWidth = width * 2 + 1.1;
}
this.ctx.strokeStyle = asString(color2);
this.ctx.stroke();
this.ctx.setLineDash([]);
if (style === 2) {
if (isBezierCurve(boxPaths[0])) {
path1 = boxPaths[3];
path2 = boxPaths[0];
this.ctx.beginPath();
this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
this.ctx.stroke();
}
if (isBezierCurve(boxPaths[1])) {
path1 = boxPaths[1];
path2 = boxPaths[2];
this.ctx.beginPath();
this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
this.ctx.stroke();
}
}
this.ctx.restore();
return [
2
/*return*/
];
});
});
};
CanvasRenderer2.prototype.render = function(element) {
return __awaiter(this, void 0, void 0, function() {
var stack;
return __generator(this, function(_a2) {
switch (_a2.label) {
case 0:
if (this.options.backgroundColor) {
this.ctx.fillStyle = asString(this.options.backgroundColor);
this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);
}
stack = parseStackingContexts(element);
return [4, this.renderStack(stack)];
case 1:
_a2.sent();
this.applyEffects([]);
return [2, this.canvas];
}
});
});
};
return CanvasRenderer2;
}(Renderer)
);
var isTextInputElement = function(container) {
if (container instanceof TextareaElementContainer) {
return true;
} else if (container instanceof SelectElementContainer) {
return true;
} else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {
return true;
}
return false;
};
var calculateBackgroundCurvedPaintingArea = function(clip, curves) {
switch (clip) {
case 0:
return calculateBorderBoxPath(curves);
case 2:
return calculateContentBoxPath(curves);
case 1:
default:
return calculatePaddingBoxPath(curves);
}
};
var canvasTextAlign = function(textAlign2) {
switch (textAlign2) {
case 1:
return "center";
case 2:
return "right";
case 0:
default:
return "left";
}
};
var iOSBrokenFonts = ["-apple-system", "system-ui"];
var fixIOSSystemFonts = function(fontFamilies) {
return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent) ? fontFamilies.filter(function(fontFamily2) {
return iOSBrokenFonts.indexOf(fontFamily2) === -1;
}) : fontFamilies;
};
var ForeignObjectRenderer = (
/** @class */
function(_super) {
__extends(ForeignObjectRenderer2, _super);
function ForeignObjectRenderer2(context, options) {
var _this = _super.call(this, context, options) || this;
_this.canvas = options.canvas ? options.canvas : document.createElement("canvas");
_this.ctx = _this.canvas.getContext("2d");
_this.options = options;
_this.canvas.width = Math.floor(options.width * options.scale);
_this.canvas.height = Math.floor(options.height * options.scale);
_this.canvas.style.width = options.width + "px";
_this.canvas.style.height = options.height + "px";
_this.ctx.scale(_this.options.scale, _this.options.scale);
_this.ctx.translate(-options.x, -options.y);
_this.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale);
return _this;
}
ForeignObjectRenderer2.prototype.render = function(element) {
return __awaiter(this, void 0, void 0, function() {
var svg2, img;
return __generator(this, function(_a2) {
switch (_a2.label) {
case 0:
svg2 = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);
return [4, loadSerializedSVG(svg2)];
case 1:
img = _a2.sent();
if (this.options.backgroundColor) {
this.ctx.fillStyle = asString(this.options.backgroundColor);
this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);
}
this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);
return [2, this.canvas];
}
});
});
};
return ForeignObjectRenderer2;
}(Renderer)
);
var loadSerializedSVG = function(svg2) {
return new Promise(function(resolve2, reject2) {
var img = new Image();
img.onload = function() {
resolve2(img);
};
img.onerror = reject2;
img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg2));
});
};
var Logger = (
/** @class */
function() {
function Logger2(_a2) {
var id = _a2.id, enabled = _a2.enabled;
this.id = id;
this.enabled = enabled;
this.start = Date.now();
}
Logger2.prototype.debug = function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
if (this.enabled) {
if (typeof window !== "undefined" && window.console && typeof console.debug === "function") {
console.debug.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
} else {
this.info.apply(this, args);
}
}
};
Logger2.prototype.getTime = function() {
return Date.now() - this.start;
};
Logger2.prototype.info = function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
if (this.enabled) {
if (typeof window !== "undefined" && window.console && typeof console.info === "function") {
console.info.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
}
}
};
Logger2.prototype.warn = function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
if (this.enabled) {
if (typeof window !== "undefined" && window.console && typeof console.warn === "function") {
console.warn.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
} else {
this.info.apply(this, args);
}
}
};
Logger2.prototype.error = function() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
if (this.enabled) {
if (typeof window !== "undefined" && window.console && typeof console.error === "function") {
console.error.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
} else {
this.info.apply(this, args);
}
}
};
Logger2.instances = {};
return Logger2;
}()
);
var Context = (
/** @class */
function() {
function Context2(options, windowBounds) {
var _a2;
this.windowBounds = windowBounds;
this.instanceName = "#" + Context2.instanceCount++;
this.logger = new Logger({ id: this.instanceName, enabled: options.logging });
this.cache = (_a2 = options.cache) !== null && _a2 !== void 0 ? _a2 : new Cache(this, options);
}
Context2.instanceCount = 1;
return Context2;
}()
);
var html2canvas = function(element, options) {
if (options === void 0) {
options = {};
}
return renderElement(element, options);
};
if (typeof window !== "undefined") {
CacheStorage.setContext(window);
}
var renderElement = function(element, opts) {
return __awaiter(void 0, void 0, void 0, function() {
var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a2, width, height, left, top, backgroundColor2, renderOptions, canvas, renderer, root2, renderer;
var _b2, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t2;
return __generator(this, function(_u) {
switch (_u.label) {
case 0:
if (!element || typeof element !== "object") {
return [2, Promise.reject("Invalid element provided as first argument")];
}
ownerDocument = element.ownerDocument;
if (!ownerDocument) {
throw new Error("Element is not attached to a Document");
}
defaultView = ownerDocument.defaultView;
if (!defaultView) {
throw new Error("Document is not attached to a Window");
}
resourceOptions = {
allowTaint: (_b2 = opts.allowTaint) !== null && _b2 !== void 0 ? _b2 : false,
imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15e3,
proxy: opts.proxy,
useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false
};
contextOptions = __assign({ logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true, cache: opts.cache }, resourceOptions);
windowOptions = {
windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,
windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,
scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,
scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset
};
windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);
context = new Context(contextOptions, windowBounds);
foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;
cloneOptions = {
allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,
onclone: opts.onclone,
ignoreElements: opts.ignoreElements,
inlineImages: foreignObjectRendering,
copyStyles: foreignObjectRendering
};
context.logger.debug("Starting document clone with size " + windowBounds.width + "x" + windowBounds.height + " scrolled to " + -windowBounds.left + "," + -windowBounds.top);
documentCloner = new DocumentCloner(context, element, cloneOptions);
clonedElement = documentCloner.clonedReferenceElement;
if (!clonedElement) {
return [2, Promise.reject("Unable to find element in cloned iframe")];
}
return [4, documentCloner.toIFrame(ownerDocument, windowBounds)];
case 1:
container = _u.sent();
_a2 = isBodyElement(clonedElement) || isHTMLElement(clonedElement) ? parseDocumentSize(clonedElement.ownerDocument) : parseBounds(context, clonedElement), width = _a2.width, height = _a2.height, left = _a2.left, top = _a2.top;
backgroundColor2 = parseBackgroundColor(context, clonedElement, opts.backgroundColor);
renderOptions = {
canvas: opts.canvas,
backgroundColor: backgroundColor2,
scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,
x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,
y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,
width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),
height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)
};
if (!foreignObjectRendering) return [3, 3];
context.logger.debug("Document cloned, using foreign object rendering");
renderer = new ForeignObjectRenderer(context, renderOptions);
return [4, renderer.render(clonedElement)];
case 2:
canvas = _u.sent();
return [3, 5];
case 3:
context.logger.debug("Document cloned, element located at " + left + "," + top + " with size " + width + "x" + height + " using computed rendering");
context.logger.debug("Starting DOM parsing");
root2 = parseTree(context, clonedElement);
if (backgroundColor2 === root2.styles.backgroundColor) {
root2.styles.backgroundColor = COLORS.TRANSPARENT;
}
context.logger.debug("Starting renderer for element at " + renderOptions.x + "," + renderOptions.y + " with size " + renderOptions.width + "x" + renderOptions.height);
renderer = new CanvasRenderer(context, renderOptions);
return [4, renderer.render(root2)];
case 4:
canvas = _u.sent();
_u.label = 5;
case 5:
if ((_t2 = opts.removeContainer) !== null && _t2 !== void 0 ? _t2 : true) {
if (!DocumentCloner.destroy(container)) {
context.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore");
}
}
context.logger.debug("Finished rendering");
return [2, canvas];
}
});
});
};
var parseBackgroundColor = function(context, element, backgroundColorOverride) {
var ownerDocument = element.ownerDocument;
var documentBackgroundColor = ownerDocument.documentElement ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor) : COLORS.TRANSPARENT;
var bodyBackgroundColor = ownerDocument.body ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor) : COLORS.TRANSPARENT;
var defaultBackgroundColor = typeof backgroundColorOverride === "string" ? parseColor(context, backgroundColorOverride) : backgroundColorOverride === null ? COLORS.TRANSPARENT : 4294967295;
return element === ownerDocument.documentElement ? isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? defaultBackgroundColor : bodyBackgroundColor : documentBackgroundColor : defaultBackgroundColor;
};
const html2canvas_esm = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
default: html2canvas
}, Symbol.toStringTag, { value: "Module" }));
/*! @license DOMPurify 2.5.8 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.5.8/LICENSE */
function _typeof$1(obj) {
"@babel/helpers - typeof";
return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) {
return typeof obj2;
} : function(obj2) {
return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
}, _typeof$1(obj);
}
function _setPrototypeOf(o2, p2) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o3, p3) {
o3.__proto__ = p3;
return o3;
};
return _setPrototypeOf(o2, p2);
}
function _isNativeReflectConstruct() {
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
if (Reflect.construct.sham) return false;
if (typeof Proxy === "function") return true;
try {
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
}));
return true;
} catch (e2) {
return false;
}
}
function _construct(Parent, args, Class) {
if (_isNativeReflectConstruct()) {
_construct = Reflect.construct;
} else {
_construct = function _construct2(Parent2, args2, Class2) {
var a2 = [null];
a2.push.apply(a2, args2);
var Constructor = Function.bind.apply(Parent2, a2);
var instance = new Constructor();
if (Class2) _setPrototypeOf(instance, Class2.prototype);
return instance;
};
}
return _construct.apply(null, arguments);
}
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _unsupportedIterableToArray(o2, minLen) {
if (!o2) return;
if (typeof o2 === "string") return _arrayLikeToArray(o2, minLen);
var n2 = Object.prototype.toString.call(o2).slice(8, -1);
if (n2 === "Object" && o2.constructor) n2 = o2.constructor.name;
if (n2 === "Map" || n2 === "Set") return Array.from(o2);
if (n2 === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n2)) return _arrayLikeToArray(o2, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i2 = 0, arr2 = new Array(len); i2 < len; i2++) arr2[i2] = arr[i2];
return arr2;
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var hasOwnProperty$1 = Object.hasOwnProperty, setPrototypeOf$2 = Object.setPrototypeOf, isFrozen = Object.isFrozen, getPrototypeOf$2 = Object.getPrototypeOf, getOwnPropertyDescriptor$5 = Object.getOwnPropertyDescriptor;
var freeze = Object.freeze, seal = Object.seal, create$3 = Object.create;
var _ref = typeof Reflect !== "undefined" && Reflect, apply$3 = _ref.apply, construct$1 = _ref.construct;
if (!apply$3) {
apply$3 = function apply2(fun, thisValue, args) {
return fun.apply(thisValue, args);
};
}
if (!freeze) {
freeze = function freeze2(x2) {
return x2;
};
}
if (!seal) {
seal = function seal2(x2) {
return x2;
};
}
if (!construct$1) {
construct$1 = function construct2(Func, args) {
return _construct(Func, _toConsumableArray(args));
};
}
var arrayForEach = unapply(Array.prototype.forEach);
var arrayPop = unapply(Array.prototype.pop);
var arrayPush = unapply(Array.prototype.push);
var stringToLowerCase = unapply(String.prototype.toLowerCase);
var stringToString = unapply(String.prototype.toString);
var stringMatch = unapply(String.prototype.match);
var stringReplace = unapply(String.prototype.replace);
var stringIndexOf$2 = unapply(String.prototype.indexOf);
var stringTrim$1 = unapply(String.prototype.trim);
var regExpTest = unapply(RegExp.prototype.test);
var typeErrorCreate = unconstruct(TypeError);
function unapply(func) {
return function(thisArg) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
return apply$3(func, thisArg, args);
};
}
function unconstruct(func) {
return function() {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return construct$1(func, args);
};
}
function addToSet(set2, array, transformCaseFunc) {
var _transformCaseFunc;
transformCaseFunc = (_transformCaseFunc = transformCaseFunc) !== null && _transformCaseFunc !== void 0 ? _transformCaseFunc : stringToLowerCase;
if (setPrototypeOf$2) {
setPrototypeOf$2(set2, null);
}
var l2 = array.length;
while (l2--) {
var element = array[l2];
if (typeof element === "string") {
var lcElement = transformCaseFunc(element);
if (lcElement !== element) {
if (!isFrozen(array)) {
array[l2] = lcElement;
}
element = lcElement;
}
}
set2[element] = true;
}
return set2;
}
function clone(object) {
var newObject = create$3(null);
var property;
for (property in object) {
if (apply$3(hasOwnProperty$1, object, [property]) === true) {
newObject[property] = object[property];
}
}
return newObject;
}
function lookupGetter(object, prop) {
while (object !== null) {
var desc = getOwnPropertyDescriptor$5(object, prop);
if (desc) {
if (desc.get) {
return unapply(desc.get);
}
if (typeof desc.value === "function") {
return unapply(desc.value);
}
}
object = getPrototypeOf$2(object);
}
function fallbackValue(element) {
console.warn("fallback value for", element);
return null;
}
return fallbackValue;
}
var html$1$1 = freeze(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]);
var svg$1 = freeze(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]);
var svgFilters = freeze(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]);
var svgDisallowed = freeze(["animate", "color-profile", "cursor", "discard", "fedropshadow", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]);
var mathMl$1 = freeze(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover"]);
var mathMlDisallowed = freeze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]);
var text = freeze(["#text"]);
var html$3 = freeze(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "xmlns", "slot"]);
var svg = freeze(["accent-height", "accumulate", "additive", "alignment-baseline", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "targetx", "targety", "transform", "transform-origin", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]);
var mathMl = freeze(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]);
var xml = freeze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]);
var MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm);
var ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
var TMPLIT_EXPR = seal(/\${[\w\W]*}/gm);
var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/);
var ARIA_ATTR = seal(/^aria-[\-\w]+$/);
var IS_ALLOWED_URI = seal(
/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i
// eslint-disable-line no-useless-escape
);
var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
var ATTR_WHITESPACE = seal(
/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g
// eslint-disable-line no-control-regex
);
var DOCTYPE_NAME = seal(/^html$/i);
var CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
var getGlobal = function getGlobal2() {
return typeof window === "undefined" ? null : window;
};
var _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, document2) {
if (_typeof$1(trustedTypes) !== "object" || typeof trustedTypes.createPolicy !== "function") {
return null;
}
var suffix2 = null;
var ATTR_NAME = "data-tt-policy-suffix";
if (document2.currentScript && document2.currentScript.hasAttribute(ATTR_NAME)) {
suffix2 = document2.currentScript.getAttribute(ATTR_NAME);
}
var policyName = "dompurify" + (suffix2 ? "#" + suffix2 : "");
try {
return trustedTypes.createPolicy(policyName, {
createHTML: function createHTML(html2) {
return html2;
},
createScriptURL: function createScriptURL(scriptUrl) {
return scriptUrl;
}
});
} catch (_2) {
console.warn("TrustedTypes policy " + policyName + " could not be created.");
return null;
}
};
function createDOMPurify() {
var window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
var DOMPurify = function DOMPurify2(root2) {
return createDOMPurify(root2);
};
DOMPurify.version = "2.5.8";
DOMPurify.removed = [];
if (!window2 || !window2.document || window2.document.nodeType !== 9) {
DOMPurify.isSupported = false;
return DOMPurify;
}
var originalDocument = window2.document;
var document2 = window2.document;
var DocumentFragment = window2.DocumentFragment, HTMLTemplateElement = window2.HTMLTemplateElement, Node2 = window2.Node, Element2 = window2.Element, NodeFilter = window2.NodeFilter, _window$NamedNodeMap = window2.NamedNodeMap, NamedNodeMap = _window$NamedNodeMap === void 0 ? window2.NamedNodeMap || window2.MozNamedAttrMap : _window$NamedNodeMap, HTMLFormElement = window2.HTMLFormElement, DOMParser2 = window2.DOMParser, trustedTypes = window2.trustedTypes;
var ElementPrototype = Element2.prototype;
var cloneNode = lookupGetter(ElementPrototype, "cloneNode");
var getNextSibling = lookupGetter(ElementPrototype, "nextSibling");
var getChildNodes = lookupGetter(ElementPrototype, "childNodes");
var getParentNode = lookupGetter(ElementPrototype, "parentNode");
if (typeof HTMLTemplateElement === "function") {
var template = document2.createElement("template");
if (template.content && template.content.ownerDocument) {
document2 = template.content.ownerDocument;
}
}
var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);
var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML("") : "";
var _document = document2, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;
var importNode = originalDocument.importNode;
var documentMode = {};
try {
documentMode = clone(document2).documentMode ? document2.documentMode : {};
} catch (_2) {
}
var hooks = {};
DOMPurify.isSupported = typeof getParentNode === "function" && implementation && implementation.createHTMLDocument !== void 0 && documentMode !== 9;
var MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, TMPLIT_EXPR$1 = TMPLIT_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE, CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;
var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;
var ALLOWED_TAGS = null;
var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));
var ALLOWED_ATTR = null;
var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html$3), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));
var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {
tagNameCheck: {
writable: true,
configurable: false,
enumerable: true,
value: null
},
attributeNameCheck: {
writable: true,
configurable: false,
enumerable: true,
value: null
},
allowCustomizedBuiltInElements: {
writable: true,
configurable: false,
enumerable: true,
value: false
}
}));
var FORBID_TAGS = null;
var FORBID_ATTR = null;
var ALLOW_ARIA_ATTR = true;
var ALLOW_DATA_ATTR = true;
var ALLOW_UNKNOWN_PROTOCOLS = false;
var ALLOW_SELF_CLOSE_IN_ATTR = true;
var SAFE_FOR_TEMPLATES = false;
var SAFE_FOR_XML = true;
var WHOLE_DOCUMENT = false;
var SET_CONFIG = false;
var FORCE_BODY = false;
var RETURN_DOM = false;
var RETURN_DOM_FRAGMENT = false;
var RETURN_TRUSTED_TYPE = false;
var SANITIZE_DOM = true;
var SANITIZE_NAMED_PROPS = false;
var SANITIZE_NAMED_PROPS_PREFIX = "user-content-";
var KEEP_CONTENT = true;
var IN_PLACE = false;
var USE_PROFILES = {};
var FORBID_CONTENTS = null;
var DEFAULT_FORBID_CONTENTS = addToSet({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]);
var DATA_URI_TAGS = null;
var DEFAULT_DATA_URI_TAGS = addToSet({}, ["audio", "video", "img", "source", "image", "track"]);
var URI_SAFE_ATTRIBUTES = null;
var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]);
var MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
var SVG_NAMESPACE = "http://www.w3.org/2000/svg";
var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
var NAMESPACE = HTML_NAMESPACE;
var IS_EMPTY_INPUT = false;
var ALLOWED_NAMESPACES = null;
var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
var PARSER_MEDIA_TYPE;
var SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"];
var DEFAULT_PARSER_MEDIA_TYPE = "text/html";
var transformCaseFunc;
var CONFIG = null;
var formElement = document2.createElement("form");
var isRegexOrFunction = function isRegexOrFunction2(testValue) {
return testValue instanceof RegExp || testValue instanceof Function;
};
var _parseConfig = function _parseConfig2(cfg) {
if (CONFIG && CONFIG === cfg) {
return;
}
if (!cfg || _typeof$1(cfg) !== "object") {
cfg = {};
}
cfg = clone(cfg);
PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes
SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;
transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase;
ALLOWED_TAGS = "ALLOWED_TAGS" in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
ALLOWED_ATTR = "ALLOWED_ATTR" in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
ALLOWED_NAMESPACES = "ALLOWED_NAMESPACES" in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
URI_SAFE_ATTRIBUTES = "ADD_URI_SAFE_ATTR" in cfg ? addToSet(
clone(DEFAULT_URI_SAFE_ATTRIBUTES),
// eslint-disable-line indent
cfg.ADD_URI_SAFE_ATTR,
// eslint-disable-line indent
transformCaseFunc
// eslint-disable-line indent
) : DEFAULT_URI_SAFE_ATTRIBUTES;
DATA_URI_TAGS = "ADD_DATA_URI_TAGS" in cfg ? addToSet(
clone(DEFAULT_DATA_URI_TAGS),
// eslint-disable-line indent
cfg.ADD_DATA_URI_TAGS,
// eslint-disable-line indent
transformCaseFunc
// eslint-disable-line indent
) : DEFAULT_DATA_URI_TAGS;
FORBID_CONTENTS = "FORBID_CONTENTS" in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
FORBID_TAGS = "FORBID_TAGS" in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};
FORBID_ATTR = "FORBID_ATTR" in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};
USE_PROFILES = "USE_PROFILES" in cfg ? cfg.USE_PROFILES : false;
ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;
ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;
ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;
ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;
SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;
SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false;
WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;
RETURN_DOM = cfg.RETURN_DOM || false;
RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;
RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;
FORCE_BODY = cfg.FORCE_BODY || false;
SANITIZE_DOM = cfg.SANITIZE_DOM !== false;
SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;
KEEP_CONTENT = cfg.KEEP_CONTENT !== false;
IN_PLACE = cfg.IN_PLACE || false;
IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;
NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
}
if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
}
if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === "boolean") {
CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
}
if (SAFE_FOR_TEMPLATES) {
ALLOW_DATA_ATTR = false;
}
if (RETURN_DOM_FRAGMENT) {
RETURN_DOM = true;
}
if (USE_PROFILES) {
ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));
ALLOWED_ATTR = [];
if (USE_PROFILES.html === true) {
addToSet(ALLOWED_TAGS, html$1$1);
addToSet(ALLOWED_ATTR, html$3);
}
if (USE_PROFILES.svg === true) {
addToSet(ALLOWED_TAGS, svg$1);
addToSet(ALLOWED_ATTR, svg);
addToSet(ALLOWED_ATTR, xml);
}
if (USE_PROFILES.svgFilters === true) {
addToSet(ALLOWED_TAGS, svgFilters);
addToSet(ALLOWED_ATTR, svg);
addToSet(ALLOWED_ATTR, xml);
}
if (USE_PROFILES.mathMl === true) {
addToSet(ALLOWED_TAGS, mathMl$1);
addToSet(ALLOWED_ATTR, mathMl);
addToSet(ALLOWED_ATTR, xml);
}
}
if (cfg.ADD_TAGS) {
if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
ALLOWED_TAGS = clone(ALLOWED_TAGS);
}
addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
}
if (cfg.ADD_ATTR) {
if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
ALLOWED_ATTR = clone(ALLOWED_ATTR);
}
addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
}
if (cfg.ADD_URI_SAFE_ATTR) {
addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
}
if (cfg.FORBID_CONTENTS) {
if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
FORBID_CONTENTS = clone(FORBID_CONTENTS);
}
addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
}
if (KEEP_CONTENT) {
ALLOWED_TAGS["#text"] = true;
}
if (WHOLE_DOCUMENT) {
addToSet(ALLOWED_TAGS, ["html", "head", "body"]);
}
if (ALLOWED_TAGS.table) {
addToSet(ALLOWED_TAGS, ["tbody"]);
delete FORBID_TAGS.tbody;
}
if (freeze) {
freeze(cfg);
}
CONFIG = cfg;
};
var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ["mi", "mo", "mn", "ms", "mtext"]);
var HTML_INTEGRATION_POINTS = addToSet({}, ["annotation-xml"]);
var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ["title", "style", "font", "a", "script"]);
var ALL_SVG_TAGS = addToSet({}, svg$1);
addToSet(ALL_SVG_TAGS, svgFilters);
addToSet(ALL_SVG_TAGS, svgDisallowed);
var ALL_MATHML_TAGS = addToSet({}, mathMl$1);
addToSet(ALL_MATHML_TAGS, mathMlDisallowed);
var _checkValidNamespace = function _checkValidNamespace2(element) {
var parent = getParentNode(element);
if (!parent || !parent.tagName) {
parent = {
namespaceURI: NAMESPACE,
tagName: "template"
};
}
var tagName = stringToLowerCase(element.tagName);
var parentTagName = stringToLowerCase(parent.tagName);
if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
return false;
}
if (element.namespaceURI === SVG_NAMESPACE) {
if (parent.namespaceURI === HTML_NAMESPACE) {
return tagName === "svg";
}
if (parent.namespaceURI === MATHML_NAMESPACE) {
return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
}
return Boolean(ALL_SVG_TAGS[tagName]);
}
if (element.namespaceURI === MATHML_NAMESPACE) {
if (parent.namespaceURI === HTML_NAMESPACE) {
return tagName === "math";
}
if (parent.namespaceURI === SVG_NAMESPACE) {
return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
}
return Boolean(ALL_MATHML_TAGS[tagName]);
}
if (element.namespaceURI === HTML_NAMESPACE) {
if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
return false;
}
if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
return false;
}
return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
}
if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) {
return true;
}
return false;
};
var _forceRemove = function _forceRemove2(node2) {
arrayPush(DOMPurify.removed, {
element: node2
});
try {
node2.parentNode.removeChild(node2);
} catch (_2) {
try {
node2.outerHTML = emptyHTML;
} catch (_3) {
node2.remove();
}
}
};
var _removeAttribute = function _removeAttribute2(name, node2) {
try {
arrayPush(DOMPurify.removed, {
attribute: node2.getAttributeNode(name),
from: node2
});
} catch (_2) {
arrayPush(DOMPurify.removed, {
attribute: null,
from: node2
});
}
node2.removeAttribute(name);
if (name === "is" && !ALLOWED_ATTR[name]) {
if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
try {
_forceRemove(node2);
} catch (_2) {
}
} else {
try {
node2.setAttribute(name, "");
} catch (_2) {
}
}
}
};
var _initDocument = function _initDocument2(dirty) {
var doc;
var leadingWhitespace;
if (FORCE_BODY) {
dirty = "<remove></remove>" + dirty;
} else {
var matches = stringMatch(dirty, /^[\r\n\t ]+/);
leadingWhitespace = matches && matches[0];
}
if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) {
dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + "</body></html>";
}
var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
if (NAMESPACE === HTML_NAMESPACE) {
try {
doc = new DOMParser2().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
} catch (_2) {
}
}
if (!doc || !doc.documentElement) {
doc = implementation.createDocument(NAMESPACE, "template", null);
try {
doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
} catch (_2) {
}
}
var body = doc.body || doc.documentElement;
if (dirty && leadingWhitespace) {
body.insertBefore(document2.createTextNode(leadingWhitespace), body.childNodes[0] || null);
}
if (NAMESPACE === HTML_NAMESPACE) {
return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0];
}
return WHOLE_DOCUMENT ? doc.documentElement : body;
};
var _createIterator = function _createIterator2(root2) {
return createNodeIterator.call(
root2.ownerDocument || root2,
root2,
// eslint-disable-next-line no-bitwise
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION,
null,
false
);
};
var _isClobbered = function _isClobbered2(elm) {
return elm instanceof HTMLFormElement && (typeof elm.nodeName !== "string" || typeof elm.textContent !== "string" || typeof elm.removeChild !== "function" || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== "function" || typeof elm.setAttribute !== "function" || typeof elm.namespaceURI !== "string" || typeof elm.insertBefore !== "function" || typeof elm.hasChildNodes !== "function");
};
var _isNode = function _isNode2(object) {
return _typeof$1(Node2) === "object" ? object instanceof Node2 : object && _typeof$1(object) === "object" && typeof object.nodeType === "number" && typeof object.nodeName === "string";
};
var _executeHook = function _executeHook2(entryPoint, currentNode, data2) {
if (!hooks[entryPoint]) {
return;
}
arrayForEach(hooks[entryPoint], function(hook) {
hook.call(DOMPurify, currentNode, data2, CONFIG);
});
};
var _sanitizeElements = function _sanitizeElements2(currentNode) {
var content2;
_executeHook("beforeSanitizeElements", currentNode, null);
if (_isClobbered(currentNode)) {
_forceRemove(currentNode);
return true;
}
if (regExpTest(/[\u0080-\uFFFF]/, currentNode.nodeName)) {
_forceRemove(currentNode);
return true;
}
var tagName = transformCaseFunc(currentNode.nodeName);
_executeHook("uponSanitizeElement", currentNode, {
tagName,
allowedTags: ALLOWED_TAGS
});
if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) {
_forceRemove(currentNode);
return true;
}
if (tagName === "select" && regExpTest(/<template/i, currentNode.innerHTML)) {
_forceRemove(currentNode);
return true;
}
if (currentNode.nodeType === 7) {
_forceRemove(currentNode);
return true;
}
if (SAFE_FOR_XML && currentNode.nodeType === 8 && regExpTest(/<[/\w]/g, currentNode.data)) {
_forceRemove(currentNode);
return true;
}
if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {
if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;
if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;
}
if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
var parentNode = getParentNode(currentNode) || currentNode.parentNode;
var childNodes = getChildNodes(currentNode) || currentNode.childNodes;
if (childNodes && parentNode) {
var childCount = childNodes.length;
for (var i2 = childCount - 1; i2 >= 0; --i2) {
var childClone = cloneNode(childNodes[i2], true);
childClone.__removalCount = (currentNode.__removalCount || 0) + 1;
parentNode.insertBefore(childClone, getNextSibling(currentNode));
}
}
}
_forceRemove(currentNode);
return true;
}
if (currentNode instanceof Element2 && !_checkValidNamespace(currentNode)) {
_forceRemove(currentNode);
return true;
}
if ((tagName === "noscript" || tagName === "noembed" || tagName === "noframes") && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
_forceRemove(currentNode);
return true;
}
if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {
content2 = currentNode.textContent;
content2 = stringReplace(content2, MUSTACHE_EXPR$1, " ");
content2 = stringReplace(content2, ERB_EXPR$1, " ");
content2 = stringReplace(content2, TMPLIT_EXPR$1, " ");
if (currentNode.textContent !== content2) {
arrayPush(DOMPurify.removed, {
element: currentNode.cloneNode()
});
currentNode.textContent = content2;
}
}
_executeHook("afterSanitizeElements", currentNode, null);
return false;
};
var _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value) {
if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document2 || value in formElement)) {
return false;
}
if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ;
else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ;
else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
if (
// First condition does a very basic check if a) it's basically a valid custom element tagname AND
// b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
// and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
_basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND
// the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
lcName === "is" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))
) ;
else {
return false;
}
} else if (URI_SAFE_ATTRIBUTES[lcName]) ;
else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ""))) ;
else if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf$2(value, "data:") === 0 && DATA_URI_TAGS[lcTag]) ;
else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ""))) ;
else if (value) {
return false;
} else ;
return true;
};
var _basicCustomElementTest = function _basicCustomElementTest2(tagName) {
return tagName !== "annotation-xml" && stringMatch(tagName, CUSTOM_ELEMENT$1);
};
var _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {
var attr;
var value;
var lcName;
var l2;
_executeHook("beforeSanitizeAttributes", currentNode, null);
var attributes = currentNode.attributes;
if (!attributes || _isClobbered(currentNode)) {
return;
}
var hookEvent = {
attrName: "",
attrValue: "",
keepAttr: true,
allowedAttributes: ALLOWED_ATTR
};
l2 = attributes.length;
while (l2--) {
attr = attributes[l2];
var _attr = attr, name = _attr.name, namespaceURI = _attr.namespaceURI;
value = name === "value" ? attr.value : stringTrim$1(attr.value);
lcName = transformCaseFunc(name);
hookEvent.attrName = lcName;
hookEvent.attrValue = value;
hookEvent.keepAttr = true;
hookEvent.forceKeepAttr = void 0;
_executeHook("uponSanitizeAttribute", currentNode, hookEvent);
value = hookEvent.attrValue;
if (hookEvent.forceKeepAttr) {
continue;
}
_removeAttribute(name, currentNode);
if (!hookEvent.keepAttr) {
continue;
}
if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
_removeAttribute(name, currentNode);
continue;
}
if (SAFE_FOR_TEMPLATES) {
value = stringReplace(value, MUSTACHE_EXPR$1, " ");
value = stringReplace(value, ERB_EXPR$1, " ");
value = stringReplace(value, TMPLIT_EXPR$1, " ");
}
var lcTag = transformCaseFunc(currentNode.nodeName);
if (!_isValidAttribute(lcTag, lcName, value)) {
continue;
}
if (SANITIZE_NAMED_PROPS && (lcName === "id" || lcName === "name")) {
_removeAttribute(name, currentNode);
value = SANITIZE_NAMED_PROPS_PREFIX + value;
}
if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) {
_removeAttribute(name, currentNode);
continue;
}
if (trustedTypesPolicy && _typeof$1(trustedTypes) === "object" && typeof trustedTypes.getAttributeType === "function") {
if (namespaceURI) ;
else {
switch (trustedTypes.getAttributeType(lcTag, lcName)) {
case "TrustedHTML": {
value = trustedTypesPolicy.createHTML(value);
break;
}
case "TrustedScriptURL": {
value = trustedTypesPolicy.createScriptURL(value);
break;
}
}
}
}
try {
if (namespaceURI) {
currentNode.setAttributeNS(namespaceURI, name, value);
} else {
currentNode.setAttribute(name, value);
}
if (_isClobbered(currentNode)) {
_forceRemove(currentNode);
} else {
arrayPop(DOMPurify.removed);
}
} catch (_2) {
}
}
_executeHook("afterSanitizeAttributes", currentNode, null);
};
var _sanitizeShadowDOM = function _sanitizeShadowDOM2(fragment) {
var shadowNode;
var shadowIterator = _createIterator(fragment);
_executeHook("beforeSanitizeShadowDOM", fragment, null);
while (shadowNode = shadowIterator.nextNode()) {
_executeHook("uponSanitizeShadowNode", shadowNode, null);
_sanitizeElements(shadowNode);
_sanitizeAttributes(shadowNode);
if (shadowNode.content instanceof DocumentFragment) {
_sanitizeShadowDOM2(shadowNode.content);
}
}
_executeHook("afterSanitizeShadowDOM", fragment, null);
};
DOMPurify.sanitize = function(dirty) {
var cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var body;
var importedNode;
var currentNode;
var oldNode;
var returnNode;
IS_EMPTY_INPUT = !dirty;
if (IS_EMPTY_INPUT) {
dirty = "<!-->";
}
if (typeof dirty !== "string" && !_isNode(dirty)) {
if (typeof dirty.toString === "function") {
dirty = dirty.toString();
if (typeof dirty !== "string") {
throw typeErrorCreate("dirty is not a string, aborting");
}
} else {
throw typeErrorCreate("toString is not a function");
}
}
if (!DOMPurify.isSupported) {
if (_typeof$1(window2.toStaticHTML) === "object" || typeof window2.toStaticHTML === "function") {
if (typeof dirty === "string") {
return window2.toStaticHTML(dirty);
}
if (_isNode(dirty)) {
return window2.toStaticHTML(dirty.outerHTML);
}
}
return dirty;
}
if (!SET_CONFIG) {
_parseConfig(cfg);
}
DOMPurify.removed = [];
if (typeof dirty === "string") {
IN_PLACE = false;
}
if (IN_PLACE) {
if (dirty.nodeName) {
var tagName = transformCaseFunc(dirty.nodeName);
if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place");
}
}
} else if (dirty instanceof Node2) {
body = _initDocument("<!---->");
importedNode = body.ownerDocument.importNode(dirty, true);
if (importedNode.nodeType === 1 && importedNode.nodeName === "BODY") {
body = importedNode;
} else if (importedNode.nodeName === "HTML") {
body = importedNode;
} else {
body.appendChild(importedNode);
}
} else {
if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes
dirty.indexOf("<") === -1) {
return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
}
body = _initDocument(dirty);
if (!body) {
return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : "";
}
}
if (body && FORCE_BODY) {
_forceRemove(body.firstChild);
}
var nodeIterator = _createIterator(IN_PLACE ? dirty : body);
while (currentNode = nodeIterator.nextNode()) {
if (currentNode.nodeType === 3 && currentNode === oldNode) {
continue;
}
_sanitizeElements(currentNode);
_sanitizeAttributes(currentNode);
if (currentNode.content instanceof DocumentFragment) {
_sanitizeShadowDOM(currentNode.content);
}
oldNode = currentNode;
}
oldNode = null;
if (IN_PLACE) {
return dirty;
}
if (RETURN_DOM) {
if (RETURN_DOM_FRAGMENT) {
returnNode = createDocumentFragment.call(body.ownerDocument);
while (body.firstChild) {
returnNode.appendChild(body.firstChild);
}
} else {
returnNode = body;
}
if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmod) {
returnNode = importNode.call(originalDocument, returnNode, true);
}
return returnNode;
}
var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
if (WHOLE_DOCUMENT && ALLOWED_TAGS["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
serializedHTML = "<!DOCTYPE " + body.ownerDocument.doctype.name + ">\n" + serializedHTML;
}
if (SAFE_FOR_TEMPLATES) {
serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, " ");
serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, " ");
serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR$1, " ");
}
return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
};
DOMPurify.setConfig = function(cfg) {
_parseConfig(cfg);
SET_CONFIG = true;
};
DOMPurify.clearConfig = function() {
CONFIG = null;
SET_CONFIG = false;
};
DOMPurify.isValidAttribute = function(tag, attr, value) {
if (!CONFIG) {
_parseConfig({});
}
var lcTag = transformCaseFunc(tag);
var lcName = transformCaseFunc(attr);
return _isValidAttribute(lcTag, lcName, value);
};
DOMPurify.addHook = function(entryPoint, hookFunction) {
if (typeof hookFunction !== "function") {
return;
}
hooks[entryPoint] = hooks[entryPoint] || [];
arrayPush(hooks[entryPoint], hookFunction);
};
DOMPurify.removeHook = function(entryPoint) {
if (hooks[entryPoint]) {
return arrayPop(hooks[entryPoint]);
}
};
DOMPurify.removeHooks = function(entryPoint) {
if (hooks[entryPoint]) {
hooks[entryPoint] = [];
}
};
DOMPurify.removeAllHooks = function() {
hooks = {};
};
return DOMPurify;
}
var purify = createDOMPurify();
const purify_es = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
default: purify
}, Symbol.toStringTag, { value: "Module" }));
var check = function(it2) {
return it2 && it2.Math === Math && it2;
};
var global$l = (
// eslint-disable-next-line es/no-global-this -- safe
check(typeof globalThis == "object" && globalThis) || check(typeof window == "object" && window) || // eslint-disable-next-line no-restricted-globals -- safe
check(typeof self == "object" && self) || check(typeof commonjsGlobal == "object" && commonjsGlobal) || check(typeof commonjsGlobal == "object" && commonjsGlobal) || // eslint-disable-next-line no-new-func -- fallback
/* @__PURE__ */ function() {
return this;
}() || Function("return this")()
);
var objectGetOwnPropertyDescriptor = {};
var fails$l = function(exec2) {
try {
return !!exec2();
} catch (error) {
return true;
}
};
var fails$k = fails$l;
var descriptors = !fails$k(function() {
return Object.defineProperty({}, 1, { get: function() {
return 7;
} })[1] !== 7;
});
var fails$j = fails$l;
var functionBindNative = !fails$j(function() {
var test2 = (function() {
}).bind();
return typeof test2 != "function" || test2.hasOwnProperty("prototype");
});
var NATIVE_BIND$3 = functionBindNative;
var call$j = Function.prototype.call;
var functionCall = NATIVE_BIND$3 ? call$j.bind(call$j) : function() {
return call$j.apply(call$j, arguments);
};
var objectPropertyIsEnumerable = {};
var $propertyIsEnumerable = {}.propertyIsEnumerable;
var getOwnPropertyDescriptor$4 = Object.getOwnPropertyDescriptor;
var NASHORN_BUG = getOwnPropertyDescriptor$4 && !$propertyIsEnumerable.call({ 1: 2 }, 1);
objectPropertyIsEnumerable.f = NASHORN_BUG ? function propertyIsEnumerable(V2) {
var descriptor = getOwnPropertyDescriptor$4(this, V2);
return !!descriptor && descriptor.enumerable;
} : $propertyIsEnumerable;
var createPropertyDescriptor$3 = function(bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value
};
};
var NATIVE_BIND$2 = functionBindNative;
var FunctionPrototype$2 = Function.prototype;
var call$i = FunctionPrototype$2.call;
var uncurryThisWithBind = NATIVE_BIND$2 && FunctionPrototype$2.bind.bind(call$i, call$i);
var functionUncurryThis = NATIVE_BIND$2 ? uncurryThisWithBind : function(fn) {
return function() {
return call$i.apply(fn, arguments);
};
};
var uncurryThis$o = functionUncurryThis;
var toString$b = uncurryThis$o({}.toString);
var stringSlice$7 = uncurryThis$o("".slice);
var classofRaw$2 = function(it2) {
return stringSlice$7(toString$b(it2), 8, -1);
};
var uncurryThis$n = functionUncurryThis;
var fails$i = fails$l;
var classof$8 = classofRaw$2;
var $Object$4 = Object;
var split = uncurryThis$n("".split);
var indexedObject = fails$i(function() {
return !$Object$4("z").propertyIsEnumerable(0);
}) ? function(it2) {
return classof$8(it2) === "String" ? split(it2, "") : $Object$4(it2);
} : $Object$4;
var isNullOrUndefined$7 = function(it2) {
return it2 === null || it2 === void 0;
};
var isNullOrUndefined$6 = isNullOrUndefined$7;
var $TypeError$f = TypeError;
var requireObjectCoercible$a = function(it2) {
if (isNullOrUndefined$6(it2)) throw new $TypeError$f("Can't call method on " + it2);
return it2;
};
var IndexedObject$1 = indexedObject;
var requireObjectCoercible$9 = requireObjectCoercible$a;
var toIndexedObject$5 = function(it2) {
return IndexedObject$1(requireObjectCoercible$9(it2));
};
var documentAll = typeof document == "object" && document.all;
var isCallable$l = typeof documentAll == "undefined" && documentAll !== void 0 ? function(argument) {
return typeof argument == "function" || argument === documentAll;
} : function(argument) {
return typeof argument == "function";
};
var isCallable$k = isCallable$l;
var isObject$a = function(it2) {
return typeof it2 == "object" ? it2 !== null : isCallable$k(it2);
};
var global$k = global$l;
var isCallable$j = isCallable$l;
var aFunction = function(argument) {
return isCallable$j(argument) ? argument : void 0;
};
var getBuiltIn$7 = function(namespace, method) {
return arguments.length < 2 ? aFunction(global$k[namespace]) : global$k[namespace] && global$k[namespace][method];
};
var uncurryThis$m = functionUncurryThis;
var objectIsPrototypeOf = uncurryThis$m({}.isPrototypeOf);
var engineUserAgent = typeof navigator != "undefined" && String(navigator.userAgent) || "";
var global$j = global$l;
var userAgent$3 = engineUserAgent;
var process$4 = global$j.process;
var Deno$1 = global$j.Deno;
var versions = process$4 && process$4.versions || Deno$1 && Deno$1.version;
var v8 = versions && versions.v8;
var match, version;
if (v8) {
match = v8.split(".");
version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
}
if (!version && userAgent$3) {
match = userAgent$3.match(/Edge\/(\d+)/);
if (!match || match[1] >= 74) {
match = userAgent$3.match(/Chrome\/(\d+)/);
if (match) version = +match[1];
}
}
var engineV8Version = version;
var V8_VERSION$1 = engineV8Version;
var fails$h = fails$l;
var global$i = global$l;
var $String$5 = global$i.String;
var symbolConstructorDetection = !!Object.getOwnPropertySymbols && !fails$h(function() {
var symbol = Symbol("symbol detection");
return !$String$5(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
!Symbol.sham && V8_VERSION$1 && V8_VERSION$1 < 41;
});
var NATIVE_SYMBOL$1 = symbolConstructorDetection;
var useSymbolAsUid = NATIVE_SYMBOL$1 && !Symbol.sham && typeof Symbol.iterator == "symbol";
var getBuiltIn$6 = getBuiltIn$7;
var isCallable$i = isCallable$l;
var isPrototypeOf$3 = objectIsPrototypeOf;
var USE_SYMBOL_AS_UID$1 = useSymbolAsUid;
var $Object$3 = Object;
var isSymbol$2 = USE_SYMBOL_AS_UID$1 ? function(it2) {
return typeof it2 == "symbol";
} : function(it2) {
var $Symbol = getBuiltIn$6("Symbol");
return isCallable$i($Symbol) && isPrototypeOf$3($Symbol.prototype, $Object$3(it2));
};
var $String$4 = String;
var tryToString$4 = function(argument) {
try {
return $String$4(argument);
} catch (error) {
return "Object";
}
};
var isCallable$h = isCallable$l;
var tryToString$3 = tryToString$4;
var $TypeError$e = TypeError;
var aCallable$9 = function(argument) {
if (isCallable$h(argument)) return argument;
throw new $TypeError$e(tryToString$3(argument) + " is not a function");
};
var aCallable$8 = aCallable$9;
var isNullOrUndefined$5 = isNullOrUndefined$7;
var getMethod$6 = function(V2, P2) {
var func = V2[P2];
return isNullOrUndefined$5(func) ? void 0 : aCallable$8(func);
};
var call$h = functionCall;
var isCallable$g = isCallable$l;
var isObject$9 = isObject$a;
var $TypeError$d = TypeError;
var ordinaryToPrimitive$1 = function(input, pref) {
var fn, val;
if (pref === "string" && isCallable$g(fn = input.toString) && !isObject$9(val = call$h(fn, input))) return val;
if (isCallable$g(fn = input.valueOf) && !isObject$9(val = call$h(fn, input))) return val;
if (pref !== "string" && isCallable$g(fn = input.toString) && !isObject$9(val = call$h(fn, input))) return val;
throw new $TypeError$d("Can't convert object to primitive value");
};
var sharedStore = { exports: {} };
var global$h = global$l;
var defineProperty$5 = Object.defineProperty;
var defineGlobalProperty$3 = function(key, value) {
try {
defineProperty$5(global$h, key, { value, configurable: true, writable: true });
} catch (error) {
global$h[key] = value;
}
return value;
};
var globalThis$1 = global$l;
var defineGlobalProperty$2 = defineGlobalProperty$3;
var SHARED = "__core-js_shared__";
var store$3 = sharedStore.exports = globalThis$1[SHARED] || defineGlobalProperty$2(SHARED, {});
(store$3.versions || (store$3.versions = [])).push({
version: "3.36.0",
mode: "global",
copyright: "© 2014-2024 Denis Pushkarev (zloirock.ru)",
license: "https://github.com/zloirock/core-js/blob/v3.36.0/LICENSE",
source: "https://github.com/zloirock/core-js"
});
var sharedStoreExports = sharedStore.exports;
var store$2 = sharedStoreExports;
var shared$4 = function(key, value) {
return store$2[key] || (store$2[key] = value || {});
};
var requireObjectCoercible$8 = requireObjectCoercible$a;
var $Object$2 = Object;
var toObject$4 = function(argument) {
return $Object$2(requireObjectCoercible$8(argument));
};
var uncurryThis$l = functionUncurryThis;
var toObject$3 = toObject$4;
var hasOwnProperty = uncurryThis$l({}.hasOwnProperty);
var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it2, key) {
return hasOwnProperty(toObject$3(it2), key);
};
var uncurryThis$k = functionUncurryThis;
var id$1 = 0;
var postfix = Math.random();
var toString$a = uncurryThis$k(1 .toString);
var uid$2 = function(key) {
return "Symbol(" + (key === void 0 ? "" : key) + ")_" + toString$a(++id$1 + postfix, 36);
};
var global$g = global$l;
var shared$3 = shared$4;
var hasOwn$a = hasOwnProperty_1;
var uid$1 = uid$2;
var NATIVE_SYMBOL = symbolConstructorDetection;
var USE_SYMBOL_AS_UID = useSymbolAsUid;
var Symbol$1 = global$g.Symbol;
var WellKnownSymbolsStore = shared$3("wks");
var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1["for"] || Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$1;
var wellKnownSymbol$i = function(name) {
if (!hasOwn$a(WellKnownSymbolsStore, name)) {
WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn$a(Symbol$1, name) ? Symbol$1[name] : createWellKnownSymbol("Symbol." + name);
}
return WellKnownSymbolsStore[name];
};
var call$g = functionCall;
var isObject$8 = isObject$a;
var isSymbol$1 = isSymbol$2;
var getMethod$5 = getMethod$6;
var ordinaryToPrimitive = ordinaryToPrimitive$1;
var wellKnownSymbol$h = wellKnownSymbol$i;
var $TypeError$c = TypeError;
var TO_PRIMITIVE = wellKnownSymbol$h("toPrimitive");
var toPrimitive$2 = function(input, pref) {
if (!isObject$8(input) || isSymbol$1(input)) return input;
var exoticToPrim = getMethod$5(input, TO_PRIMITIVE);
var result;
if (exoticToPrim) {
if (pref === void 0) pref = "default";
result = call$g(exoticToPrim, input, pref);
if (!isObject$8(result) || isSymbol$1(result)) return result;
throw new $TypeError$c("Can't convert object to primitive value");
}
if (pref === void 0) pref = "number";
return ordinaryToPrimitive(input, pref);
};
var toPrimitive$1 = toPrimitive$2;
var isSymbol = isSymbol$2;
var toPropertyKey$3 = function(argument) {
var key = toPrimitive$1(argument, "string");
return isSymbol(key) ? key : key + "";
};
var global$f = global$l;
var isObject$7 = isObject$a;
var document$3 = global$f.document;
var EXISTS$1 = isObject$7(document$3) && isObject$7(document$3.createElement);
var documentCreateElement$2 = function(it2) {
return EXISTS$1 ? document$3.createElement(it2) : {};
};
var DESCRIPTORS$a = descriptors;
var fails$g = fails$l;
var createElement$1 = documentCreateElement$2;
var ie8DomDefine = !DESCRIPTORS$a && !fails$g(function() {
return Object.defineProperty(createElement$1("div"), "a", {
get: function() {
return 7;
}
}).a !== 7;
});
var DESCRIPTORS$9 = descriptors;
var call$f = functionCall;
var propertyIsEnumerableModule = objectPropertyIsEnumerable;
var createPropertyDescriptor$2 = createPropertyDescriptor$3;
var toIndexedObject$4 = toIndexedObject$5;
var toPropertyKey$2 = toPropertyKey$3;
var hasOwn$9 = hasOwnProperty_1;
var IE8_DOM_DEFINE$1 = ie8DomDefine;
var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;
objectGetOwnPropertyDescriptor.f = DESCRIPTORS$9 ? $getOwnPropertyDescriptor$1 : function getOwnPropertyDescriptor(O2, P2) {
O2 = toIndexedObject$4(O2);
P2 = toPropertyKey$2(P2);
if (IE8_DOM_DEFINE$1) try {
return $getOwnPropertyDescriptor$1(O2, P2);
} catch (error) {
}
if (hasOwn$9(O2, P2)) return createPropertyDescriptor$2(!call$f(propertyIsEnumerableModule.f, O2, P2), O2[P2]);
};
var objectDefineProperty = {};
var DESCRIPTORS$8 = descriptors;
var fails$f = fails$l;
var v8PrototypeDefineBug = DESCRIPTORS$8 && fails$f(function() {
return Object.defineProperty(function() {
}, "prototype", {
value: 42,
writable: false
}).prototype !== 42;
});
var isObject$6 = isObject$a;
var $String$3 = String;
var $TypeError$b = TypeError;
var anObject$g = function(argument) {
if (isObject$6(argument)) return argument;
throw new $TypeError$b($String$3(argument) + " is not an object");
};
var DESCRIPTORS$7 = descriptors;
var IE8_DOM_DEFINE = ie8DomDefine;
var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug;
var anObject$f = anObject$g;
var toPropertyKey$1 = toPropertyKey$3;
var $TypeError$a = TypeError;
var $defineProperty = Object.defineProperty;
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
var ENUMERABLE = "enumerable";
var CONFIGURABLE$1 = "configurable";
var WRITABLE = "writable";
objectDefineProperty.f = DESCRIPTORS$7 ? V8_PROTOTYPE_DEFINE_BUG$1 ? function defineProperty(O2, P2, Attributes) {
anObject$f(O2);
P2 = toPropertyKey$1(P2);
anObject$f(Attributes);
if (typeof O2 === "function" && P2 === "prototype" && "value" in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
var current = $getOwnPropertyDescriptor(O2, P2);
if (current && current[WRITABLE]) {
O2[P2] = Attributes.value;
Attributes = {
configurable: CONFIGURABLE$1 in Attributes ? Attributes[CONFIGURABLE$1] : current[CONFIGURABLE$1],
enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
writable: false
};
}
}
return $defineProperty(O2, P2, Attributes);
} : $defineProperty : function defineProperty2(O2, P2, Attributes) {
anObject$f(O2);
P2 = toPropertyKey$1(P2);
anObject$f(Attributes);
if (IE8_DOM_DEFINE) try {
return $defineProperty(O2, P2, Attributes);
} catch (error) {
}
if ("get" in Attributes || "set" in Attributes) throw new $TypeError$a("Accessors not supported");
if ("value" in Attributes) O2[P2] = Attributes.value;
return O2;
};
var DESCRIPTORS$6 = descriptors;
var definePropertyModule$3 = objectDefineProperty;
var createPropertyDescriptor$1 = createPropertyDescriptor$3;
var createNonEnumerableProperty$5 = DESCRIPTORS$6 ? function(object, key, value) {
return definePropertyModule$3.f(object, key, createPropertyDescriptor$1(1, value));
} : function(object, key, value) {
object[key] = value;
return object;
};
var makeBuiltIn$3 = { exports: {} };
var DESCRIPTORS$5 = descriptors;
var hasOwn$8 = hasOwnProperty_1;
var FunctionPrototype$1 = Function.prototype;
var getDescriptor = DESCRIPTORS$5 && Object.getOwnPropertyDescriptor;
var EXISTS = hasOwn$8(FunctionPrototype$1, "name");
var PROPER = EXISTS && (function something() {
}).name === "something";
var CONFIGURABLE = EXISTS && (!DESCRIPTORS$5 || DESCRIPTORS$5 && getDescriptor(FunctionPrototype$1, "name").configurable);
var functionName = {
EXISTS,
PROPER,
CONFIGURABLE
};
var uncurryThis$j = functionUncurryThis;
var isCallable$f = isCallable$l;
var store$1 = sharedStoreExports;
var functionToString = uncurryThis$j(Function.toString);
if (!isCallable$f(store$1.inspectSource)) {
store$1.inspectSource = function(it2) {
return functionToString(it2);
};
}
var inspectSource$3 = store$1.inspectSource;
var global$e = global$l;
var isCallable$e = isCallable$l;
var WeakMap$1 = global$e.WeakMap;
var weakMapBasicDetection = isCallable$e(WeakMap$1) && /native code/.test(String(WeakMap$1));
var shared$2 = shared$4;
var uid = uid$2;
var keys = shared$2("keys");
var sharedKey$3 = function(key) {
return keys[key] || (keys[key] = uid(key));
};
var hiddenKeys$4 = {};
var NATIVE_WEAK_MAP = weakMapBasicDetection;
var global$d = global$l;
var isObject$5 = isObject$a;
var createNonEnumerableProperty$4 = createNonEnumerableProperty$5;
var hasOwn$7 = hasOwnProperty_1;
var shared$1 = sharedStoreExports;
var sharedKey$2 = sharedKey$3;
var hiddenKeys$3 = hiddenKeys$4;
var OBJECT_ALREADY_INITIALIZED = "Object already initialized";
var TypeError$2 = global$d.TypeError;
var WeakMap = global$d.WeakMap;
var set$1, get, has;
var enforce = function(it2) {
return has(it2) ? get(it2) : set$1(it2, {});
};
var getterFor = function(TYPE) {
return function(it2) {
var state;
if (!isObject$5(it2) || (state = get(it2)).type !== TYPE) {
throw new TypeError$2("Incompatible receiver, " + TYPE + " required");
}
return state;
};
};
if (NATIVE_WEAK_MAP || shared$1.state) {
var store = shared$1.state || (shared$1.state = new WeakMap());
store.get = store.get;
store.has = store.has;
store.set = store.set;
set$1 = function(it2, metadata) {
if (store.has(it2)) throw new TypeError$2(OBJECT_ALREADY_INITIALIZED);
metadata.facade = it2;
store.set(it2, metadata);
return metadata;
};
get = function(it2) {
return store.get(it2) || {};
};
has = function(it2) {
return store.has(it2);
};
} else {
var STATE = sharedKey$2("state");
hiddenKeys$3[STATE] = true;
set$1 = function(it2, metadata) {
if (hasOwn$7(it2, STATE)) throw new TypeError$2(OBJECT_ALREADY_INITIALIZED);
metadata.facade = it2;
createNonEnumerableProperty$4(it2, STATE, metadata);
return metadata;
};
get = function(it2) {
return hasOwn$7(it2, STATE) ? it2[STATE] : {};
};
has = function(it2) {
return hasOwn$7(it2, STATE);
};
}
var internalState = {
set: set$1,
get,
has,
enforce,
getterFor
};
var uncurryThis$i = functionUncurryThis;
var fails$e = fails$l;
var isCallable$d = isCallable$l;
var hasOwn$6 = hasOwnProperty_1;
var DESCRIPTORS$4 = descriptors;
var CONFIGURABLE_FUNCTION_NAME$1 = functionName.CONFIGURABLE;
var inspectSource$2 = inspectSource$3;
var InternalStateModule$2 = internalState;
var enforceInternalState = InternalStateModule$2.enforce;
var getInternalState$2 = InternalStateModule$2.get;
var $String$2 = String;
var defineProperty$4 = Object.defineProperty;
var stringSlice$6 = uncurryThis$i("".slice);
var replace$3 = uncurryThis$i("".replace);
var join = uncurryThis$i([].join);
var CONFIGURABLE_LENGTH = DESCRIPTORS$4 && !fails$e(function() {
return defineProperty$4(function() {
}, "length", { value: 8 }).length !== 8;
});
var TEMPLATE = String(String).split("String");
var makeBuiltIn$2 = makeBuiltIn$3.exports = function(value, name, options) {
if (stringSlice$6($String$2(name), 0, 7) === "Symbol(") {
name = "[" + replace$3($String$2(name), /^Symbol\(([^)]*)\).*$/, "$1") + "]";
}
if (options && options.getter) name = "get " + name;
if (options && options.setter) name = "set " + name;
if (!hasOwn$6(value, "name") || CONFIGURABLE_FUNCTION_NAME$1 && value.name !== name) {
if (DESCRIPTORS$4) defineProperty$4(value, "name", { value: name, configurable: true });
else value.name = name;
}
if (CONFIGURABLE_LENGTH && options && hasOwn$6(options, "arity") && value.length !== options.arity) {
defineProperty$4(value, "length", { value: options.arity });
}
try {
if (options && hasOwn$6(options, "constructor") && options.constructor) {
if (DESCRIPTORS$4) defineProperty$4(value, "prototype", { writable: false });
} else if (value.prototype) value.prototype = void 0;
} catch (error) {
}
var state = enforceInternalState(value);
if (!hasOwn$6(state, "source")) {
state.source = join(TEMPLATE, typeof name == "string" ? name : "");
}
return value;
};
Function.prototype.toString = makeBuiltIn$2(function toString() {
return isCallable$d(this) && getInternalState$2(this).source || inspectSource$2(this);
}, "toString");
var makeBuiltInExports = makeBuiltIn$3.exports;
var isCallable$c = isCallable$l;
var definePropertyModule$2 = objectDefineProperty;
var makeBuiltIn$1 = makeBuiltInExports;
var defineGlobalProperty$1 = defineGlobalProperty$3;
var defineBuiltIn$7 = function(O2, key, value, options) {
if (!options) options = {};
var simple = options.enumerable;
var name = options.name !== void 0 ? options.name : key;
if (isCallable$c(value)) makeBuiltIn$1(value, name, options);
if (options.global) {
if (simple) O2[key] = value;
else defineGlobalProperty$1(key, value);
} else {
try {
if (!options.unsafe) delete O2[key];
else if (O2[key]) simple = true;
} catch (error) {
}
if (simple) O2[key] = value;
else definePropertyModule$2.f(O2, key, {
value,
enumerable: false,
configurable: !options.nonConfigurable,
writable: !options.nonWritable
});
}
return O2;
};
var objectGetOwnPropertyNames = {};
var ceil = Math.ceil;
var floor$1 = Math.floor;
var mathTrunc = Math.trunc || function trunc(x2) {
var n2 = +x2;
return (n2 > 0 ? floor$1 : ceil)(n2);
};
var trunc2 = mathTrunc;
var toIntegerOrInfinity$4 = function(argument) {
var number = +argument;
return number !== number || number === 0 ? 0 : trunc2(number);
};
var toIntegerOrInfinity$3 = toIntegerOrInfinity$4;
var max$1 = Math.max;
var min$5 = Math.min;
var toAbsoluteIndex$1 = function(index2, length) {
var integer = toIntegerOrInfinity$3(index2);
return integer < 0 ? max$1(integer + length, 0) : min$5(integer, length);
};
var toIntegerOrInfinity$2 = toIntegerOrInfinity$4;
var min$4 = Math.min;
var toLength$6 = function(argument) {
var len = toIntegerOrInfinity$2(argument);
return len > 0 ? min$4(len, 9007199254740991) : 0;
};
var toLength$5 = toLength$6;
var lengthOfArrayLike$3 = function(obj) {
return toLength$5(obj.length);
};
var toIndexedObject$3 = toIndexedObject$5;
var toAbsoluteIndex = toAbsoluteIndex$1;
var lengthOfArrayLike$2 = lengthOfArrayLike$3;
var createMethod$3 = function(IS_INCLUDES) {
return function($this, el, fromIndex) {
var O2 = toIndexedObject$3($this);
var length = lengthOfArrayLike$2(O2);
if (length === 0) return !IS_INCLUDES && -1;
var index2 = toAbsoluteIndex(fromIndex, length);
var value;
if (IS_INCLUDES && el !== el) while (length > index2) {
value = O2[index2++];
if (value !== value) return true;
}
else for (; length > index2; index2++) {
if ((IS_INCLUDES || index2 in O2) && O2[index2] === el) return IS_INCLUDES || index2 || 0;
}
return !IS_INCLUDES && -1;
};
};
var arrayIncludes = {
// `Array.prototype.includes` method
// https://tc39.es/ecma262/#sec-array.prototype.includes
includes: createMethod$3(true),
// `Array.prototype.indexOf` method
// https://tc39.es/ecma262/#sec-array.prototype.indexof
indexOf: createMethod$3(false)
};
var uncurryThis$h = functionUncurryThis;
var hasOwn$5 = hasOwnProperty_1;
var toIndexedObject$2 = toIndexedObject$5;
var indexOf$1 = arrayIncludes.indexOf;
var hiddenKeys$2 = hiddenKeys$4;
var push$2 = uncurryThis$h([].push);
var objectKeysInternal = function(object, names2) {
var O2 = toIndexedObject$2(object);
var i2 = 0;
var result = [];
var key;
for (key in O2) !hasOwn$5(hiddenKeys$2, key) && hasOwn$5(O2, key) && push$2(result, key);
while (names2.length > i2) if (hasOwn$5(O2, key = names2[i2++])) {
~indexOf$1(result, key) || push$2(result, key);
}
return result;
};
var enumBugKeys$3 = [
"constructor",
"hasOwnProperty",
"isPrototypeOf",
"propertyIsEnumerable",
"toLocaleString",
"toString",
"valueOf"
];
var internalObjectKeys$1 = objectKeysInternal;
var enumBugKeys$2 = enumBugKeys$3;
var hiddenKeys$1 = enumBugKeys$2.concat("length", "prototype");
objectGetOwnPropertyNames.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O2) {
return internalObjectKeys$1(O2, hiddenKeys$1);
};
var objectGetOwnPropertySymbols = {};
objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols;
var getBuiltIn$5 = getBuiltIn$7;
var uncurryThis$g = functionUncurryThis;
var getOwnPropertyNamesModule = objectGetOwnPropertyNames;
var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols;
var anObject$e = anObject$g;
var concat$1 = uncurryThis$g([].concat);
var ownKeys$4 = getBuiltIn$5("Reflect", "ownKeys") || function ownKeys(it2) {
var keys3 = getOwnPropertyNamesModule.f(anObject$e(it2));
var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
return getOwnPropertySymbols ? concat$1(keys3, getOwnPropertySymbols(it2)) : keys3;
};
var hasOwn$4 = hasOwnProperty_1;
var ownKeys$3 = ownKeys$4;
var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor;
var definePropertyModule$1 = objectDefineProperty;
var copyConstructorProperties$1 = function(target, source, exceptions) {
var keys3 = ownKeys$3(source);
var defineProperty4 = definePropertyModule$1.f;
var getOwnPropertyDescriptor3 = getOwnPropertyDescriptorModule.f;
for (var i2 = 0; i2 < keys3.length; i2++) {
var key = keys3[i2];
if (!hasOwn$4(target, key) && !(exceptions && hasOwn$4(exceptions, key))) {
defineProperty4(target, key, getOwnPropertyDescriptor3(source, key));
}
}
};
var fails$d = fails$l;
var isCallable$b = isCallable$l;
var replacement = /#|\.prototype\./;
var isForced$2 = function(feature, detection) {
var value = data[normalize(feature)];
return value === POLYFILL ? true : value === NATIVE ? false : isCallable$b(detection) ? fails$d(detection) : !!detection;
};
var normalize = isForced$2.normalize = function(string) {
return String(string).replace(replacement, ".").toLowerCase();
};
var data = isForced$2.data = {};
var NATIVE = isForced$2.NATIVE = "N";
var POLYFILL = isForced$2.POLYFILL = "P";
var isForced_1 = isForced$2;
var global$c = global$l;
var getOwnPropertyDescriptor$3 = objectGetOwnPropertyDescriptor.f;
var createNonEnumerableProperty$3 = createNonEnumerableProperty$5;
var defineBuiltIn$6 = defineBuiltIn$7;
var defineGlobalProperty = defineGlobalProperty$3;
var copyConstructorProperties = copyConstructorProperties$1;
var isForced$1 = isForced_1;
var _export = function(options, source) {
var TARGET = options.target;
var GLOBAL = options.global;
var STATIC = options.stat;
var FORCED2, target, key, targetProperty, sourceProperty, descriptor;
if (GLOBAL) {
target = global$c;
} else if (STATIC) {
target = global$c[TARGET] || defineGlobalProperty(TARGET, {});
} else {
target = global$c[TARGET] && global$c[TARGET].prototype;
}
if (target) for (key in source) {
sourceProperty = source[key];
if (options.dontCallGetSet) {
descriptor = getOwnPropertyDescriptor$3(target, key);
targetProperty = descriptor && descriptor.value;
} else targetProperty = target[key];
FORCED2 = isForced$1(GLOBAL ? key : TARGET + (STATIC ? "." : "#") + key, options.forced);
if (!FORCED2 && targetProperty !== void 0) {
if (typeof sourceProperty == typeof targetProperty) continue;
copyConstructorProperties(sourceProperty, targetProperty);
}
if (options.sham || targetProperty && targetProperty.sham) {
createNonEnumerableProperty$3(sourceProperty, "sham", true);
}
defineBuiltIn$6(target, key, sourceProperty, options);
}
};
var global$b = global$l;
var classof$7 = classofRaw$2;
var engineIsNode = classof$7(global$b.process) === "process";
var uncurryThis$f = functionUncurryThis;
var aCallable$7 = aCallable$9;
var functionUncurryThisAccessor = function(object, key, method) {
try {
return uncurryThis$f(aCallable$7(Object.getOwnPropertyDescriptor(object, key)[method]));
} catch (error) {
}
};
var isObject$4 = isObject$a;
var isPossiblePrototype$1 = function(argument) {
return isObject$4(argument) || argument === null;
};
var isPossiblePrototype = isPossiblePrototype$1;
var $String$1 = String;
var $TypeError$9 = TypeError;
var aPossiblePrototype$1 = function(argument) {
if (isPossiblePrototype(argument)) return argument;
throw new $TypeError$9("Can't set " + $String$1(argument) + " as a prototype");
};
var uncurryThisAccessor = functionUncurryThisAccessor;
var anObject$d = anObject$g;
var aPossiblePrototype = aPossiblePrototype$1;
var objectSetPrototypeOf = Object.setPrototypeOf || ("__proto__" in {} ? function() {
var CORRECT_SETTER = false;
var test2 = {};
var setter;
try {
setter = uncurryThisAccessor(Object.prototype, "__proto__", "set");
setter(test2, []);
CORRECT_SETTER = test2 instanceof Array;
} catch (error) {
}
return function setPrototypeOf2(O2, proto) {
anObject$d(O2);
aPossiblePrototype(proto);
if (CORRECT_SETTER) setter(O2, proto);
else O2.__proto__ = proto;
return O2;
};
}() : void 0);
var defineProperty$3 = objectDefineProperty.f;
var hasOwn$3 = hasOwnProperty_1;
var wellKnownSymbol$g = wellKnownSymbol$i;
var TO_STRING_TAG$2 = wellKnownSymbol$g("toStringTag");
var setToStringTag$4 = function(target, TAG, STATIC) {
if (target && !STATIC) target = target.prototype;
if (target && !hasOwn$3(target, TO_STRING_TAG$2)) {
defineProperty$3(target, TO_STRING_TAG$2, { configurable: true, value: TAG });
}
};
var makeBuiltIn = makeBuiltInExports;
var defineProperty$2 = objectDefineProperty;
var defineBuiltInAccessor$1 = function(target, name, descriptor) {
if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });
if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });
return defineProperty$2.f(target, name, descriptor);
};
var getBuiltIn$4 = getBuiltIn$7;
var defineBuiltInAccessor = defineBuiltInAccessor$1;
var wellKnownSymbol$f = wellKnownSymbol$i;
var DESCRIPTORS$3 = descriptors;
var SPECIES$3 = wellKnownSymbol$f("species");
var setSpecies$1 = function(CONSTRUCTOR_NAME) {
var Constructor = getBuiltIn$4(CONSTRUCTOR_NAME);
if (DESCRIPTORS$3 && Constructor && !Constructor[SPECIES$3]) {
defineBuiltInAccessor(Constructor, SPECIES$3, {
configurable: true,
get: function() {
return this;
}
});
}
};
var isPrototypeOf$2 = objectIsPrototypeOf;
var $TypeError$8 = TypeError;
var anInstance$1 = function(it2, Prototype) {
if (isPrototypeOf$2(Prototype, it2)) return it2;
throw new $TypeError$8("Incorrect invocation");
};
var wellKnownSymbol$e = wellKnownSymbol$i;
var TO_STRING_TAG$1 = wellKnownSymbol$e("toStringTag");
var test$1 = {};
test$1[TO_STRING_TAG$1] = "z";
var toStringTagSupport = String(test$1) === "[object z]";
var TO_STRING_TAG_SUPPORT = toStringTagSupport;
var isCallable$a = isCallable$l;
var classofRaw$1 = classofRaw$2;
var wellKnownSymbol$d = wellKnownSymbol$i;
var TO_STRING_TAG = wellKnownSymbol$d("toStringTag");
var $Object$1 = Object;
var CORRECT_ARGUMENTS = classofRaw$1(/* @__PURE__ */ function() {
return arguments;
}()) === "Arguments";
var tryGet = function(it2, key) {
try {
return it2[key];
} catch (error) {
}
};
var classof$6 = TO_STRING_TAG_SUPPORT ? classofRaw$1 : function(it2) {
var O2, tag, result;
return it2 === void 0 ? "Undefined" : it2 === null ? "Null" : typeof (tag = tryGet(O2 = $Object$1(it2), TO_STRING_TAG)) == "string" ? tag : CORRECT_ARGUMENTS ? classofRaw$1(O2) : (result = classofRaw$1(O2)) === "Object" && isCallable$a(O2.callee) ? "Arguments" : result;
};
var uncurryThis$e = functionUncurryThis;
var fails$c = fails$l;
var isCallable$9 = isCallable$l;
var classof$5 = classof$6;
var getBuiltIn$3 = getBuiltIn$7;
var inspectSource$1 = inspectSource$3;
var noop$1 = function() {
};
var construct = getBuiltIn$3("Reflect", "construct");
var constructorRegExp = /^\s*(?:class|function)\b/;
var exec$1 = uncurryThis$e(constructorRegExp.exec);
var INCORRECT_TO_STRING = !constructorRegExp.test(noop$1);
var isConstructorModern = function isConstructor(argument) {
if (!isCallable$9(argument)) return false;
try {
construct(noop$1, [], argument);
return true;
} catch (error) {
return false;
}
};
var isConstructorLegacy = function isConstructor2(argument) {
if (!isCallable$9(argument)) return false;
switch (classof$5(argument)) {
case "AsyncFunction":
case "GeneratorFunction":
case "AsyncGeneratorFunction":
return false;
}
try {
return INCORRECT_TO_STRING || !!exec$1(constructorRegExp, inspectSource$1(argument));
} catch (error) {
return true;
}
};
isConstructorLegacy.sham = true;
var isConstructor$1 = !construct || fails$c(function() {
var called;
return isConstructorModern(isConstructorModern.call) || !isConstructorModern(Object) || !isConstructorModern(function() {
called = true;
}) || called;
}) ? isConstructorLegacy : isConstructorModern;
var isConstructor3 = isConstructor$1;
var tryToString$2 = tryToString$4;
var $TypeError$7 = TypeError;
var aConstructor$1 = function(argument) {
if (isConstructor3(argument)) return argument;
throw new $TypeError$7(tryToString$2(argument) + " is not a constructor");
};
var anObject$c = anObject$g;
var aConstructor = aConstructor$1;
var isNullOrUndefined$4 = isNullOrUndefined$7;
var wellKnownSymbol$c = wellKnownSymbol$i;
var SPECIES$2 = wellKnownSymbol$c("species");
var speciesConstructor$2 = function(O2, defaultConstructor) {
var C2 = anObject$c(O2).constructor;
var S2;
return C2 === void 0 || isNullOrUndefined$4(S2 = anObject$c(C2)[SPECIES$2]) ? defaultConstructor : aConstructor(S2);
};
var NATIVE_BIND$1 = functionBindNative;
var FunctionPrototype = Function.prototype;
var apply$2 = FunctionPrototype.apply;
var call$e = FunctionPrototype.call;
var functionApply = typeof Reflect == "object" && Reflect.apply || (NATIVE_BIND$1 ? call$e.bind(apply$2) : function() {
return call$e.apply(apply$2, arguments);
});
var classofRaw = classofRaw$2;
var uncurryThis$d = functionUncurryThis;
var functionUncurryThisClause = function(fn) {
if (classofRaw(fn) === "Function") return uncurryThis$d(fn);
};
var uncurryThis$c = functionUncurryThisClause;
var aCallable$6 = aCallable$9;
var NATIVE_BIND = functionBindNative;
var bind$4 = uncurryThis$c(uncurryThis$c.bind);
var functionBindContext = function(fn, that) {
aCallable$6(fn);
return that === void 0 ? fn : NATIVE_BIND ? bind$4(fn, that) : function() {
return fn.apply(that, arguments);
};
};
var getBuiltIn$2 = getBuiltIn$7;
var html$2 = getBuiltIn$2("document", "documentElement");
var uncurryThis$b = functionUncurryThis;
var arraySlice$1 = uncurryThis$b([].slice);
var $TypeError$6 = TypeError;
var validateArgumentsLength$1 = function(passed, required) {
if (passed < required) throw new $TypeError$6("Not enough arguments");
return passed;
};
var userAgent$2 = engineUserAgent;
var engineIsIos = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent$2);
var global$a = global$l;
var apply$1 = functionApply;
var bind$3 = functionBindContext;
var isCallable$8 = isCallable$l;
var hasOwn$2 = hasOwnProperty_1;
var fails$b = fails$l;
var html$1 = html$2;
var arraySlice = arraySlice$1;
var createElement = documentCreateElement$2;
var validateArgumentsLength = validateArgumentsLength$1;
var IS_IOS$1 = engineIsIos;
var IS_NODE$4 = engineIsNode;
var set = global$a.setImmediate;
var clear = global$a.clearImmediate;
var process$3 = global$a.process;
var Dispatch = global$a.Dispatch;
var Function$1 = global$a.Function;
var MessageChannel = global$a.MessageChannel;
var String$1 = global$a.String;
var counter = 0;
var queue$3 = {};
var ONREADYSTATECHANGE = "onreadystatechange";
var $location, defer, channel, port;
fails$b(function() {
$location = global$a.location;
});
var run = function(id) {
if (hasOwn$2(queue$3, id)) {
var fn = queue$3[id];
delete queue$3[id];
fn();
}
};
var runner = function(id) {
return function() {
run(id);
};
};
var eventListener = function(event) {
run(event.data);
};
var globalPostMessageDefer = function(id) {
global$a.postMessage(String$1(id), $location.protocol + "//" + $location.host);
};
if (!set || !clear) {
set = function setImmediate(handler) {
validateArgumentsLength(arguments.length, 1);
var fn = isCallable$8(handler) ? handler : Function$1(handler);
var args = arraySlice(arguments, 1);
queue$3[++counter] = function() {
apply$1(fn, void 0, args);
};
defer(counter);
return counter;
};
clear = function clearImmediate(id) {
delete queue$3[id];
};
if (IS_NODE$4) {
defer = function(id) {
process$3.nextTick(runner(id));
};
} else if (Dispatch && Dispatch.now) {
defer = function(id) {
Dispatch.now(runner(id));
};
} else if (MessageChannel && !IS_IOS$1) {
channel = new MessageChannel();
port = channel.port2;
channel.port1.onmessage = eventListener;
defer = bind$3(port.postMessage, port);
} else if (global$a.addEventListener && isCallable$8(global$a.postMessage) && !global$a.importScripts && $location && $location.protocol !== "file:" && !fails$b(globalPostMessageDefer)) {
defer = globalPostMessageDefer;
global$a.addEventListener("message", eventListener, false);
} else if (ONREADYSTATECHANGE in createElement("script")) {
defer = function(id) {
html$1.appendChild(createElement("script"))[ONREADYSTATECHANGE] = function() {
html$1.removeChild(this);
run(id);
};
};
} else {
defer = function(id) {
setTimeout(runner(id), 0);
};
}
}
var task$1 = {
set,
clear
};
var global$9 = global$l;
var DESCRIPTORS$2 = descriptors;
var getOwnPropertyDescriptor$2 = Object.getOwnPropertyDescriptor;
var safeGetBuiltIn$1 = function(name) {
if (!DESCRIPTORS$2) return global$9[name];
var descriptor = getOwnPropertyDescriptor$2(global$9, name);
return descriptor && descriptor.value;
};
var Queue$2 = function() {
this.head = null;
this.tail = null;
};
Queue$2.prototype = {
add: function(item) {
var entry = { item, next: null };
var tail = this.tail;
if (tail) tail.next = entry;
else this.head = entry;
this.tail = entry;
},
get: function() {
var entry = this.head;
if (entry) {
var next = this.head = entry.next;
if (next === null) this.tail = null;
return entry.item;
}
}
};
var queue$2 = Queue$2;
var userAgent$1 = engineUserAgent;
var engineIsIosPebble = /ipad|iphone|ipod/i.test(userAgent$1) && typeof Pebble != "undefined";
var userAgent = engineUserAgent;
var engineIsWebosWebkit = /web0s(?!.*chrome)/i.test(userAgent);
var global$8 = global$l;
var safeGetBuiltIn = safeGetBuiltIn$1;
var bind$2 = functionBindContext;
var macrotask = task$1.set;
var Queue$1 = queue$2;
var IS_IOS = engineIsIos;
var IS_IOS_PEBBLE = engineIsIosPebble;
var IS_WEBOS_WEBKIT = engineIsWebosWebkit;
var IS_NODE$3 = engineIsNode;
var MutationObserver = global$8.MutationObserver || global$8.WebKitMutationObserver;
var document$2 = global$8.document;
var process$2 = global$8.process;
var Promise$1 = global$8.Promise;
var microtask$1 = safeGetBuiltIn("queueMicrotask");
var notify$1, toggle, node$1, promise, then;
if (!microtask$1) {
var queue$1 = new Queue$1();
var flush = function() {
var parent, fn;
if (IS_NODE$3 && (parent = process$2.domain)) parent.exit();
while (fn = queue$1.get()) try {
fn();
} catch (error) {
if (queue$1.head) notify$1();
throw error;
}
if (parent) parent.enter();
};
if (!IS_IOS && !IS_NODE$3 && !IS_WEBOS_WEBKIT && MutationObserver && document$2) {
toggle = true;
node$1 = document$2.createTextNode("");
new MutationObserver(flush).observe(node$1, { characterData: true });
notify$1 = function() {
node$1.data = toggle = !toggle;
};
} else if (!IS_IOS_PEBBLE && Promise$1 && Promise$1.resolve) {
promise = Promise$1.resolve(void 0);
promise.constructor = Promise$1;
then = bind$2(promise.then, promise);
notify$1 = function() {
then(flush);
};
} else if (IS_NODE$3) {
notify$1 = function() {
process$2.nextTick(flush);
};
} else {
macrotask = bind$2(macrotask, global$8);
notify$1 = function() {
macrotask(flush);
};
}
microtask$1 = function(fn) {
if (!queue$1.head) notify$1();
queue$1.add(fn);
};
}
var microtask_1 = microtask$1;
var hostReportErrors$1 = function(a2, b2) {
try {
arguments.length === 1 ? console.error(a2) : console.error(a2, b2);
} catch (error) {
}
};
var perform$3 = function(exec2) {
try {
return { error: false, value: exec2() };
} catch (error) {
return { error: true, value: error };
}
};
var global$7 = global$l;
var promiseNativeConstructor = global$7.Promise;
var engineIsDeno = typeof Deno == "object" && Deno && typeof Deno.version == "object";
var IS_DENO$1 = engineIsDeno;
var IS_NODE$2 = engineIsNode;
var engineIsBrowser = !IS_DENO$1 && !IS_NODE$2 && typeof window == "object" && typeof document == "object";
var global$6 = global$l;
var NativePromiseConstructor$3 = promiseNativeConstructor;
var isCallable$7 = isCallable$l;
var isForced = isForced_1;
var inspectSource = inspectSource$3;
var wellKnownSymbol$b = wellKnownSymbol$i;
var IS_BROWSER = engineIsBrowser;
var IS_DENO = engineIsDeno;
var V8_VERSION = engineV8Version;
NativePromiseConstructor$3 && NativePromiseConstructor$3.prototype;
var SPECIES$1 = wellKnownSymbol$b("species");
var SUBCLASSING = false;
var NATIVE_PROMISE_REJECTION_EVENT$1 = isCallable$7(global$6.PromiseRejectionEvent);
var FORCED_PROMISE_CONSTRUCTOR$5 = isForced("Promise", function() {
var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor$3);
var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor$3);
if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;
if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {
var promise2 = new NativePromiseConstructor$3(function(resolve2) {
resolve2(1);
});
var FakePromise = function(exec2) {
exec2(function() {
}, function() {
});
};
var constructor = promise2.constructor = {};
constructor[SPECIES$1] = FakePromise;
SUBCLASSING = promise2.then(function() {
}) instanceof FakePromise;
if (!SUBCLASSING) return true;
}
return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT$1;
});
var promiseConstructorDetection = {
CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR$5,
REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT$1,
SUBCLASSING
};
var newPromiseCapability$2 = {};
var aCallable$5 = aCallable$9;
var $TypeError$5 = TypeError;
var PromiseCapability = function(C2) {
var resolve2, reject2;
this.promise = new C2(function($$resolve, $$reject) {
if (resolve2 !== void 0 || reject2 !== void 0) throw new $TypeError$5("Bad Promise constructor");
resolve2 = $$resolve;
reject2 = $$reject;
});
this.resolve = aCallable$5(resolve2);
this.reject = aCallable$5(reject2);
};
newPromiseCapability$2.f = function(C2) {
return new PromiseCapability(C2);
};
var $$e = _export;
var IS_NODE$1 = engineIsNode;
var global$5 = global$l;
var call$d = functionCall;
var defineBuiltIn$5 = defineBuiltIn$7;
var setPrototypeOf$1 = objectSetPrototypeOf;
var setToStringTag$3 = setToStringTag$4;
var setSpecies = setSpecies$1;
var aCallable$4 = aCallable$9;
var isCallable$6 = isCallable$l;
var isObject$3 = isObject$a;
var anInstance = anInstance$1;
var speciesConstructor$1 = speciesConstructor$2;
var task = task$1.set;
var microtask = microtask_1;
var hostReportErrors = hostReportErrors$1;
var perform$2 = perform$3;
var Queue = queue$2;
var InternalStateModule$1 = internalState;
var NativePromiseConstructor$2 = promiseNativeConstructor;
var PromiseConstructorDetection = promiseConstructorDetection;
var newPromiseCapabilityModule$3 = newPromiseCapability$2;
var PROMISE = "Promise";
var FORCED_PROMISE_CONSTRUCTOR$4 = PromiseConstructorDetection.CONSTRUCTOR;
var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;
var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;
var getInternalPromiseState = InternalStateModule$1.getterFor(PROMISE);
var setInternalState$1 = InternalStateModule$1.set;
var NativePromisePrototype$1 = NativePromiseConstructor$2 && NativePromiseConstructor$2.prototype;
var PromiseConstructor = NativePromiseConstructor$2;
var PromisePrototype = NativePromisePrototype$1;
var TypeError$1 = global$5.TypeError;
var document$1 = global$5.document;
var process$1 = global$5.process;
var newPromiseCapability$1 = newPromiseCapabilityModule$3.f;
var newGenericPromiseCapability = newPromiseCapability$1;
var DISPATCH_EVENT = !!(document$1 && document$1.createEvent && global$5.dispatchEvent);
var UNHANDLED_REJECTION = "unhandledrejection";
var REJECTION_HANDLED = "rejectionhandled";
var PENDING = 0;
var FULFILLED = 1;
var REJECTED = 2;
var HANDLED = 1;
var UNHANDLED = 2;
var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
var isThenable = function(it2) {
var then2;
return isObject$3(it2) && isCallable$6(then2 = it2.then) ? then2 : false;
};
var callReaction = function(reaction, state) {
var value = state.value;
var ok = state.state === FULFILLED;
var handler = ok ? reaction.ok : reaction.fail;
var resolve2 = reaction.resolve;
var reject2 = reaction.reject;
var domain = reaction.domain;
var result, then2, exited;
try {
if (handler) {
if (!ok) {
if (state.rejection === UNHANDLED) onHandleUnhandled(state);
state.rejection = HANDLED;
}
if (handler === true) result = value;
else {
if (domain) domain.enter();
result = handler(value);
if (domain) {
domain.exit();
exited = true;
}
}
if (result === reaction.promise) {
reject2(new TypeError$1("Promise-chain cycle"));
} else if (then2 = isThenable(result)) {
call$d(then2, result, resolve2, reject2);
} else resolve2(result);
} else reject2(value);
} catch (error) {
if (domain && !exited) domain.exit();
reject2(error);
}
};
var notify = function(state, isReject) {
if (state.notified) return;
state.notified = true;
microtask(function() {
var reactions = state.reactions;
var reaction;
while (reaction = reactions.get()) {
callReaction(reaction, state);
}
state.notified = false;
if (isReject && !state.rejection) onUnhandled(state);
});
};
var dispatchEvent = function(name, promise2, reason) {
var event, handler;
if (DISPATCH_EVENT) {
event = document$1.createEvent("Event");
event.promise = promise2;
event.reason = reason;
event.initEvent(name, false, true);
global$5.dispatchEvent(event);
} else event = { promise: promise2, reason };
if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global$5["on" + name])) handler(event);
else if (name === UNHANDLED_REJECTION) hostReportErrors("Unhandled promise rejection", reason);
};
var onUnhandled = function(state) {
call$d(task, global$5, function() {
var promise2 = state.facade;
var value = state.value;
var IS_UNHANDLED = isUnhandled(state);
var result;
if (IS_UNHANDLED) {
result = perform$2(function() {
if (IS_NODE$1) {
process$1.emit("unhandledRejection", value, promise2);
} else dispatchEvent(UNHANDLED_REJECTION, promise2, value);
});
state.rejection = IS_NODE$1 || isUnhandled(state) ? UNHANDLED : HANDLED;
if (result.error) throw result.value;
}
});
};
var isUnhandled = function(state) {
return state.rejection !== HANDLED && !state.parent;
};
var onHandleUnhandled = function(state) {
call$d(task, global$5, function() {
var promise2 = state.facade;
if (IS_NODE$1) {
process$1.emit("rejectionHandled", promise2);
} else dispatchEvent(REJECTION_HANDLED, promise2, state.value);
});
};
var bind$1 = function(fn, state, unwrap) {
return function(value) {
fn(state, value, unwrap);
};
};
var internalReject = function(state, value, unwrap) {
if (state.done) return;
state.done = true;
if (unwrap) state = unwrap;
state.value = value;
state.state = REJECTED;
notify(state, true);
};
var internalResolve = function(state, value, unwrap) {
if (state.done) return;
state.done = true;
if (unwrap) state = unwrap;
try {
if (state.facade === value) throw new TypeError$1("Promise can't be resolved itself");
var then2 = isThenable(value);
if (then2) {
microtask(function() {
var wrapper = { done: false };
try {
call$d(
then2,
value,
bind$1(internalResolve, wrapper, state),
bind$1(internalReject, wrapper, state)
);
} catch (error) {
internalReject(wrapper, error, state);
}
});
} else {
state.value = value;
state.state = FULFILLED;
notify(state, false);
}
} catch (error) {
internalReject({ done: false }, error, state);
}
};
if (FORCED_PROMISE_CONSTRUCTOR$4) {
PromiseConstructor = function Promise2(executor) {
anInstance(this, PromisePrototype);
aCallable$4(executor);
call$d(Internal, this);
var state = getInternalPromiseState(this);
try {
executor(bind$1(internalResolve, state), bind$1(internalReject, state));
} catch (error) {
internalReject(state, error);
}
};
PromisePrototype = PromiseConstructor.prototype;
Internal = function Promise2(executor) {
setInternalState$1(this, {
type: PROMISE,
done: false,
notified: false,
parent: false,
reactions: new Queue(),
rejection: false,
state: PENDING,
value: void 0
});
};
Internal.prototype = defineBuiltIn$5(PromisePrototype, "then", function then2(onFulfilled, onRejected) {
var state = getInternalPromiseState(this);
var reaction = newPromiseCapability$1(speciesConstructor$1(this, PromiseConstructor));
state.parent = true;
reaction.ok = isCallable$6(onFulfilled) ? onFulfilled : true;
reaction.fail = isCallable$6(onRejected) && onRejected;
reaction.domain = IS_NODE$1 ? process$1.domain : void 0;
if (state.state === PENDING) state.reactions.add(reaction);
else microtask(function() {
callReaction(reaction, state);
});
return reaction.promise;
});
OwnPromiseCapability = function() {
var promise2 = new Internal();
var state = getInternalPromiseState(promise2);
this.promise = promise2;
this.resolve = bind$1(internalResolve, state);
this.reject = bind$1(internalReject, state);
};
newPromiseCapabilityModule$3.f = newPromiseCapability$1 = function(C2) {
return C2 === PromiseConstructor || C2 === PromiseWrapper ? new OwnPromiseCapability(C2) : newGenericPromiseCapability(C2);
};
if (isCallable$6(NativePromiseConstructor$2) && NativePromisePrototype$1 !== Object.prototype) {
nativeThen = NativePromisePrototype$1.then;
if (!NATIVE_PROMISE_SUBCLASSING) {
defineBuiltIn$5(NativePromisePrototype$1, "then", function then2(onFulfilled, onRejected) {
var that = this;
return new PromiseConstructor(function(resolve2, reject2) {
call$d(nativeThen, that, resolve2, reject2);
}).then(onFulfilled, onRejected);
}, { unsafe: true });
}
try {
delete NativePromisePrototype$1.constructor;
} catch (error) {
}
if (setPrototypeOf$1) {
setPrototypeOf$1(NativePromisePrototype$1, PromisePrototype);
}
}
}
$$e({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR$4 }, {
Promise: PromiseConstructor
});
setToStringTag$3(PromiseConstructor, PROMISE, false);
setSpecies(PROMISE);
var iterators = {};
var wellKnownSymbol$a = wellKnownSymbol$i;
var Iterators$4 = iterators;
var ITERATOR$5 = wellKnownSymbol$a("iterator");
var ArrayPrototype$1 = Array.prototype;
var isArrayIteratorMethod$1 = function(it2) {
return it2 !== void 0 && (Iterators$4.Array === it2 || ArrayPrototype$1[ITERATOR$5] === it2);
};
var classof$4 = classof$6;
var getMethod$4 = getMethod$6;
var isNullOrUndefined$3 = isNullOrUndefined$7;
var Iterators$3 = iterators;
var wellKnownSymbol$9 = wellKnownSymbol$i;
var ITERATOR$4 = wellKnownSymbol$9("iterator");
var getIteratorMethod$2 = function(it2) {
if (!isNullOrUndefined$3(it2)) return getMethod$4(it2, ITERATOR$4) || getMethod$4(it2, "@@iterator") || Iterators$3[classof$4(it2)];
};
var call$c = functionCall;
var aCallable$3 = aCallable$9;
var anObject$b = anObject$g;
var tryToString$1 = tryToString$4;
var getIteratorMethod$1 = getIteratorMethod$2;
var $TypeError$4 = TypeError;
var getIterator$1 = function(argument, usingIterator) {
var iteratorMethod = arguments.length < 2 ? getIteratorMethod$1(argument) : usingIterator;
if (aCallable$3(iteratorMethod)) return anObject$b(call$c(iteratorMethod, argument));
throw new $TypeError$4(tryToString$1(argument) + " is not iterable");
};
var call$b = functionCall;
var anObject$a = anObject$g;
var getMethod$3 = getMethod$6;
var iteratorClose$1 = function(iterator, kind, value) {
var innerResult, innerError;
anObject$a(iterator);
try {
innerResult = getMethod$3(iterator, "return");
if (!innerResult) {
if (kind === "throw") throw value;
return value;
}
innerResult = call$b(innerResult, iterator);
} catch (error) {
innerError = true;
innerResult = error;
}
if (kind === "throw") throw value;
if (innerError) throw innerResult;
anObject$a(innerResult);
return value;
};
var bind = functionBindContext;
var call$a = functionCall;
var anObject$9 = anObject$g;
var tryToString = tryToString$4;
var isArrayIteratorMethod = isArrayIteratorMethod$1;
var lengthOfArrayLike$1 = lengthOfArrayLike$3;
var isPrototypeOf$1 = objectIsPrototypeOf;
var getIterator = getIterator$1;
var getIteratorMethod = getIteratorMethod$2;
var iteratorClose = iteratorClose$1;
var $TypeError$3 = TypeError;
var Result = function(stopped, result) {
this.stopped = stopped;
this.result = result;
};
var ResultPrototype = Result.prototype;
var iterate$2 = function(iterable, unboundFunction, options) {
var that = options && options.that;
var AS_ENTRIES = !!(options && options.AS_ENTRIES);
var IS_RECORD = !!(options && options.IS_RECORD);
var IS_ITERATOR = !!(options && options.IS_ITERATOR);
var INTERRUPTED = !!(options && options.INTERRUPTED);
var fn = bind(unboundFunction, that);
var iterator, iterFn, index2, length, result, next, step;
var stop = function(condition) {
if (iterator) iteratorClose(iterator, "normal", condition);
return new Result(true, condition);
};
var callFn = function(value) {
if (AS_ENTRIES) {
anObject$9(value);
return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
}
return INTERRUPTED ? fn(value, stop) : fn(value);
};
if (IS_RECORD) {
iterator = iterable.iterator;
} else if (IS_ITERATOR) {
iterator = iterable;
} else {
iterFn = getIteratorMethod(iterable);
if (!iterFn) throw new $TypeError$3(tryToString(iterable) + " is not iterable");
if (isArrayIteratorMethod(iterFn)) {
for (index2 = 0, length = lengthOfArrayLike$1(iterable); length > index2; index2++) {
result = callFn(iterable[index2]);
if (result && isPrototypeOf$1(ResultPrototype, result)) return result;
}
return new Result(false);
}
iterator = getIterator(iterable, iterFn);
}
next = IS_RECORD ? iterable.next : iterator.next;
while (!(step = call$a(next, iterator)).done) {
try {
result = callFn(step.value);
} catch (error) {
iteratorClose(iterator, "throw", error);
}
if (typeof result == "object" && result && isPrototypeOf$1(ResultPrototype, result)) return result;
}
return new Result(false);
};
var wellKnownSymbol$8 = wellKnownSymbol$i;
var ITERATOR$3 = wellKnownSymbol$8("iterator");
var SAFE_CLOSING = false;
try {
var called = 0;
var iteratorWithReturn = {
next: function() {
return { done: !!called++ };
},
"return": function() {
SAFE_CLOSING = true;
}
};
iteratorWithReturn[ITERATOR$3] = function() {
return this;
};
Array.from(iteratorWithReturn, function() {
throw 2;
});
} catch (error) {
}
var checkCorrectnessOfIteration$1 = function(exec2, SKIP_CLOSING) {
try {
if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
} catch (error) {
return false;
}
var ITERATION_SUPPORT = false;
try {
var object = {};
object[ITERATOR$3] = function() {
return {
next: function() {
return { done: ITERATION_SUPPORT = true };
}
};
};
exec2(object);
} catch (error) {
}
return ITERATION_SUPPORT;
};
var NativePromiseConstructor$1 = promiseNativeConstructor;
var checkCorrectnessOfIteration = checkCorrectnessOfIteration$1;
var FORCED_PROMISE_CONSTRUCTOR$3 = promiseConstructorDetection.CONSTRUCTOR;
var promiseStaticsIncorrectIteration = FORCED_PROMISE_CONSTRUCTOR$3 || !checkCorrectnessOfIteration(function(iterable) {
NativePromiseConstructor$1.all(iterable).then(void 0, function() {
});
});
var $$d = _export;
var call$9 = functionCall;
var aCallable$2 = aCallable$9;
var newPromiseCapabilityModule$2 = newPromiseCapability$2;
var perform$1 = perform$3;
var iterate$1 = iterate$2;
var PROMISE_STATICS_INCORRECT_ITERATION$1 = promiseStaticsIncorrectIteration;
$$d({ target: "Promise", stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION$1 }, {
all: function all(iterable) {
var C2 = this;
var capability = newPromiseCapabilityModule$2.f(C2);
var resolve2 = capability.resolve;
var reject2 = capability.reject;
var result = perform$1(function() {
var $promiseResolve = aCallable$2(C2.resolve);
var values2 = [];
var counter2 = 0;
var remaining = 1;
iterate$1(iterable, function(promise2) {
var index2 = counter2++;
var alreadyCalled = false;
remaining++;
call$9($promiseResolve, C2, promise2).then(function(value) {
if (alreadyCalled) return;
alreadyCalled = true;
values2[index2] = value;
--remaining || resolve2(values2);
}, reject2);
});
--remaining || resolve2(values2);
});
if (result.error) reject2(result.value);
return capability.promise;
}
});
var $$c = _export;
var FORCED_PROMISE_CONSTRUCTOR$2 = promiseConstructorDetection.CONSTRUCTOR;
var NativePromiseConstructor = promiseNativeConstructor;
var getBuiltIn$1 = getBuiltIn$7;
var isCallable$5 = isCallable$l;
var defineBuiltIn$4 = defineBuiltIn$7;
var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
$$c({ target: "Promise", proto: true, forced: FORCED_PROMISE_CONSTRUCTOR$2, real: true }, {
"catch": function(onRejected) {
return this.then(void 0, onRejected);
}
});
if (isCallable$5(NativePromiseConstructor)) {
var method = getBuiltIn$1("Promise").prototype["catch"];
if (NativePromisePrototype["catch"] !== method) {
defineBuiltIn$4(NativePromisePrototype, "catch", method, { unsafe: true });
}
}
var $$b = _export;
var call$8 = functionCall;
var aCallable$1 = aCallable$9;
var newPromiseCapabilityModule$1 = newPromiseCapability$2;
var perform = perform$3;
var iterate = iterate$2;
var PROMISE_STATICS_INCORRECT_ITERATION = promiseStaticsIncorrectIteration;
$$b({ target: "Promise", stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {
race: function race(iterable) {
var C2 = this;
var capability = newPromiseCapabilityModule$1.f(C2);
var reject2 = capability.reject;
var result = perform(function() {
var $promiseResolve = aCallable$1(C2.resolve);
iterate(iterable, function(promise2) {
call$8($promiseResolve, C2, promise2).then(capability.resolve, reject2);
});
});
if (result.error) reject2(result.value);
return capability.promise;
}
});
var $$a = _export;
var newPromiseCapabilityModule = newPromiseCapability$2;
var FORCED_PROMISE_CONSTRUCTOR$1 = promiseConstructorDetection.CONSTRUCTOR;
$$a({ target: "Promise", stat: true, forced: FORCED_PROMISE_CONSTRUCTOR$1 }, {
reject: function reject(r2) {
var capability = newPromiseCapabilityModule.f(this);
var capabilityReject = capability.reject;
capabilityReject(r2);
return capability.promise;
}
});
var anObject$8 = anObject$g;
var isObject$2 = isObject$a;
var newPromiseCapability = newPromiseCapability$2;
var promiseResolve$1 = function(C2, x2) {
anObject$8(C2);
if (isObject$2(x2) && x2.constructor === C2) return x2;
var promiseCapability = newPromiseCapability.f(C2);
var resolve2 = promiseCapability.resolve;
resolve2(x2);
return promiseCapability.promise;
};
var $$9 = _export;
var getBuiltIn = getBuiltIn$7;
var FORCED_PROMISE_CONSTRUCTOR = promiseConstructorDetection.CONSTRUCTOR;
var promiseResolve = promiseResolve$1;
getBuiltIn("Promise");
$$9({ target: "Promise", stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {
resolve: function resolve(x2) {
return promiseResolve(this, x2);
}
});
function asyncGeneratorStep(gen, resolve2, reject2, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject2(error);
return;
}
if (info.done) {
resolve2(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function() {
var self2 = this, args = arguments;
return new Promise(function(resolve2, reject2) {
var gen = fn.apply(self2, args);
function _next(value) {
asyncGeneratorStep(gen, resolve2, reject2, _next, _throw, "next", value);
}
function _throw(err2) {
asyncGeneratorStep(gen, resolve2, reject2, _next, _throw, "throw", err2);
}
_next(void 0);
});
};
}
var classof$3 = classof$6;
var $String = String;
var toString$9 = function(argument) {
if (classof$3(argument) === "Symbol") throw new TypeError("Cannot convert a Symbol value to a string");
return $String(argument);
};
var anObject$7 = anObject$g;
var regexpFlags$1 = function() {
var that = anObject$7(this);
var result = "";
if (that.hasIndices) result += "d";
if (that.global) result += "g";
if (that.ignoreCase) result += "i";
if (that.multiline) result += "m";
if (that.dotAll) result += "s";
if (that.unicode) result += "u";
if (that.unicodeSets) result += "v";
if (that.sticky) result += "y";
return result;
};
var fails$a = fails$l;
var global$4 = global$l;
var $RegExp$2 = global$4.RegExp;
var UNSUPPORTED_Y$2 = fails$a(function() {
var re2 = $RegExp$2("a", "y");
re2.lastIndex = 2;
return re2.exec("abcd") !== null;
});
var MISSED_STICKY = UNSUPPORTED_Y$2 || fails$a(function() {
return !$RegExp$2("a", "y").sticky;
});
var BROKEN_CARET = UNSUPPORTED_Y$2 || fails$a(function() {
var re2 = $RegExp$2("^r", "gy");
re2.lastIndex = 2;
return re2.exec("str") !== null;
});
var regexpStickyHelpers = {
BROKEN_CARET,
MISSED_STICKY,
UNSUPPORTED_Y: UNSUPPORTED_Y$2
};
var objectDefineProperties = {};
var internalObjectKeys = objectKeysInternal;
var enumBugKeys$1 = enumBugKeys$3;
var objectKeys$1 = Object.keys || function keys2(O2) {
return internalObjectKeys(O2, enumBugKeys$1);
};
var DESCRIPTORS$1 = descriptors;
var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug;
var definePropertyModule = objectDefineProperty;
var anObject$6 = anObject$g;
var toIndexedObject$1 = toIndexedObject$5;
var objectKeys = objectKeys$1;
objectDefineProperties.f = DESCRIPTORS$1 && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O2, Properties) {
anObject$6(O2);
var props = toIndexedObject$1(Properties);
var keys3 = objectKeys(Properties);
var length = keys3.length;
var index2 = 0;
var key;
while (length > index2) definePropertyModule.f(O2, key = keys3[index2++], props[key]);
return O2;
};
var anObject$5 = anObject$g;
var definePropertiesModule = objectDefineProperties;
var enumBugKeys = enumBugKeys$3;
var hiddenKeys = hiddenKeys$4;
var html = html$2;
var documentCreateElement$1 = documentCreateElement$2;
var sharedKey$1 = sharedKey$3;
var GT = ">";
var LT = "<";
var PROTOTYPE = "prototype";
var SCRIPT = "script";
var IE_PROTO$1 = sharedKey$1("IE_PROTO");
var EmptyConstructor = function() {
};
var scriptTag = function(content2) {
return LT + SCRIPT + GT + content2 + LT + "/" + SCRIPT + GT;
};
var NullProtoObjectViaActiveX = function(activeXDocument2) {
activeXDocument2.write(scriptTag(""));
activeXDocument2.close();
var temp = activeXDocument2.parentWindow.Object;
activeXDocument2 = null;
return temp;
};
var NullProtoObjectViaIFrame = function() {
var iframe = documentCreateElement$1("iframe");
var JS = "java" + SCRIPT + ":";
var iframeDocument;
iframe.style.display = "none";
html.appendChild(iframe);
iframe.src = String(JS);
iframeDocument = iframe.contentWindow.document;
iframeDocument.open();
iframeDocument.write(scriptTag("document.F=Object"));
iframeDocument.close();
return iframeDocument.F;
};
var activeXDocument;
var NullProtoObject = function() {
try {
activeXDocument = new ActiveXObject("htmlfile");
} catch (error) {
}
NullProtoObject = typeof document != "undefined" ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument);
var length = enumBugKeys.length;
while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
return NullProtoObject();
};
hiddenKeys[IE_PROTO$1] = true;
var objectCreate = Object.create || function create(O2, Properties) {
var result;
if (O2 !== null) {
EmptyConstructor[PROTOTYPE] = anObject$5(O2);
result = new EmptyConstructor();
EmptyConstructor[PROTOTYPE] = null;
result[IE_PROTO$1] = O2;
} else result = NullProtoObject();
return Properties === void 0 ? result : definePropertiesModule.f(result, Properties);
};
var fails$9 = fails$l;
var global$3 = global$l;
var $RegExp$1 = global$3.RegExp;
var regexpUnsupportedDotAll = fails$9(function() {
var re2 = $RegExp$1(".", "s");
return !(re2.dotAll && re2.test("\n") && re2.flags === "s");
});
var fails$8 = fails$l;
var global$2 = global$l;
var $RegExp = global$2.RegExp;
var regexpUnsupportedNcg = fails$8(function() {
var re2 = $RegExp("(?<a>b)", "g");
return re2.exec("b").groups.a !== "b" || "b".replace(re2, "$<a>c") !== "bc";
});
var call$7 = functionCall;
var uncurryThis$a = functionUncurryThis;
var toString$8 = toString$9;
var regexpFlags = regexpFlags$1;
var stickyHelpers$1 = regexpStickyHelpers;
var shared = shared$4;
var create$2 = objectCreate;
var getInternalState$1 = internalState.get;
var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll;
var UNSUPPORTED_NCG = regexpUnsupportedNcg;
var nativeReplace = shared("native-string-replace", String.prototype.replace);
var nativeExec = RegExp.prototype.exec;
var patchedExec = nativeExec;
var charAt$3 = uncurryThis$a("".charAt);
var indexOf = uncurryThis$a("".indexOf);
var replace$2 = uncurryThis$a("".replace);
var stringSlice$5 = uncurryThis$a("".slice);
var UPDATES_LAST_INDEX_WRONG = function() {
var re1 = /a/;
var re2 = /b*/g;
call$7(nativeExec, re1, "a");
call$7(nativeExec, re2, "a");
return re1.lastIndex !== 0 || re2.lastIndex !== 0;
}();
var UNSUPPORTED_Y$1 = stickyHelpers$1.BROKEN_CARET;
var NPCG_INCLUDED = /()??/.exec("")[1] !== void 0;
var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$1 || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
if (PATCH) {
patchedExec = function exec2(string) {
var re2 = this;
var state = getInternalState$1(re2);
var str = toString$8(string);
var raw = state.raw;
var result, reCopy, lastIndex, match2, i2, object, group;
if (raw) {
raw.lastIndex = re2.lastIndex;
result = call$7(patchedExec, raw, str);
re2.lastIndex = raw.lastIndex;
return result;
}
var groups = state.groups;
var sticky = UNSUPPORTED_Y$1 && re2.sticky;
var flags = call$7(regexpFlags, re2);
var source = re2.source;
var charsAdded = 0;
var strCopy = str;
if (sticky) {
flags = replace$2(flags, "y", "");
if (indexOf(flags, "g") === -1) {
flags += "g";
}
strCopy = stringSlice$5(str, re2.lastIndex);
if (re2.lastIndex > 0 && (!re2.multiline || re2.multiline && charAt$3(str, re2.lastIndex - 1) !== "\n")) {
source = "(?: " + source + ")";
strCopy = " " + strCopy;
charsAdded++;
}
reCopy = new RegExp("^(?:" + source + ")", flags);
}
if (NPCG_INCLUDED) {
reCopy = new RegExp("^" + source + "$(?!\\s)", flags);
}
if (UPDATES_LAST_INDEX_WRONG) lastIndex = re2.lastIndex;
match2 = call$7(nativeExec, sticky ? reCopy : re2, strCopy);
if (sticky) {
if (match2) {
match2.input = stringSlice$5(match2.input, charsAdded);
match2[0] = stringSlice$5(match2[0], charsAdded);
match2.index = re2.lastIndex;
re2.lastIndex += match2[0].length;
} else re2.lastIndex = 0;
} else if (UPDATES_LAST_INDEX_WRONG && match2) {
re2.lastIndex = re2.global ? match2.index + match2[0].length : lastIndex;
}
if (NPCG_INCLUDED && match2 && match2.length > 1) {
call$7(nativeReplace, match2[0], reCopy, function() {
for (i2 = 1; i2 < arguments.length - 2; i2++) {
if (arguments[i2] === void 0) match2[i2] = void 0;
}
});
}
if (match2 && groups) {
match2.groups = object = create$2(null);
for (i2 = 0; i2 < groups.length; i2++) {
group = groups[i2];
object[group[0]] = match2[group[1]];
}
}
return match2;
};
}
var regexpExec$2 = patchedExec;
var $$8 = _export;
var exec = regexpExec$2;
$$8({ target: "RegExp", proto: true, forced: /./.exec !== exec }, {
exec
});
var call$6 = functionCall;
var defineBuiltIn$3 = defineBuiltIn$7;
var regexpExec$1 = regexpExec$2;
var fails$7 = fails$l;
var wellKnownSymbol$7 = wellKnownSymbol$i;
var createNonEnumerableProperty$2 = createNonEnumerableProperty$5;
var SPECIES = wellKnownSymbol$7("species");
var RegExpPrototype$2 = RegExp.prototype;
var fixRegexpWellKnownSymbolLogic = function(KEY, exec2, FORCED2, SHAM) {
var SYMBOL = wellKnownSymbol$7(KEY);
var DELEGATES_TO_SYMBOL = !fails$7(function() {
var O2 = {};
O2[SYMBOL] = function() {
return 7;
};
return ""[KEY](O2) !== 7;
});
var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$7(function() {
var execCalled = false;
var re2 = /a/;
if (KEY === "split") {
re2 = {};
re2.constructor = {};
re2.constructor[SPECIES] = function() {
return re2;
};
re2.flags = "";
re2[SYMBOL] = /./[SYMBOL];
}
re2.exec = function() {
execCalled = true;
return null;
};
re2[SYMBOL]("");
return !execCalled;
});
if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || FORCED2) {
var nativeRegExpMethod = /./[SYMBOL];
var methods = exec2(SYMBOL, ""[KEY], function(nativeMethod, regexp, str, arg2, forceStringMethod) {
var $exec = regexp.exec;
if ($exec === regexpExec$1 || $exec === RegExpPrototype$2.exec) {
if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
return { done: true, value: call$6(nativeRegExpMethod, regexp, str, arg2) };
}
return { done: true, value: call$6(nativeMethod, str, regexp, arg2) };
}
return { done: false };
});
defineBuiltIn$3(String.prototype, KEY, methods[0]);
defineBuiltIn$3(RegExpPrototype$2, SYMBOL, methods[1]);
}
if (SHAM) createNonEnumerableProperty$2(RegExpPrototype$2[SYMBOL], "sham", true);
};
var uncurryThis$9 = functionUncurryThis;
var toIntegerOrInfinity$1 = toIntegerOrInfinity$4;
var toString$7 = toString$9;
var requireObjectCoercible$7 = requireObjectCoercible$a;
var charAt$2 = uncurryThis$9("".charAt);
var charCodeAt = uncurryThis$9("".charCodeAt);
var stringSlice$4 = uncurryThis$9("".slice);
var createMethod$2 = function(CONVERT_TO_STRING) {
return function($this, pos) {
var S2 = toString$7(requireObjectCoercible$7($this));
var position2 = toIntegerOrInfinity$1(pos);
var size = S2.length;
var first, second;
if (position2 < 0 || position2 >= size) return CONVERT_TO_STRING ? "" : void 0;
first = charCodeAt(S2, position2);
return first < 55296 || first > 56319 || position2 + 1 === size || (second = charCodeAt(S2, position2 + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? charAt$2(S2, position2) : first : CONVERT_TO_STRING ? stringSlice$4(S2, position2, position2 + 2) : (first - 55296 << 10) + (second - 56320) + 65536;
};
};
var stringMultibyte = {
// `String.prototype.codePointAt` method
// https://tc39.es/ecma262/#sec-string.prototype.codepointat
codeAt: createMethod$2(false),
// `String.prototype.at` method
// https://github.com/mathiasbynens/String.prototype.at
charAt: createMethod$2(true)
};
var charAt$1 = stringMultibyte.charAt;
var advanceStringIndex$3 = function(S2, index2, unicode) {
return index2 + (unicode ? charAt$1(S2, index2).length : 1);
};
var call$5 = functionCall;
var anObject$4 = anObject$g;
var isCallable$4 = isCallable$l;
var classof$2 = classofRaw$2;
var regexpExec = regexpExec$2;
var $TypeError$2 = TypeError;
var regexpExecAbstract = function(R2, S2) {
var exec2 = R2.exec;
if (isCallable$4(exec2)) {
var result = call$5(exec2, R2, S2);
if (result !== null) anObject$4(result);
return result;
}
if (classof$2(R2) === "RegExp") return call$5(regexpExec, R2, S2);
throw new $TypeError$2("RegExp#exec called on incompatible receiver");
};
var call$4 = functionCall;
var fixRegExpWellKnownSymbolLogic$2 = fixRegexpWellKnownSymbolLogic;
var anObject$3 = anObject$g;
var isNullOrUndefined$2 = isNullOrUndefined$7;
var toLength$4 = toLength$6;
var toString$6 = toString$9;
var requireObjectCoercible$6 = requireObjectCoercible$a;
var getMethod$2 = getMethod$6;
var advanceStringIndex$2 = advanceStringIndex$3;
var regExpExec$2 = regexpExecAbstract;
fixRegExpWellKnownSymbolLogic$2("match", function(MATCH2, nativeMatch, maybeCallNative) {
return [
// `String.prototype.match` method
// https://tc39.es/ecma262/#sec-string.prototype.match
function match2(regexp) {
var O2 = requireObjectCoercible$6(this);
var matcher = isNullOrUndefined$2(regexp) ? void 0 : getMethod$2(regexp, MATCH2);
return matcher ? call$4(matcher, regexp, O2) : new RegExp(regexp)[MATCH2](toString$6(O2));
},
// `RegExp.prototype[@@match]` method
// https://tc39.es/ecma262/#sec-regexp.prototype-@@match
function(string) {
var rx = anObject$3(this);
var S2 = toString$6(string);
var res = maybeCallNative(nativeMatch, rx, S2);
if (res.done) return res.value;
if (!rx.global) return regExpExec$2(rx, S2);
var fullUnicode = rx.unicode;
rx.lastIndex = 0;
var A5 = [];
var n2 = 0;
var result;
while ((result = regExpExec$2(rx, S2)) !== null) {
var matchStr = toString$6(result[0]);
A5[n2] = matchStr;
if (matchStr === "") rx.lastIndex = advanceStringIndex$2(S2, toLength$4(rx.lastIndex), fullUnicode);
n2++;
}
return n2 === 0 ? null : A5;
}
];
});
var uncurryThis$8 = functionUncurryThis;
var toObject$2 = toObject$4;
var floor = Math.floor;
var charAt = uncurryThis$8("".charAt);
var replace$1 = uncurryThis$8("".replace);
var stringSlice$3 = uncurryThis$8("".slice);
var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
var getSubstitution$1 = function(matched, str, position2, captures, namedCaptures, replacement2) {
var tailPos = position2 + matched.length;
var m2 = captures.length;
var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
if (namedCaptures !== void 0) {
namedCaptures = toObject$2(namedCaptures);
symbols = SUBSTITUTION_SYMBOLS;
}
return replace$1(replacement2, symbols, function(match2, ch) {
var capture;
switch (charAt(ch, 0)) {
case "$":
return "$";
case "&":
return matched;
case "`":
return stringSlice$3(str, 0, position2);
case "'":
return stringSlice$3(str, tailPos);
case "<":
capture = namedCaptures[stringSlice$3(ch, 1, -1)];
break;
default:
var n2 = +ch;
if (n2 === 0) return match2;
if (n2 > m2) {
var f2 = floor(n2 / 10);
if (f2 === 0) return match2;
if (f2 <= m2) return captures[f2 - 1] === void 0 ? charAt(ch, 1) : captures[f2 - 1] + charAt(ch, 1);
return match2;
}
capture = captures[n2 - 1];
}
return capture === void 0 ? "" : capture;
});
};
var apply = functionApply;
var call$3 = functionCall;
var uncurryThis$7 = functionUncurryThis;
var fixRegExpWellKnownSymbolLogic$1 = fixRegexpWellKnownSymbolLogic;
var fails$6 = fails$l;
var anObject$2 = anObject$g;
var isCallable$3 = isCallable$l;
var isNullOrUndefined$1 = isNullOrUndefined$7;
var toIntegerOrInfinity = toIntegerOrInfinity$4;
var toLength$3 = toLength$6;
var toString$5 = toString$9;
var requireObjectCoercible$5 = requireObjectCoercible$a;
var advanceStringIndex$1 = advanceStringIndex$3;
var getMethod$1 = getMethod$6;
var getSubstitution = getSubstitution$1;
var regExpExec$1 = regexpExecAbstract;
var wellKnownSymbol$6 = wellKnownSymbol$i;
var REPLACE = wellKnownSymbol$6("replace");
var max = Math.max;
var min$3 = Math.min;
var concat = uncurryThis$7([].concat);
var push$1 = uncurryThis$7([].push);
var stringIndexOf$1 = uncurryThis$7("".indexOf);
var stringSlice$2 = uncurryThis$7("".slice);
var maybeToString = function(it2) {
return it2 === void 0 ? it2 : String(it2);
};
var REPLACE_KEEPS_$0 = function() {
return "a".replace(/./, "$0") === "$0";
}();
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = function() {
if (/./[REPLACE]) {
return /./[REPLACE]("a", "$0") === "";
}
return false;
}();
var REPLACE_SUPPORTS_NAMED_GROUPS = !fails$6(function() {
var re2 = /./;
re2.exec = function() {
var result = [];
result.groups = { a: "7" };
return result;
};
return "".replace(re2, "$<a>") !== "7";
});
fixRegExpWellKnownSymbolLogic$1("replace", function(_2, nativeReplace2, maybeCallNative) {
var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? "$" : "$0";
return [
// `String.prototype.replace` method
// https://tc39.es/ecma262/#sec-string.prototype.replace
function replace2(searchValue, replaceValue) {
var O2 = requireObjectCoercible$5(this);
var replacer = isNullOrUndefined$1(searchValue) ? void 0 : getMethod$1(searchValue, REPLACE);
return replacer ? call$3(replacer, searchValue, O2, replaceValue) : call$3(nativeReplace2, toString$5(O2), searchValue, replaceValue);
},
// `RegExp.prototype[@@replace]` method
// https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
function(string, replaceValue) {
var rx = anObject$2(this);
var S2 = toString$5(string);
if (typeof replaceValue == "string" && stringIndexOf$1(replaceValue, UNSAFE_SUBSTITUTE) === -1 && stringIndexOf$1(replaceValue, "$<") === -1) {
var res = maybeCallNative(nativeReplace2, rx, S2, replaceValue);
if (res.done) return res.value;
}
var functionalReplace = isCallable$3(replaceValue);
if (!functionalReplace) replaceValue = toString$5(replaceValue);
var global2 = rx.global;
var fullUnicode;
if (global2) {
fullUnicode = rx.unicode;
rx.lastIndex = 0;
}
var results = [];
var result;
while (true) {
result = regExpExec$1(rx, S2);
if (result === null) break;
push$1(results, result);
if (!global2) break;
var matchStr = toString$5(result[0]);
if (matchStr === "") rx.lastIndex = advanceStringIndex$1(S2, toLength$3(rx.lastIndex), fullUnicode);
}
var accumulatedResult = "";
var nextSourcePosition = 0;
for (var i2 = 0; i2 < results.length; i2++) {
result = results[i2];
var matched = toString$5(result[0]);
var position2 = max(min$3(toIntegerOrInfinity(result.index), S2.length), 0);
var captures = [];
var replacement2;
for (var j2 = 1; j2 < result.length; j2++) push$1(captures, maybeToString(result[j2]));
var namedCaptures = result.groups;
if (functionalReplace) {
var replacerArgs = concat([matched], captures, position2, S2);
if (namedCaptures !== void 0) push$1(replacerArgs, namedCaptures);
replacement2 = toString$5(apply(replaceValue, void 0, replacerArgs));
} else {
replacement2 = getSubstitution(matched, S2, position2, captures, namedCaptures, replaceValue);
}
if (position2 >= nextSourcePosition) {
accumulatedResult += stringSlice$2(S2, nextSourcePosition, position2) + replacement2;
nextSourcePosition = position2 + matched.length;
}
}
return accumulatedResult + stringSlice$2(S2, nextSourcePosition);
}
];
}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
var isObject$1 = isObject$a;
var classof$1 = classofRaw$2;
var wellKnownSymbol$5 = wellKnownSymbol$i;
var MATCH$1 = wellKnownSymbol$5("match");
var isRegexp = function(it2) {
var isRegExp2;
return isObject$1(it2) && ((isRegExp2 = it2[MATCH$1]) !== void 0 ? !!isRegExp2 : classof$1(it2) === "RegExp");
};
var isRegExp = isRegexp;
var $TypeError$1 = TypeError;
var notARegexp = function(it2) {
if (isRegExp(it2)) {
throw new $TypeError$1("The method doesn't accept regular expressions");
}
return it2;
};
var wellKnownSymbol$4 = wellKnownSymbol$i;
var MATCH = wellKnownSymbol$4("match");
var correctIsRegexpLogic = function(METHOD_NAME) {
var regexp = /./;
try {
"/./"[METHOD_NAME](regexp);
} catch (error1) {
try {
regexp[MATCH] = false;
return "/./"[METHOD_NAME](regexp);
} catch (error2) {
}
}
return false;
};
var $$7 = _export;
var uncurryThis$6 = functionUncurryThisClause;
var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;
var toLength$2 = toLength$6;
var toString$4 = toString$9;
var notARegExp$2 = notARegexp;
var requireObjectCoercible$4 = requireObjectCoercible$a;
var correctIsRegExpLogic$2 = correctIsRegexpLogic;
var stringSlice$1 = uncurryThis$6("".slice);
var min$2 = Math.min;
var CORRECT_IS_REGEXP_LOGIC$1 = correctIsRegExpLogic$2("startsWith");
var MDN_POLYFILL_BUG$1 = !CORRECT_IS_REGEXP_LOGIC$1 && !!function() {
var descriptor = getOwnPropertyDescriptor$1(String.prototype, "startsWith");
return descriptor && !descriptor.writable;
}();
$$7({ target: "String", proto: true, forced: !MDN_POLYFILL_BUG$1 && !CORRECT_IS_REGEXP_LOGIC$1 }, {
startsWith: function startsWith(searchString) {
var that = toString$4(requireObjectCoercible$4(this));
notARegExp$2(searchString);
var index2 = toLength$2(min$2(arguments.length > 1 ? arguments[1] : void 0, that.length));
var search = toString$4(searchString);
return stringSlice$1(that, index2, index2 + search.length) === search;
}
});
var wellKnownSymbol$3 = wellKnownSymbol$i;
var create$1 = objectCreate;
var defineProperty$1 = objectDefineProperty.f;
var UNSCOPABLES = wellKnownSymbol$3("unscopables");
var ArrayPrototype = Array.prototype;
if (ArrayPrototype[UNSCOPABLES] === void 0) {
defineProperty$1(ArrayPrototype, UNSCOPABLES, {
configurable: true,
value: create$1(null)
});
}
var addToUnscopables$1 = function(key) {
ArrayPrototype[UNSCOPABLES][key] = true;
};
var fails$5 = fails$l;
var correctPrototypeGetter = !fails$5(function() {
function F2() {
}
F2.prototype.constructor = null;
return Object.getPrototypeOf(new F2()) !== F2.prototype;
});
var hasOwn$1 = hasOwnProperty_1;
var isCallable$2 = isCallable$l;
var toObject$1 = toObject$4;
var sharedKey = sharedKey$3;
var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter;
var IE_PROTO = sharedKey("IE_PROTO");
var $Object = Object;
var ObjectPrototype = $Object.prototype;
var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function(O2) {
var object = toObject$1(O2);
if (hasOwn$1(object, IE_PROTO)) return object[IE_PROTO];
var constructor = object.constructor;
if (isCallable$2(constructor) && object instanceof constructor) {
return constructor.prototype;
}
return object instanceof $Object ? ObjectPrototype : null;
};
var fails$4 = fails$l;
var isCallable$1 = isCallable$l;
var isObject = isObject$a;
var getPrototypeOf$1 = objectGetPrototypeOf;
var defineBuiltIn$2 = defineBuiltIn$7;
var wellKnownSymbol$2 = wellKnownSymbol$i;
var ITERATOR$2 = wellKnownSymbol$2("iterator");
var BUGGY_SAFARI_ITERATORS$1 = false;
var IteratorPrototype$2, PrototypeOfArrayIteratorPrototype, arrayIterator;
if ([].keys) {
arrayIterator = [].keys();
if (!("next" in arrayIterator)) BUGGY_SAFARI_ITERATORS$1 = true;
else {
PrototypeOfArrayIteratorPrototype = getPrototypeOf$1(getPrototypeOf$1(arrayIterator));
if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype$2 = PrototypeOfArrayIteratorPrototype;
}
}
var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype$2) || fails$4(function() {
var test2 = {};
return IteratorPrototype$2[ITERATOR$2].call(test2) !== test2;
});
if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype$2 = {};
if (!isCallable$1(IteratorPrototype$2[ITERATOR$2])) {
defineBuiltIn$2(IteratorPrototype$2, ITERATOR$2, function() {
return this;
});
}
var iteratorsCore = {
IteratorPrototype: IteratorPrototype$2,
BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$1
};
var IteratorPrototype$1 = iteratorsCore.IteratorPrototype;
var create2 = objectCreate;
var createPropertyDescriptor = createPropertyDescriptor$3;
var setToStringTag$2 = setToStringTag$4;
var Iterators$2 = iterators;
var returnThis$1 = function() {
return this;
};
var iteratorCreateConstructor = function(IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {
var TO_STRING_TAG2 = NAME + " Iterator";
IteratorConstructor.prototype = create2(IteratorPrototype$1, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });
setToStringTag$2(IteratorConstructor, TO_STRING_TAG2, false);
Iterators$2[TO_STRING_TAG2] = returnThis$1;
return IteratorConstructor;
};
var $$6 = _export;
var call$2 = functionCall;
var FunctionName = functionName;
var isCallable = isCallable$l;
var createIteratorConstructor = iteratorCreateConstructor;
var getPrototypeOf = objectGetPrototypeOf;
var setPrototypeOf = objectSetPrototypeOf;
var setToStringTag$1 = setToStringTag$4;
var createNonEnumerableProperty$1 = createNonEnumerableProperty$5;
var defineBuiltIn$1 = defineBuiltIn$7;
var wellKnownSymbol$1 = wellKnownSymbol$i;
var Iterators$1 = iterators;
var IteratorsCore = iteratorsCore;
var PROPER_FUNCTION_NAME$2 = FunctionName.PROPER;
var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
var IteratorPrototype = IteratorsCore.IteratorPrototype;
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
var ITERATOR$1 = wellKnownSymbol$1("iterator");
var KEYS = "keys";
var VALUES = "values";
var ENTRIES = "entries";
var returnThis = function() {
return this;
};
var iteratorDefine = function(Iterable, NAME, IteratorConstructor, next, DEFAULT2, IS_SET, FORCED2) {
createIteratorConstructor(IteratorConstructor, NAME, next);
var getIterationMethod = function(KIND) {
if (KIND === DEFAULT2 && defaultIterator) return defaultIterator;
if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];
switch (KIND) {
case KEYS:
return function keys3() {
return new IteratorConstructor(this, KIND);
};
case VALUES:
return function values2() {
return new IteratorConstructor(this, KIND);
};
case ENTRIES:
return function entries() {
return new IteratorConstructor(this, KIND);
};
}
return function() {
return new IteratorConstructor(this);
};
};
var TO_STRING_TAG2 = NAME + " Iterator";
var INCORRECT_VALUES_NAME = false;
var IterablePrototype = Iterable.prototype;
var nativeIterator = IterablePrototype[ITERATOR$1] || IterablePrototype["@@iterator"] || DEFAULT2 && IterablePrototype[DEFAULT2];
var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT2);
var anyNativeIterator = NAME === "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator;
var CurrentIteratorPrototype, methods, KEY;
if (anyNativeIterator) {
CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
if (getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
if (setPrototypeOf) {
setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
} else if (!isCallable(CurrentIteratorPrototype[ITERATOR$1])) {
defineBuiltIn$1(CurrentIteratorPrototype, ITERATOR$1, returnThis);
}
}
setToStringTag$1(CurrentIteratorPrototype, TO_STRING_TAG2, true);
}
}
if (PROPER_FUNCTION_NAME$2 && DEFAULT2 === VALUES && nativeIterator && nativeIterator.name !== VALUES) {
if (CONFIGURABLE_FUNCTION_NAME) {
createNonEnumerableProperty$1(IterablePrototype, "name", VALUES);
} else {
INCORRECT_VALUES_NAME = true;
defaultIterator = function values2() {
return call$2(nativeIterator, this);
};
}
}
if (DEFAULT2) {
methods = {
values: getIterationMethod(VALUES),
keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
entries: getIterationMethod(ENTRIES)
};
if (FORCED2) for (KEY in methods) {
if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
defineBuiltIn$1(IterablePrototype, KEY, methods[KEY]);
}
}
else $$6({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
}
if (IterablePrototype[ITERATOR$1] !== defaultIterator) {
defineBuiltIn$1(IterablePrototype, ITERATOR$1, defaultIterator, { name: DEFAULT2 });
}
Iterators$1[NAME] = defaultIterator;
return methods;
};
var createIterResultObject$1 = function(value, done) {
return { value, done };
};
var toIndexedObject = toIndexedObject$5;
var addToUnscopables = addToUnscopables$1;
var Iterators = iterators;
var InternalStateModule = internalState;
var defineProperty3 = objectDefineProperty.f;
var defineIterator = iteratorDefine;
var createIterResultObject = createIterResultObject$1;
var DESCRIPTORS = descriptors;
var ARRAY_ITERATOR = "Array Iterator";
var setInternalState = InternalStateModule.set;
var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
var es_array_iterator = defineIterator(Array, "Array", function(iterated, kind) {
setInternalState(this, {
type: ARRAY_ITERATOR,
target: toIndexedObject(iterated),
// target
index: 0,
// next index
kind
// kind
});
}, function() {
var state = getInternalState(this);
var target = state.target;
var index2 = state.index++;
if (!target || index2 >= target.length) {
state.target = void 0;
return createIterResultObject(void 0, true);
}
switch (state.kind) {
case "keys":
return createIterResultObject(index2, false);
case "values":
return createIterResultObject(target[index2], false);
}
return createIterResultObject([index2, target[index2]], false);
}, "values");
var values = Iterators.Arguments = Iterators.Array;
addToUnscopables("keys");
addToUnscopables("values");
addToUnscopables("entries");
if (DESCRIPTORS && values.name !== "values") try {
defineProperty3(values, "name", { value: "values" });
} catch (error) {
}
var domIterables = {
CSSRuleList: 0,
CSSStyleDeclaration: 0,
CSSValueList: 0,
ClientRectList: 0,
DOMRectList: 0,
DOMStringList: 0,
DOMTokenList: 1,
DataTransferItemList: 0,
FileList: 0,
HTMLAllCollection: 0,
HTMLCollection: 0,
HTMLFormElement: 0,
HTMLSelectElement: 0,
MediaList: 0,
MimeTypeArray: 0,
NamedNodeMap: 0,
NodeList: 1,
PaintRequestList: 0,
Plugin: 0,
PluginArray: 0,
SVGLengthList: 0,
SVGNumberList: 0,
SVGPathSegList: 0,
SVGPointList: 0,
SVGStringList: 0,
SVGTransformList: 0,
SourceBufferList: 0,
StyleSheetList: 0,
TextTrackCueList: 0,
TextTrackList: 0,
TouchList: 0
};
var documentCreateElement = documentCreateElement$2;
var classList = documentCreateElement("span").classList;
var DOMTokenListPrototype$1 = classList && classList.constructor && classList.constructor.prototype;
var domTokenListPrototype = DOMTokenListPrototype$1 === Object.prototype ? void 0 : DOMTokenListPrototype$1;
var global$1 = global$l;
var DOMIterables = domIterables;
var DOMTokenListPrototype = domTokenListPrototype;
var ArrayIteratorMethods = es_array_iterator;
var createNonEnumerableProperty = createNonEnumerableProperty$5;
var setToStringTag = setToStringTag$4;
var wellKnownSymbol = wellKnownSymbol$i;
var ITERATOR = wellKnownSymbol("iterator");
var ArrayValues = ArrayIteratorMethods.values;
var handlePrototype = function(CollectionPrototype, COLLECTION_NAME) {
if (CollectionPrototype) {
if (CollectionPrototype[ITERATOR] !== ArrayValues) try {
createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);
} catch (error) {
CollectionPrototype[ITERATOR] = ArrayValues;
}
setToStringTag(CollectionPrototype, COLLECTION_NAME, true);
if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {
if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {
createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
} catch (error) {
CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
}
}
}
};
for (var COLLECTION_NAME in DOMIterables) {
handlePrototype(global$1[COLLECTION_NAME] && global$1[COLLECTION_NAME].prototype, COLLECTION_NAME);
}
handlePrototype(DOMTokenListPrototype, "DOMTokenList");
function toPrimitive(t3, r2) {
if ("object" != _typeof$2(t3) || !t3) return t3;
var e2 = t3[Symbol.toPrimitive];
if (void 0 !== e2) {
var i2 = e2.call(t3, r2 || "default");
if ("object" != _typeof$2(i2)) return i2;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r2 ? String : Number)(t3);
}
function toPropertyKey(t3) {
var i2 = toPrimitive(t3, "string");
return "symbol" == _typeof$2(i2) ? i2 : String(i2);
}
function _defineProperty(obj, key, value) {
key = toPropertyKey(key);
if (key in obj) {
Object.defineProperty(obj, key, {
value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
var aCallable = aCallable$9;
var toObject = toObject$4;
var IndexedObject = indexedObject;
var lengthOfArrayLike = lengthOfArrayLike$3;
var $TypeError = TypeError;
var REDUCE_EMPTY = "Reduce of empty array with no initial value";
var createMethod$1 = function(IS_RIGHT) {
return function(that, callbackfn, argumentsLength, memo) {
var O2 = toObject(that);
var self2 = IndexedObject(O2);
var length = lengthOfArrayLike(O2);
aCallable(callbackfn);
if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);
var index2 = IS_RIGHT ? length - 1 : 0;
var i2 = IS_RIGHT ? -1 : 1;
if (argumentsLength < 2) while (true) {
if (index2 in self2) {
memo = self2[index2];
index2 += i2;
break;
}
index2 += i2;
if (IS_RIGHT ? index2 < 0 : length <= index2) {
throw new $TypeError(REDUCE_EMPTY);
}
}
for (; IS_RIGHT ? index2 >= 0 : length > index2; index2 += i2) if (index2 in self2) {
memo = callbackfn(memo, self2[index2], index2, O2);
}
return memo;
};
};
var arrayReduce = {
// `Array.prototype.reduce` method
// https://tc39.es/ecma262/#sec-array.prototype.reduce
left: createMethod$1(false),
// `Array.prototype.reduceRight` method
// https://tc39.es/ecma262/#sec-array.prototype.reduceright
right: createMethod$1(true)
};
var fails$3 = fails$l;
var arrayMethodIsStrict$2 = function(METHOD_NAME, argument) {
var method = [][METHOD_NAME];
return !!method && fails$3(function() {
method.call(null, argument || function() {
return 1;
}, 1);
});
};
var $$5 = _export;
var $reduce = arrayReduce.left;
var arrayMethodIsStrict$1 = arrayMethodIsStrict$2;
var CHROME_VERSION = engineV8Version;
var IS_NODE = engineIsNode;
var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
var FORCED$1 = CHROME_BUG || !arrayMethodIsStrict$1("reduce");
$$5({ target: "Array", proto: true, forced: FORCED$1 }, {
reduce: function reduce(callbackfn) {
var length = arguments.length;
return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : void 0);
}
});
var $$4 = _export;
var uncurryThis$5 = functionUncurryThisClause;
var getOwnPropertyDescriptor2 = objectGetOwnPropertyDescriptor.f;
var toLength$1 = toLength$6;
var toString$3 = toString$9;
var notARegExp$1 = notARegexp;
var requireObjectCoercible$3 = requireObjectCoercible$a;
var correctIsRegExpLogic$1 = correctIsRegexpLogic;
var slice = uncurryThis$5("".slice);
var min$1 = Math.min;
var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic$1("endsWith");
var MDN_POLYFILL_BUG = !CORRECT_IS_REGEXP_LOGIC && !!function() {
var descriptor = getOwnPropertyDescriptor2(String.prototype, "endsWith");
return descriptor && !descriptor.writable;
}();
$$4({ target: "String", proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {
endsWith: function endsWith(searchString) {
var that = toString$3(requireObjectCoercible$3(this));
notARegExp$1(searchString);
var endPosition = arguments.length > 1 ? arguments[1] : void 0;
var len = that.length;
var end = endPosition === void 0 ? len : min$1(toLength$1(endPosition), len);
var search = toString$3(searchString);
return slice(that, end - search.length, end) === search;
}
});
var call$1 = functionCall;
var uncurryThis$4 = functionUncurryThis;
var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic;
var anObject$1 = anObject$g;
var isNullOrUndefined = isNullOrUndefined$7;
var requireObjectCoercible$2 = requireObjectCoercible$a;
var speciesConstructor = speciesConstructor$2;
var advanceStringIndex = advanceStringIndex$3;
var toLength = toLength$6;
var toString$2 = toString$9;
var getMethod = getMethod$6;
var regExpExec = regexpExecAbstract;
var stickyHelpers = regexpStickyHelpers;
var fails$2 = fails$l;
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
var MAX_UINT32 = 4294967295;
var min = Math.min;
var push = uncurryThis$4([].push);
var stringSlice = uncurryThis$4("".slice);
var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails$2(function() {
var re2 = /(?:)/;
var originalExec = re2.exec;
re2.exec = function() {
return originalExec.apply(this, arguments);
};
var result = "ab".split(re2);
return result.length !== 2 || result[0] !== "a" || result[1] !== "b";
});
var BUGGY = "abbc".split(/(b)*/)[1] === "c" || // eslint-disable-next-line regexp/no-empty-group -- required for testing
"test".split(/(?:)/, -1).length !== 4 || "ab".split(/(?:ab)*/).length !== 2 || ".".split(/(.?)(.?)/).length !== 4 || // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing
".".split(/()()/).length > 1 || "".split(/.?/).length;
fixRegExpWellKnownSymbolLogic("split", function(SPLIT, nativeSplit, maybeCallNative) {
var internalSplit = "0".split(void 0, 0).length ? function(separator, limit) {
return separator === void 0 && limit === 0 ? [] : call$1(nativeSplit, this, separator, limit);
} : nativeSplit;
return [
// `String.prototype.split` method
// https://tc39.es/ecma262/#sec-string.prototype.split
function split2(separator, limit) {
var O2 = requireObjectCoercible$2(this);
var splitter = isNullOrUndefined(separator) ? void 0 : getMethod(separator, SPLIT);
return splitter ? call$1(splitter, separator, O2, limit) : call$1(internalSplit, toString$2(O2), separator, limit);
},
// `RegExp.prototype[@@split]` method
// https://tc39.es/ecma262/#sec-regexp.prototype-@@split
//
// NOTE: This cannot be properly polyfilled in engines that don't support
// the 'y' flag.
function(string, limit) {
var rx = anObject$1(this);
var S2 = toString$2(string);
if (!BUGGY) {
var res = maybeCallNative(internalSplit, rx, S2, limit, internalSplit !== nativeSplit);
if (res.done) return res.value;
}
var C2 = speciesConstructor(rx, RegExp);
var unicodeMatching = rx.unicode;
var flags = (rx.ignoreCase ? "i" : "") + (rx.multiline ? "m" : "") + (rx.unicode ? "u" : "") + (UNSUPPORTED_Y ? "g" : "y");
var splitter = new C2(UNSUPPORTED_Y ? "^(?:" + rx.source + ")" : rx, flags);
var lim = limit === void 0 ? MAX_UINT32 : limit >>> 0;
if (lim === 0) return [];
if (S2.length === 0) return regExpExec(splitter, S2) === null ? [S2] : [];
var p2 = 0;
var q2 = 0;
var A5 = [];
while (q2 < S2.length) {
splitter.lastIndex = UNSUPPORTED_Y ? 0 : q2;
var z2 = regExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S2, q2) : S2);
var e2;
if (z2 === null || (e2 = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q2 : 0)), S2.length)) === p2) {
q2 = advanceStringIndex(S2, q2, unicodeMatching);
} else {
push(A5, stringSlice(S2, p2, q2));
if (A5.length === lim) return A5;
for (var i2 = 1; i2 <= z2.length - 1; i2++) {
push(A5, z2[i2]);
if (A5.length === lim) return A5;
}
q2 = p2 = e2;
}
}
push(A5, stringSlice(S2, p2));
return A5;
}
];
}, BUGGY || !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);
var raf$1 = { exports: {} };
var performanceNow = { exports: {} };
(function() {
var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;
if (typeof performance !== "undefined" && performance !== null && performance.now) {
performanceNow.exports = function() {
return performance.now();
};
} else if (typeof process !== "undefined" && process !== null && process.hrtime) {
performanceNow.exports = function() {
return (getNanoSeconds() - nodeLoadTime) / 1e6;
};
hrtime = process.hrtime;
getNanoSeconds = function() {
var hr;
hr = hrtime();
return hr[0] * 1e9 + hr[1];
};
moduleLoadTime = getNanoSeconds();
upTime = process.uptime() * 1e9;
nodeLoadTime = moduleLoadTime - upTime;
} else if (Date.now) {
performanceNow.exports = function() {
return Date.now() - loadTime;
};
loadTime = Date.now();
} else {
performanceNow.exports = function() {
return (/* @__PURE__ */ new Date()).getTime() - loadTime;
};
loadTime = (/* @__PURE__ */ new Date()).getTime();
}
}).call(commonjsGlobal);
var performanceNowExports = performanceNow.exports;
var now = performanceNowExports, root = typeof window === "undefined" ? commonjsGlobal : window, vendors = ["moz", "webkit"], suffix = "AnimationFrame", raf = root["request" + suffix], caf = root["cancel" + suffix] || root["cancelRequest" + suffix];
for (var i$1 = 0; !raf && i$1 < vendors.length; i$1++) {
raf = root[vendors[i$1] + "Request" + suffix];
caf = root[vendors[i$1] + "Cancel" + suffix] || root[vendors[i$1] + "CancelRequest" + suffix];
}
if (!raf || !caf) {
var last = 0, id = 0, queue = [], frameDuration = 1e3 / 60;
raf = function(callback) {
if (queue.length === 0) {
var _now = now(), next = Math.max(0, frameDuration - (_now - last));
last = next + _now;
setTimeout(function() {
var cp = queue.slice(0);
queue.length = 0;
for (var i2 = 0; i2 < cp.length; i2++) {
if (!cp[i2].cancelled) {
try {
cp[i2].callback(last);
} catch (e2) {
setTimeout(function() {
throw e2;
}, 0);
}
}
}
}, Math.round(next));
}
queue.push({
handle: ++id,
callback,
cancelled: false
});
return id;
};
caf = function(handle) {
for (var i2 = 0; i2 < queue.length; i2++) {
if (queue[i2].handle === handle) {
queue[i2].cancelled = true;
}
}
};
}
raf$1.exports = function(fn) {
return raf.call(root, fn);
};
raf$1.exports.cancel = function() {
caf.apply(root, arguments);
};
raf$1.exports.polyfill = function(object) {
if (!object) {
object = root;
}
object.requestAnimationFrame = raf;
object.cancelAnimationFrame = caf;
};
var rafExports = raf$1.exports;
const requestAnimationFrame = /* @__PURE__ */ getDefaultExportFromCjs(rafExports);
var whitespaces$2 = " \n\v\f\r \u2028\u2029\uFEFF";
var uncurryThis$3 = functionUncurryThis;
var requireObjectCoercible$1 = requireObjectCoercible$a;
var toString$1 = toString$9;
var whitespaces$1 = whitespaces$2;
var replace = uncurryThis$3("".replace);
var ltrim = RegExp("^[" + whitespaces$1 + "]+");
var rtrim = RegExp("(^|[^" + whitespaces$1 + "])[" + whitespaces$1 + "]+$");
var createMethod = function(TYPE) {
return function($this) {
var string = toString$1(requireObjectCoercible$1($this));
if (TYPE & 1) string = replace(string, ltrim, "");
if (TYPE & 2) string = replace(string, rtrim, "$1");
return string;
};
};
var stringTrim = {
// `String.prototype.{ trimLeft, trimStart }` methods
// https://tc39.es/ecma262/#sec-string.prototype.trimstart
start: createMethod(1),
// `String.prototype.{ trimRight, trimEnd }` methods
// https://tc39.es/ecma262/#sec-string.prototype.trimend
end: createMethod(2),
// `String.prototype.trim` method
// https://tc39.es/ecma262/#sec-string.prototype.trim
trim: createMethod(3)
};
var PROPER_FUNCTION_NAME$1 = functionName.PROPER;
var fails$1 = fails$l;
var whitespaces = whitespaces$2;
var non = "
";
var stringTrimForced = function(METHOD_NAME) {
return fails$1(function() {
return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() !== non || PROPER_FUNCTION_NAME$1 && whitespaces[METHOD_NAME].name !== METHOD_NAME;
});
};
var $$3 = _export;
var $trim = stringTrim.trim;
var forcedStringTrimMethod = stringTrimForced;
$$3({ target: "String", proto: true, forced: forcedStringTrimMethod("trim") }, {
trim: function trim() {
return $trim(this);
}
});
var rgbcolor = function(color_string) {
this.ok = false;
this.alpha = 1;
if (color_string.charAt(0) == "#") {
color_string = color_string.substr(1, 6);
}
color_string = color_string.replace(/ /g, "");
color_string = color_string.toLowerCase();
var simple_colors = {
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",
feldspar: "d19275",
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",
lightslateblue: "8470ff",
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",
violetred: "d02090",
wheat: "f5deb3",
white: "ffffff",
whitesmoke: "f5f5f5",
yellow: "ffff00",
yellowgreen: "9acd32"
};
color_string = simple_colors[color_string] || color_string;
var color_defs = [
{
re: /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*((?:\d?\.)?\d)\)$/,
example: ["rgba(123, 234, 45, 0.8)", "rgba(255,234,245,1.0)"],
process: function(bits3) {
return [
parseInt(bits3[1]),
parseInt(bits3[2]),
parseInt(bits3[3]),
parseFloat(bits3[4])
];
}
},
{
re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
example: ["rgb(123, 234, 45)", "rgb(255,234,245)"],
process: function(bits3) {
return [
parseInt(bits3[1]),
parseInt(bits3[2]),
parseInt(bits3[3])
];
}
},
{
re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
example: ["#00ff00", "336699"],
process: function(bits3) {
return [
parseInt(bits3[1], 16),
parseInt(bits3[2], 16),
parseInt(bits3[3], 16)
];
}
},
{
re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
example: ["#fb0", "f0f"],
process: function(bits3) {
return [
parseInt(bits3[1] + bits3[1], 16),
parseInt(bits3[2] + bits3[2], 16),
parseInt(bits3[3] + bits3[3], 16)
];
}
}
];
for (var i2 = 0; i2 < color_defs.length; i2++) {
var re2 = color_defs[i2].re;
var processor = color_defs[i2].process;
var bits2 = re2.exec(color_string);
if (bits2) {
var channels = processor(bits2);
this.r = channels[0];
this.g = channels[1];
this.b = channels[2];
if (channels.length > 3) {
this.alpha = channels[3];
}
this.ok = true;
}
}
this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r;
this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g;
this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b;
this.alpha = this.alpha < 0 ? 0 : this.alpha > 1 || isNaN(this.alpha) ? 1 : this.alpha;
this.toRGB = function() {
return "rgb(" + this.r + ", " + this.g + ", " + this.b + ")";
};
this.toRGBA = function() {
return "rgba(" + this.r + ", " + this.g + ", " + this.b + ", " + this.alpha + ")";
};
this.toHex = function() {
var r2 = this.r.toString(16);
var g2 = this.g.toString(16);
var b2 = this.b.toString(16);
if (r2.length == 1) r2 = "0" + r2;
if (g2.length == 1) g2 = "0" + g2;
if (b2.length == 1) b2 = "0" + b2;
return "#" + r2 + g2 + b2;
};
this.getHelpXML = function() {
var examples = new Array();
for (var i3 = 0; i3 < color_defs.length; i3++) {
var example = color_defs[i3].example;
for (var j2 = 0; j2 < example.length; j2++) {
examples[examples.length] = example[j2];
}
}
for (var sc in simple_colors) {
examples[examples.length] = sc;
}
var xml2 = document.createElement("ul");
xml2.setAttribute("id", "rgbcolor-examples");
for (var i3 = 0; i3 < examples.length; i3++) {
try {
var list_item = document.createElement("li");
var list_color = new RGBColor(examples[i3]);
var example_div = document.createElement("div");
example_div.style.cssText = "margin: 3px; border: 1px solid black; background:" + list_color.toHex() + "; color:" + list_color.toHex();
example_div.appendChild(document.createTextNode("test"));
var list_item_value = document.createTextNode(
" " + examples[i3] + " -> " + list_color.toRGB() + " -> " + list_color.toHex()
);
list_item.appendChild(example_div);
list_item.appendChild(list_item_value);
xml2.appendChild(list_item);
} catch (e2) {
}
}
return xml2;
};
};
const RGBColor$1 = /* @__PURE__ */ getDefaultExportFromCjs(rgbcolor);
var $$2 = _export;
var uncurryThis$2 = functionUncurryThisClause;
var $indexOf = arrayIncludes.indexOf;
var arrayMethodIsStrict = arrayMethodIsStrict$2;
var nativeIndexOf = uncurryThis$2([].indexOf);
var NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;
var FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict("indexOf");
$$2({ target: "Array", proto: true, forced: FORCED }, {
indexOf: function indexOf2(searchElement) {
var fromIndex = arguments.length > 1 ? arguments[1] : void 0;
return NEGATIVE_ZERO ? nativeIndexOf(this, searchElement, fromIndex) || 0 : $indexOf(this, searchElement, fromIndex);
}
});
var $$1 = _export;
var uncurryThis$1 = functionUncurryThis;
var notARegExp = notARegexp;
var requireObjectCoercible = requireObjectCoercible$a;
var toString2 = toString$9;
var correctIsRegExpLogic = correctIsRegexpLogic;
var stringIndexOf = uncurryThis$1("".indexOf);
$$1({ target: "String", proto: true, forced: !correctIsRegExpLogic("includes") }, {
includes: function includes(searchString) {
return !!~stringIndexOf(
toString2(requireObjectCoercible(this)),
toString2(notARegExp(searchString)),
arguments.length > 1 ? arguments[1] : void 0
);
}
});
var classof = classofRaw$2;
var isArray$1 = Array.isArray || function isArray(argument) {
return classof(argument) === "Array";
};
var $ = _export;
var uncurryThis = functionUncurryThis;
var isArray2 = isArray$1;
var nativeReverse = uncurryThis([].reverse);
var test = [1, 2];
$({ target: "Array", proto: true, forced: String(test) === String(test.reverse()) }, {
reverse: function reverse() {
if (isArray2(this)) this.length = this.length;
return nativeReverse(this);
}
});
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var t2 = function(r2, e2) {
return (t2 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(t3, r3) {
t3.__proto__ = r3;
} || function(t3, r3) {
for (var e3 in r3) Object.prototype.hasOwnProperty.call(r3, e3) && (t3[e3] = r3[e3]);
})(r2, e2);
};
function r(r2, e2) {
if ("function" != typeof e2 && null !== e2) throw new TypeError("Class extends value " + String(e2) + " is not a constructor or null");
function i2() {
this.constructor = r2;
}
t2(r2, e2), r2.prototype = null === e2 ? Object.create(e2) : (i2.prototype = e2.prototype, new i2());
}
function e(t3) {
var r2 = "";
Array.isArray(t3) || (t3 = [t3]);
for (var e2 = 0; e2 < t3.length; e2++) {
var i2 = t3[e2];
if (i2.type === _.CLOSE_PATH) r2 += "z";
else if (i2.type === _.HORIZ_LINE_TO) r2 += (i2.relative ? "h" : "H") + i2.x;
else if (i2.type === _.VERT_LINE_TO) r2 += (i2.relative ? "v" : "V") + i2.y;
else if (i2.type === _.MOVE_TO) r2 += (i2.relative ? "m" : "M") + i2.x + " " + i2.y;
else if (i2.type === _.LINE_TO) r2 += (i2.relative ? "l" : "L") + i2.x + " " + i2.y;
else if (i2.type === _.CURVE_TO) r2 += (i2.relative ? "c" : "C") + i2.x1 + " " + i2.y1 + " " + i2.x2 + " " + i2.y2 + " " + i2.x + " " + i2.y;
else if (i2.type === _.SMOOTH_CURVE_TO) r2 += (i2.relative ? "s" : "S") + i2.x2 + " " + i2.y2 + " " + i2.x + " " + i2.y;
else if (i2.type === _.QUAD_TO) r2 += (i2.relative ? "q" : "Q") + i2.x1 + " " + i2.y1 + " " + i2.x + " " + i2.y;
else if (i2.type === _.SMOOTH_QUAD_TO) r2 += (i2.relative ? "t" : "T") + i2.x + " " + i2.y;
else {
if (i2.type !== _.ARC) throw new Error('Unexpected command type "' + i2.type + '" at index ' + e2 + ".");
r2 += (i2.relative ? "a" : "A") + i2.rX + " " + i2.rY + " " + i2.xRot + " " + +i2.lArcFlag + " " + +i2.sweepFlag + " " + i2.x + " " + i2.y;
}
}
return r2;
}
function i(t3, r2) {
var e2 = t3[0], i2 = t3[1];
return [e2 * Math.cos(r2) - i2 * Math.sin(r2), e2 * Math.sin(r2) + i2 * Math.cos(r2)];
}
function a() {
for (var t3 = [], r2 = 0; r2 < arguments.length; r2++) t3[r2] = arguments[r2];
for (var e2 = 0; e2 < t3.length; e2++) if ("number" != typeof t3[e2]) throw new Error("assertNumbers arguments[" + e2 + "] is not a number. " + typeof t3[e2] + " == typeof " + t3[e2]);
return true;
}
var n = Math.PI;
function o(t3, r2, e2) {
t3.lArcFlag = 0 === t3.lArcFlag ? 0 : 1, t3.sweepFlag = 0 === t3.sweepFlag ? 0 : 1;
var a2 = t3.rX, o2 = t3.rY, s2 = t3.x, u2 = t3.y;
a2 = Math.abs(t3.rX), o2 = Math.abs(t3.rY);
var h2 = i([(r2 - s2) / 2, (e2 - u2) / 2], -t3.xRot / 180 * n), c2 = h2[0], y2 = h2[1], p2 = Math.pow(c2, 2) / Math.pow(a2, 2) + Math.pow(y2, 2) / Math.pow(o2, 2);
1 < p2 && (a2 *= Math.sqrt(p2), o2 *= Math.sqrt(p2)), t3.rX = a2, t3.rY = o2;
var m2 = Math.pow(a2, 2) * Math.pow(y2, 2) + Math.pow(o2, 2) * Math.pow(c2, 2), O2 = (t3.lArcFlag !== t3.sweepFlag ? 1 : -1) * Math.sqrt(Math.max(0, (Math.pow(a2, 2) * Math.pow(o2, 2) - m2) / m2)), l2 = a2 * y2 / o2 * O2, T2 = -o2 * c2 / a2 * O2, v2 = i([l2, T2], t3.xRot / 180 * n);
t3.cX = v2[0] + (r2 + s2) / 2, t3.cY = v2[1] + (e2 + u2) / 2, t3.phi1 = Math.atan2((y2 - T2) / o2, (c2 - l2) / a2), t3.phi2 = Math.atan2((-y2 - T2) / o2, (-c2 - l2) / a2), 0 === t3.sweepFlag && t3.phi2 > t3.phi1 && (t3.phi2 -= 2 * n), 1 === t3.sweepFlag && t3.phi2 < t3.phi1 && (t3.phi2 += 2 * n), t3.phi1 *= 180 / n, t3.phi2 *= 180 / n;
}
function s(t3, r2, e2) {
a(t3, r2, e2);
var i2 = t3 * t3 + r2 * r2 - e2 * e2;
if (0 > i2) return [];
if (0 === i2) return [[t3 * e2 / (t3 * t3 + r2 * r2), r2 * e2 / (t3 * t3 + r2 * r2)]];
var n2 = Math.sqrt(i2);
return [[(t3 * e2 + r2 * n2) / (t3 * t3 + r2 * r2), (r2 * e2 - t3 * n2) / (t3 * t3 + r2 * r2)], [(t3 * e2 - r2 * n2) / (t3 * t3 + r2 * r2), (r2 * e2 + t3 * n2) / (t3 * t3 + r2 * r2)]];
}
var u, h = Math.PI / 180;
function c$1(t3, r2, e2) {
return (1 - e2) * t3 + e2 * r2;
}
function y(t3, r2, e2, i2) {
return t3 + Math.cos(i2 / 180 * n) * r2 + Math.sin(i2 / 180 * n) * e2;
}
function p(t3, r2, e2, i2) {
var a2 = 1e-6, n2 = r2 - t3, o2 = e2 - r2, s2 = 3 * n2 + 3 * (i2 - e2) - 6 * o2, u2 = 6 * (o2 - n2), h2 = 3 * n2;
return Math.abs(s2) < a2 ? [-h2 / u2] : function(t4, r3, e3) {
void 0 === e3 && (e3 = 1e-6);
var i3 = t4 * t4 / 4 - r3;
if (i3 < -e3) return [];
if (i3 <= e3) return [-t4 / 2];
var a3 = Math.sqrt(i3);
return [-t4 / 2 - a3, -t4 / 2 + a3];
}(u2 / s2, h2 / s2, a2);
}
function m$1(t3, r2, e2, i2, a2) {
var n2 = 1 - a2;
return t3 * (n2 * n2 * n2) + r2 * (3 * n2 * n2 * a2) + e2 * (3 * n2 * a2 * a2) + i2 * (a2 * a2 * a2);
}
!function(t3) {
function r2() {
return u2(function(t4, r3, e3) {
return t4.relative && (void 0 !== t4.x1 && (t4.x1 += r3), void 0 !== t4.y1 && (t4.y1 += e3), void 0 !== t4.x2 && (t4.x2 += r3), void 0 !== t4.y2 && (t4.y2 += e3), void 0 !== t4.x && (t4.x += r3), void 0 !== t4.y && (t4.y += e3), t4.relative = false), t4;
});
}
function e2() {
var t4 = NaN, r3 = NaN, e3 = NaN, i2 = NaN;
return u2(function(a2, n3, o2) {
return a2.type & _.SMOOTH_CURVE_TO && (a2.type = _.CURVE_TO, t4 = isNaN(t4) ? n3 : t4, r3 = isNaN(r3) ? o2 : r3, a2.x1 = a2.relative ? n3 - t4 : 2 * n3 - t4, a2.y1 = a2.relative ? o2 - r3 : 2 * o2 - r3), a2.type & _.CURVE_TO ? (t4 = a2.relative ? n3 + a2.x2 : a2.x2, r3 = a2.relative ? o2 + a2.y2 : a2.y2) : (t4 = NaN, r3 = NaN), a2.type & _.SMOOTH_QUAD_TO && (a2.type = _.QUAD_TO, e3 = isNaN(e3) ? n3 : e3, i2 = isNaN(i2) ? o2 : i2, a2.x1 = a2.relative ? n3 - e3 : 2 * n3 - e3, a2.y1 = a2.relative ? o2 - i2 : 2 * o2 - i2), a2.type & _.QUAD_TO ? (e3 = a2.relative ? n3 + a2.x1 : a2.x1, i2 = a2.relative ? o2 + a2.y1 : a2.y1) : (e3 = NaN, i2 = NaN), a2;
});
}
function n2() {
var t4 = NaN, r3 = NaN;
return u2(function(e3, i2, a2) {
if (e3.type & _.SMOOTH_QUAD_TO && (e3.type = _.QUAD_TO, t4 = isNaN(t4) ? i2 : t4, r3 = isNaN(r3) ? a2 : r3, e3.x1 = e3.relative ? i2 - t4 : 2 * i2 - t4, e3.y1 = e3.relative ? a2 - r3 : 2 * a2 - r3), e3.type & _.QUAD_TO) {
t4 = e3.relative ? i2 + e3.x1 : e3.x1, r3 = e3.relative ? a2 + e3.y1 : e3.y1;
var n3 = e3.x1, o2 = e3.y1;
e3.type = _.CURVE_TO, e3.x1 = ((e3.relative ? 0 : i2) + 2 * n3) / 3, e3.y1 = ((e3.relative ? 0 : a2) + 2 * o2) / 3, e3.x2 = (e3.x + 2 * n3) / 3, e3.y2 = (e3.y + 2 * o2) / 3;
} else t4 = NaN, r3 = NaN;
return e3;
});
}
function u2(t4) {
var r3 = 0, e3 = 0, i2 = NaN, a2 = NaN;
return function(n3) {
if (isNaN(i2) && !(n3.type & _.MOVE_TO)) throw new Error("path must start with moveto");
var o2 = t4(n3, r3, e3, i2, a2);
return n3.type & _.CLOSE_PATH && (r3 = i2, e3 = a2), void 0 !== n3.x && (r3 = n3.relative ? r3 + n3.x : n3.x), void 0 !== n3.y && (e3 = n3.relative ? e3 + n3.y : n3.y), n3.type & _.MOVE_TO && (i2 = r3, a2 = e3), o2;
};
}
function O2(t4, r3, e3, i2, n3, o2) {
return a(t4, r3, e3, i2, n3, o2), u2(function(a2, s2, u3, h2) {
var c2 = a2.x1, y2 = a2.x2, p2 = a2.relative && !isNaN(h2), m2 = void 0 !== a2.x ? a2.x : p2 ? 0 : s2, O3 = void 0 !== a2.y ? a2.y : p2 ? 0 : u3;
function l3(t5) {
return t5 * t5;
}
a2.type & _.HORIZ_LINE_TO && 0 !== r3 && (a2.type = _.LINE_TO, a2.y = a2.relative ? 0 : u3), a2.type & _.VERT_LINE_TO && 0 !== e3 && (a2.type = _.LINE_TO, a2.x = a2.relative ? 0 : s2), void 0 !== a2.x && (a2.x = a2.x * t4 + O3 * e3 + (p2 ? 0 : n3)), void 0 !== a2.y && (a2.y = m2 * r3 + a2.y * i2 + (p2 ? 0 : o2)), void 0 !== a2.x1 && (a2.x1 = a2.x1 * t4 + a2.y1 * e3 + (p2 ? 0 : n3)), void 0 !== a2.y1 && (a2.y1 = c2 * r3 + a2.y1 * i2 + (p2 ? 0 : o2)), void 0 !== a2.x2 && (a2.x2 = a2.x2 * t4 + a2.y2 * e3 + (p2 ? 0 : n3)), void 0 !== a2.y2 && (a2.y2 = y2 * r3 + a2.y2 * i2 + (p2 ? 0 : o2));
var T2 = t4 * i2 - r3 * e3;
if (void 0 !== a2.xRot && (1 !== t4 || 0 !== r3 || 0 !== e3 || 1 !== i2)) if (0 === T2) delete a2.rX, delete a2.rY, delete a2.xRot, delete a2.lArcFlag, delete a2.sweepFlag, a2.type = _.LINE_TO;
else {
var v2 = a2.xRot * Math.PI / 180, f2 = Math.sin(v2), N2 = Math.cos(v2), x2 = 1 / l3(a2.rX), d2 = 1 / l3(a2.rY), E2 = l3(N2) * x2 + l3(f2) * d2, A5 = 2 * f2 * N2 * (x2 - d2), C2 = l3(f2) * x2 + l3(N2) * d2, M2 = E2 * i2 * i2 - A5 * r3 * i2 + C2 * r3 * r3, R2 = A5 * (t4 * i2 + r3 * e3) - 2 * (E2 * e3 * i2 + C2 * t4 * r3), g2 = E2 * e3 * e3 - A5 * t4 * e3 + C2 * t4 * t4, I2 = (Math.atan2(R2, M2 - g2) + Math.PI) % Math.PI / 2, S2 = Math.sin(I2), L2 = Math.cos(I2);
a2.rX = Math.abs(T2) / Math.sqrt(M2 * l3(L2) + R2 * S2 * L2 + g2 * l3(S2)), a2.rY = Math.abs(T2) / Math.sqrt(M2 * l3(S2) - R2 * S2 * L2 + g2 * l3(L2)), a2.xRot = 180 * I2 / Math.PI;
}
return void 0 !== a2.sweepFlag && 0 > T2 && (a2.sweepFlag = +!a2.sweepFlag), a2;
});
}
function l2() {
return function(t4) {
var r3 = {};
for (var e3 in t4) r3[e3] = t4[e3];
return r3;
};
}
t3.ROUND = function(t4) {
function r3(r4) {
return Math.round(r4 * t4) / t4;
}
return void 0 === t4 && (t4 = 1e13), a(t4), function(t5) {
return void 0 !== t5.x1 && (t5.x1 = r3(t5.x1)), void 0 !== t5.y1 && (t5.y1 = r3(t5.y1)), void 0 !== t5.x2 && (t5.x2 = r3(t5.x2)), void 0 !== t5.y2 && (t5.y2 = r3(t5.y2)), void 0 !== t5.x && (t5.x = r3(t5.x)), void 0 !== t5.y && (t5.y = r3(t5.y)), void 0 !== t5.rX && (t5.rX = r3(t5.rX)), void 0 !== t5.rY && (t5.rY = r3(t5.rY)), t5;
};
}, t3.TO_ABS = r2, t3.TO_REL = function() {
return u2(function(t4, r3, e3) {
return t4.relative || (void 0 !== t4.x1 && (t4.x1 -= r3), void 0 !== t4.y1 && (t4.y1 -= e3), void 0 !== t4.x2 && (t4.x2 -= r3), void 0 !== t4.y2 && (t4.y2 -= e3), void 0 !== t4.x && (t4.x -= r3), void 0 !== t4.y && (t4.y -= e3), t4.relative = true), t4;
});
}, t3.NORMALIZE_HVZ = function(t4, r3, e3) {
return void 0 === t4 && (t4 = true), void 0 === r3 && (r3 = true), void 0 === e3 && (e3 = true), u2(function(i2, a2, n3, o2, s2) {
if (isNaN(o2) && !(i2.type & _.MOVE_TO)) throw new Error("path must start with moveto");
return r3 && i2.type & _.HORIZ_LINE_TO && (i2.type = _.LINE_TO, i2.y = i2.relative ? 0 : n3), e3 && i2.type & _.VERT_LINE_TO && (i2.type = _.LINE_TO, i2.x = i2.relative ? 0 : a2), t4 && i2.type & _.CLOSE_PATH && (i2.type = _.LINE_TO, i2.x = i2.relative ? o2 - a2 : o2, i2.y = i2.relative ? s2 - n3 : s2), i2.type & _.ARC && (0 === i2.rX || 0 === i2.rY) && (i2.type = _.LINE_TO, delete i2.rX, delete i2.rY, delete i2.xRot, delete i2.lArcFlag, delete i2.sweepFlag), i2;
});
}, t3.NORMALIZE_ST = e2, t3.QT_TO_C = n2, t3.INFO = u2, t3.SANITIZE = function(t4) {
void 0 === t4 && (t4 = 0), a(t4);
var r3 = NaN, e3 = NaN, i2 = NaN, n3 = NaN;
return u2(function(a2, o2, s2, u3, h2) {
var c2 = Math.abs, y2 = false, p2 = 0, m2 = 0;
if (a2.type & _.SMOOTH_CURVE_TO && (p2 = isNaN(r3) ? 0 : o2 - r3, m2 = isNaN(e3) ? 0 : s2 - e3), a2.type & (_.CURVE_TO | _.SMOOTH_CURVE_TO) ? (r3 = a2.relative ? o2 + a2.x2 : a2.x2, e3 = a2.relative ? s2 + a2.y2 : a2.y2) : (r3 = NaN, e3 = NaN), a2.type & _.SMOOTH_QUAD_TO ? (i2 = isNaN(i2) ? o2 : 2 * o2 - i2, n3 = isNaN(n3) ? s2 : 2 * s2 - n3) : a2.type & _.QUAD_TO ? (i2 = a2.relative ? o2 + a2.x1 : a2.x1, n3 = a2.relative ? s2 + a2.y1 : a2.y2) : (i2 = NaN, n3 = NaN), a2.type & _.LINE_COMMANDS || a2.type & _.ARC && (0 === a2.rX || 0 === a2.rY || !a2.lArcFlag) || a2.type & _.CURVE_TO || a2.type & _.SMOOTH_CURVE_TO || a2.type & _.QUAD_TO || a2.type & _.SMOOTH_QUAD_TO) {
var O3 = void 0 === a2.x ? 0 : a2.relative ? a2.x : a2.x - o2, l3 = void 0 === a2.y ? 0 : a2.relative ? a2.y : a2.y - s2;
p2 = isNaN(i2) ? void 0 === a2.x1 ? p2 : a2.relative ? a2.x : a2.x1 - o2 : i2 - o2, m2 = isNaN(n3) ? void 0 === a2.y1 ? m2 : a2.relative ? a2.y : a2.y1 - s2 : n3 - s2;
var T2 = void 0 === a2.x2 ? 0 : a2.relative ? a2.x : a2.x2 - o2, v2 = void 0 === a2.y2 ? 0 : a2.relative ? a2.y : a2.y2 - s2;
c2(O3) <= t4 && c2(l3) <= t4 && c2(p2) <= t4 && c2(m2) <= t4 && c2(T2) <= t4 && c2(v2) <= t4 && (y2 = true);
}
return a2.type & _.CLOSE_PATH && c2(o2 - u3) <= t4 && c2(s2 - h2) <= t4 && (y2 = true), y2 ? [] : a2;
});
}, t3.MATRIX = O2, t3.ROTATE = function(t4, r3, e3) {
void 0 === r3 && (r3 = 0), void 0 === e3 && (e3 = 0), a(t4, r3, e3);
var i2 = Math.sin(t4), n3 = Math.cos(t4);
return O2(n3, i2, -i2, n3, r3 - r3 * n3 + e3 * i2, e3 - r3 * i2 - e3 * n3);
}, t3.TRANSLATE = function(t4, r3) {
return void 0 === r3 && (r3 = 0), a(t4, r3), O2(1, 0, 0, 1, t4, r3);
}, t3.SCALE = function(t4, r3) {
return void 0 === r3 && (r3 = t4), a(t4, r3), O2(t4, 0, 0, r3, 0, 0);
}, t3.SKEW_X = function(t4) {
return a(t4), O2(1, 0, Math.atan(t4), 1, 0, 0);
}, t3.SKEW_Y = function(t4) {
return a(t4), O2(1, Math.atan(t4), 0, 1, 0, 0);
}, t3.X_AXIS_SYMMETRY = function(t4) {
return void 0 === t4 && (t4 = 0), a(t4), O2(-1, 0, 0, 1, t4, 0);
}, t3.Y_AXIS_SYMMETRY = function(t4) {
return void 0 === t4 && (t4 = 0), a(t4), O2(1, 0, 0, -1, 0, t4);
}, t3.A_TO_C = function() {
return u2(function(t4, r3, e3) {
return _.ARC === t4.type ? function(t5, r4, e4) {
var a2, n3, s2, u3;
t5.cX || o(t5, r4, e4);
for (var y2 = Math.min(t5.phi1, t5.phi2), p2 = Math.max(t5.phi1, t5.phi2) - y2, m2 = Math.ceil(p2 / 90), O3 = new Array(m2), l3 = r4, T2 = e4, v2 = 0; v2 < m2; v2++) {
var f2 = c$1(t5.phi1, t5.phi2, v2 / m2), N2 = c$1(t5.phi1, t5.phi2, (v2 + 1) / m2), x2 = N2 - f2, d2 = 4 / 3 * Math.tan(x2 * h / 4), E2 = [Math.cos(f2 * h) - d2 * Math.sin(f2 * h), Math.sin(f2 * h) + d2 * Math.cos(f2 * h)], A5 = E2[0], C2 = E2[1], M2 = [Math.cos(N2 * h), Math.sin(N2 * h)], R2 = M2[0], g2 = M2[1], I2 = [R2 + d2 * Math.sin(N2 * h), g2 - d2 * Math.cos(N2 * h)], S2 = I2[0], L2 = I2[1];
O3[v2] = { relative: t5.relative, type: _.CURVE_TO };
var H4 = function(r5, e5) {
var a3 = i([r5 * t5.rX, e5 * t5.rY], t5.xRot), n4 = a3[0], o2 = a3[1];
return [t5.cX + n4, t5.cY + o2];
};
a2 = H4(A5, C2), O3[v2].x1 = a2[0], O3[v2].y1 = a2[1], n3 = H4(S2, L2), O3[v2].x2 = n3[0], O3[v2].y2 = n3[1], s2 = H4(R2, g2), O3[v2].x = s2[0], O3[v2].y = s2[1], t5.relative && (O3[v2].x1 -= l3, O3[v2].y1 -= T2, O3[v2].x2 -= l3, O3[v2].y2 -= T2, O3[v2].x -= l3, O3[v2].y -= T2), l3 = (u3 = [O3[v2].x, O3[v2].y])[0], T2 = u3[1];
}
return O3;
}(t4, t4.relative ? 0 : r3, t4.relative ? 0 : e3) : t4;
});
}, t3.ANNOTATE_ARCS = function() {
return u2(function(t4, r3, e3) {
return t4.relative && (r3 = 0, e3 = 0), _.ARC === t4.type && o(t4, r3, e3), t4;
});
}, t3.CLONE = l2, t3.CALCULATE_BOUNDS = function() {
var t4 = function(t5) {
var r3 = {};
for (var e3 in t5) r3[e3] = t5[e3];
return r3;
}, i2 = r2(), a2 = n2(), h2 = e2(), c2 = u2(function(r3, e3, n3) {
var u3 = h2(a2(i2(t4(r3))));
function O3(t5) {
t5 > c2.maxX && (c2.maxX = t5), t5 < c2.minX && (c2.minX = t5);
}
function l3(t5) {
t5 > c2.maxY && (c2.maxY = t5), t5 < c2.minY && (c2.minY = t5);
}
if (u3.type & _.DRAWING_COMMANDS && (O3(e3), l3(n3)), u3.type & _.HORIZ_LINE_TO && O3(u3.x), u3.type & _.VERT_LINE_TO && l3(u3.y), u3.type & _.LINE_TO && (O3(u3.x), l3(u3.y)), u3.type & _.CURVE_TO) {
O3(u3.x), l3(u3.y);
for (var T2 = 0, v2 = p(e3, u3.x1, u3.x2, u3.x); T2 < v2.length; T2++) {
0 < (w2 = v2[T2]) && 1 > w2 && O3(m$1(e3, u3.x1, u3.x2, u3.x, w2));
}
for (var f2 = 0, N2 = p(n3, u3.y1, u3.y2, u3.y); f2 < N2.length; f2++) {
0 < (w2 = N2[f2]) && 1 > w2 && l3(m$1(n3, u3.y1, u3.y2, u3.y, w2));
}
}
if (u3.type & _.ARC) {
O3(u3.x), l3(u3.y), o(u3, e3, n3);
for (var x2 = u3.xRot / 180 * Math.PI, d2 = Math.cos(x2) * u3.rX, E2 = Math.sin(x2) * u3.rX, A5 = -Math.sin(x2) * u3.rY, C2 = Math.cos(x2) * u3.rY, M2 = u3.phi1 < u3.phi2 ? [u3.phi1, u3.phi2] : -180 > u3.phi2 ? [u3.phi2 + 360, u3.phi1 + 360] : [u3.phi2, u3.phi1], R2 = M2[0], g2 = M2[1], I2 = function(t5) {
var r4 = t5[0], e4 = t5[1], i3 = 180 * Math.atan2(e4, r4) / Math.PI;
return i3 < R2 ? i3 + 360 : i3;
}, S2 = 0, L2 = s(A5, -d2, 0).map(I2); S2 < L2.length; S2++) {
(w2 = L2[S2]) > R2 && w2 < g2 && O3(y(u3.cX, d2, A5, w2));
}
for (var H4 = 0, U2 = s(C2, -E2, 0).map(I2); H4 < U2.length; H4++) {
var w2;
(w2 = U2[H4]) > R2 && w2 < g2 && l3(y(u3.cY, E2, C2, w2));
}
}
return r3;
});
return c2.minX = 1 / 0, c2.maxX = -1 / 0, c2.minY = 1 / 0, c2.maxY = -1 / 0, c2;
};
}(u || (u = {}));
var O, l = function() {
function t3() {
}
return t3.prototype.round = function(t4) {
return this.transform(u.ROUND(t4));
}, t3.prototype.toAbs = function() {
return this.transform(u.TO_ABS());
}, t3.prototype.toRel = function() {
return this.transform(u.TO_REL());
}, t3.prototype.normalizeHVZ = function(t4, r2, e2) {
return this.transform(u.NORMALIZE_HVZ(t4, r2, e2));
}, t3.prototype.normalizeST = function() {
return this.transform(u.NORMALIZE_ST());
}, t3.prototype.qtToC = function() {
return this.transform(u.QT_TO_C());
}, t3.prototype.aToC = function() {
return this.transform(u.A_TO_C());
}, t3.prototype.sanitize = function(t4) {
return this.transform(u.SANITIZE(t4));
}, t3.prototype.translate = function(t4, r2) {
return this.transform(u.TRANSLATE(t4, r2));
}, t3.prototype.scale = function(t4, r2) {
return this.transform(u.SCALE(t4, r2));
}, t3.prototype.rotate = function(t4, r2, e2) {
return this.transform(u.ROTATE(t4, r2, e2));
}, t3.prototype.matrix = function(t4, r2, e2, i2, a2, n2) {
return this.transform(u.MATRIX(t4, r2, e2, i2, a2, n2));
}, t3.prototype.skewX = function(t4) {
return this.transform(u.SKEW_X(t4));
}, t3.prototype.skewY = function(t4) {
return this.transform(u.SKEW_Y(t4));
}, t3.prototype.xSymmetry = function(t4) {
return this.transform(u.X_AXIS_SYMMETRY(t4));
}, t3.prototype.ySymmetry = function(t4) {
return this.transform(u.Y_AXIS_SYMMETRY(t4));
}, t3.prototype.annotateArcs = function() {
return this.transform(u.ANNOTATE_ARCS());
}, t3;
}(), T = function(t3) {
return " " === t3 || " " === t3 || "\r" === t3 || "\n" === t3;
}, v = function(t3) {
return "0".charCodeAt(0) <= t3.charCodeAt(0) && t3.charCodeAt(0) <= "9".charCodeAt(0);
}, f = function(t3) {
function e2() {
var r2 = t3.call(this) || this;
return r2.curNumber = "", r2.curCommandType = -1, r2.curCommandRelative = false, r2.canParseCommandOrComma = true, r2.curNumberHasExp = false, r2.curNumberHasExpDigits = false, r2.curNumberHasDecimal = false, r2.curArgs = [], r2;
}
return r(e2, t3), e2.prototype.finish = function(t4) {
if (void 0 === t4 && (t4 = []), this.parse(" ", t4), 0 !== this.curArgs.length || !this.canParseCommandOrComma) throw new SyntaxError("Unterminated command at the path end.");
return t4;
}, e2.prototype.parse = function(t4, r2) {
var e3 = this;
void 0 === r2 && (r2 = []);
for (var i2 = function(t5) {
r2.push(t5), e3.curArgs.length = 0, e3.canParseCommandOrComma = true;
}, a2 = 0; a2 < t4.length; a2++) {
var n2 = t4[a2], o2 = !(this.curCommandType !== _.ARC || 3 !== this.curArgs.length && 4 !== this.curArgs.length || 1 !== this.curNumber.length || "0" !== this.curNumber && "1" !== this.curNumber), s2 = v(n2) && ("0" === this.curNumber && "0" === n2 || o2);
if (!v(n2) || s2) if ("e" !== n2 && "E" !== n2) if ("-" !== n2 && "+" !== n2 || !this.curNumberHasExp || this.curNumberHasExpDigits) if ("." !== n2 || this.curNumberHasExp || this.curNumberHasDecimal || o2) {
if (this.curNumber && -1 !== this.curCommandType) {
var u2 = Number(this.curNumber);
if (isNaN(u2)) throw new SyntaxError("Invalid number ending at " + a2);
if (this.curCommandType === _.ARC) {
if (0 === this.curArgs.length || 1 === this.curArgs.length) {
if (0 > u2) throw new SyntaxError('Expected positive number, got "' + u2 + '" at index "' + a2 + '"');
} else if ((3 === this.curArgs.length || 4 === this.curArgs.length) && "0" !== this.curNumber && "1" !== this.curNumber) throw new SyntaxError('Expected a flag, got "' + this.curNumber + '" at index "' + a2 + '"');
}
this.curArgs.push(u2), this.curArgs.length === N[this.curCommandType] && (_.HORIZ_LINE_TO === this.curCommandType ? i2({ type: _.HORIZ_LINE_TO, relative: this.curCommandRelative, x: u2 }) : _.VERT_LINE_TO === this.curCommandType ? i2({ type: _.VERT_LINE_TO, relative: this.curCommandRelative, y: u2 }) : this.curCommandType === _.MOVE_TO || this.curCommandType === _.LINE_TO || this.curCommandType === _.SMOOTH_QUAD_TO ? (i2({ type: this.curCommandType, relative: this.curCommandRelative, x: this.curArgs[0], y: this.curArgs[1] }), _.MOVE_TO === this.curCommandType && (this.curCommandType = _.LINE_TO)) : this.curCommandType === _.CURVE_TO ? i2({ type: _.CURVE_TO, relative: this.curCommandRelative, x1: this.curArgs[0], y1: this.curArgs[1], x2: this.curArgs[2], y2: this.curArgs[3], x: this.curArgs[4], y: this.curArgs[5] }) : this.curCommandType === _.SMOOTH_CURVE_TO ? i2({ type: _.SMOOTH_CURVE_TO, relative: this.curCommandRelative, x2: this.curArgs[0], y2: this.curArgs[1], x: this.curArgs[2], y: this.curArgs[3] }) : this.curCommandType === _.QUAD_TO ? i2({ type: _.QUAD_TO, relative: this.curCommandRelative, x1: this.curArgs[0], y1: this.curArgs[1], x: this.curArgs[2], y: this.curArgs[3] }) : this.curCommandType === _.ARC && i2({ type: _.ARC, relative: this.curCommandRelative, rX: this.curArgs[0], rY: this.curArgs[1], xRot: this.curArgs[2], lArcFlag: this.curArgs[3], sweepFlag: this.curArgs[4], x: this.curArgs[5], y: this.curArgs[6] })), this.curNumber = "", this.curNumberHasExpDigits = false, this.curNumberHasExp = false, this.curNumberHasDecimal = false, this.canParseCommandOrComma = true;
}
if (!T(n2)) if ("," === n2 && this.canParseCommandOrComma) this.canParseCommandOrComma = false;
else if ("+" !== n2 && "-" !== n2 && "." !== n2) if (s2) this.curNumber = n2, this.curNumberHasDecimal = false;
else {
if (0 !== this.curArgs.length) throw new SyntaxError("Unterminated command at index " + a2 + ".");
if (!this.canParseCommandOrComma) throw new SyntaxError('Unexpected character "' + n2 + '" at index ' + a2 + ". Command cannot follow comma");
if (this.canParseCommandOrComma = false, "z" !== n2 && "Z" !== n2) if ("h" === n2 || "H" === n2) this.curCommandType = _.HORIZ_LINE_TO, this.curCommandRelative = "h" === n2;
else if ("v" === n2 || "V" === n2) this.curCommandType = _.VERT_LINE_TO, this.curCommandRelative = "v" === n2;
else if ("m" === n2 || "M" === n2) this.curCommandType = _.MOVE_TO, this.curCommandRelative = "m" === n2;
else if ("l" === n2 || "L" === n2) this.curCommandType = _.LINE_TO, this.curCommandRelative = "l" === n2;
else if ("c" === n2 || "C" === n2) this.curCommandType = _.CURVE_TO, this.curCommandRelative = "c" === n2;
else if ("s" === n2 || "S" === n2) this.curCommandType = _.SMOOTH_CURVE_TO, this.curCommandRelative = "s" === n2;
else if ("q" === n2 || "Q" === n2) this.curCommandType = _.QUAD_TO, this.curCommandRelative = "q" === n2;
else if ("t" === n2 || "T" === n2) this.curCommandType = _.SMOOTH_QUAD_TO, this.curCommandRelative = "t" === n2;
else {
if ("a" !== n2 && "A" !== n2) throw new SyntaxError('Unexpected character "' + n2 + '" at index ' + a2 + ".");
this.curCommandType = _.ARC, this.curCommandRelative = "a" === n2;
}
else r2.push({ type: _.CLOSE_PATH }), this.canParseCommandOrComma = true, this.curCommandType = -1;
}
else this.curNumber = n2, this.curNumberHasDecimal = "." === n2;
} else this.curNumber += n2, this.curNumberHasDecimal = true;
else this.curNumber += n2;
else this.curNumber += n2, this.curNumberHasExp = true;
else this.curNumber += n2, this.curNumberHasExpDigits = this.curNumberHasExp;
}
return r2;
}, e2.prototype.transform = function(t4) {
return Object.create(this, { parse: { value: function(r2, e3) {
void 0 === e3 && (e3 = []);
for (var i2 = 0, a2 = Object.getPrototypeOf(this).parse.call(this, r2); i2 < a2.length; i2++) {
var n2 = a2[i2], o2 = t4(n2);
Array.isArray(o2) ? e3.push.apply(e3, o2) : e3.push(o2);
}
return e3;
} } });
}, e2;
}(l), _ = function(t3) {
function i2(r2) {
var e2 = t3.call(this) || this;
return e2.commands = "string" == typeof r2 ? i2.parse(r2) : r2, e2;
}
return r(i2, t3), i2.prototype.encode = function() {
return i2.encode(this.commands);
}, i2.prototype.getBounds = function() {
var t4 = u.CALCULATE_BOUNDS();
return this.transform(t4), t4;
}, i2.prototype.transform = function(t4) {
for (var r2 = [], e2 = 0, i3 = this.commands; e2 < i3.length; e2++) {
var a2 = t4(i3[e2]);
Array.isArray(a2) ? r2.push.apply(r2, a2) : r2.push(a2);
}
return this.commands = r2, this;
}, i2.encode = function(t4) {
return e(t4);
}, i2.parse = function(t4) {
var r2 = new f(), e2 = [];
return r2.parse(t4, e2), r2.finish(e2), e2;
}, i2.CLOSE_PATH = 1, i2.MOVE_TO = 2, i2.HORIZ_LINE_TO = 4, i2.VERT_LINE_TO = 8, i2.LINE_TO = 16, i2.CURVE_TO = 32, i2.SMOOTH_CURVE_TO = 64, i2.QUAD_TO = 128, i2.SMOOTH_QUAD_TO = 256, i2.ARC = 512, i2.LINE_COMMANDS = i2.LINE_TO | i2.HORIZ_LINE_TO | i2.VERT_LINE_TO, i2.DRAWING_COMMANDS = i2.HORIZ_LINE_TO | i2.VERT_LINE_TO | i2.LINE_TO | i2.CURVE_TO | i2.SMOOTH_CURVE_TO | i2.QUAD_TO | i2.SMOOTH_QUAD_TO | i2.ARC, i2;
}(l), N = ((O = {})[_.MOVE_TO] = 2, O[_.LINE_TO] = 2, O[_.HORIZ_LINE_TO] = 1, O[_.VERT_LINE_TO] = 1, O[_.CLOSE_PATH] = 0, O[_.QUAD_TO] = 4, O[_.SMOOTH_QUAD_TO] = 2, O[_.CURVE_TO] = 6, O[_.SMOOTH_CURVE_TO] = 4, O[_.ARC] = 7, O);
var call = functionCall;
var hasOwn2 = hasOwnProperty_1;
var isPrototypeOf = objectIsPrototypeOf;
var regExpFlags = regexpFlags$1;
var RegExpPrototype$1 = RegExp.prototype;
var regexpGetFlags = function(R2) {
var flags = R2.flags;
return flags === void 0 && !("flags" in RegExpPrototype$1) && !hasOwn2(R2, "flags") && isPrototypeOf(RegExpPrototype$1, R2) ? call(regExpFlags, R2) : flags;
};
var PROPER_FUNCTION_NAME = functionName.PROPER;
var defineBuiltIn = defineBuiltIn$7;
var anObject = anObject$g;
var $toString = toString$9;
var fails = fails$l;
var getRegExpFlags = regexpGetFlags;
var TO_STRING = "toString";
var RegExpPrototype = RegExp.prototype;
var nativeToString = RegExpPrototype[TO_STRING];
var NOT_GENERIC = fails(function() {
return nativeToString.call({ source: "a", flags: "b" }) !== "/a/b";
});
var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;
if (NOT_GENERIC || INCORRECT_NAME) {
defineBuiltIn(RegExpPrototype, TO_STRING, function toString3() {
var R2 = anObject(this);
var pattern = $toString(R2.source);
var flags = $toString(getRegExpFlags(R2));
return "/" + pattern + "/" + flags;
}, { unsafe: true });
}
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function(obj2) {
return typeof obj2;
};
} else {
_typeof = function(obj2) {
return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];
var shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];
function getImageDataFromCanvas(canvas, topX, topY, width, height) {
if (typeof canvas === "string") {
canvas = document.getElementById(canvas);
}
if (!canvas || _typeof(canvas) !== "object" || !("getContext" in canvas)) {
throw new TypeError("Expecting canvas with `getContext` method in processCanvasRGB(A) calls!");
}
var context = canvas.getContext("2d");
try {
return context.getImageData(topX, topY, width, height);
} catch (e2) {
throw new Error("unable to access image data: " + e2);
}
}
function processCanvasRGBA(canvas, topX, topY, width, height, radius) {
if (isNaN(radius) || radius < 1) {
return;
}
radius |= 0;
var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);
imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);
canvas.getContext("2d").putImageData(imageData, topX, topY);
}
function processImageDataRGBA(imageData, topX, topY, width, height, radius) {
var pixels = imageData.data;
var div = 2 * radius + 1;
var widthMinus1 = width - 1;
var heightMinus1 = height - 1;
var radiusPlus1 = radius + 1;
var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;
var stackStart = new BlurStack();
var stack = stackStart;
var stackEnd;
for (var i2 = 1; i2 < div; i2++) {
stack = stack.next = new BlurStack();
if (i2 === radiusPlus1) {
stackEnd = stack;
}
}
stack.next = stackStart;
var stackIn = null, stackOut = null, yw = 0, yi = 0;
var mulSum = mulTable[radius];
var shgSum = shgTable[radius];
for (var y2 = 0; y2 < height; y2++) {
stack = stackStart;
var pr = pixels[yi], pg = pixels[yi + 1], pb = pixels[yi + 2], pa = pixels[yi + 3];
for (var _i = 0; _i < radiusPlus1; _i++) {
stack.r = pr;
stack.g = pg;
stack.b = pb;
stack.a = pa;
stack = stack.next;
}
var rInSum = 0, gInSum = 0, bInSum = 0, aInSum = 0, rOutSum = radiusPlus1 * pr, gOutSum = radiusPlus1 * pg, bOutSum = radiusPlus1 * pb, aOutSum = radiusPlus1 * pa, rSum = sumFactor * pr, gSum = sumFactor * pg, bSum = sumFactor * pb, aSum = sumFactor * pa;
for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {
var p2 = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);
var r2 = pixels[p2], g2 = pixels[p2 + 1], b2 = pixels[p2 + 2], a2 = pixels[p2 + 3];
var rbs = radiusPlus1 - _i2;
rSum += (stack.r = r2) * rbs;
gSum += (stack.g = g2) * rbs;
bSum += (stack.b = b2) * rbs;
aSum += (stack.a = a2) * rbs;
rInSum += r2;
gInSum += g2;
bInSum += b2;
aInSum += a2;
stack = stack.next;
}
stackIn = stackStart;
stackOut = stackEnd;
for (var x2 = 0; x2 < width; x2++) {
var paInitial = aSum * mulSum >>> shgSum;
pixels[yi + 3] = paInitial;
if (paInitial !== 0) {
var _a2 = 255 / paInitial;
pixels[yi] = (rSum * mulSum >>> shgSum) * _a2;
pixels[yi + 1] = (gSum * mulSum >>> shgSum) * _a2;
pixels[yi + 2] = (bSum * mulSum >>> shgSum) * _a2;
} else {
pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;
}
rSum -= rOutSum;
gSum -= gOutSum;
bSum -= bOutSum;
aSum -= aOutSum;
rOutSum -= stackIn.r;
gOutSum -= stackIn.g;
bOutSum -= stackIn.b;
aOutSum -= stackIn.a;
var _p = x2 + radius + 1;
_p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;
rInSum += stackIn.r = pixels[_p];
gInSum += stackIn.g = pixels[_p + 1];
bInSum += stackIn.b = pixels[_p + 2];
aInSum += stackIn.a = pixels[_p + 3];
rSum += rInSum;
gSum += gInSum;
bSum += bInSum;
aSum += aInSum;
stackIn = stackIn.next;
var _stackOut = stackOut, _r = _stackOut.r, _g = _stackOut.g, _b2 = _stackOut.b, _a3 = _stackOut.a;
rOutSum += _r;
gOutSum += _g;
bOutSum += _b2;
aOutSum += _a3;
rInSum -= _r;
gInSum -= _g;
bInSum -= _b2;
aInSum -= _a3;
stackOut = stackOut.next;
yi += 4;
}
yw += width;
}
for (var _x = 0; _x < width; _x++) {
yi = _x << 2;
var _pr = pixels[yi], _pg = pixels[yi + 1], _pb = pixels[yi + 2], _pa = pixels[yi + 3], _rOutSum = radiusPlus1 * _pr, _gOutSum = radiusPlus1 * _pg, _bOutSum = radiusPlus1 * _pb, _aOutSum = radiusPlus1 * _pa, _rSum = sumFactor * _pr, _gSum = sumFactor * _pg, _bSum = sumFactor * _pb, _aSum = sumFactor * _pa;
stack = stackStart;
for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {
stack.r = _pr;
stack.g = _pg;
stack.b = _pb;
stack.a = _pa;
stack = stack.next;
}
var yp = width;
var _gInSum = 0, _bInSum = 0, _aInSum = 0, _rInSum = 0;
for (var _i4 = 1; _i4 <= radius; _i4++) {
yi = yp + _x << 2;
var _rbs = radiusPlus1 - _i4;
_rSum += (stack.r = _pr = pixels[yi]) * _rbs;
_gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;
_bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;
_aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;
_rInSum += _pr;
_gInSum += _pg;
_bInSum += _pb;
_aInSum += _pa;
stack = stack.next;
if (_i4 < heightMinus1) {
yp += width;
}
}
yi = _x;
stackIn = stackStart;
stackOut = stackEnd;
for (var _y = 0; _y < height; _y++) {
var _p2 = yi << 2;
pixels[_p2 + 3] = _pa = _aSum * mulSum >>> shgSum;
if (_pa > 0) {
_pa = 255 / _pa;
pixels[_p2] = (_rSum * mulSum >>> shgSum) * _pa;
pixels[_p2 + 1] = (_gSum * mulSum >>> shgSum) * _pa;
pixels[_p2 + 2] = (_bSum * mulSum >>> shgSum) * _pa;
} else {
pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;
}
_rSum -= _rOutSum;
_gSum -= _gOutSum;
_bSum -= _bOutSum;
_aSum -= _aOutSum;
_rOutSum -= stackIn.r;
_gOutSum -= stackIn.g;
_bOutSum -= stackIn.b;
_aOutSum -= stackIn.a;
_p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;
_rSum += _rInSum += stackIn.r = pixels[_p2];
_gSum += _gInSum += stackIn.g = pixels[_p2 + 1];
_bSum += _bInSum += stackIn.b = pixels[_p2 + 2];
_aSum += _aInSum += stackIn.a = pixels[_p2 + 3];
stackIn = stackIn.next;
_rOutSum += _pr = stackOut.r;
_gOutSum += _pg = stackOut.g;
_bOutSum += _pb = stackOut.b;
_aOutSum += _pa = stackOut.a;
_rInSum -= _pr;
_gInSum -= _pg;
_bInSum -= _pb;
_aInSum -= _pa;
stackOut = stackOut.next;
yi += width;
}
}
return imageData;
}
var BlurStack = (
/**
* Set properties.
*/
function BlurStack2() {
_classCallCheck(this, BlurStack2);
this.r = 0;
this.g = 0;
this.b = 0;
this.a = 0;
this.next = null;
}
);
function offscreen() {
var {
DOMParser: DOMParserFallback
} = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
var preset = {
window: null,
ignoreAnimation: true,
ignoreMouse: true,
DOMParser: DOMParserFallback,
createCanvas(width, height) {
return new OffscreenCanvas(width, height);
},
createImage(url) {
return _asyncToGenerator(function* () {
var response = yield fetch(url);
var blob = yield response.blob();
var img = yield createImageBitmap(blob);
return img;
})();
}
};
if (typeof DOMParser !== "undefined" || typeof DOMParserFallback === "undefined") {
Reflect.deleteProperty(preset, "DOMParser");
}
return preset;
}
function node(_ref2) {
var {
DOMParser: DOMParser2,
canvas,
fetch: fetch2
} = _ref2;
return {
window: null,
ignoreAnimation: true,
ignoreMouse: true,
DOMParser: DOMParser2,
fetch: fetch2,
createCanvas: canvas.createCanvas,
createImage: canvas.loadImage
};
}
var index = /* @__PURE__ */ Object.freeze({
__proto__: null,
offscreen,
node
});
function compressSpaces(str) {
return str.replace(/(?!\u3000)\s+/gm, " ");
}
function trimLeft(str) {
return str.replace(/^[\n \t]+/, "");
}
function trimRight(str) {
return str.replace(/[\n \t]+$/, "");
}
function toNumbers(str) {
var matches = (str || "").match(/-?(\d+(?:\.\d*(?:[eE][+-]?\d+)?)?|\.\d+)(?=\D|$)/gm) || [];
return matches.map(parseFloat);
}
var allUppercase = /^[A-Z-]+$/;
function normalizeAttributeName(name) {
if (allUppercase.test(name)) {
return name.toLowerCase();
}
return name;
}
function parseExternalUrl(url) {
var urlMatch = /url\(('([^']+)'|"([^"]+)"|([^'")]+))\)/.exec(url) || [];
return urlMatch[2] || urlMatch[3] || urlMatch[4];
}
function normalizeColor(color2) {
if (!color2.startsWith("rgb")) {
return color2;
}
var rgbParts = 3;
var normalizedColor = color2.replace(/\d+(\.\d+)?/g, (num, isFloat) => rgbParts-- && isFloat ? String(Math.round(parseFloat(num))) : num);
return normalizedColor;
}
var attributeRegex = /(\[[^\]]+\])/g;
var idRegex = /(#[^\s+>~.[:]+)/g;
var classRegex = /(\.[^\s+>~.[:]+)/g;
var pseudoElementRegex = /(::[^\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi;
var pseudoClassWithBracketsRegex = /(:[\w-]+\([^)]*\))/gi;
var pseudoClassRegex = /(:[^\s+>~.[:]+)/g;
var elementRegex = /([^\s+>~.[:]+)/g;
function findSelectorMatch(selector, regex) {
var matches = regex.exec(selector);
if (!matches) {
return [selector, 0];
}
return [selector.replace(regex, " "), matches.length];
}
function getSelectorSpecificity(selector) {
var specificity = [0, 0, 0];
var currentSelector = selector.replace(/:not\(([^)]*)\)/g, " $1 ").replace(/{[\s\S]*/gm, " ");
var delta = 0;
[currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);
specificity[1] += delta;
[currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);
specificity[0] += delta;
[currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);
specificity[1] += delta;
[currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);
specificity[2] += delta;
[currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);
specificity[1] += delta;
[currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);
specificity[1] += delta;
currentSelector = currentSelector.replace(/[*\s+>~]/g, " ").replace(/[#.]/g, " ");
[currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex);
specificity[2] += delta;
return specificity.join("");
}
var PSEUDO_ZERO = 1e-8;
function vectorMagnitude(v2) {
return Math.sqrt(Math.pow(v2[0], 2) + Math.pow(v2[1], 2));
}
function vectorsRatio(u2, v2) {
return (u2[0] * v2[0] + u2[1] * v2[1]) / (vectorMagnitude(u2) * vectorMagnitude(v2));
}
function vectorsAngle(u2, v2) {
return (u2[0] * v2[1] < u2[1] * v2[0] ? -1 : 1) * Math.acos(vectorsRatio(u2, v2));
}
function CB1(t3) {
return t3 * t3 * t3;
}
function CB2(t3) {
return 3 * t3 * t3 * (1 - t3);
}
function CB3(t3) {
return 3 * t3 * (1 - t3) * (1 - t3);
}
function CB4(t3) {
return (1 - t3) * (1 - t3) * (1 - t3);
}
function QB1(t3) {
return t3 * t3;
}
function QB2(t3) {
return 2 * t3 * (1 - t3);
}
function QB3(t3) {
return (1 - t3) * (1 - t3);
}
class Property {
constructor(document2, name, value) {
this.document = document2;
this.name = name;
this.value = value;
this.isNormalizedColor = false;
}
static empty(document2) {
return new Property(document2, "EMPTY", "");
}
split() {
var separator = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : " ";
var {
document: document2,
name
} = this;
return compressSpaces(this.getString()).trim().split(separator).map((value) => new Property(document2, name, value));
}
hasValue(zeroIsValue) {
var {
value
} = this;
return value !== null && value !== "" && (zeroIsValue || value !== 0) && typeof value !== "undefined";
}
isString(regexp) {
var {
value
} = this;
var result = typeof value === "string";
if (!result || !regexp) {
return result;
}
return regexp.test(value);
}
isUrlDefinition() {
return this.isString(/^url\(/);
}
isPixels() {
if (!this.hasValue()) {
return false;
}
var asString2 = this.getString();
switch (true) {
case asString2.endsWith("px"):
case /^[0-9]+$/.test(asString2):
return true;
default:
return false;
}
}
setValue(value) {
this.value = value;
return this;
}
getValue(def) {
if (typeof def === "undefined" || this.hasValue()) {
return this.value;
}
return def;
}
getNumber(def) {
if (!this.hasValue()) {
if (typeof def === "undefined") {
return 0;
}
return parseFloat(def);
}
var {
value
} = this;
var n2 = parseFloat(value);
if (this.isString(/%$/)) {
n2 /= 100;
}
return n2;
}
getString(def) {
if (typeof def === "undefined" || this.hasValue()) {
return typeof this.value === "undefined" ? "" : String(this.value);
}
return String(def);
}
getColor(def) {
var color2 = this.getString(def);
if (this.isNormalizedColor) {
return color2;
}
this.isNormalizedColor = true;
color2 = normalizeColor(color2);
this.value = color2;
return color2;
}
getDpi() {
return 96;
}
getRem() {
return this.document.rootEmSize;
}
getEm() {
return this.document.emSize;
}
getUnits() {
return this.getString().replace(/[0-9.-]/g, "");
}
getPixels(axisOrIsFontSize) {
var processPercent = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
if (!this.hasValue()) {
return 0;
}
var [axis, isFontSize] = typeof axisOrIsFontSize === "boolean" ? [void 0, axisOrIsFontSize] : [axisOrIsFontSize];
var {
viewPort
} = this.document.screen;
switch (true) {
case this.isString(/vmin$/):
return this.getNumber() / 100 * Math.min(viewPort.computeSize("x"), viewPort.computeSize("y"));
case this.isString(/vmax$/):
return this.getNumber() / 100 * Math.max(viewPort.computeSize("x"), viewPort.computeSize("y"));
case this.isString(/vw$/):
return this.getNumber() / 100 * viewPort.computeSize("x");
case this.isString(/vh$/):
return this.getNumber() / 100 * viewPort.computeSize("y");
case this.isString(/rem$/):
return this.getNumber() * this.getRem();
case this.isString(/em$/):
return this.getNumber() * this.getEm();
case this.isString(/ex$/):
return this.getNumber() * this.getEm() / 2;
case this.isString(/px$/):
return this.getNumber();
case this.isString(/pt$/):
return this.getNumber() * this.getDpi() * (1 / 72);
case this.isString(/pc$/):
return this.getNumber() * 15;
case this.isString(/cm$/):
return this.getNumber() * this.getDpi() / 2.54;
case this.isString(/mm$/):
return this.getNumber() * this.getDpi() / 25.4;
case this.isString(/in$/):
return this.getNumber() * this.getDpi();
case (this.isString(/%$/) && isFontSize):
return this.getNumber() * this.getEm();
case this.isString(/%$/):
return this.getNumber() * viewPort.computeSize(axis);
default: {
var n2 = this.getNumber();
if (processPercent && n2 < 1) {
return n2 * viewPort.computeSize(axis);
}
return n2;
}
}
}
getMilliseconds() {
if (!this.hasValue()) {
return 0;
}
if (this.isString(/ms$/)) {
return this.getNumber();
}
return this.getNumber() * 1e3;
}
getRadians() {
if (!this.hasValue()) {
return 0;
}
switch (true) {
case this.isString(/deg$/):
return this.getNumber() * (Math.PI / 180);
case this.isString(/grad$/):
return this.getNumber() * (Math.PI / 200);
case this.isString(/rad$/):
return this.getNumber();
default:
return this.getNumber() * (Math.PI / 180);
}
}
getDefinition() {
var asString2 = this.getString();
var name = /#([^)'"]+)/.exec(asString2);
if (name) {
name = name[1];
}
if (!name) {
name = asString2;
}
return this.document.definitions[name];
}
getFillStyleDefinition(element, opacity2) {
var def = this.getDefinition();
if (!def) {
return null;
}
if (typeof def.createGradient === "function") {
return def.createGradient(this.document.ctx, element, opacity2);
}
if (typeof def.createPattern === "function") {
if (def.getHrefAttribute().hasValue()) {
var patternTransform = def.getAttribute("patternTransform");
def = def.getHrefAttribute().getDefinition();
if (patternTransform.hasValue()) {
def.getAttribute("patternTransform", true).setValue(patternTransform.value);
}
}
return def.createPattern(this.document.ctx, element, opacity2);
}
return null;
}
getTextBaseline() {
if (!this.hasValue()) {
return null;
}
return Property.textBaselineMapping[this.getString()];
}
addOpacity(opacity2) {
var value = this.getColor();
var len = value.length;
var commas = 0;
for (var i2 = 0; i2 < len; i2++) {
if (value[i2] === ",") {
commas++;
}
if (commas === 3) {
break;
}
}
if (opacity2.hasValue() && this.isString() && commas !== 3) {
var color2 = new RGBColor$1(value);
if (color2.ok) {
color2.alpha = opacity2.getNumber();
value = color2.toRGBA();
}
}
return new Property(this.document, this.name, value);
}
}
Property.textBaselineMapping = {
"baseline": "alphabetic",
"before-edge": "top",
"text-before-edge": "top",
"middle": "middle",
"central": "middle",
"after-edge": "bottom",
"text-after-edge": "bottom",
"ideographic": "ideographic",
"alphabetic": "alphabetic",
"hanging": "hanging",
"mathematical": "alphabetic"
};
class ViewPort {
constructor() {
this.viewPorts = [];
}
clear() {
this.viewPorts = [];
}
setCurrent(width, height) {
this.viewPorts.push({
width,
height
});
}
removeCurrent() {
this.viewPorts.pop();
}
getCurrent() {
var {
viewPorts
} = this;
return viewPorts[viewPorts.length - 1];
}
get width() {
return this.getCurrent().width;
}
get height() {
return this.getCurrent().height;
}
computeSize(d2) {
if (typeof d2 === "number") {
return d2;
}
if (d2 === "x") {
return this.width;
}
if (d2 === "y") {
return this.height;
}
return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);
}
}
class Point {
constructor(x2, y2) {
this.x = x2;
this.y = y2;
}
static parse(point) {
var defaultValue = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
var [x2 = defaultValue, y2 = defaultValue] = toNumbers(point);
return new Point(x2, y2);
}
static parseScale(scale) {
var defaultValue = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
var [x2 = defaultValue, y2 = x2] = toNumbers(scale);
return new Point(x2, y2);
}
static parsePath(path) {
var points = toNumbers(path);
var len = points.length;
var pathPoints = [];
for (var i2 = 0; i2 < len; i2 += 2) {
pathPoints.push(new Point(points[i2], points[i2 + 1]));
}
return pathPoints;
}
angleTo(point) {
return Math.atan2(point.y - this.y, point.x - this.x);
}
applyTransform(transform2) {
var {
x: x2,
y: y2
} = this;
var xp = x2 * transform2[0] + y2 * transform2[2] + transform2[4];
var yp = x2 * transform2[1] + y2 * transform2[3] + transform2[5];
this.x = xp;
this.y = yp;
}
}
class Mouse {
constructor(screen) {
this.screen = screen;
this.working = false;
this.events = [];
this.eventElements = [];
this.onClick = this.onClick.bind(this);
this.onMouseMove = this.onMouseMove.bind(this);
}
isWorking() {
return this.working;
}
start() {
if (this.working) {
return;
}
var {
screen,
onClick,
onMouseMove
} = this;
var canvas = screen.ctx.canvas;
canvas.onclick = onClick;
canvas.onmousemove = onMouseMove;
this.working = true;
}
stop() {
if (!this.working) {
return;
}
var canvas = this.screen.ctx.canvas;
this.working = false;
canvas.onclick = null;
canvas.onmousemove = null;
}
hasEvents() {
return this.working && this.events.length > 0;
}
runEvents() {
if (!this.working) {
return;
}
var {
screen: document2,
events,
eventElements
} = this;
var {
style
} = document2.ctx.canvas;
if (style) {
style.cursor = "";
}
events.forEach((_ref2, i2) => {
var {
run: run2
} = _ref2;
var element = eventElements[i2];
while (element) {
run2(element);
element = element.parent;
}
});
this.events = [];
this.eventElements = [];
}
checkPath(element, ctx) {
if (!this.working || !ctx) {
return;
}
var {
events,
eventElements
} = this;
events.forEach((_ref2, i2) => {
var {
x: x2,
y: y2
} = _ref2;
if (!eventElements[i2] && ctx.isPointInPath && ctx.isPointInPath(x2, y2)) {
eventElements[i2] = element;
}
});
}
checkBoundingBox(element, boundingBox) {
if (!this.working || !boundingBox) {
return;
}
var {
events,
eventElements
} = this;
events.forEach((_ref3, i2) => {
var {
x: x2,
y: y2
} = _ref3;
if (!eventElements[i2] && boundingBox.isPointInBox(x2, y2)) {
eventElements[i2] = element;
}
});
}
mapXY(x2, y2) {
var {
window: window2,
ctx
} = this.screen;
var point = new Point(x2, y2);
var element = ctx.canvas;
while (element) {
point.x -= element.offsetLeft;
point.y -= element.offsetTop;
element = element.offsetParent;
}
if (window2.scrollX) {
point.x += window2.scrollX;
}
if (window2.scrollY) {
point.y += window2.scrollY;
}
return point;
}
onClick(event) {
var {
x: x2,
y: y2
} = this.mapXY(event.clientX, event.clientY);
this.events.push({
type: "onclick",
x: x2,
y: y2,
run(eventTarget) {
if (eventTarget.onClick) {
eventTarget.onClick();
}
}
});
}
onMouseMove(event) {
var {
x: x2,
y: y2
} = this.mapXY(event.clientX, event.clientY);
this.events.push({
type: "onmousemove",
x: x2,
y: y2,
run(eventTarget) {
if (eventTarget.onMouseMove) {
eventTarget.onMouseMove();
}
}
});
}
}
var defaultWindow = typeof window !== "undefined" ? window : null;
var defaultFetch$1 = typeof fetch !== "undefined" ? fetch.bind(void 0) : null;
class Screen {
constructor(ctx) {
var {
fetch: fetch2 = defaultFetch$1,
window: window2 = defaultWindow
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
this.ctx = ctx;
this.FRAMERATE = 30;
this.MAX_VIRTUAL_PIXELS = 3e4;
this.CLIENT_WIDTH = 800;
this.CLIENT_HEIGHT = 600;
this.viewPort = new ViewPort();
this.mouse = new Mouse(this);
this.animations = [];
this.waits = [];
this.frameDuration = 0;
this.isReadyLock = false;
this.isFirstRender = true;
this.intervalId = null;
this.window = window2;
this.fetch = fetch2;
}
wait(checker) {
this.waits.push(checker);
}
ready() {
if (!this.readyPromise) {
return Promise.resolve();
}
return this.readyPromise;
}
isReady() {
if (this.isReadyLock) {
return true;
}
var isReadyLock = this.waits.every((_2) => _2());
if (isReadyLock) {
this.waits = [];
if (this.resolveReady) {
this.resolveReady();
}
}
this.isReadyLock = isReadyLock;
return isReadyLock;
}
setDefaults(ctx) {
ctx.strokeStyle = "rgba(0,0,0,0)";
ctx.lineCap = "butt";
ctx.lineJoin = "miter";
ctx.miterLimit = 4;
}
setViewBox(_ref2) {
var {
document: document2,
ctx,
aspectRatio,
width,
desiredWidth,
height,
desiredHeight,
minX = 0,
minY = 0,
refX,
refY,
clip = false,
clipX = 0,
clipY = 0
} = _ref2;
var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\s/, "");
var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(" ");
var align = aspectRatioAlign || "xMidYMid";
var meetOrSlice = aspectRatioMeetOrSlice || "meet";
var scaleX = width / desiredWidth;
var scaleY = height / desiredHeight;
var scaleMin = Math.min(scaleX, scaleY);
var scaleMax = Math.max(scaleX, scaleY);
var finalDesiredWidth = desiredWidth;
var finalDesiredHeight = desiredHeight;
if (meetOrSlice === "meet") {
finalDesiredWidth *= scaleMin;
finalDesiredHeight *= scaleMin;
}
if (meetOrSlice === "slice") {
finalDesiredWidth *= scaleMax;
finalDesiredHeight *= scaleMax;
}
var refXProp = new Property(document2, "refX", refX);
var refYProp = new Property(document2, "refY", refY);
var hasRefs = refXProp.hasValue() && refYProp.hasValue();
if (hasRefs) {
ctx.translate(-scaleMin * refXProp.getPixels("x"), -scaleMin * refYProp.getPixels("y"));
}
if (clip) {
var scaledClipX = scaleMin * clipX;
var scaledClipY = scaleMin * clipY;
ctx.beginPath();
ctx.moveTo(scaledClipX, scaledClipY);
ctx.lineTo(width, scaledClipY);
ctx.lineTo(width, height);
ctx.lineTo(scaledClipX, height);
ctx.closePath();
ctx.clip();
}
if (!hasRefs) {
var isMeetMinY = meetOrSlice === "meet" && scaleMin === scaleY;
var isSliceMaxY = meetOrSlice === "slice" && scaleMax === scaleY;
var isMeetMinX = meetOrSlice === "meet" && scaleMin === scaleX;
var isSliceMaxX = meetOrSlice === "slice" && scaleMax === scaleX;
if (align.startsWith("xMid") && (isMeetMinY || isSliceMaxY)) {
ctx.translate(width / 2 - finalDesiredWidth / 2, 0);
}
if (align.endsWith("YMid") && (isMeetMinX || isSliceMaxX)) {
ctx.translate(0, height / 2 - finalDesiredHeight / 2);
}
if (align.startsWith("xMax") && (isMeetMinY || isSliceMaxY)) {
ctx.translate(width - finalDesiredWidth, 0);
}
if (align.endsWith("YMax") && (isMeetMinX || isSliceMaxX)) {
ctx.translate(0, height - finalDesiredHeight);
}
}
switch (true) {
case align === "none":
ctx.scale(scaleX, scaleY);
break;
case meetOrSlice === "meet":
ctx.scale(scaleMin, scaleMin);
break;
case meetOrSlice === "slice":
ctx.scale(scaleMax, scaleMax);
break;
}
ctx.translate(-minX, -minY);
}
start(element) {
var {
enableRedraw = false,
ignoreMouse = false,
ignoreAnimation = false,
ignoreDimensions = false,
ignoreClear = false,
forceRedraw,
scaleWidth,
scaleHeight,
offsetX,
offsetY
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var {
FRAMERATE,
mouse
} = this;
var frameDuration = 1e3 / FRAMERATE;
this.frameDuration = frameDuration;
this.readyPromise = new Promise((resolve2) => {
this.resolveReady = resolve2;
});
if (this.isReady()) {
this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
}
if (!enableRedraw) {
return;
}
var now2 = Date.now();
var then2 = now2;
var delta = 0;
var tick = () => {
now2 = Date.now();
delta = now2 - then2;
if (delta >= frameDuration) {
then2 = now2 - delta % frameDuration;
if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {
this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);
mouse.runEvents();
}
}
this.intervalId = requestAnimationFrame(tick);
};
if (!ignoreMouse) {
mouse.start();
}
this.intervalId = requestAnimationFrame(tick);
}
stop() {
if (this.intervalId) {
requestAnimationFrame.cancel(this.intervalId);
this.intervalId = null;
}
this.mouse.stop();
}
shouldUpdate(ignoreAnimation, forceRedraw) {
if (!ignoreAnimation) {
var {
frameDuration
} = this;
var shouldUpdate = this.animations.reduce((shouldUpdate2, animation) => animation.update(frameDuration) || shouldUpdate2, false);
if (shouldUpdate) {
return true;
}
}
if (typeof forceRedraw === "function" && forceRedraw()) {
return true;
}
if (!this.isReadyLock && this.isReady()) {
return true;
}
if (this.mouse.hasEvents()) {
return true;
}
return false;
}
render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {
var {
CLIENT_WIDTH,
CLIENT_HEIGHT,
viewPort,
ctx,
isFirstRender
} = this;
var canvas = ctx.canvas;
viewPort.clear();
if (canvas.width && canvas.height) {
viewPort.setCurrent(canvas.width, canvas.height);
} else {
viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT);
}
var widthStyle = element.getStyle("width");
var heightStyle = element.getStyle("height");
if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== "number" && typeof scaleHeight !== "number")) {
if (widthStyle.hasValue()) {
canvas.width = widthStyle.getPixels("x");
if (canvas.style) {
canvas.style.width = "".concat(canvas.width, "px");
}
}
if (heightStyle.hasValue()) {
canvas.height = heightStyle.getPixels("y");
if (canvas.style) {
canvas.style.height = "".concat(canvas.height, "px");
}
}
}
var cWidth = canvas.clientWidth || canvas.width;
var cHeight = canvas.clientHeight || canvas.height;
if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {
cWidth = widthStyle.getPixels("x");
cHeight = heightStyle.getPixels("y");
}
viewPort.setCurrent(cWidth, cHeight);
if (typeof offsetX === "number") {
element.getAttribute("x", true).setValue(offsetX);
}
if (typeof offsetY === "number") {
element.getAttribute("y", true).setValue(offsetY);
}
if (typeof scaleWidth === "number" || typeof scaleHeight === "number") {
var viewBox = toNumbers(element.getAttribute("viewBox").getString());
var xRatio = 0;
var yRatio = 0;
if (typeof scaleWidth === "number") {
var _widthStyle = element.getStyle("width");
if (_widthStyle.hasValue()) {
xRatio = _widthStyle.getPixels("x") / scaleWidth;
} else if (!isNaN(viewBox[2])) {
xRatio = viewBox[2] / scaleWidth;
}
}
if (typeof scaleHeight === "number") {
var _heightStyle = element.getStyle("height");
if (_heightStyle.hasValue()) {
yRatio = _heightStyle.getPixels("y") / scaleHeight;
} else if (!isNaN(viewBox[3])) {
yRatio = viewBox[3] / scaleHeight;
}
}
if (!xRatio) {
xRatio = yRatio;
}
if (!yRatio) {
yRatio = xRatio;
}
element.getAttribute("width", true).setValue(scaleWidth);
element.getAttribute("height", true).setValue(scaleHeight);
var transformStyle = element.getStyle("transform", true, true);
transformStyle.setValue("".concat(transformStyle.getString(), " scale(").concat(1 / xRatio, ", ").concat(1 / yRatio, ")"));
}
if (!ignoreClear) {
ctx.clearRect(0, 0, cWidth, cHeight);
}
element.render(ctx);
if (isFirstRender) {
this.isFirstRender = false;
}
}
}
Screen.defaultWindow = defaultWindow;
Screen.defaultFetch = defaultFetch$1;
var {
defaultFetch
} = Screen;
var DefaultDOMParser = typeof DOMParser !== "undefined" ? DOMParser : null;
class Parser {
constructor() {
var {
fetch: fetch2 = defaultFetch,
DOMParser: DOMParser2 = DefaultDOMParser
} = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
this.fetch = fetch2;
this.DOMParser = DOMParser2;
}
parse(resource) {
var _this = this;
return _asyncToGenerator(function* () {
if (resource.startsWith("<")) {
return _this.parseFromString(resource);
}
return _this.load(resource);
})();
}
parseFromString(xml2) {
var parser = new this.DOMParser();
try {
return this.checkDocument(parser.parseFromString(xml2, "image/svg+xml"));
} catch (err2) {
return this.checkDocument(parser.parseFromString(xml2, "text/xml"));
}
}
checkDocument(document2) {
var parserError = document2.getElementsByTagName("parsererror")[0];
if (parserError) {
throw new Error(parserError.textContent);
}
return document2;
}
load(url) {
var _this2 = this;
return _asyncToGenerator(function* () {
var response = yield _this2.fetch(url);
var xml2 = yield response.text();
return _this2.parseFromString(xml2);
})();
}
}
class Translate {
constructor(_2, point) {
this.type = "translate";
this.point = null;
this.point = Point.parse(point);
}
apply(ctx) {
var {
x: x2,
y: y2
} = this.point;
ctx.translate(x2 || 0, y2 || 0);
}
unapply(ctx) {
var {
x: x2,
y: y2
} = this.point;
ctx.translate(-1 * x2 || 0, -1 * y2 || 0);
}
applyToPoint(point) {
var {
x: x2,
y: y2
} = this.point;
point.applyTransform([1, 0, 0, 1, x2 || 0, y2 || 0]);
}
}
class Rotate {
constructor(document2, rotate, transformOrigin2) {
this.type = "rotate";
this.angle = null;
this.originX = null;
this.originY = null;
this.cx = 0;
this.cy = 0;
var numbers = toNumbers(rotate);
this.angle = new Property(document2, "angle", numbers[0]);
this.originX = transformOrigin2[0];
this.originY = transformOrigin2[1];
this.cx = numbers[1] || 0;
this.cy = numbers[2] || 0;
}
apply(ctx) {
var {
cx,
cy,
originX,
originY,
angle: angle2
} = this;
var tx = cx + originX.getPixels("x");
var ty = cy + originY.getPixels("y");
ctx.translate(tx, ty);
ctx.rotate(angle2.getRadians());
ctx.translate(-tx, -ty);
}
unapply(ctx) {
var {
cx,
cy,
originX,
originY,
angle: angle2
} = this;
var tx = cx + originX.getPixels("x");
var ty = cy + originY.getPixels("y");
ctx.translate(tx, ty);
ctx.rotate(-1 * angle2.getRadians());
ctx.translate(-tx, -ty);
}
applyToPoint(point) {
var {
cx,
cy,
angle: angle2
} = this;
var rad = angle2.getRadians();
point.applyTransform([
1,
0,
0,
1,
cx || 0,
cy || 0
// this.p.y
]);
point.applyTransform([Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), 0, 0]);
point.applyTransform([
1,
0,
0,
1,
-cx || 0,
-cy || 0
// -this.p.y
]);
}
}
class Scale {
constructor(_2, scale, transformOrigin2) {
this.type = "scale";
this.scale = null;
this.originX = null;
this.originY = null;
var scaleSize = Point.parseScale(scale);
if (scaleSize.x === 0 || scaleSize.y === 0) {
scaleSize.x = PSEUDO_ZERO;
scaleSize.y = PSEUDO_ZERO;
}
this.scale = scaleSize;
this.originX = transformOrigin2[0];
this.originY = transformOrigin2[1];
}
apply(ctx) {
var {
scale: {
x: x2,
y: y2
},
originX,
originY
} = this;
var tx = originX.getPixels("x");
var ty = originY.getPixels("y");
ctx.translate(tx, ty);
ctx.scale(x2, y2 || x2);
ctx.translate(-tx, -ty);
}
unapply(ctx) {
var {
scale: {
x: x2,
y: y2
},
originX,
originY
} = this;
var tx = originX.getPixels("x");
var ty = originY.getPixels("y");
ctx.translate(tx, ty);
ctx.scale(1 / x2, 1 / y2 || x2);
ctx.translate(-tx, -ty);
}
applyToPoint(point) {
var {
x: x2,
y: y2
} = this.scale;
point.applyTransform([x2 || 0, 0, 0, y2 || 0, 0, 0]);
}
}
class Matrix {
constructor(_2, matrix2, transformOrigin2) {
this.type = "matrix";
this.matrix = [];
this.originX = null;
this.originY = null;
this.matrix = toNumbers(matrix2);
this.originX = transformOrigin2[0];
this.originY = transformOrigin2[1];
}
apply(ctx) {
var {
originX,
originY,
matrix: matrix2
} = this;
var tx = originX.getPixels("x");
var ty = originY.getPixels("y");
ctx.translate(tx, ty);
ctx.transform(matrix2[0], matrix2[1], matrix2[2], matrix2[3], matrix2[4], matrix2[5]);
ctx.translate(-tx, -ty);
}
unapply(ctx) {
var {
originX,
originY,
matrix: matrix2
} = this;
var a2 = matrix2[0];
var b2 = matrix2[2];
var c2 = matrix2[4];
var d2 = matrix2[1];
var e2 = matrix2[3];
var f2 = matrix2[5];
var g2 = 0;
var h2 = 0;
var i2 = 1;
var det = 1 / (a2 * (e2 * i2 - f2 * h2) - b2 * (d2 * i2 - f2 * g2) + c2 * (d2 * h2 - e2 * g2));
var tx = originX.getPixels("x");
var ty = originY.getPixels("y");
ctx.translate(tx, ty);
ctx.transform(det * (e2 * i2 - f2 * h2), det * (f2 * g2 - d2 * i2), det * (c2 * h2 - b2 * i2), det * (a2 * i2 - c2 * g2), det * (b2 * f2 - c2 * e2), det * (c2 * d2 - a2 * f2));
ctx.translate(-tx, -ty);
}
applyToPoint(point) {
point.applyTransform(this.matrix);
}
}
class Skew extends Matrix {
constructor(document2, skew, transformOrigin2) {
super(document2, skew, transformOrigin2);
this.type = "skew";
this.angle = null;
this.angle = new Property(document2, "angle", skew);
}
}
class SkewX extends Skew {
constructor(document2, skew, transformOrigin2) {
super(document2, skew, transformOrigin2);
this.type = "skewX";
this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0];
}
}
class SkewY extends Skew {
constructor(document2, skew, transformOrigin2) {
super(document2, skew, transformOrigin2);
this.type = "skewY";
this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0];
}
}
function parseTransforms(transform2) {
return compressSpaces(transform2).trim().replace(/\)([a-zA-Z])/g, ") $1").replace(/\)(\s?,\s?)/g, ") ").split(/\s(?=[a-z])/);
}
function parseTransform(transform2) {
var [type, value] = transform2.split("(");
return [type.trim(), value.trim().replace(")", "")];
}
class Transform {
constructor(document2, transform2, transformOrigin2) {
this.document = document2;
this.transforms = [];
var data2 = parseTransforms(transform2);
data2.forEach((transform3) => {
if (transform3 === "none") {
return;
}
var [type, value] = parseTransform(transform3);
var TransformType = Transform.transformTypes[type];
if (typeof TransformType !== "undefined") {
this.transforms.push(new TransformType(this.document, value, transformOrigin2));
}
});
}
static fromElement(document2, element) {
var transformStyle = element.getStyle("transform", false, true);
var [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle("transform-origin", false, true).split();
var transformOrigin2 = [transformOriginXProperty, transformOriginYProperty];
if (transformStyle.hasValue()) {
return new Transform(document2, transformStyle.getString(), transformOrigin2);
}
return null;
}
apply(ctx) {
var {
transforms
} = this;
var len = transforms.length;
for (var i2 = 0; i2 < len; i2++) {
transforms[i2].apply(ctx);
}
}
unapply(ctx) {
var {
transforms
} = this;
var len = transforms.length;
for (var i2 = len - 1; i2 >= 0; i2--) {
transforms[i2].unapply(ctx);
}
}
// TODO: applyToPoint unused ... remove?
applyToPoint(point) {
var {
transforms
} = this;
var len = transforms.length;
for (var i2 = 0; i2 < len; i2++) {
transforms[i2].applyToPoint(point);
}
}
}
Transform.transformTypes = {
translate: Translate,
rotate: Rotate,
scale: Scale,
matrix: Matrix,
skewX: SkewX,
skewY: SkewY
};
class Element {
constructor(document2, node2) {
var captureTextNodes = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
this.document = document2;
this.node = node2;
this.captureTextNodes = captureTextNodes;
this.attributes = {};
this.styles = {};
this.stylesSpecificity = {};
this.animationFrozen = false;
this.animationFrozenValue = "";
this.parent = null;
this.children = [];
if (!node2 || node2.nodeType !== 1) {
return;
}
Array.from(node2.attributes).forEach((attribute) => {
var nodeName = normalizeAttributeName(attribute.nodeName);
this.attributes[nodeName] = new Property(document2, nodeName, attribute.value);
});
this.addStylesFromStyleDefinition();
if (this.getAttribute("style").hasValue()) {
var styles = this.getAttribute("style").getString().split(";").map((_2) => _2.trim());
styles.forEach((style) => {
if (!style) {
return;
}
var [name, value] = style.split(":").map((_2) => _2.trim());
this.styles[name] = new Property(document2, name, value);
});
}
var {
definitions
} = document2;
var id = this.getAttribute("id");
if (id.hasValue()) {
if (!definitions[id.getString()]) {
definitions[id.getString()] = this;
}
}
Array.from(node2.childNodes).forEach((childNode) => {
if (childNode.nodeType === 1) {
this.addChild(childNode);
} else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {
var textNode = document2.createTextNode(childNode);
if (textNode.getText().length > 0) {
this.addChild(textNode);
}
}
});
}
getAttribute(name) {
var createIfNotExists = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var attr = this.attributes[name];
if (!attr && createIfNotExists) {
var _attr = new Property(this.document, name, "");
this.attributes[name] = _attr;
return _attr;
}
return attr || Property.empty(this.document);
}
getHrefAttribute() {
for (var key in this.attributes) {
if (key === "href" || key.endsWith(":href")) {
return this.attributes[key];
}
}
return Property.empty(this.document);
}
getStyle(name) {
var createIfNotExists = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var skipAncestors = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
var style = this.styles[name];
if (style) {
return style;
}
var attr = this.getAttribute(name);
if (attr !== null && attr !== void 0 && attr.hasValue()) {
this.styles[name] = attr;
return attr;
}
if (!skipAncestors) {
var {
parent
} = this;
if (parent) {
var parentStyle = parent.getStyle(name);
if (parentStyle !== null && parentStyle !== void 0 && parentStyle.hasValue()) {
return parentStyle;
}
}
}
if (createIfNotExists) {
var _style = new Property(this.document, name, "");
this.styles[name] = _style;
return _style;
}
return style || Property.empty(this.document);
}
render(ctx) {
if (this.getStyle("display").getString() === "none" || this.getStyle("visibility").getString() === "hidden") {
return;
}
ctx.save();
if (this.getStyle("mask").hasValue()) {
var mask = this.getStyle("mask").getDefinition();
if (mask) {
this.applyEffects(ctx);
mask.apply(ctx, this);
}
} else if (this.getStyle("filter").getValue("none") !== "none") {
var filter = this.getStyle("filter").getDefinition();
if (filter) {
this.applyEffects(ctx);
filter.apply(ctx, this);
}
} else {
this.setContext(ctx);
this.renderChildren(ctx);
this.clearContext(ctx);
}
ctx.restore();
}
setContext(_2) {
}
applyEffects(ctx) {
var transform2 = Transform.fromElement(this.document, this);
if (transform2) {
transform2.apply(ctx);
}
var clipPathStyleProp = this.getStyle("clip-path", false, true);
if (clipPathStyleProp.hasValue()) {
var clip = clipPathStyleProp.getDefinition();
if (clip) {
clip.apply(ctx);
}
}
}
clearContext(_2) {
}
renderChildren(ctx) {
this.children.forEach((child) => {
child.render(ctx);
});
}
addChild(childNode) {
var child = childNode instanceof Element ? childNode : this.document.createElement(childNode);
child.parent = this;
if (!Element.ignoreChildTypes.includes(child.type)) {
this.children.push(child);
}
}
matchesSelector(selector) {
var _node$getAttribute;
var {
node: node2
} = this;
if (typeof node2.matches === "function") {
return node2.matches(selector);
}
var styleClasses = (_node$getAttribute = node2.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node2, "class");
if (!styleClasses || styleClasses === "") {
return false;
}
return styleClasses.split(" ").some((styleClass) => ".".concat(styleClass) === selector);
}
addStylesFromStyleDefinition() {
var {
styles,
stylesSpecificity
} = this.document;
for (var selector in styles) {
if (!selector.startsWith("@") && this.matchesSelector(selector)) {
var style = styles[selector];
var specificity = stylesSpecificity[selector];
if (style) {
for (var name in style) {
var existingSpecificity = this.stylesSpecificity[name];
if (typeof existingSpecificity === "undefined") {
existingSpecificity = "000";
}
if (specificity >= existingSpecificity) {
this.styles[name] = style[name];
this.stylesSpecificity[name] = specificity;
}
}
}
}
}
}
removeStyles(element, ignoreStyles) {
var toRestore = ignoreStyles.reduce((toRestore2, name) => {
var styleProp = element.getStyle(name);
if (!styleProp.hasValue()) {
return toRestore2;
}
var value = styleProp.getString();
styleProp.setValue("");
return [...toRestore2, [name, value]];
}, []);
return toRestore;
}
restoreStyles(element, styles) {
styles.forEach((_ref2) => {
var [name, value] = _ref2;
element.getStyle(name, true).setValue(value);
});
}
isFirstChild() {
var _this$parent;
return ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.children.indexOf(this)) === 0;
}
}
Element.ignoreChildTypes = ["title"];
class UnknownElement extends Element {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
}
}
function wrapFontFamily(fontFamily2) {
var trimmed = fontFamily2.trim();
return /^('|")/.test(trimmed) ? trimmed : '"'.concat(trimmed, '"');
}
function prepareFontFamily(fontFamily2) {
return typeof process === "undefined" ? fontFamily2 : fontFamily2.trim().split(",").map(wrapFontFamily).join(",");
}
function prepareFontStyle(fontStyle2) {
if (!fontStyle2) {
return "";
}
var targetFontStyle = fontStyle2.trim().toLowerCase();
switch (targetFontStyle) {
case "normal":
case "italic":
case "oblique":
case "inherit":
case "initial":
case "unset":
return targetFontStyle;
default:
if (/^oblique\s+(-|)\d+deg$/.test(targetFontStyle)) {
return targetFontStyle;
}
return "";
}
}
function prepareFontWeight(fontWeight2) {
if (!fontWeight2) {
return "";
}
var targetFontWeight = fontWeight2.trim().toLowerCase();
switch (targetFontWeight) {
case "normal":
case "bold":
case "lighter":
case "bolder":
case "inherit":
case "initial":
case "unset":
return targetFontWeight;
default:
if (/^[\d.]+$/.test(targetFontWeight)) {
return targetFontWeight;
}
return "";
}
}
class Font {
constructor(fontStyle2, fontVariant2, fontWeight2, fontSize2, fontFamily2, inherit) {
var inheritFont = inherit ? typeof inherit === "string" ? Font.parse(inherit) : inherit : {};
this.fontFamily = fontFamily2 || inheritFont.fontFamily;
this.fontSize = fontSize2 || inheritFont.fontSize;
this.fontStyle = fontStyle2 || inheritFont.fontStyle;
this.fontWeight = fontWeight2 || inheritFont.fontWeight;
this.fontVariant = fontVariant2 || inheritFont.fontVariant;
}
static parse() {
var font = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "";
var inherit = arguments.length > 1 ? arguments[1] : void 0;
var fontStyle2 = "";
var fontVariant2 = "";
var fontWeight2 = "";
var fontSize2 = "";
var fontFamily2 = "";
var parts = compressSpaces(font).trim().split(" ");
var set2 = {
fontSize: false,
fontStyle: false,
fontWeight: false,
fontVariant: false
};
parts.forEach((part) => {
switch (true) {
case (!set2.fontStyle && Font.styles.includes(part)):
if (part !== "inherit") {
fontStyle2 = part;
}
set2.fontStyle = true;
break;
case (!set2.fontVariant && Font.variants.includes(part)):
if (part !== "inherit") {
fontVariant2 = part;
}
set2.fontStyle = true;
set2.fontVariant = true;
break;
case (!set2.fontWeight && Font.weights.includes(part)):
if (part !== "inherit") {
fontWeight2 = part;
}
set2.fontStyle = true;
set2.fontVariant = true;
set2.fontWeight = true;
break;
case !set2.fontSize:
if (part !== "inherit") {
[fontSize2] = part.split("/");
}
set2.fontStyle = true;
set2.fontVariant = true;
set2.fontWeight = true;
set2.fontSize = true;
break;
default:
if (part !== "inherit") {
fontFamily2 += part;
}
}
});
return new Font(fontStyle2, fontVariant2, fontWeight2, fontSize2, fontFamily2, inherit);
}
toString() {
return [
prepareFontStyle(this.fontStyle),
this.fontVariant,
prepareFontWeight(this.fontWeight),
this.fontSize,
// Wrap fontFamily only on nodejs and only for canvas.ctx
prepareFontFamily(this.fontFamily)
].join(" ").trim();
}
}
Font.styles = "normal|italic|oblique|inherit";
Font.variants = "normal|small-caps|inherit";
Font.weights = "normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit";
class BoundingBox {
constructor() {
var x1 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Number.NaN;
var y1 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Number.NaN;
var x2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Number.NaN;
var y2 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : Number.NaN;
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.addPoint(x1, y1);
this.addPoint(x2, y2);
}
get x() {
return this.x1;
}
get y() {
return this.y1;
}
get width() {
return this.x2 - this.x1;
}
get height() {
return this.y2 - this.y1;
}
addPoint(x2, y2) {
if (typeof x2 !== "undefined") {
if (isNaN(this.x1) || isNaN(this.x2)) {
this.x1 = x2;
this.x2 = x2;
}
if (x2 < this.x1) {
this.x1 = x2;
}
if (x2 > this.x2) {
this.x2 = x2;
}
}
if (typeof y2 !== "undefined") {
if (isNaN(this.y1) || isNaN(this.y2)) {
this.y1 = y2;
this.y2 = y2;
}
if (y2 < this.y1) {
this.y1 = y2;
}
if (y2 > this.y2) {
this.y2 = y2;
}
}
}
addX(x2) {
this.addPoint(x2, null);
}
addY(y2) {
this.addPoint(null, y2);
}
addBoundingBox(boundingBox) {
if (!boundingBox) {
return;
}
var {
x1,
y1,
x2,
y2
} = boundingBox;
this.addPoint(x1, y1);
this.addPoint(x2, y2);
}
sumCubic(t3, p0, p1, p2, p3) {
return Math.pow(1 - t3, 3) * p0 + 3 * Math.pow(1 - t3, 2) * t3 * p1 + 3 * (1 - t3) * Math.pow(t3, 2) * p2 + Math.pow(t3, 3) * p3;
}
bezierCurveAdd(forX, p0, p1, p2, p3) {
var b2 = 6 * p0 - 12 * p1 + 6 * p2;
var a2 = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;
var c2 = 3 * p1 - 3 * p0;
if (a2 === 0) {
if (b2 === 0) {
return;
}
var t3 = -c2 / b2;
if (0 < t3 && t3 < 1) {
if (forX) {
this.addX(this.sumCubic(t3, p0, p1, p2, p3));
} else {
this.addY(this.sumCubic(t3, p0, p1, p2, p3));
}
}
return;
}
var b2ac = Math.pow(b2, 2) - 4 * c2 * a2;
if (b2ac < 0) {
return;
}
var t1 = (-b2 + Math.sqrt(b2ac)) / (2 * a2);
if (0 < t1 && t1 < 1) {
if (forX) {
this.addX(this.sumCubic(t1, p0, p1, p2, p3));
} else {
this.addY(this.sumCubic(t1, p0, p1, p2, p3));
}
}
var t22 = (-b2 - Math.sqrt(b2ac)) / (2 * a2);
if (0 < t22 && t22 < 1) {
if (forX) {
this.addX(this.sumCubic(t22, p0, p1, p2, p3));
} else {
this.addY(this.sumCubic(t22, p0, p1, p2, p3));
}
}
}
// from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
this.addPoint(p0x, p0y);
this.addPoint(p3x, p3y);
this.bezierCurveAdd(true, p0x, p1x, p2x, p3x);
this.bezierCurveAdd(false, p0y, p1y, p2y, p3y);
}
addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {
var cp1x = p0x + 2 / 3 * (p1x - p0x);
var cp1y = p0y + 2 / 3 * (p1y - p0y);
var cp2x = cp1x + 1 / 3 * (p2x - p0x);
var cp2y = cp1y + 1 / 3 * (p2y - p0y);
this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y);
}
isPointInBox(x2, y2) {
var {
x1,
y1,
x2: x22,
y2: y22
} = this;
return x1 <= x2 && x2 <= x22 && y1 <= y2 && y2 <= y22;
}
}
class PathParser extends _ {
constructor(path) {
super(path.replace(/([+\-.])\s+/gm, "$1").replace(/[^MmZzLlHhVvCcSsQqTtAae\d\s.,+-].*/g, ""));
this.control = null;
this.start = null;
this.current = null;
this.command = null;
this.commands = this.commands;
this.i = -1;
this.previousCommand = null;
this.points = [];
this.angles = [];
}
reset() {
this.i = -1;
this.command = null;
this.previousCommand = null;
this.start = new Point(0, 0);
this.control = new Point(0, 0);
this.current = new Point(0, 0);
this.points = [];
this.angles = [];
}
isEnd() {
var {
i: i2,
commands
} = this;
return i2 >= commands.length - 1;
}
next() {
var command = this.commands[++this.i];
this.previousCommand = this.command;
this.command = command;
return command;
}
getPoint() {
var xProp = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "x";
var yProp = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "y";
var point = new Point(this.command[xProp], this.command[yProp]);
return this.makeAbsolute(point);
}
getAsControlPoint(xProp, yProp) {
var point = this.getPoint(xProp, yProp);
this.control = point;
return point;
}
getAsCurrentPoint(xProp, yProp) {
var point = this.getPoint(xProp, yProp);
this.current = point;
return point;
}
getReflectedControlPoint() {
var previousCommand = this.previousCommand.type;
if (previousCommand !== _.CURVE_TO && previousCommand !== _.SMOOTH_CURVE_TO && previousCommand !== _.QUAD_TO && previousCommand !== _.SMOOTH_QUAD_TO) {
return this.current;
}
var {
current: {
x: cx,
y: cy
},
control: {
x: ox,
y: oy
}
} = this;
var point = new Point(2 * cx - ox, 2 * cy - oy);
return point;
}
makeAbsolute(point) {
if (this.command.relative) {
var {
x: x2,
y: y2
} = this.current;
point.x += x2;
point.y += y2;
}
return point;
}
addMarker(point, from, priorTo) {
var {
points,
angles
} = this;
if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {
angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo);
}
this.addMarkerAngle(point, from ? from.angleTo(point) : null);
}
addMarkerAngle(point, angle2) {
this.points.push(point);
this.angles.push(angle2);
}
getMarkerPoints() {
return this.points;
}
getMarkerAngles() {
var {
angles
} = this;
var len = angles.length;
for (var i2 = 0; i2 < len; i2++) {
if (!angles[i2]) {
for (var j2 = i2 + 1; j2 < len; j2++) {
if (angles[j2]) {
angles[i2] = angles[j2];
break;
}
}
}
}
return angles;
}
}
class RenderedElement extends Element {
constructor() {
super(...arguments);
this.modifiedEmSizeStack = false;
}
calculateOpacity() {
var opacity2 = 1;
var element = this;
while (element) {
var opacityStyle = element.getStyle("opacity", false, true);
if (opacityStyle.hasValue(true)) {
opacity2 *= opacityStyle.getNumber();
}
element = element.parent;
}
return opacity2;
}
setContext(ctx) {
var fromMeasure = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
if (!fromMeasure) {
var fillStyleProp = this.getStyle("fill");
var fillOpacityStyleProp = this.getStyle("fill-opacity");
var strokeStyleProp = this.getStyle("stroke");
var strokeOpacityProp = this.getStyle("stroke-opacity");
if (fillStyleProp.isUrlDefinition()) {
var fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);
if (fillStyle) {
ctx.fillStyle = fillStyle;
}
} else if (fillStyleProp.hasValue()) {
if (fillStyleProp.getString() === "currentColor") {
fillStyleProp.setValue(this.getStyle("color").getColor());
}
var _fillStyle = fillStyleProp.getColor();
if (_fillStyle !== "inherit") {
ctx.fillStyle = _fillStyle === "none" ? "rgba(0,0,0,0)" : _fillStyle;
}
}
if (fillOpacityStyleProp.hasValue()) {
var _fillStyle2 = new Property(this.document, "fill", ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();
ctx.fillStyle = _fillStyle2;
}
if (strokeStyleProp.isUrlDefinition()) {
var strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);
if (strokeStyle) {
ctx.strokeStyle = strokeStyle;
}
} else if (strokeStyleProp.hasValue()) {
if (strokeStyleProp.getString() === "currentColor") {
strokeStyleProp.setValue(this.getStyle("color").getColor());
}
var _strokeStyle = strokeStyleProp.getString();
if (_strokeStyle !== "inherit") {
ctx.strokeStyle = _strokeStyle === "none" ? "rgba(0,0,0,0)" : _strokeStyle;
}
}
if (strokeOpacityProp.hasValue()) {
var _strokeStyle2 = new Property(this.document, "stroke", ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();
ctx.strokeStyle = _strokeStyle2;
}
var strokeWidthStyleProp = this.getStyle("stroke-width");
if (strokeWidthStyleProp.hasValue()) {
var newLineWidth = strokeWidthStyleProp.getPixels();
ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO : newLineWidth;
}
var strokeLinecapStyleProp = this.getStyle("stroke-linecap");
var strokeLinejoinStyleProp = this.getStyle("stroke-linejoin");
var strokeMiterlimitProp = this.getStyle("stroke-miterlimit");
var strokeDasharrayStyleProp = this.getStyle("stroke-dasharray");
var strokeDashoffsetProp = this.getStyle("stroke-dashoffset");
if (strokeLinecapStyleProp.hasValue()) {
ctx.lineCap = strokeLinecapStyleProp.getString();
}
if (strokeLinejoinStyleProp.hasValue()) {
ctx.lineJoin = strokeLinejoinStyleProp.getString();
}
if (strokeMiterlimitProp.hasValue()) {
ctx.miterLimit = strokeMiterlimitProp.getNumber();
}
if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== "none") {
var gaps = toNumbers(strokeDasharrayStyleProp.getString());
if (typeof ctx.setLineDash !== "undefined") {
ctx.setLineDash(gaps);
} else if (typeof ctx.webkitLineDash !== "undefined") {
ctx.webkitLineDash = gaps;
} else if (typeof ctx.mozDash !== "undefined" && !(gaps.length === 1 && gaps[0] === 0)) {
ctx.mozDash = gaps;
}
var offset = strokeDashoffsetProp.getPixels();
if (typeof ctx.lineDashOffset !== "undefined") {
ctx.lineDashOffset = offset;
} else if (typeof ctx.webkitLineDashOffset !== "undefined") {
ctx.webkitLineDashOffset = offset;
} else if (typeof ctx.mozDashOffset !== "undefined") {
ctx.mozDashOffset = offset;
}
}
}
this.modifiedEmSizeStack = false;
if (typeof ctx.font !== "undefined") {
var fontStyleProp = this.getStyle("font");
var fontStyleStyleProp = this.getStyle("font-style");
var fontVariantStyleProp = this.getStyle("font-variant");
var fontWeightStyleProp = this.getStyle("font-weight");
var fontSizeStyleProp = this.getStyle("font-size");
var fontFamilyStyleProp = this.getStyle("font-family");
var font = new Font(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? "".concat(fontSizeStyleProp.getPixels(true), "px") : "", fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));
fontStyleStyleProp.setValue(font.fontStyle);
fontVariantStyleProp.setValue(font.fontVariant);
fontWeightStyleProp.setValue(font.fontWeight);
fontSizeStyleProp.setValue(font.fontSize);
fontFamilyStyleProp.setValue(font.fontFamily);
ctx.font = font.toString();
if (fontSizeStyleProp.isPixels()) {
this.document.emSize = fontSizeStyleProp.getPixels();
this.modifiedEmSizeStack = true;
}
}
if (!fromMeasure) {
this.applyEffects(ctx);
ctx.globalAlpha = this.calculateOpacity();
}
}
clearContext(ctx) {
super.clearContext(ctx);
if (this.modifiedEmSizeStack) {
this.document.popEmSize();
}
}
}
class PathElement extends RenderedElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "path";
this.pathParser = null;
this.pathParser = new PathParser(this.getAttribute("d").getString());
}
path(ctx) {
var {
pathParser
} = this;
var boundingBox = new BoundingBox();
pathParser.reset();
if (ctx) {
ctx.beginPath();
}
while (!pathParser.isEnd()) {
switch (pathParser.next().type) {
case PathParser.MOVE_TO:
this.pathM(ctx, boundingBox);
break;
case PathParser.LINE_TO:
this.pathL(ctx, boundingBox);
break;
case PathParser.HORIZ_LINE_TO:
this.pathH(ctx, boundingBox);
break;
case PathParser.VERT_LINE_TO:
this.pathV(ctx, boundingBox);
break;
case PathParser.CURVE_TO:
this.pathC(ctx, boundingBox);
break;
case PathParser.SMOOTH_CURVE_TO:
this.pathS(ctx, boundingBox);
break;
case PathParser.QUAD_TO:
this.pathQ(ctx, boundingBox);
break;
case PathParser.SMOOTH_QUAD_TO:
this.pathT(ctx, boundingBox);
break;
case PathParser.ARC:
this.pathA(ctx, boundingBox);
break;
case PathParser.CLOSE_PATH:
this.pathZ(ctx, boundingBox);
break;
}
}
return boundingBox;
}
getBoundingBox(_2) {
return this.path();
}
getMarkers() {
var {
pathParser
} = this;
var points = pathParser.getMarkerPoints();
var angles = pathParser.getMarkerAngles();
var markers = points.map((point, i2) => [point, angles[i2]]);
return markers;
}
renderChildren(ctx) {
this.path(ctx);
this.document.screen.mouse.checkPath(this, ctx);
var fillRuleStyleProp = this.getStyle("fill-rule");
if (ctx.fillStyle !== "") {
if (fillRuleStyleProp.getString("inherit") !== "inherit") {
ctx.fill(fillRuleStyleProp.getString());
} else {
ctx.fill();
}
}
if (ctx.strokeStyle !== "") {
if (this.getAttribute("vector-effect").getString() === "non-scaling-stroke") {
ctx.save();
ctx.setTransform(1, 0, 0, 1, 0, 0);
ctx.stroke();
ctx.restore();
} else {
ctx.stroke();
}
}
var markers = this.getMarkers();
if (markers) {
var markersLastIndex = markers.length - 1;
var markerStartStyleProp = this.getStyle("marker-start");
var markerMidStyleProp = this.getStyle("marker-mid");
var markerEndStyleProp = this.getStyle("marker-end");
if (markerStartStyleProp.isUrlDefinition()) {
var marker = markerStartStyleProp.getDefinition();
var [point, angle2] = markers[0];
marker.render(ctx, point, angle2);
}
if (markerMidStyleProp.isUrlDefinition()) {
var _marker = markerMidStyleProp.getDefinition();
for (var i2 = 1; i2 < markersLastIndex; i2++) {
var [_point, _angle] = markers[i2];
_marker.render(ctx, _point, _angle);
}
}
if (markerEndStyleProp.isUrlDefinition()) {
var _marker2 = markerEndStyleProp.getDefinition();
var [_point2, _angle2] = markers[markersLastIndex];
_marker2.render(ctx, _point2, _angle2);
}
}
}
static pathM(pathParser) {
var point = pathParser.getAsCurrentPoint();
pathParser.start = pathParser.current;
return {
point
};
}
pathM(ctx, boundingBox) {
var {
pathParser
} = this;
var {
point
} = PathElement.pathM(pathParser);
var {
x: x2,
y: y2
} = point;
pathParser.addMarker(point);
boundingBox.addPoint(x2, y2);
if (ctx) {
ctx.moveTo(x2, y2);
}
}
static pathL(pathParser) {
var {
current
} = pathParser;
var point = pathParser.getAsCurrentPoint();
return {
current,
point
};
}
pathL(ctx, boundingBox) {
var {
pathParser
} = this;
var {
current,
point
} = PathElement.pathL(pathParser);
var {
x: x2,
y: y2
} = point;
pathParser.addMarker(point, current);
boundingBox.addPoint(x2, y2);
if (ctx) {
ctx.lineTo(x2, y2);
}
}
static pathH(pathParser) {
var {
current,
command
} = pathParser;
var point = new Point((command.relative ? current.x : 0) + command.x, current.y);
pathParser.current = point;
return {
current,
point
};
}
pathH(ctx, boundingBox) {
var {
pathParser
} = this;
var {
current,
point
} = PathElement.pathH(pathParser);
var {
x: x2,
y: y2
} = point;
pathParser.addMarker(point, current);
boundingBox.addPoint(x2, y2);
if (ctx) {
ctx.lineTo(x2, y2);
}
}
static pathV(pathParser) {
var {
current,
command
} = pathParser;
var point = new Point(current.x, (command.relative ? current.y : 0) + command.y);
pathParser.current = point;
return {
current,
point
};
}
pathV(ctx, boundingBox) {
var {
pathParser
} = this;
var {
current,
point
} = PathElement.pathV(pathParser);
var {
x: x2,
y: y2
} = point;
pathParser.addMarker(point, current);
boundingBox.addPoint(x2, y2);
if (ctx) {
ctx.lineTo(x2, y2);
}
}
static pathC(pathParser) {
var {
current
} = pathParser;
var point = pathParser.getPoint("x1", "y1");
var controlPoint = pathParser.getAsControlPoint("x2", "y2");
var currentPoint = pathParser.getAsCurrentPoint();
return {
current,
point,
controlPoint,
currentPoint
};
}
pathC(ctx, boundingBox) {
var {
pathParser
} = this;
var {
current,
point,
controlPoint,
currentPoint
} = PathElement.pathC(pathParser);
pathParser.addMarker(currentPoint, controlPoint, point);
boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
if (ctx) {
ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
}
}
static pathS(pathParser) {
var {
current
} = pathParser;
var point = pathParser.getReflectedControlPoint();
var controlPoint = pathParser.getAsControlPoint("x2", "y2");
var currentPoint = pathParser.getAsCurrentPoint();
return {
current,
point,
controlPoint,
currentPoint
};
}
pathS(ctx, boundingBox) {
var {
pathParser
} = this;
var {
current,
point,
controlPoint,
currentPoint
} = PathElement.pathS(pathParser);
pathParser.addMarker(currentPoint, controlPoint, point);
boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
if (ctx) {
ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
}
}
static pathQ(pathParser) {
var {
current
} = pathParser;
var controlPoint = pathParser.getAsControlPoint("x1", "y1");
var currentPoint = pathParser.getAsCurrentPoint();
return {
current,
controlPoint,
currentPoint
};
}
pathQ(ctx, boundingBox) {
var {
pathParser
} = this;
var {
current,
controlPoint,
currentPoint
} = PathElement.pathQ(pathParser);
pathParser.addMarker(currentPoint, controlPoint, controlPoint);
boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
if (ctx) {
ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
}
}
static pathT(pathParser) {
var {
current
} = pathParser;
var controlPoint = pathParser.getReflectedControlPoint();
pathParser.control = controlPoint;
var currentPoint = pathParser.getAsCurrentPoint();
return {
current,
controlPoint,
currentPoint
};
}
pathT(ctx, boundingBox) {
var {
pathParser
} = this;
var {
current,
controlPoint,
currentPoint
} = PathElement.pathT(pathParser);
pathParser.addMarker(currentPoint, controlPoint, controlPoint);
boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
if (ctx) {
ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
}
}
static pathA(pathParser) {
var {
current,
command
} = pathParser;
var {
rX,
rY,
xRot,
lArcFlag,
sweepFlag
} = command;
var xAxisRotation = xRot * (Math.PI / 180);
var currentPoint = pathParser.getAsCurrentPoint();
var currp = new Point(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2);
var l2 = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);
if (l2 > 1) {
rX *= Math.sqrt(l2);
rY *= Math.sqrt(l2);
}
var s2 = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));
if (isNaN(s2)) {
s2 = 0;
}
var cpp = new Point(s2 * rX * currp.y / rY, s2 * -rY * currp.x / rX);
var centp = new Point((current.x + currentPoint.x) / 2 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y);
var a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]);
var u2 = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY];
var v2 = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY];
var ad = vectorsAngle(u2, v2);
if (vectorsRatio(u2, v2) <= -1) {
ad = Math.PI;
}
if (vectorsRatio(u2, v2) >= 1) {
ad = 0;
}
return {
currentPoint,
rX,
rY,
sweepFlag,
xAxisRotation,
centp,
a1,
ad
};
}
pathA(ctx, boundingBox) {
var {
pathParser
} = this;
var {
currentPoint,
rX,
rY,
sweepFlag,
xAxisRotation,
centp,
a1,
ad
} = PathElement.pathA(pathParser);
var dir = 1 - sweepFlag ? 1 : -1;
var ah = a1 + dir * (ad / 2);
var halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));
pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2);
pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI);
boundingBox.addPoint(currentPoint.x, currentPoint.y);
if (ctx && !isNaN(a1) && !isNaN(ad)) {
var r2 = rX > rY ? rX : rY;
var sx = rX > rY ? 1 : rX / rY;
var sy = rX > rY ? rY / rX : 1;
ctx.translate(centp.x, centp.y);
ctx.rotate(xAxisRotation);
ctx.scale(sx, sy);
ctx.arc(0, 0, r2, a1, a1 + ad, Boolean(1 - sweepFlag));
ctx.scale(1 / sx, 1 / sy);
ctx.rotate(-xAxisRotation);
ctx.translate(-centp.x, -centp.y);
}
}
static pathZ(pathParser) {
pathParser.current = pathParser.start;
}
pathZ(ctx, boundingBox) {
PathElement.pathZ(this.pathParser);
if (ctx) {
if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {
ctx.closePath();
}
}
}
}
class GlyphElement extends PathElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "glyph";
this.horizAdvX = this.getAttribute("horiz-adv-x").getNumber();
this.unicode = this.getAttribute("unicode").getString();
this.arabicForm = this.getAttribute("arabic-form").getString();
}
}
class TextElement extends RenderedElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, new.target === TextElement ? true : captureTextNodes);
this.type = "text";
this.x = 0;
this.y = 0;
this.measureCache = -1;
}
setContext(ctx) {
var fromMeasure = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
super.setContext(ctx, fromMeasure);
var textBaseline = this.getStyle("dominant-baseline").getTextBaseline() || this.getStyle("alignment-baseline").getTextBaseline();
if (textBaseline) {
ctx.textBaseline = textBaseline;
}
}
initializeCoordinates() {
this.x = 0;
this.y = 0;
this.leafTexts = [];
this.textChunkStart = 0;
this.minX = Number.POSITIVE_INFINITY;
this.maxX = Number.NEGATIVE_INFINITY;
}
getBoundingBox(ctx) {
if (this.type !== "text") {
return this.getTElementBoundingBox(ctx);
}
this.initializeCoordinates();
this.adjustChildCoordinatesRecursive(ctx);
var boundingBox = null;
this.children.forEach((_2, i2) => {
var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i2);
if (!boundingBox) {
boundingBox = childBoundingBox;
} else {
boundingBox.addBoundingBox(childBoundingBox);
}
});
return boundingBox;
}
getFontSize() {
var {
document: document2,
parent
} = this;
var inheritFontSize = Font.parse(document2.ctx.font).fontSize;
var fontSize2 = parent.getStyle("font-size").getNumber(inheritFontSize);
return fontSize2;
}
getTElementBoundingBox(ctx) {
var fontSize2 = this.getFontSize();
return new BoundingBox(this.x, this.y - fontSize2, this.x + this.measureText(ctx), this.y);
}
getGlyph(font, text2, i2) {
var char = text2[i2];
var glyph = null;
if (font.isArabic) {
var len = text2.length;
var prevChar = text2[i2 - 1];
var nextChar = text2[i2 + 1];
var arabicForm = "isolated";
if ((i2 === 0 || prevChar === " ") && i2 < len - 1 && nextChar !== " ") {
arabicForm = "terminal";
}
if (i2 > 0 && prevChar !== " " && i2 < len - 1 && nextChar !== " ") {
arabicForm = "medial";
}
if (i2 > 0 && prevChar !== " " && (i2 === len - 1 || nextChar === " ")) {
arabicForm = "initial";
}
if (typeof font.glyphs[char] !== "undefined") {
var maybeGlyph = font.glyphs[char];
glyph = maybeGlyph instanceof GlyphElement ? maybeGlyph : maybeGlyph[arabicForm];
}
} else {
glyph = font.glyphs[char];
}
if (!glyph) {
glyph = font.missingGlyph;
}
return glyph;
}
getText() {
return "";
}
getTextFromNode(node2) {
var textNode = node2 || this.node;
var childNodes = Array.from(textNode.parentNode.childNodes);
var index2 = childNodes.indexOf(textNode);
var lastIndex = childNodes.length - 1;
var text2 = compressSpaces(
// textNode.value
// || textNode.text
textNode.textContent || ""
);
if (index2 === 0) {
text2 = trimLeft(text2);
}
if (index2 === lastIndex) {
text2 = trimRight(text2);
}
return text2;
}
renderChildren(ctx) {
if (this.type !== "text") {
this.renderTElementChildren(ctx);
return;
}
this.initializeCoordinates();
this.adjustChildCoordinatesRecursive(ctx);
this.children.forEach((_2, i2) => {
this.renderChild(ctx, this, this, i2);
});
var {
mouse
} = this.document.screen;
if (mouse.isWorking()) {
mouse.checkBoundingBox(this, this.getBoundingBox(ctx));
}
}
renderTElementChildren(ctx) {
var {
document: document2,
parent
} = this;
var renderText = this.getText();
var customFont = parent.getStyle("font-family").getDefinition();
if (customFont) {
var {
unitsPerEm
} = customFont.fontFace;
var ctxFont = Font.parse(document2.ctx.font);
var fontSize2 = parent.getStyle("font-size").getNumber(ctxFont.fontSize);
var fontStyle2 = parent.getStyle("font-style").getString(ctxFont.fontStyle);
var scale = fontSize2 / unitsPerEm;
var text2 = customFont.isRTL ? renderText.split("").reverse().join("") : renderText;
var dx = toNumbers(parent.getAttribute("dx").getString());
var len = text2.length;
for (var i2 = 0; i2 < len; i2++) {
var glyph = this.getGlyph(customFont, text2, i2);
ctx.translate(this.x, this.y);
ctx.scale(scale, -scale);
var lw = ctx.lineWidth;
ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize2;
if (fontStyle2 === "italic") {
ctx.transform(1, 0, 0.4, 1, 0, 0);
}
glyph.render(ctx);
if (fontStyle2 === "italic") {
ctx.transform(1, 0, -0.4, 1, 0, 0);
}
ctx.lineWidth = lw;
ctx.scale(1 / scale, -1 / scale);
ctx.translate(-this.x, -this.y);
this.x += fontSize2 * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;
if (typeof dx[i2] !== "undefined" && !isNaN(dx[i2])) {
this.x += dx[i2];
}
}
return;
}
var {
x: x2,
y: y2
} = this;
if (ctx.fillStyle) {
ctx.fillText(renderText, x2, y2);
}
if (ctx.strokeStyle) {
ctx.strokeText(renderText, x2, y2);
}
}
applyAnchoring() {
if (this.textChunkStart >= this.leafTexts.length) {
return;
}
var firstElement = this.leafTexts[this.textChunkStart];
var textAnchor = firstElement.getStyle("text-anchor").getString("start");
var isRTL = false;
var shift = 0;
if (textAnchor === "start" && !isRTL || textAnchor === "end" && isRTL) {
shift = firstElement.x - this.minX;
} else if (textAnchor === "end" && !isRTL || textAnchor === "start" && isRTL) {
shift = firstElement.x - this.maxX;
} else {
shift = firstElement.x - (this.minX + this.maxX) / 2;
}
for (var i2 = this.textChunkStart; i2 < this.leafTexts.length; i2++) {
this.leafTexts[i2].x += shift;
}
this.minX = Number.POSITIVE_INFINITY;
this.maxX = Number.NEGATIVE_INFINITY;
this.textChunkStart = this.leafTexts.length;
}
adjustChildCoordinatesRecursive(ctx) {
this.children.forEach((_2, i2) => {
this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i2);
});
this.applyAnchoring();
}
adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i2) {
var child = parent.children[i2];
if (child.children.length > 0) {
child.children.forEach((_2, i3) => {
textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i3);
});
} else {
this.adjustChildCoordinates(ctx, textParent, parent, i2);
}
}
adjustChildCoordinates(ctx, textParent, parent, i2) {
var child = parent.children[i2];
if (typeof child.measureText !== "function") {
return child;
}
ctx.save();
child.setContext(ctx, true);
var xAttr = child.getAttribute("x");
var yAttr = child.getAttribute("y");
var dxAttr = child.getAttribute("dx");
var dyAttr = child.getAttribute("dy");
var customFont = child.getStyle("font-family").getDefinition();
var isRTL = Boolean(customFont) && customFont.isRTL;
if (i2 === 0) {
if (!xAttr.hasValue()) {
xAttr.setValue(child.getInheritedAttribute("x"));
}
if (!yAttr.hasValue()) {
yAttr.setValue(child.getInheritedAttribute("y"));
}
if (!dxAttr.hasValue()) {
dxAttr.setValue(child.getInheritedAttribute("dx"));
}
if (!dyAttr.hasValue()) {
dyAttr.setValue(child.getInheritedAttribute("dy"));
}
}
var width = child.measureText(ctx);
if (isRTL) {
textParent.x -= width;
}
if (xAttr.hasValue()) {
textParent.applyAnchoring();
child.x = xAttr.getPixels("x");
if (dxAttr.hasValue()) {
child.x += dxAttr.getPixels("x");
}
} else {
if (dxAttr.hasValue()) {
textParent.x += dxAttr.getPixels("x");
}
child.x = textParent.x;
}
textParent.x = child.x;
if (!isRTL) {
textParent.x += width;
}
if (yAttr.hasValue()) {
child.y = yAttr.getPixels("y");
if (dyAttr.hasValue()) {
child.y += dyAttr.getPixels("y");
}
} else {
if (dyAttr.hasValue()) {
textParent.y += dyAttr.getPixels("y");
}
child.y = textParent.y;
}
textParent.y = child.y;
textParent.leafTexts.push(child);
textParent.minX = Math.min(textParent.minX, child.x, child.x + width);
textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width);
child.clearContext(ctx);
ctx.restore();
return child;
}
getChildBoundingBox(ctx, textParent, parent, i2) {
var child = parent.children[i2];
if (typeof child.getBoundingBox !== "function") {
return null;
}
var boundingBox = child.getBoundingBox(ctx);
if (!boundingBox) {
return null;
}
child.children.forEach((_2, i3) => {
var childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i3);
boundingBox.addBoundingBox(childBoundingBox);
});
return boundingBox;
}
renderChild(ctx, textParent, parent, i2) {
var child = parent.children[i2];
child.render(ctx);
child.children.forEach((_2, i3) => {
textParent.renderChild(ctx, textParent, child, i3);
});
}
measureText(ctx) {
var {
measureCache
} = this;
if (~measureCache) {
return measureCache;
}
var renderText = this.getText();
var measure = this.measureTargetText(ctx, renderText);
this.measureCache = measure;
return measure;
}
measureTargetText(ctx, targetText) {
if (!targetText.length) {
return 0;
}
var {
parent
} = this;
var customFont = parent.getStyle("font-family").getDefinition();
if (customFont) {
var fontSize2 = this.getFontSize();
var text2 = customFont.isRTL ? targetText.split("").reverse().join("") : targetText;
var dx = toNumbers(parent.getAttribute("dx").getString());
var len = text2.length;
var _measure = 0;
for (var i2 = 0; i2 < len; i2++) {
var glyph = this.getGlyph(customFont, text2, i2);
_measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize2 / customFont.fontFace.unitsPerEm;
if (typeof dx[i2] !== "undefined" && !isNaN(dx[i2])) {
_measure += dx[i2];
}
}
return _measure;
}
if (!ctx.measureText) {
return targetText.length * 10;
}
ctx.save();
this.setContext(ctx, true);
var {
width: measure
} = ctx.measureText(targetText);
this.clearContext(ctx);
ctx.restore();
return measure;
}
/**
* Inherits positional attributes from {@link TextElement} parent(s). Attributes
* are only inherited from a parent to its first child.
* @param name - The attribute name.
* @returns The attribute value or null.
*/
getInheritedAttribute(name) {
var current = this;
while (current instanceof TextElement && current.isFirstChild()) {
var parentAttr = current.parent.getAttribute(name);
if (parentAttr.hasValue(true)) {
return parentAttr.getValue("0");
}
current = current.parent;
}
return null;
}
}
class TSpanElement extends TextElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, new.target === TSpanElement ? true : captureTextNodes);
this.type = "tspan";
this.text = this.children.length > 0 ? "" : this.getTextFromNode();
}
getText() {
return this.text;
}
}
class TextNode extends TSpanElement {
constructor() {
super(...arguments);
this.type = "textNode";
}
}
class SVGElement extends RenderedElement {
constructor() {
super(...arguments);
this.type = "svg";
this.root = false;
}
setContext(ctx) {
var _this$node$parentNode;
var {
document: document2
} = this;
var {
screen,
window: window2
} = document2;
var canvas = ctx.canvas;
screen.setDefaults(ctx);
if (canvas.style && typeof ctx.font !== "undefined" && window2 && typeof window2.getComputedStyle !== "undefined") {
ctx.font = window2.getComputedStyle(canvas).getPropertyValue("font");
var fontSizeProp = new Property(document2, "fontSize", Font.parse(ctx.font).fontSize);
if (fontSizeProp.hasValue()) {
document2.rootEmSize = fontSizeProp.getPixels("y");
document2.emSize = document2.rootEmSize;
}
}
if (!this.getAttribute("x").hasValue()) {
this.getAttribute("x", true).setValue(0);
}
if (!this.getAttribute("y").hasValue()) {
this.getAttribute("y", true).setValue(0);
}
var {
width,
height
} = screen.viewPort;
if (!this.getStyle("width").hasValue()) {
this.getStyle("width", true).setValue("100%");
}
if (!this.getStyle("height").hasValue()) {
this.getStyle("height", true).setValue("100%");
}
if (!this.getStyle("color").hasValue()) {
this.getStyle("color", true).setValue("black");
}
var refXAttr = this.getAttribute("refX");
var refYAttr = this.getAttribute("refY");
var viewBoxAttr = this.getAttribute("viewBox");
var viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;
var clip = !this.root && this.getStyle("overflow").getValue("hidden") !== "visible";
var minX = 0;
var minY = 0;
var clipX = 0;
var clipY = 0;
if (viewBox) {
minX = viewBox[0];
minY = viewBox[1];
}
if (!this.root) {
width = this.getStyle("width").getPixels("x");
height = this.getStyle("height").getPixels("y");
if (this.type === "marker") {
clipX = minX;
clipY = minY;
minX = 0;
minY = 0;
}
}
screen.viewPort.setCurrent(width, height);
if (this.node && (!this.parent || ((_this$node$parentNode = this.node.parentNode) === null || _this$node$parentNode === void 0 ? void 0 : _this$node$parentNode.nodeName) === "foreignObject") && this.getStyle("transform", false, true).hasValue() && !this.getStyle("transform-origin", false, true).hasValue()) {
this.getStyle("transform-origin", true, true).setValue("50% 50%");
}
super.setContext(ctx);
ctx.translate(this.getAttribute("x").getPixels("x"), this.getAttribute("y").getPixels("y"));
if (viewBox) {
width = viewBox[2];
height = viewBox[3];
}
document2.setViewBox({
ctx,
aspectRatio: this.getAttribute("preserveAspectRatio").getString(),
width: screen.viewPort.width,
desiredWidth: width,
height: screen.viewPort.height,
desiredHeight: height,
minX,
minY,
refX: refXAttr.getValue(),
refY: refYAttr.getValue(),
clip,
clipX,
clipY
});
if (viewBox) {
screen.viewPort.removeCurrent();
screen.viewPort.setCurrent(width, height);
}
}
clearContext(ctx) {
super.clearContext(ctx);
this.document.screen.viewPort.removeCurrent();
}
/**
* Resize SVG to fit in given size.
* @param width
* @param height
* @param preserveAspectRatio
*/
resize(width) {
var height = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : width;
var preserveAspectRatio = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
var widthAttr = this.getAttribute("width", true);
var heightAttr = this.getAttribute("height", true);
var viewBoxAttr = this.getAttribute("viewBox");
var styleAttr = this.getAttribute("style");
var originWidth = widthAttr.getNumber(0);
var originHeight = heightAttr.getNumber(0);
if (preserveAspectRatio) {
if (typeof preserveAspectRatio === "string") {
this.getAttribute("preserveAspectRatio", true).setValue(preserveAspectRatio);
} else {
var preserveAspectRatioAttr = this.getAttribute("preserveAspectRatio");
if (preserveAspectRatioAttr.hasValue()) {
preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\s*(\S.*\S)\s*$/, "$1"));
}
}
}
widthAttr.setValue(width);
heightAttr.setValue(height);
if (!viewBoxAttr.hasValue()) {
viewBoxAttr.setValue("0 0 ".concat(originWidth || width, " ").concat(originHeight || height));
}
if (styleAttr.hasValue()) {
var widthStyle = this.getStyle("width");
var heightStyle = this.getStyle("height");
if (widthStyle.hasValue()) {
widthStyle.setValue("".concat(width, "px"));
}
if (heightStyle.hasValue()) {
heightStyle.setValue("".concat(height, "px"));
}
}
}
}
class RectElement extends PathElement {
constructor() {
super(...arguments);
this.type = "rect";
}
path(ctx) {
var x2 = this.getAttribute("x").getPixels("x");
var y2 = this.getAttribute("y").getPixels("y");
var width = this.getStyle("width", false, true).getPixels("x");
var height = this.getStyle("height", false, true).getPixels("y");
var rxAttr = this.getAttribute("rx");
var ryAttr = this.getAttribute("ry");
var rx = rxAttr.getPixels("x");
var ry = ryAttr.getPixels("y");
if (rxAttr.hasValue() && !ryAttr.hasValue()) {
ry = rx;
}
if (ryAttr.hasValue() && !rxAttr.hasValue()) {
rx = ry;
}
rx = Math.min(rx, width / 2);
ry = Math.min(ry, height / 2);
if (ctx) {
var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
ctx.beginPath();
if (height > 0 && width > 0) {
ctx.moveTo(x2 + rx, y2);
ctx.lineTo(x2 + width - rx, y2);
ctx.bezierCurveTo(x2 + width - rx + KAPPA * rx, y2, x2 + width, y2 + ry - KAPPA * ry, x2 + width, y2 + ry);
ctx.lineTo(x2 + width, y2 + height - ry);
ctx.bezierCurveTo(x2 + width, y2 + height - ry + KAPPA * ry, x2 + width - rx + KAPPA * rx, y2 + height, x2 + width - rx, y2 + height);
ctx.lineTo(x2 + rx, y2 + height);
ctx.bezierCurveTo(x2 + rx - KAPPA * rx, y2 + height, x2, y2 + height - ry + KAPPA * ry, x2, y2 + height - ry);
ctx.lineTo(x2, y2 + ry);
ctx.bezierCurveTo(x2, y2 + ry - KAPPA * ry, x2 + rx - KAPPA * rx, y2, x2 + rx, y2);
ctx.closePath();
}
}
return new BoundingBox(x2, y2, x2 + width, y2 + height);
}
getMarkers() {
return null;
}
}
class CircleElement extends PathElement {
constructor() {
super(...arguments);
this.type = "circle";
}
path(ctx) {
var cx = this.getAttribute("cx").getPixels("x");
var cy = this.getAttribute("cy").getPixels("y");
var r2 = this.getAttribute("r").getPixels();
if (ctx && r2 > 0) {
ctx.beginPath();
ctx.arc(cx, cy, r2, 0, Math.PI * 2, false);
ctx.closePath();
}
return new BoundingBox(cx - r2, cy - r2, cx + r2, cy + r2);
}
getMarkers() {
return null;
}
}
class EllipseElement extends PathElement {
constructor() {
super(...arguments);
this.type = "ellipse";
}
path(ctx) {
var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
var rx = this.getAttribute("rx").getPixels("x");
var ry = this.getAttribute("ry").getPixels("y");
var cx = this.getAttribute("cx").getPixels("x");
var cy = this.getAttribute("cy").getPixels("y");
if (ctx && rx > 0 && ry > 0) {
ctx.beginPath();
ctx.moveTo(cx + rx, cy);
ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);
ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);
ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);
ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);
ctx.closePath();
}
return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);
}
getMarkers() {
return null;
}
}
class LineElement extends PathElement {
constructor() {
super(...arguments);
this.type = "line";
}
getPoints() {
return [new Point(this.getAttribute("x1").getPixels("x"), this.getAttribute("y1").getPixels("y")), new Point(this.getAttribute("x2").getPixels("x"), this.getAttribute("y2").getPixels("y"))];
}
path(ctx) {
var [{
x: x0,
y: y0
}, {
x: x1,
y: y1
}] = this.getPoints();
if (ctx) {
ctx.beginPath();
ctx.moveTo(x0, y0);
ctx.lineTo(x1, y1);
}
return new BoundingBox(x0, y0, x1, y1);
}
getMarkers() {
var [p0, p1] = this.getPoints();
var a2 = p0.angleTo(p1);
return [[p0, a2], [p1, a2]];
}
}
class PolylineElement extends PathElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "polyline";
this.points = [];
this.points = Point.parsePath(this.getAttribute("points").getString());
}
path(ctx) {
var {
points
} = this;
var [{
x: x0,
y: y0
}] = points;
var boundingBox = new BoundingBox(x0, y0);
if (ctx) {
ctx.beginPath();
ctx.moveTo(x0, y0);
}
points.forEach((_ref2) => {
var {
x: x2,
y: y2
} = _ref2;
boundingBox.addPoint(x2, y2);
if (ctx) {
ctx.lineTo(x2, y2);
}
});
return boundingBox;
}
getMarkers() {
var {
points
} = this;
var lastIndex = points.length - 1;
var markers = [];
points.forEach((point, i2) => {
if (i2 === lastIndex) {
return;
}
markers.push([point, point.angleTo(points[i2 + 1])]);
});
if (markers.length > 0) {
markers.push([points[points.length - 1], markers[markers.length - 1][1]]);
}
return markers;
}
}
class PolygonElement extends PolylineElement {
constructor() {
super(...arguments);
this.type = "polygon";
}
path(ctx) {
var boundingBox = super.path(ctx);
var [{
x: x2,
y: y2
}] = this.points;
if (ctx) {
ctx.lineTo(x2, y2);
ctx.closePath();
}
return boundingBox;
}
}
class PatternElement extends Element {
constructor() {
super(...arguments);
this.type = "pattern";
}
createPattern(ctx, _2, parentOpacityProp) {
var width = this.getStyle("width").getPixels("x", true);
var height = this.getStyle("height").getPixels("y", true);
var patternSvg = new SVGElement(this.document, null);
patternSvg.attributes.viewBox = new Property(this.document, "viewBox", this.getAttribute("viewBox").getValue());
patternSvg.attributes.width = new Property(this.document, "width", "".concat(width, "px"));
patternSvg.attributes.height = new Property(this.document, "height", "".concat(height, "px"));
patternSvg.attributes.transform = new Property(this.document, "transform", this.getAttribute("patternTransform").getValue());
patternSvg.children = this.children;
var patternCanvas = this.document.createCanvas(width, height);
var patternCtx = patternCanvas.getContext("2d");
var xAttr = this.getAttribute("x");
var yAttr = this.getAttribute("y");
if (xAttr.hasValue() && yAttr.hasValue()) {
patternCtx.translate(xAttr.getPixels("x", true), yAttr.getPixels("y", true));
}
if (parentOpacityProp.hasValue()) {
this.styles["fill-opacity"] = parentOpacityProp;
} else {
Reflect.deleteProperty(this.styles, "fill-opacity");
}
for (var x2 = -1; x2 <= 1; x2++) {
for (var y2 = -1; y2 <= 1; y2++) {
patternCtx.save();
patternSvg.attributes.x = new Property(this.document, "x", x2 * patternCanvas.width);
patternSvg.attributes.y = new Property(this.document, "y", y2 * patternCanvas.height);
patternSvg.render(patternCtx);
patternCtx.restore();
}
}
var pattern = ctx.createPattern(patternCanvas, "repeat");
return pattern;
}
}
class MarkerElement extends Element {
constructor() {
super(...arguments);
this.type = "marker";
}
render(ctx, point, angle2) {
if (!point) {
return;
}
var {
x: x2,
y: y2
} = point;
var orient = this.getAttribute("orient").getString("auto");
var markerUnits = this.getAttribute("markerUnits").getString("strokeWidth");
ctx.translate(x2, y2);
if (orient === "auto") {
ctx.rotate(angle2);
}
if (markerUnits === "strokeWidth") {
ctx.scale(ctx.lineWidth, ctx.lineWidth);
}
ctx.save();
var markerSvg = new SVGElement(this.document, null);
markerSvg.type = this.type;
markerSvg.attributes.viewBox = new Property(this.document, "viewBox", this.getAttribute("viewBox").getValue());
markerSvg.attributes.refX = new Property(this.document, "refX", this.getAttribute("refX").getValue());
markerSvg.attributes.refY = new Property(this.document, "refY", this.getAttribute("refY").getValue());
markerSvg.attributes.width = new Property(this.document, "width", this.getAttribute("markerWidth").getValue());
markerSvg.attributes.height = new Property(this.document, "height", this.getAttribute("markerHeight").getValue());
markerSvg.attributes.overflow = new Property(this.document, "overflow", this.getAttribute("overflow").getValue());
markerSvg.attributes.fill = new Property(this.document, "fill", this.getAttribute("fill").getColor("black"));
markerSvg.attributes.stroke = new Property(this.document, "stroke", this.getAttribute("stroke").getValue("none"));
markerSvg.children = this.children;
markerSvg.render(ctx);
ctx.restore();
if (markerUnits === "strokeWidth") {
ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);
}
if (orient === "auto") {
ctx.rotate(-angle2);
}
ctx.translate(-x2, -y2);
}
}
class DefsElement extends Element {
constructor() {
super(...arguments);
this.type = "defs";
}
render() {
}
}
class GElement extends RenderedElement {
constructor() {
super(...arguments);
this.type = "g";
}
getBoundingBox(ctx) {
var boundingBox = new BoundingBox();
this.children.forEach((child) => {
boundingBox.addBoundingBox(child.getBoundingBox(ctx));
});
return boundingBox;
}
}
class GradientElement extends Element {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.attributesToInherit = ["gradientUnits"];
this.stops = [];
var {
stops,
children
} = this;
children.forEach((child) => {
if (child.type === "stop") {
stops.push(child);
}
});
}
getGradientUnits() {
return this.getAttribute("gradientUnits").getString("objectBoundingBox");
}
createGradient(ctx, element, parentOpacityProp) {
var stopsContainer = this;
if (this.getHrefAttribute().hasValue()) {
stopsContainer = this.getHrefAttribute().getDefinition();
this.inheritStopContainer(stopsContainer);
}
var {
stops
} = stopsContainer;
var gradient = this.getGradient(ctx, element);
if (!gradient) {
return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);
}
stops.forEach((stop) => {
gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));
});
if (this.getAttribute("gradientTransform").hasValue()) {
var {
document: document2
} = this;
var {
MAX_VIRTUAL_PIXELS,
viewPort
} = document2.screen;
var [rootView] = viewPort.viewPorts;
var rect = new RectElement(document2, null);
rect.attributes.x = new Property(document2, "x", -MAX_VIRTUAL_PIXELS / 3);
rect.attributes.y = new Property(document2, "y", -MAX_VIRTUAL_PIXELS / 3);
rect.attributes.width = new Property(document2, "width", MAX_VIRTUAL_PIXELS);
rect.attributes.height = new Property(document2, "height", MAX_VIRTUAL_PIXELS);
var group = new GElement(document2, null);
group.attributes.transform = new Property(document2, "transform", this.getAttribute("gradientTransform").getValue());
group.children = [rect];
var patternSvg = new SVGElement(document2, null);
patternSvg.attributes.x = new Property(document2, "x", 0);
patternSvg.attributes.y = new Property(document2, "y", 0);
patternSvg.attributes.width = new Property(document2, "width", rootView.width);
patternSvg.attributes.height = new Property(document2, "height", rootView.height);
patternSvg.children = [group];
var patternCanvas = document2.createCanvas(rootView.width, rootView.height);
var patternCtx = patternCanvas.getContext("2d");
patternCtx.fillStyle = gradient;
patternSvg.render(patternCtx);
return patternCtx.createPattern(patternCanvas, "no-repeat");
}
return gradient;
}
inheritStopContainer(stopsContainer) {
this.attributesToInherit.forEach((attributeToInherit) => {
if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {
this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());
}
});
}
addParentOpacity(parentOpacityProp, color2) {
if (parentOpacityProp.hasValue()) {
var colorProp = new Property(this.document, "color", color2);
return colorProp.addOpacity(parentOpacityProp).getColor();
}
return color2;
}
}
class LinearGradientElement extends GradientElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "linearGradient";
this.attributesToInherit.push("x1", "y1", "x2", "y2");
}
getGradient(ctx, element) {
var isBoundingBoxUnits = this.getGradientUnits() === "objectBoundingBox";
var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;
if (isBoundingBoxUnits && !boundingBox) {
return null;
}
if (!this.getAttribute("x1").hasValue() && !this.getAttribute("y1").hasValue() && !this.getAttribute("x2").hasValue() && !this.getAttribute("y2").hasValue()) {
this.getAttribute("x1", true).setValue(0);
this.getAttribute("y1", true).setValue(0);
this.getAttribute("x2", true).setValue(1);
this.getAttribute("y2", true).setValue(0);
}
var x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute("x1").getNumber() : this.getAttribute("x1").getPixels("x");
var y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute("y1").getNumber() : this.getAttribute("y1").getPixels("y");
var x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute("x2").getNumber() : this.getAttribute("x2").getPixels("x");
var y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute("y2").getNumber() : this.getAttribute("y2").getPixels("y");
if (x1 === x2 && y1 === y2) {
return null;
}
return ctx.createLinearGradient(x1, y1, x2, y2);
}
}
class RadialGradientElement extends GradientElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "radialGradient";
this.attributesToInherit.push("cx", "cy", "r", "fx", "fy", "fr");
}
getGradient(ctx, element) {
var isBoundingBoxUnits = this.getGradientUnits() === "objectBoundingBox";
var boundingBox = element.getBoundingBox(ctx);
if (isBoundingBoxUnits && !boundingBox) {
return null;
}
if (!this.getAttribute("cx").hasValue()) {
this.getAttribute("cx", true).setValue("50%");
}
if (!this.getAttribute("cy").hasValue()) {
this.getAttribute("cy", true).setValue("50%");
}
if (!this.getAttribute("r").hasValue()) {
this.getAttribute("r", true).setValue("50%");
}
var cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute("cx").getNumber() : this.getAttribute("cx").getPixels("x");
var cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute("cy").getNumber() : this.getAttribute("cy").getPixels("y");
var fx = cx;
var fy = cy;
if (this.getAttribute("fx").hasValue()) {
fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute("fx").getNumber() : this.getAttribute("fx").getPixels("x");
}
if (this.getAttribute("fy").hasValue()) {
fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute("fy").getNumber() : this.getAttribute("fy").getPixels("y");
}
var r2 = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2 * this.getAttribute("r").getNumber() : this.getAttribute("r").getPixels();
var fr = this.getAttribute("fr").getPixels();
return ctx.createRadialGradient(fx, fy, fr, cx, cy, r2);
}
}
class StopElement extends Element {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "stop";
var offset = Math.max(0, Math.min(1, this.getAttribute("offset").getNumber()));
var stopOpacity = this.getStyle("stop-opacity");
var stopColor = this.getStyle("stop-color", true);
if (stopColor.getString() === "") {
stopColor.setValue("#000");
}
if (stopOpacity.hasValue()) {
stopColor = stopColor.addOpacity(stopOpacity);
}
this.offset = offset;
this.color = stopColor.getColor();
}
}
class AnimateElement extends Element {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "animate";
this.duration = 0;
this.initialValue = null;
this.initialUnits = "";
this.removed = false;
this.frozen = false;
document2.screen.animations.push(this);
this.begin = this.getAttribute("begin").getMilliseconds();
this.maxDuration = this.begin + this.getAttribute("dur").getMilliseconds();
this.from = this.getAttribute("from");
this.to = this.getAttribute("to");
this.values = new Property(document2, "values", null);
var valuesAttr = this.getAttribute("values");
if (valuesAttr.hasValue()) {
this.values.setValue(valuesAttr.getString().split(";"));
}
}
getProperty() {
var attributeType = this.getAttribute("attributeType").getString();
var attributeName = this.getAttribute("attributeName").getString();
if (attributeType === "CSS") {
return this.parent.getStyle(attributeName, true);
}
return this.parent.getAttribute(attributeName, true);
}
calcValue() {
var {
initialUnits
} = this;
var {
progress,
from,
to
} = this.getProgress();
var newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;
if (initialUnits === "%") {
newValue *= 100;
}
return "".concat(newValue).concat(initialUnits);
}
update(delta) {
var {
parent
} = this;
var prop = this.getProperty();
if (!this.initialValue) {
this.initialValue = prop.getString();
this.initialUnits = prop.getUnits();
}
if (this.duration > this.maxDuration) {
var fill = this.getAttribute("fill").getString("remove");
if (this.getAttribute("repeatCount").getString() === "indefinite" || this.getAttribute("repeatDur").getString() === "indefinite") {
this.duration = 0;
} else if (fill === "freeze" && !this.frozen) {
this.frozen = true;
parent.animationFrozen = true;
parent.animationFrozenValue = prop.getString();
} else if (fill === "remove" && !this.removed) {
this.removed = true;
prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);
return true;
}
return false;
}
this.duration += delta;
var updated = false;
if (this.begin < this.duration) {
var newValue = this.calcValue();
var typeAttr = this.getAttribute("type");
if (typeAttr.hasValue()) {
var type = typeAttr.getString();
newValue = "".concat(type, "(").concat(newValue, ")");
}
prop.setValue(newValue);
updated = true;
}
return updated;
}
getProgress() {
var {
document: document2,
values: values2
} = this;
var result = {
progress: (this.duration - this.begin) / (this.maxDuration - this.begin)
};
if (values2.hasValue()) {
var p2 = result.progress * (values2.getValue().length - 1);
var lb = Math.floor(p2);
var ub = Math.ceil(p2);
result.from = new Property(document2, "from", parseFloat(values2.getValue()[lb]));
result.to = new Property(document2, "to", parseFloat(values2.getValue()[ub]));
result.progress = (p2 - lb) / (ub - lb);
} else {
result.from = this.from;
result.to = this.to;
}
return result;
}
}
class AnimateColorElement extends AnimateElement {
constructor() {
super(...arguments);
this.type = "animateColor";
}
calcValue() {
var {
progress,
from,
to
} = this.getProgress();
var colorFrom = new RGBColor$1(from.getColor());
var colorTo = new RGBColor$1(to.getColor());
if (colorFrom.ok && colorTo.ok) {
var r2 = colorFrom.r + (colorTo.r - colorFrom.r) * progress;
var g2 = colorFrom.g + (colorTo.g - colorFrom.g) * progress;
var b2 = colorFrom.b + (colorTo.b - colorFrom.b) * progress;
return "rgb(".concat(Math.floor(r2), ", ").concat(Math.floor(g2), ", ").concat(Math.floor(b2), ")");
}
return this.getAttribute("from").getColor();
}
}
class AnimateTransformElement extends AnimateElement {
constructor() {
super(...arguments);
this.type = "animateTransform";
}
calcValue() {
var {
progress,
from,
to
} = this.getProgress();
var transformFrom = toNumbers(from.getString());
var transformTo = toNumbers(to.getString());
var newValue = transformFrom.map((from2, i2) => {
var to2 = transformTo[i2];
return from2 + (to2 - from2) * progress;
}).join(" ");
return newValue;
}
}
class FontElement extends Element {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "font";
this.glyphs = {};
this.horizAdvX = this.getAttribute("horiz-adv-x").getNumber();
var {
definitions
} = document2;
var {
children
} = this;
for (var child of children) {
switch (child.type) {
case "font-face": {
this.fontFace = child;
var fontFamilyStyle = child.getStyle("font-family");
if (fontFamilyStyle.hasValue()) {
definitions[fontFamilyStyle.getString()] = this;
}
break;
}
case "missing-glyph":
this.missingGlyph = child;
break;
case "glyph": {
var glyph = child;
if (glyph.arabicForm) {
this.isRTL = true;
this.isArabic = true;
if (typeof this.glyphs[glyph.unicode] === "undefined") {
this.glyphs[glyph.unicode] = {};
}
this.glyphs[glyph.unicode][glyph.arabicForm] = glyph;
} else {
this.glyphs[glyph.unicode] = glyph;
}
break;
}
}
}
}
render() {
}
}
class FontFaceElement extends Element {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "font-face";
this.ascent = this.getAttribute("ascent").getNumber();
this.descent = this.getAttribute("descent").getNumber();
this.unitsPerEm = this.getAttribute("units-per-em").getNumber();
}
}
class MissingGlyphElement extends PathElement {
constructor() {
super(...arguments);
this.type = "missing-glyph";
this.horizAdvX = 0;
}
}
class TRefElement extends TextElement {
constructor() {
super(...arguments);
this.type = "tref";
}
getText() {
var element = this.getHrefAttribute().getDefinition();
if (element) {
var firstChild = element.children[0];
if (firstChild) {
return firstChild.getText();
}
}
return "";
}
}
class AElement extends TextElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "a";
var {
childNodes
} = node2;
var firstChild = childNodes[0];
var hasText = childNodes.length > 0 && Array.from(childNodes).every((node3) => node3.nodeType === 3);
this.hasText = hasText;
this.text = hasText ? this.getTextFromNode(firstChild) : "";
}
getText() {
return this.text;
}
renderChildren(ctx) {
if (this.hasText) {
super.renderChildren(ctx);
var {
document: document2,
x: x2,
y: y2
} = this;
var {
mouse
} = document2.screen;
var fontSize2 = new Property(document2, "fontSize", Font.parse(document2.ctx.font).fontSize);
if (mouse.isWorking()) {
mouse.checkBoundingBox(this, new BoundingBox(x2, y2 - fontSize2.getPixels("y"), x2 + this.measureText(ctx), y2));
}
} else if (this.children.length > 0) {
var g2 = new GElement(this.document, null);
g2.children = this.children;
g2.parent = this;
g2.render(ctx);
}
}
onClick() {
var {
window: window2
} = this.document;
if (window2) {
window2.open(this.getHrefAttribute().getString());
}
}
onMouseMove() {
var ctx = this.document.ctx;
ctx.canvas.style.cursor = "pointer";
}
}
function ownKeys$2(object, enumerableOnly) {
var keys3 = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys3.push.apply(keys3, symbols);
}
return keys3;
}
function _objectSpread$2(target) {
for (var i2 = 1; i2 < arguments.length; i2++) {
var source = arguments[i2] != null ? arguments[i2] : {};
if (i2 % 2) {
ownKeys$2(Object(source), true).forEach(function(key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys$2(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
class TextPathElement extends TextElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "textPath";
this.textWidth = 0;
this.textHeight = 0;
this.pathLength = -1;
this.glyphInfo = null;
this.letterSpacingCache = [];
this.measuresCache = /* @__PURE__ */ new Map([["", 0]]);
var pathElement = this.getHrefAttribute().getDefinition();
this.text = this.getTextFromNode();
this.dataArray = this.parsePathData(pathElement);
}
getText() {
return this.text;
}
path(ctx) {
var {
dataArray
} = this;
if (ctx) {
ctx.beginPath();
}
dataArray.forEach((_ref2) => {
var {
type,
points
} = _ref2;
switch (type) {
case PathParser.LINE_TO:
if (ctx) {
ctx.lineTo(points[0], points[1]);
}
break;
case PathParser.MOVE_TO:
if (ctx) {
ctx.moveTo(points[0], points[1]);
}
break;
case PathParser.CURVE_TO:
if (ctx) {
ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);
}
break;
case PathParser.QUAD_TO:
if (ctx) {
ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);
}
break;
case PathParser.ARC: {
var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points;
var r2 = rx > ry ? rx : ry;
var scaleX = rx > ry ? 1 : rx / ry;
var scaleY = rx > ry ? ry / rx : 1;
if (ctx) {
ctx.translate(cx, cy);
ctx.rotate(psi);
ctx.scale(scaleX, scaleY);
ctx.arc(0, 0, r2, theta, theta + dTheta, Boolean(1 - fs));
ctx.scale(1 / scaleX, 1 / scaleY);
ctx.rotate(-psi);
ctx.translate(-cx, -cy);
}
break;
}
case PathParser.CLOSE_PATH:
if (ctx) {
ctx.closePath();
}
break;
}
});
}
renderChildren(ctx) {
this.setTextData(ctx);
ctx.save();
var textDecoration = this.parent.getStyle("text-decoration").getString();
var fontSize2 = this.getFontSize();
var {
glyphInfo
} = this;
var fill = ctx.fillStyle;
if (textDecoration === "underline") {
ctx.beginPath();
}
glyphInfo.forEach((glyph, i2) => {
var {
p0,
p1,
rotation,
text: partialText
} = glyph;
ctx.save();
ctx.translate(p0.x, p0.y);
ctx.rotate(rotation);
if (ctx.fillStyle) {
ctx.fillText(partialText, 0, 0);
}
if (ctx.strokeStyle) {
ctx.strokeText(partialText, 0, 0);
}
ctx.restore();
if (textDecoration === "underline") {
if (i2 === 0) {
ctx.moveTo(p0.x, p0.y + fontSize2 / 8);
}
ctx.lineTo(p1.x, p1.y + fontSize2 / 5);
}
});
if (textDecoration === "underline") {
ctx.lineWidth = fontSize2 / 20;
ctx.strokeStyle = fill;
ctx.stroke();
ctx.closePath();
}
ctx.restore();
}
getLetterSpacingAt() {
var idx = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
return this.letterSpacingCache[idx] || 0;
}
findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c2, charI) {
var offset = inputOffset;
var glyphWidth = this.measureText(ctx, c2);
if (c2 === " " && anchor === "justify" && textFullWidth < fullPathWidth) {
glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;
}
if (charI > -1) {
offset += this.getLetterSpacingAt(charI);
}
var splineStep = this.textHeight / 20;
var p0 = this.getEquidistantPointOnPath(offset, splineStep, 0);
var p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0);
var segment = {
p0,
p1
};
var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;
if (dy) {
var dyX = Math.cos(Math.PI / 2 + rotation) * dy;
var dyY = Math.cos(-rotation) * dy;
segment.p0 = _objectSpread$2(_objectSpread$2({}, p0), {}, {
x: p0.x + dyX,
y: p0.y + dyY
});
segment.p1 = _objectSpread$2(_objectSpread$2({}, p1), {}, {
x: p1.x + dyX,
y: p1.y + dyY
});
}
offset += glyphWidth;
return {
offset,
segment,
rotation
};
}
measureText(ctx, text2) {
var {
measuresCache
} = this;
var targetText = text2 || this.getText();
if (measuresCache.has(targetText)) {
return measuresCache.get(targetText);
}
var measure = this.measureTargetText(ctx, targetText);
measuresCache.set(targetText, measure);
return measure;
}
// This method supposes what all custom fonts already loaded.
// If some font will be loaded after this method call, <textPath> will not be rendered correctly.
// You need to call this method manually to update glyphs cache.
setTextData(ctx) {
if (this.glyphInfo) {
return;
}
var renderText = this.getText();
var chars2 = renderText.split("");
var spacesNumber = renderText.split(" ").length - 1;
var dx = this.parent.getAttribute("dx").split().map((_2) => _2.getPixels("x"));
var dy = this.parent.getAttribute("dy").getPixels("y");
var anchor = this.parent.getStyle("text-anchor").getString("start");
var thisSpacing = this.getStyle("letter-spacing");
var parentSpacing = this.parent.getStyle("letter-spacing");
var letterSpacing2 = 0;
if (!thisSpacing.hasValue() || thisSpacing.getValue() === "inherit") {
letterSpacing2 = parentSpacing.getPixels();
} else if (thisSpacing.hasValue()) {
if (thisSpacing.getValue() !== "initial" && thisSpacing.getValue() !== "unset") {
letterSpacing2 = thisSpacing.getPixels();
}
}
var letterSpacingCache = [];
var textLen = renderText.length;
this.letterSpacingCache = letterSpacingCache;
for (var i2 = 0; i2 < textLen; i2++) {
letterSpacingCache.push(typeof dx[i2] !== "undefined" ? dx[i2] : letterSpacing2);
}
var dxSum = letterSpacingCache.reduce((acc, cur, i3) => i3 === 0 ? 0 : acc + cur || 0, 0);
var textWidth = this.measureText(ctx);
var textFullWidth = Math.max(textWidth + dxSum, 0);
this.textWidth = textWidth;
this.textHeight = this.getFontSize();
this.glyphInfo = [];
var fullPathWidth = this.getPathLength();
var startOffset = this.getStyle("startOffset").getNumber(0) * fullPathWidth;
var offset = 0;
if (anchor === "middle" || anchor === "center") {
offset = -textFullWidth / 2;
}
if (anchor === "end" || anchor === "right") {
offset = -textFullWidth;
}
offset += startOffset;
chars2.forEach((char, i3) => {
var {
offset: nextOffset,
segment,
rotation
} = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i3);
offset = nextOffset;
if (!segment.p0 || !segment.p1) {
return;
}
this.glyphInfo.push({
// transposeX: midpoint.x,
// transposeY: midpoint.y,
text: chars2[i3],
p0: segment.p0,
p1: segment.p1,
rotation
});
});
}
parsePathData(path) {
this.pathLength = -1;
if (!path) {
return [];
}
var pathCommands = [];
var {
pathParser
} = path;
pathParser.reset();
while (!pathParser.isEnd()) {
var {
current
} = pathParser;
var startX = current ? current.x : 0;
var startY = current ? current.y : 0;
var command = pathParser.next();
var nextCommandType = command.type;
var points = [];
switch (command.type) {
case PathParser.MOVE_TO:
this.pathM(pathParser, points);
break;
case PathParser.LINE_TO:
nextCommandType = this.pathL(pathParser, points);
break;
case PathParser.HORIZ_LINE_TO:
nextCommandType = this.pathH(pathParser, points);
break;
case PathParser.VERT_LINE_TO:
nextCommandType = this.pathV(pathParser, points);
break;
case PathParser.CURVE_TO:
this.pathC(pathParser, points);
break;
case PathParser.SMOOTH_CURVE_TO:
nextCommandType = this.pathS(pathParser, points);
break;
case PathParser.QUAD_TO:
this.pathQ(pathParser, points);
break;
case PathParser.SMOOTH_QUAD_TO:
nextCommandType = this.pathT(pathParser, points);
break;
case PathParser.ARC:
points = this.pathA(pathParser);
break;
case PathParser.CLOSE_PATH:
PathElement.pathZ(pathParser);
break;
}
if (command.type !== PathParser.CLOSE_PATH) {
pathCommands.push({
type: nextCommandType,
points,
start: {
x: startX,
y: startY
},
pathLength: this.calcLength(startX, startY, nextCommandType, points)
});
} else {
pathCommands.push({
type: PathParser.CLOSE_PATH,
points: [],
pathLength: 0
});
}
}
return pathCommands;
}
pathM(pathParser, points) {
var {
x: x2,
y: y2
} = PathElement.pathM(pathParser).point;
points.push(x2, y2);
}
pathL(pathParser, points) {
var {
x: x2,
y: y2
} = PathElement.pathL(pathParser).point;
points.push(x2, y2);
return PathParser.LINE_TO;
}
pathH(pathParser, points) {
var {
x: x2,
y: y2
} = PathElement.pathH(pathParser).point;
points.push(x2, y2);
return PathParser.LINE_TO;
}
pathV(pathParser, points) {
var {
x: x2,
y: y2
} = PathElement.pathV(pathParser).point;
points.push(x2, y2);
return PathParser.LINE_TO;
}
pathC(pathParser, points) {
var {
point,
controlPoint,
currentPoint
} = PathElement.pathC(pathParser);
points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
}
pathS(pathParser, points) {
var {
point,
controlPoint,
currentPoint
} = PathElement.pathS(pathParser);
points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
return PathParser.CURVE_TO;
}
pathQ(pathParser, points) {
var {
controlPoint,
currentPoint
} = PathElement.pathQ(pathParser);
points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
}
pathT(pathParser, points) {
var {
controlPoint,
currentPoint
} = PathElement.pathT(pathParser);
points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);
return PathParser.QUAD_TO;
}
pathA(pathParser) {
var {
rX,
rY,
sweepFlag,
xAxisRotation,
centp,
a1,
ad
} = PathElement.pathA(pathParser);
if (sweepFlag === 0 && ad > 0) {
ad -= 2 * Math.PI;
}
if (sweepFlag === 1 && ad < 0) {
ad += 2 * Math.PI;
}
return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag];
}
calcLength(x2, y2, commandType, points) {
var len = 0;
var p1 = null;
var p2 = null;
var t3 = 0;
switch (commandType) {
case PathParser.LINE_TO:
return this.getLineLength(x2, y2, points[0], points[1]);
case PathParser.CURVE_TO:
len = 0;
p1 = this.getPointOnCubicBezier(0, x2, y2, points[0], points[1], points[2], points[3], points[4], points[5]);
for (t3 = 0.01; t3 <= 1; t3 += 0.01) {
p2 = this.getPointOnCubicBezier(t3, x2, y2, points[0], points[1], points[2], points[3], points[4], points[5]);
len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
p1 = p2;
}
return len;
case PathParser.QUAD_TO:
len = 0;
p1 = this.getPointOnQuadraticBezier(0, x2, y2, points[0], points[1], points[2], points[3]);
for (t3 = 0.01; t3 <= 1; t3 += 0.01) {
p2 = this.getPointOnQuadraticBezier(t3, x2, y2, points[0], points[1], points[2], points[3]);
len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
p1 = p2;
}
return len;
case PathParser.ARC: {
len = 0;
var start2 = points[4];
var dTheta = points[5];
var end = points[4] + dTheta;
var inc = Math.PI / 180;
if (Math.abs(start2 - end) < inc) {
inc = Math.abs(start2 - end);
}
p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start2, 0);
if (dTheta < 0) {
for (t3 = start2 - inc; t3 > end; t3 -= inc) {
p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t3, 0);
len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
p1 = p2;
}
} else {
for (t3 = start2 + inc; t3 < end; t3 += inc) {
p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t3, 0);
len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
p1 = p2;
}
}
p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);
len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);
return len;
}
}
return 0;
}
getPointOnLine(dist, p1x, p1y, p2x, p2y) {
var fromX = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : p1x;
var fromY = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : p1y;
var m2 = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);
var run2 = Math.sqrt(dist * dist / (1 + m2 * m2));
if (p2x < p1x) {
run2 *= -1;
}
var rise = m2 * run2;
var pt2 = null;
if (p2x === p1x) {
pt2 = {
x: fromX,
y: fromY + rise
};
} else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m2) {
pt2 = {
x: fromX + run2,
y: fromY + rise
};
} else {
var ix = 0;
var iy = 0;
var len = this.getLineLength(p1x, p1y, p2x, p2y);
if (len < PSEUDO_ZERO) {
return null;
}
var u2 = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);
u2 /= len * len;
ix = p1x + u2 * (p2x - p1x);
iy = p1y + u2 * (p2y - p1y);
var pRise = this.getLineLength(fromX, fromY, ix, iy);
var pRun = Math.sqrt(dist * dist - pRise * pRise);
run2 = Math.sqrt(pRun * pRun / (1 + m2 * m2));
if (p2x < p1x) {
run2 *= -1;
}
rise = m2 * run2;
pt2 = {
x: ix + run2,
y: iy + rise
};
}
return pt2;
}
getPointOnPath(distance2) {
var fullLen = this.getPathLength();
var cumulativePathLength = 0;
var p2 = null;
if (distance2 < -5e-5 || distance2 - 5e-5 > fullLen) {
return null;
}
var {
dataArray
} = this;
for (var command of dataArray) {
if (command && (command.pathLength < 5e-5 || cumulativePathLength + command.pathLength + 5e-5 < distance2)) {
cumulativePathLength += command.pathLength;
continue;
}
var delta = distance2 - cumulativePathLength;
var currentT = 0;
switch (command.type) {
case PathParser.LINE_TO:
p2 = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);
break;
case PathParser.ARC: {
var start2 = command.points[4];
var dTheta = command.points[5];
var end = command.points[4] + dTheta;
currentT = start2 + delta / command.pathLength * dTheta;
if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {
break;
}
p2 = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);
break;
}
case PathParser.CURVE_TO:
currentT = delta / command.pathLength;
if (currentT > 1) {
currentT = 1;
}
p2 = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);
break;
case PathParser.QUAD_TO:
currentT = delta / command.pathLength;
if (currentT > 1) {
currentT = 1;
}
p2 = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);
break;
}
if (p2) {
return p2;
}
break;
}
return null;
}
getLineLength(x1, y1, x2, y2) {
return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
getPathLength() {
if (this.pathLength === -1) {
this.pathLength = this.dataArray.reduce((length, command) => command.pathLength > 0 ? length + command.pathLength : length, 0);
}
return this.pathLength;
}
getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {
var x2 = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct);
var y2 = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct);
return {
x: x2,
y: y2
};
}
getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {
var x2 = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct);
var y2 = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct);
return {
x: x2,
y: y2
};
}
getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {
var cosPsi = Math.cos(psi);
var sinPsi = Math.sin(psi);
var pt2 = {
x: rx * Math.cos(theta),
y: ry * Math.sin(theta)
};
return {
x: cx + (pt2.x * cosPsi - pt2.y * sinPsi),
y: cy + (pt2.x * sinPsi + pt2.y * cosPsi)
};
}
// TODO need some optimisations. possibly build cache only for curved segments?
buildEquidistantCache(inputStep, inputPrecision) {
var fullLen = this.getPathLength();
var precision = inputPrecision || 0.25;
var step = inputStep || fullLen / 100;
if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {
this.equidistantCache = {
step,
precision,
points: []
};
var s2 = 0;
for (var l2 = 0; l2 <= fullLen; l2 += precision) {
var p0 = this.getPointOnPath(l2);
var p1 = this.getPointOnPath(l2 + precision);
if (!p0 || !p1) {
continue;
}
s2 += this.getLineLength(p0.x, p0.y, p1.x, p1.y);
if (s2 >= step) {
this.equidistantCache.points.push({
x: p0.x,
y: p0.y,
distance: l2
});
s2 -= step;
}
}
}
}
getEquidistantPointOnPath(targetDistance, step, precision) {
this.buildEquidistantCache(step, precision);
if (targetDistance < 0 || targetDistance - this.getPathLength() > 5e-5) {
return null;
}
var idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));
return this.equidistantCache.points[idx] || null;
}
}
var dataUriRegex = /^\s*data:(([^/,;]+\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;
class ImageElement extends RenderedElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "image";
this.loaded = false;
var href = this.getHrefAttribute().getString();
if (!href) {
return;
}
var isSvg = href.endsWith(".svg") || /^\s*data:image\/svg\+xml/i.test(href);
document2.images.push(this);
if (!isSvg) {
void this.loadImage(href);
} else {
void this.loadSvg(href);
}
this.isSvg = isSvg;
}
loadImage(href) {
var _this = this;
return _asyncToGenerator(function* () {
try {
var image2 = yield _this.document.createImage(href);
_this.image = image2;
} catch (err2) {
console.error('Error while loading image "'.concat(href, '":'), err2);
}
_this.loaded = true;
})();
}
loadSvg(href) {
var _this2 = this;
return _asyncToGenerator(function* () {
var match2 = dataUriRegex.exec(href);
if (match2) {
var data2 = match2[5];
if (match2[4] === "base64") {
_this2.image = atob(data2);
} else {
_this2.image = decodeURIComponent(data2);
}
} else {
try {
var response = yield _this2.document.fetch(href);
var svg2 = yield response.text();
_this2.image = svg2;
} catch (err2) {
console.error('Error while loading image "'.concat(href, '":'), err2);
}
}
_this2.loaded = true;
})();
}
renderChildren(ctx) {
var {
document: document2,
image: image2,
loaded
} = this;
var x2 = this.getAttribute("x").getPixels("x");
var y2 = this.getAttribute("y").getPixels("y");
var width = this.getStyle("width").getPixels("x");
var height = this.getStyle("height").getPixels("y");
if (!loaded || !image2 || !width || !height) {
return;
}
ctx.save();
ctx.translate(x2, y2);
if (this.isSvg) {
var subDocument = document2.canvg.forkString(ctx, this.image, {
ignoreMouse: true,
ignoreAnimation: true,
ignoreDimensions: true,
ignoreClear: true,
offsetX: 0,
offsetY: 0,
scaleWidth: width,
scaleHeight: height
});
subDocument.document.documentElement.parent = this;
void subDocument.render();
} else {
var _image = this.image;
document2.setViewBox({
ctx,
aspectRatio: this.getAttribute("preserveAspectRatio").getString(),
width,
desiredWidth: _image.width,
height,
desiredHeight: _image.height
});
if (this.loaded) {
if (typeof _image.complete === "undefined" || _image.complete) {
ctx.drawImage(_image, 0, 0);
}
}
}
ctx.restore();
}
getBoundingBox() {
var x2 = this.getAttribute("x").getPixels("x");
var y2 = this.getAttribute("y").getPixels("y");
var width = this.getStyle("width").getPixels("x");
var height = this.getStyle("height").getPixels("y");
return new BoundingBox(x2, y2, x2 + width, y2 + height);
}
}
class SymbolElement extends RenderedElement {
constructor() {
super(...arguments);
this.type = "symbol";
}
render(_2) {
}
}
class SVGFontLoader {
constructor(document2) {
this.document = document2;
this.loaded = false;
document2.fonts.push(this);
}
load(fontFamily2, url) {
var _this = this;
return _asyncToGenerator(function* () {
try {
var {
document: document2
} = _this;
var svgDocument = yield document2.canvg.parser.load(url);
var fonts = svgDocument.getElementsByTagName("font");
Array.from(fonts).forEach((fontNode) => {
var font = document2.createElement(fontNode);
document2.definitions[fontFamily2] = font;
});
} catch (err2) {
console.error('Error while loading font "'.concat(url, '":'), err2);
}
_this.loaded = true;
})();
}
}
class StyleElement extends Element {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "style";
var css = compressSpaces(
Array.from(node2.childNodes).map((_2) => _2.textContent).join("").replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, "").replace(/@import.*;/g, "")
// remove imports
);
var cssDefs = css.split("}");
cssDefs.forEach((_2) => {
var def = _2.trim();
if (!def) {
return;
}
var cssParts = def.split("{");
var cssClasses = cssParts[0].split(",");
var cssProps = cssParts[1].split(";");
cssClasses.forEach((_3) => {
var cssClass = _3.trim();
if (!cssClass) {
return;
}
var props = document2.styles[cssClass] || {};
cssProps.forEach((cssProp) => {
var prop = cssProp.indexOf(":");
var name = cssProp.substr(0, prop).trim();
var value = cssProp.substr(prop + 1, cssProp.length - prop).trim();
if (name && value) {
props[name] = new Property(document2, name, value);
}
});
document2.styles[cssClass] = props;
document2.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass);
if (cssClass === "@font-face") {
var fontFamily2 = props["font-family"].getString().replace(/"|'/g, "");
var srcs = props.src.getString().split(",");
srcs.forEach((src) => {
if (src.indexOf('format("svg")') > 0) {
var url = parseExternalUrl(src);
if (url) {
void new SVGFontLoader(document2).load(fontFamily2, url);
}
}
});
}
});
});
}
}
StyleElement.parseExternalUrl = parseExternalUrl;
class UseElement extends RenderedElement {
constructor() {
super(...arguments);
this.type = "use";
}
setContext(ctx) {
super.setContext(ctx);
var xAttr = this.getAttribute("x");
var yAttr = this.getAttribute("y");
if (xAttr.hasValue()) {
ctx.translate(xAttr.getPixels("x"), 0);
}
if (yAttr.hasValue()) {
ctx.translate(0, yAttr.getPixels("y"));
}
}
path(ctx) {
var {
element
} = this;
if (element) {
element.path(ctx);
}
}
renderChildren(ctx) {
var {
document: document2,
element
} = this;
if (element) {
var tempSvg = element;
if (element.type === "symbol") {
tempSvg = new SVGElement(document2, null);
tempSvg.attributes.viewBox = new Property(document2, "viewBox", element.getAttribute("viewBox").getString());
tempSvg.attributes.preserveAspectRatio = new Property(document2, "preserveAspectRatio", element.getAttribute("preserveAspectRatio").getString());
tempSvg.attributes.overflow = new Property(document2, "overflow", element.getAttribute("overflow").getString());
tempSvg.children = element.children;
element.styles.opacity = new Property(document2, "opacity", this.calculateOpacity());
}
if (tempSvg.type === "svg") {
var widthStyle = this.getStyle("width", false, true);
var heightStyle = this.getStyle("height", false, true);
if (widthStyle.hasValue()) {
tempSvg.attributes.width = new Property(document2, "width", widthStyle.getString());
}
if (heightStyle.hasValue()) {
tempSvg.attributes.height = new Property(document2, "height", heightStyle.getString());
}
}
var oldParent = tempSvg.parent;
tempSvg.parent = this;
tempSvg.render(ctx);
tempSvg.parent = oldParent;
}
}
getBoundingBox(ctx) {
var {
element
} = this;
if (element) {
return element.getBoundingBox(ctx);
}
return null;
}
elementTransform() {
var {
document: document2,
element
} = this;
return Transform.fromElement(document2, element);
}
get element() {
if (!this.cachedElement) {
this.cachedElement = this.getHrefAttribute().getDefinition();
}
return this.cachedElement;
}
}
function imGet(img, x2, y2, width, _height, rgba) {
return img[y2 * width * 4 + x2 * 4 + rgba];
}
function imSet(img, x2, y2, width, _height, rgba, val) {
img[y2 * width * 4 + x2 * 4 + rgba] = val;
}
function m(matrix2, i2, v2) {
var mi = matrix2[i2];
return mi * v2;
}
function c(a2, m1, m2, m3) {
return m1 + Math.cos(a2) * m2 + Math.sin(a2) * m3;
}
class FeColorMatrixElement extends Element {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "feColorMatrix";
var matrix2 = toNumbers(this.getAttribute("values").getString());
switch (this.getAttribute("type").getString("matrix")) {
case "saturate": {
var s2 = matrix2[0];
matrix2 = [0.213 + 0.787 * s2, 0.715 - 0.715 * s2, 0.072 - 0.072 * s2, 0, 0, 0.213 - 0.213 * s2, 0.715 + 0.285 * s2, 0.072 - 0.072 * s2, 0, 0, 0.213 - 0.213 * s2, 0.715 - 0.715 * s2, 0.072 + 0.928 * s2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
break;
}
case "hueRotate": {
var a2 = matrix2[0] * Math.PI / 180;
matrix2 = [c(a2, 0.213, 0.787, -0.213), c(a2, 0.715, -0.715, -0.715), c(a2, 0.072, -0.072, 0.928), 0, 0, c(a2, 0.213, -0.213, 0.143), c(a2, 0.715, 0.285, 0.14), c(a2, 0.072, -0.072, -0.283), 0, 0, c(a2, 0.213, -0.213, -0.787), c(a2, 0.715, -0.715, 0.715), c(a2, 0.072, 0.928, 0.072), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
break;
}
case "luminanceToAlpha":
matrix2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721, 0, 0, 0, 0, 0, 0, 1];
break;
}
this.matrix = matrix2;
this.includeOpacity = this.getAttribute("includeOpacity").hasValue();
}
apply(ctx, _x, _y, width, height) {
var {
includeOpacity,
matrix: matrix2
} = this;
var srcData = ctx.getImageData(0, 0, width, height);
for (var y2 = 0; y2 < height; y2++) {
for (var x2 = 0; x2 < width; x2++) {
var r2 = imGet(srcData.data, x2, y2, width, height, 0);
var g2 = imGet(srcData.data, x2, y2, width, height, 1);
var b2 = imGet(srcData.data, x2, y2, width, height, 2);
var a2 = imGet(srcData.data, x2, y2, width, height, 3);
var nr = m(matrix2, 0, r2) + m(matrix2, 1, g2) + m(matrix2, 2, b2) + m(matrix2, 3, a2) + m(matrix2, 4, 1);
var ng = m(matrix2, 5, r2) + m(matrix2, 6, g2) + m(matrix2, 7, b2) + m(matrix2, 8, a2) + m(matrix2, 9, 1);
var nb = m(matrix2, 10, r2) + m(matrix2, 11, g2) + m(matrix2, 12, b2) + m(matrix2, 13, a2) + m(matrix2, 14, 1);
var na = m(matrix2, 15, r2) + m(matrix2, 16, g2) + m(matrix2, 17, b2) + m(matrix2, 18, a2) + m(matrix2, 19, 1);
if (includeOpacity) {
nr = 0;
ng = 0;
nb = 0;
na *= a2 / 255;
}
imSet(srcData.data, x2, y2, width, height, 0, nr);
imSet(srcData.data, x2, y2, width, height, 1, ng);
imSet(srcData.data, x2, y2, width, height, 2, nb);
imSet(srcData.data, x2, y2, width, height, 3, na);
}
}
ctx.clearRect(0, 0, width, height);
ctx.putImageData(srcData, 0, 0);
}
}
class MaskElement extends Element {
constructor() {
super(...arguments);
this.type = "mask";
}
apply(ctx, element) {
var {
document: document2
} = this;
var x2 = this.getAttribute("x").getPixels("x");
var y2 = this.getAttribute("y").getPixels("y");
var width = this.getStyle("width").getPixels("x");
var height = this.getStyle("height").getPixels("y");
if (!width && !height) {
var boundingBox = new BoundingBox();
this.children.forEach((child) => {
boundingBox.addBoundingBox(child.getBoundingBox(ctx));
});
x2 = Math.floor(boundingBox.x1);
y2 = Math.floor(boundingBox.y1);
width = Math.floor(boundingBox.width);
height = Math.floor(boundingBox.height);
}
var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);
var maskCanvas = document2.createCanvas(x2 + width, y2 + height);
var maskCtx = maskCanvas.getContext("2d");
document2.screen.setDefaults(maskCtx);
this.renderChildren(maskCtx);
new FeColorMatrixElement(document2, {
nodeType: 1,
childNodes: [],
attributes: [{
nodeName: "type",
value: "luminanceToAlpha"
}, {
nodeName: "includeOpacity",
value: "true"
}]
}).apply(maskCtx, 0, 0, x2 + width, y2 + height);
var tmpCanvas = document2.createCanvas(x2 + width, y2 + height);
var tmpCtx = tmpCanvas.getContext("2d");
document2.screen.setDefaults(tmpCtx);
element.render(tmpCtx);
tmpCtx.globalCompositeOperation = "destination-in";
tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, "no-repeat");
tmpCtx.fillRect(0, 0, x2 + width, y2 + height);
ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, "no-repeat");
ctx.fillRect(0, 0, x2 + width, y2 + height);
this.restoreStyles(element, ignoredStyles);
}
render(_2) {
}
}
MaskElement.ignoreStyles = ["mask", "transform", "clip-path"];
var noop = () => {
};
class ClipPathElement extends Element {
constructor() {
super(...arguments);
this.type = "clipPath";
}
apply(ctx) {
var {
document: document2
} = this;
var contextProto = Reflect.getPrototypeOf(ctx);
var {
beginPath,
closePath
} = ctx;
if (contextProto) {
contextProto.beginPath = noop;
contextProto.closePath = noop;
}
Reflect.apply(beginPath, ctx, []);
this.children.forEach((child) => {
if (typeof child.path === "undefined") {
return;
}
var transform2 = typeof child.elementTransform !== "undefined" ? child.elementTransform() : null;
if (!transform2) {
transform2 = Transform.fromElement(document2, child);
}
if (transform2) {
transform2.apply(ctx);
}
child.path(ctx);
if (contextProto) {
contextProto.closePath = closePath;
}
if (transform2) {
transform2.unapply(ctx);
}
});
Reflect.apply(closePath, ctx, []);
ctx.clip();
if (contextProto) {
contextProto.beginPath = beginPath;
contextProto.closePath = closePath;
}
}
render(_2) {
}
}
class FilterElement extends Element {
constructor() {
super(...arguments);
this.type = "filter";
}
apply(ctx, element) {
var {
document: document2,
children
} = this;
var boundingBox = element.getBoundingBox(ctx);
if (!boundingBox) {
return;
}
var px = 0;
var py = 0;
children.forEach((child) => {
var efd = child.extraFilterDistance || 0;
px = Math.max(px, efd);
py = Math.max(py, efd);
});
var width = Math.floor(boundingBox.width);
var height = Math.floor(boundingBox.height);
var tmpCanvasWidth = width + 2 * px;
var tmpCanvasHeight = height + 2 * py;
if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {
return;
}
var x2 = Math.floor(boundingBox.x);
var y2 = Math.floor(boundingBox.y);
var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles);
var tmpCanvas = document2.createCanvas(tmpCanvasWidth, tmpCanvasHeight);
var tmpCtx = tmpCanvas.getContext("2d");
document2.screen.setDefaults(tmpCtx);
tmpCtx.translate(-x2 + px, -y2 + py);
element.render(tmpCtx);
children.forEach((child) => {
if (typeof child.apply === "function") {
child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);
}
});
ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x2 - px, y2 - py, tmpCanvasWidth, tmpCanvasHeight);
this.restoreStyles(element, ignoredStyles);
}
render(_2) {
}
}
FilterElement.ignoreStyles = ["filter", "transform", "clip-path"];
class FeDropShadowElement extends Element {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "feDropShadow";
this.addStylesFromStyleDefinition();
}
apply(_2, _x, _y, _width, _height) {
}
}
class FeMorphologyElement extends Element {
constructor() {
super(...arguments);
this.type = "feMorphology";
}
apply(_2, _x, _y, _width, _height) {
}
}
class FeCompositeElement extends Element {
constructor() {
super(...arguments);
this.type = "feComposite";
}
apply(_2, _x, _y, _width, _height) {
}
}
class FeGaussianBlurElement extends Element {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes);
this.type = "feGaussianBlur";
this.blurRadius = Math.floor(this.getAttribute("stdDeviation").getNumber());
this.extraFilterDistance = this.blurRadius;
}
apply(ctx, x2, y2, width, height) {
var {
document: document2,
blurRadius
} = this;
var body = document2.window ? document2.window.document.body : null;
var canvas = ctx.canvas;
canvas.id = document2.getUniqueId();
if (body) {
canvas.style.display = "none";
body.appendChild(canvas);
}
processCanvasRGBA(canvas, x2, y2, width, height, blurRadius);
if (body) {
body.removeChild(canvas);
}
}
}
class TitleElement extends Element {
constructor() {
super(...arguments);
this.type = "title";
}
}
class DescElement extends Element {
constructor() {
super(...arguments);
this.type = "desc";
}
}
var elements = {
"svg": SVGElement,
"rect": RectElement,
"circle": CircleElement,
"ellipse": EllipseElement,
"line": LineElement,
"polyline": PolylineElement,
"polygon": PolygonElement,
"path": PathElement,
"pattern": PatternElement,
"marker": MarkerElement,
"defs": DefsElement,
"linearGradient": LinearGradientElement,
"radialGradient": RadialGradientElement,
"stop": StopElement,
"animate": AnimateElement,
"animateColor": AnimateColorElement,
"animateTransform": AnimateTransformElement,
"font": FontElement,
"font-face": FontFaceElement,
"missing-glyph": MissingGlyphElement,
"glyph": GlyphElement,
"text": TextElement,
"tspan": TSpanElement,
"tref": TRefElement,
"a": AElement,
"textPath": TextPathElement,
"image": ImageElement,
"g": GElement,
"symbol": SymbolElement,
"style": StyleElement,
"use": UseElement,
"mask": MaskElement,
"clipPath": ClipPathElement,
"filter": FilterElement,
"feDropShadow": FeDropShadowElement,
"feMorphology": FeMorphologyElement,
"feComposite": FeCompositeElement,
"feColorMatrix": FeColorMatrixElement,
"feGaussianBlur": FeGaussianBlurElement,
"title": TitleElement,
"desc": DescElement
};
function ownKeys$1(object, enumerableOnly) {
var keys3 = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys3.push.apply(keys3, symbols);
}
return keys3;
}
function _objectSpread$1(target) {
for (var i2 = 1; i2 < arguments.length; i2++) {
var source = arguments[i2] != null ? arguments[i2] : {};
if (i2 % 2) {
ownKeys$1(Object(source), true).forEach(function(key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys$1(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
function createCanvas(width, height) {
var canvas = document.createElement("canvas");
canvas.width = width;
canvas.height = height;
return canvas;
}
function createImage(_x) {
return _createImage.apply(this, arguments);
}
function _createImage() {
_createImage = _asyncToGenerator(function* (src) {
var anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
var image2 = document.createElement("img");
if (anonymousCrossOrigin) {
image2.crossOrigin = "Anonymous";
}
return new Promise((resolve2, reject2) => {
image2.onload = () => {
resolve2(image2);
};
image2.onerror = (_event, _source, _lineno, _colno, error) => {
reject2(error);
};
image2.src = src;
});
});
return _createImage.apply(this, arguments);
}
class Document {
constructor(canvg) {
var {
rootEmSize = 12,
emSize = 12,
createCanvas: createCanvas2 = Document.createCanvas,
createImage: createImage2 = Document.createImage,
anonymousCrossOrigin
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
this.canvg = canvg;
this.definitions = {};
this.styles = {};
this.stylesSpecificity = {};
this.images = [];
this.fonts = [];
this.emSizeStack = [];
this.uniqueId = 0;
this.screen = canvg.screen;
this.rootEmSize = rootEmSize;
this.emSize = emSize;
this.createCanvas = createCanvas2;
this.createImage = this.bindCreateImage(createImage2, anonymousCrossOrigin);
this.screen.wait(this.isImagesLoaded.bind(this));
this.screen.wait(this.isFontsLoaded.bind(this));
}
bindCreateImage(createImage2, anonymousCrossOrigin) {
if (typeof anonymousCrossOrigin === "boolean") {
return (source, forceAnonymousCrossOrigin) => createImage2(source, typeof forceAnonymousCrossOrigin === "boolean" ? forceAnonymousCrossOrigin : anonymousCrossOrigin);
}
return createImage2;
}
get window() {
return this.screen.window;
}
get fetch() {
return this.screen.fetch;
}
get ctx() {
return this.screen.ctx;
}
get emSize() {
var {
emSizeStack
} = this;
return emSizeStack[emSizeStack.length - 1];
}
set emSize(value) {
var {
emSizeStack
} = this;
emSizeStack.push(value);
}
popEmSize() {
var {
emSizeStack
} = this;
emSizeStack.pop();
}
getUniqueId() {
return "canvg".concat(++this.uniqueId);
}
isImagesLoaded() {
return this.images.every((_2) => _2.loaded);
}
isFontsLoaded() {
return this.fonts.every((_2) => _2.loaded);
}
createDocumentElement(document2) {
var documentElement = this.createElement(document2.documentElement);
documentElement.root = true;
documentElement.addStylesFromStyleDefinition();
this.documentElement = documentElement;
return documentElement;
}
createElement(node2) {
var elementType = node2.nodeName.replace(/^[^:]+:/, "");
var ElementType = Document.elementTypes[elementType];
if (typeof ElementType !== "undefined") {
return new ElementType(this, node2);
}
return new UnknownElement(this, node2);
}
createTextNode(node2) {
return new TextNode(this, node2);
}
setViewBox(config) {
this.screen.setViewBox(_objectSpread$1({
document: this
}, config));
}
}
Document.createCanvas = createCanvas;
Document.createImage = createImage;
Document.elementTypes = elements;
function ownKeys2(object, enumerableOnly) {
var keys3 = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys3.push.apply(keys3, symbols);
}
return keys3;
}
function _objectSpread(target) {
for (var i2 = 1; i2 < arguments.length; i2++) {
var source = arguments[i2] != null ? arguments[i2] : {};
if (i2 % 2) {
ownKeys2(Object(source), true).forEach(function(key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys2(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
}
return target;
}
class Canvg {
/**
* Main constructor.
* @param ctx - Rendering context.
* @param svg - SVG Document.
* @param options - Rendering options.
*/
constructor(ctx, svg2) {
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
this.parser = new Parser(options);
this.screen = new Screen(ctx, options);
this.options = options;
var document2 = new Document(this, options);
var documentElement = document2.createDocumentElement(svg2);
this.document = document2;
this.documentElement = documentElement;
}
/**
* Create Canvg instance from SVG source string or URL.
* @param ctx - Rendering context.
* @param svg - SVG source string or URL.
* @param options - Rendering options.
* @returns Canvg instance.
*/
static from(ctx, svg2) {
var _arguments = arguments;
return _asyncToGenerator(function* () {
var options = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {};
var parser = new Parser(options);
var svgDocument = yield parser.parse(svg2);
return new Canvg(ctx, svgDocument, options);
})();
}
/**
* Create Canvg instance from SVG source string.
* @param ctx - Rendering context.
* @param svg - SVG source string.
* @param options - Rendering options.
* @returns Canvg instance.
*/
static fromString(ctx, svg2) {
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
var parser = new Parser(options);
var svgDocument = parser.parseFromString(svg2);
return new Canvg(ctx, svgDocument, options);
}
/**
* Create new Canvg instance with inherited options.
* @param ctx - Rendering context.
* @param svg - SVG source string or URL.
* @param options - Rendering options.
* @returns Canvg instance.
*/
fork(ctx, svg2) {
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
return Canvg.from(ctx, svg2, _objectSpread(_objectSpread({}, this.options), options));
}
/**
* Create new Canvg instance with inherited options.
* @param ctx - Rendering context.
* @param svg - SVG source string.
* @param options - Rendering options.
* @returns Canvg instance.
*/
forkString(ctx, svg2) {
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
return Canvg.fromString(ctx, svg2, _objectSpread(_objectSpread({}, this.options), options));
}
/**
* Document is ready promise.
* @returns Ready promise.
*/
ready() {
return this.screen.ready();
}
/**
* Document is ready value.
* @returns Is ready or not.
*/
isReady() {
return this.screen.isReady();
}
/**
* Render only first frame, ignoring animations and mouse.
* @param options - Rendering options.
*/
render() {
var _arguments2 = arguments, _this = this;
return _asyncToGenerator(function* () {
var options = _arguments2.length > 0 && _arguments2[0] !== void 0 ? _arguments2[0] : {};
_this.start(_objectSpread({
enableRedraw: true,
ignoreAnimation: true,
ignoreMouse: true
}, options));
yield _this.ready();
_this.stop();
})();
}
/**
* Start rendering.
* @param options - Render options.
*/
start() {
var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
var {
documentElement,
screen,
options: baseOptions
} = this;
screen.start(documentElement, _objectSpread(_objectSpread({
enableRedraw: true
}, baseOptions), options));
}
/**
* Stop rendering.
*/
stop() {
this.screen.stop();
}
/**
* Resize SVG to fit in given size.
* @param width
* @param height
* @param preserveAspectRatio
*/
resize(width) {
var height = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : width;
var preserveAspectRatio = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
this.documentElement.resize(width, height, preserveAspectRatio);
}
}
const index_es = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
AElement,
AnimateColorElement,
AnimateElement,
AnimateTransformElement,
BoundingBox,
CB1,
CB2,
CB3,
CB4,
Canvg,
CircleElement,
ClipPathElement,
DefsElement,
DescElement,
Document,
Element,
EllipseElement,
FeColorMatrixElement,
FeCompositeElement,
FeDropShadowElement,
FeGaussianBlurElement,
FeMorphologyElement,
FilterElement,
Font,
FontElement,
FontFaceElement,
GElement,
GlyphElement,
GradientElement,
ImageElement,
LineElement,
LinearGradientElement,
MarkerElement,
MaskElement,
Matrix,
MissingGlyphElement,
Mouse,
PSEUDO_ZERO,
Parser,
PathElement,
PathParser,
PatternElement,
Point,
PolygonElement,
PolylineElement,
Property,
QB1,
QB2,
QB3,
RadialGradientElement,
RectElement,
RenderedElement,
Rotate,
SVGElement,
SVGFontLoader,
Scale,
Screen,
Skew,
SkewX,
SkewY,
StopElement,
StyleElement,
SymbolElement,
TRefElement,
TSpanElement,
TextElement,
TextPathElement,
TitleElement,
Transform,
Translate,
UnknownElement,
UseElement,
ViewPort,
compressSpaces,
default: Canvg,
getSelectorSpecificity,
normalizeAttributeName,
normalizeColor,
parseExternalUrl,
presets: index,
toNumbers,
trimLeft,
trimRight,
vectorMagnitude,
vectorsAngle,
vectorsRatio
}, Symbol.toStringTag, { value: "Module" }));
export {
index$1 as Animations,
COMMON_EVENTS,
index$4 as Geometries,
IMAGE_SOURCE_EVENTS,
index$2 as Interactions,
LAYER_EVENTS,
index$7 as Layers,
index$8 as Map,
index$5 as MapControls,
plugin$1 as Providers,
index$6 as Sources,
index$3 as Styles,
TILE_SOURCE_EVENTS,
VECTOR_SOURCE_EVENTS,
plugin as default,
install,
useAnimation,
useControl,
useGeometry,
useLayer,
useOpenLayersEvents,
usePropsAsObjectProperties,
useSource
};