{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap b5381948df1510033526","webpack:///./node_modules/binary-search/index.js","webpack:///./node_modules/num-sort/index.js","webpack:///./index.js","webpack:///./node_modules/array-xy-centroids-merge/src/index.js","webpack:///./node_modules/array-xy-closest-x/src/index.js","webpack:///./node_modules/number-is-nan/index.js","webpack:///./node_modules/array-xy-max-merge/src/index.js","webpack:///./node_modules/array-xy-weighted-merge/src/index.js","webpack:///./node_modules/array-xy-sort-x/src/index.js","webpack:///./node_modules/array-xy-max-y/src/index.js"],"names":["module","exports","haystack","needle","comparator","low","high","mid","cmp","undefined","length","RangeError","numberIsNan","require","assertNum","x","TypeError","asc","a","b","desc","centroidsMerge","closestX","maxMerge","weightedMerge","sortX","maxY","mergeByCentroids","originalPoints","centroids","options","window","mergedPoints","slice","y","Array","fill","originalIndex","mergedIndex","diff","Math","abs","points","target","reverse","index","Number","isNaN","groupWidth","merged","maxAbscissa","size","push","weightedAbscissa","i","sortFunc","grouped","map","val","sort","response","from","to","value","calculateIndex","currentMax","MIN_VALUE","currentIndex","Error"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;AC7DAA,OAAOC,OAAP,GAAiB,UAASC,QAAT,EAAmBC,MAAnB,EAA2BC,UAA3B,EAAuCC,GAAvC,EAA4CC,IAA5C,EAAkD;AACjE,MAAIC,GAAJ,EAASC,GAAT;;AAEA,MAAGH,QAAQI,SAAX,EACEJ,MAAM,CAAN,CADF,KAGK;AACHA,UAAMA,MAAI,CAAV;AACA,QAAGA,MAAM,CAAN,IAAWA,OAAOH,SAASQ,MAA9B,EACE,MAAM,IAAIC,UAAJ,CAAe,qBAAf,CAAN;AACH;;AAED,MAAGL,SAASG,SAAZ,EACEH,OAAOJ,SAASQ,MAAT,GAAkB,CAAzB,CADF,KAGK;AACHJ,WAAOA,OAAK,CAAZ;AACA,QAAGA,OAAOD,GAAP,IAAcC,QAAQJ,SAASQ,MAAlC,EACE,MAAM,IAAIC,UAAJ,CAAe,qBAAf,CAAN;AACH;;AAED,SAAMN,OAAOC,IAAb,EAAmB;AACjB;;AAEAC,UAAMF,OAAOC,OAAOD,GAAP,IAAc,CAArB,CAAN;AACAG,UAAM,CAACJ,WAAWF,SAASK,GAAT,CAAX,EAA0BJ,MAA1B,EAAkCI,GAAlC,EAAuCL,QAAvC,CAAP;;AAEA;AACA,QAAGM,MAAM,GAAT,EACEH,MAAOE,MAAM,CAAb;;AAEF;AAHA,SAIK,IAAGC,MAAM,GAAT,EACHF,OAAOC,MAAM,CAAb;;AAEF;AAHK,WAKH,OAAOA,GAAP;AACH;;AAED;AACA,SAAO,CAACF,GAAR;AACD,CA1CD,C;;;;;;;ACAA;;AACA,IAAIO,cAAc,mBAAAC,CAAQ,CAAR,CAAlB;;AAEA,SAASC,SAAT,CAAmBC,CAAnB,EAAsB;AACrB,KAAI,OAAOA,CAAP,KAAa,QAAb,IAAyBH,YAAYG,CAAZ,CAA7B,EAA6C;AAC5C,QAAM,IAAIC,SAAJ,CAAc,mBAAd,CAAN;AACA;AACD;;AAEDf,QAAQgB,GAAR,GAAc,UAAUC,CAAV,EAAaC,CAAb,EAAgB;AAC7BL,WAAUI,CAAV;AACAJ,WAAUK,CAAV;AACA,QAAOD,IAAIC,CAAX;AACA,CAJD;;AAMAlB,QAAQmB,IAAR,GAAe,UAAUF,CAAV,EAAaC,CAAb,EAAgB;AAC9BL,WAAUI,CAAV;AACAJ,WAAUK,CAAV;AACA,QAAOA,IAAID,CAAX;AACA,CAJD,C;;;;;;;;;ACfAlB,OAAOC,OAAP,GAAiB;AACboB,oBAAgB,mBAAAR,CAAQ,CAAR,CADH;AAEbS,cAAU,mBAAAT,CAAQ,CAAR,CAFG;AAGbU,cAAU,mBAAAV,CAAQ,CAAR,CAHG;AAIbW,mBAAe,mBAAAX,CAAQ,CAAR,CAJF;AAKbY,WAAO,mBAAAZ,CAAQ,CAAR,CALM;AAMba,UAAM,mBAAAb,CAAQ,CAAR;AANO,CAAjB,C;;;;;;;;;;;;kBCUwBc,gB;AAVxB;;;;;;;;;;AAUe,SAASA,gBAAT,CAA0BC,cAA1B,EAA0CC,SAA1C,EAAqDC,UAAU,EAA/D,EAAmE;AAAA,0BAG1EA,OAH0E,CAE1EC,MAF0E;AAAA,QAE1EA,MAF0E,mCAEjE,IAFiE;;;AAK9E,QAAIC,eAAe;AACfjB,WAAGc,UAAUI,KAAV,EADY;AAEfC,WAAG,IAAIC,KAAJ,CAAUN,UAAUnB,MAApB,EAA4B0B,IAA5B,CAAiC,CAAjC;AAFY,KAAnB;;AAKA,QAAIC,gBAAgB,CAApB;AACA,QAAIC,cAAc,CAAlB;AACA,WAAQD,gBAAgBT,eAAeb,CAAf,CAAiBL,MAAlC,IAA8C4B,cAAcT,UAAUnB,MAA7E,EAAsF;AAClF,YAAI6B,OAAOX,eAAeb,CAAf,CAAiBsB,aAAjB,IAAkCR,UAAUS,WAAV,CAA7C;AACA,YAAIE,KAAKC,GAAL,CAASF,IAAT,IAAiBR,MAArB,EAA6B;AACzBC,yBAAaE,CAAb,CAAeI,WAAf,KAA+BV,eAAeM,CAAf,CAAiBG,eAAjB,CAA/B;AACH,SAFD,MAEO,IAAIE,OAAO,CAAX,EAAc;AACjBF;AACH,SAFM,MAEA;AACHC;AACH;AACJ;;AAED,WAAON,YAAP;AACH,C;;;;;;;;;;;;;kBC/Bc,UAAUU,MAAV,EAAkBZ,OAAlB,EAA2B;AAAA,QAC/Bf,CAD+B,GACvB2B,MADuB,CAC/B3B,CAD+B;AAAA,QAC5BmB,CAD4B,GACvBQ,MADuB,CAC5BR,CAD4B;AAAA,0BAKlCJ,OALkC,CAGlCa,MAHkC;AAAA,QAGlCA,MAHkC,mCAGzB5B,EAAE,CAAF,CAHyB;AAAA,2BAKlCe,OALkC,CAIlCc,OAJkC;AAAA,QAIlCA,OAJkC,oCAIxB,KAJwB;;;AAOtC,QAAIC,cAAJ;AACA,QAAID,OAAJ,EAAa;AACTC,gBAAQ,4BAAa9B,CAAb,EAAgB4B,MAAhB,gBAAR;AACH,KAFD,MAEO;AACHE,gBAAQ,4BAAa9B,CAAb,EAAgB4B,MAAhB,eAAR;AACH;;AAED,QAAIE,SAAS,CAAb,EAAgB;AACZ,eAAO;AACH9B,eAAGA,EAAE8B,KAAF,CADA;AAEHX,eAAGA,EAAEW,KAAF;AAFA,SAAP;AAIH,KALD,MAKO;AACHA,gBAAQ,CAACA,KAAT;AACA,YAAMA,UAAU,CAAX,IAAkBL,KAAKC,GAAL,CAAS1B,EAAE8B,KAAF,IAAWF,MAApB,IAA8B,GAAjD,IAA2DE,UAAU9B,EAAEL,MAA3E,EAAoF;AAChF,mBAAO;AACHK,mBAAGA,EAAE8B,QAAQ,CAAV,CADA;AAEHX,mBAAGA,EAAEW,QAAQ,CAAV;AAFA,aAAP;AAIH,SALD,MAKO;AACH,mBAAO;AACH9B,mBAAGA,EAAE8B,KAAF,CADA;AAEHX,mBAAGA,EAAEW,KAAF;AAFA,aAAP;AAIH;AACJ;AACJ,C;;AApCD;;;;AACA;;;;;;;;;ACDA;;AACA7C,OAAOC,OAAP,GAAiB6C,OAAOC,KAAP,IAAgB,UAAUhC,CAAV,EAAa;AAC7C,QAAOA,MAAMA,CAAb;AACA,CAFD,C;;;;;;;;;;;;;kBCQe,UAAU2B,MAAV,EAAkBZ,UAAU,EAA5B,EAAgC;AAAA,QACpCf,CADoC,GAC5B2B,MAD4B,CACpC3B,CADoC;AAAA,QACjCmB,CADiC,GAC5BQ,MAD4B,CACjCR,CADiC;AAAA,8BAIvCJ,OAJuC,CAGvCkB,UAHuC;AAAA,QAGvCA,UAHuC,uCAG1B,KAH0B;;;AAM3C,QAAIC,SAAS,EAAClC,GAAG,EAAJ,EAAQmB,GAAG,EAAX,EAAb;AACA,QAAIgB,cAAc,EAACnC,GAAG,EAAJ,EAAQmB,GAAG,EAAX,EAAlB;AACA,QAAIiB,OAAO,CAAX;AACA,QAAIN,QAAQ,CAAZ;;AAEA,WAAOA,QAAQ9B,EAAEL,MAAjB,EAAyB;AACrB,YAAKyC,SAAS,CAAV,IAAiBpC,EAAE8B,KAAF,IAAWI,OAAOlC,CAAP,CAASoC,OAAO,CAAhB,CAAX,GAAgCH,UAArD,EAAkE;AAC9DE,wBAAYnC,CAAZ,CAAcqC,IAAd,CAAmBrC,EAAE8B,KAAF,CAAnB;AACAK,wBAAYhB,CAAZ,CAAckB,IAAd,CAAmBlB,EAAEW,KAAF,CAAnB;AACAI,mBAAOlC,CAAP,CAASqC,IAAT,CAAcrC,EAAE8B,KAAF,CAAd;AACAI,mBAAOf,CAAP,CAASkB,IAAT,CAAclB,EAAEW,KAAF,CAAd;AACAA;AACAM;AACH,SAPD,MAOO;AACH,gBAAIjB,EAAEW,KAAF,IAAWK,YAAYhB,CAAZ,CAAciB,OAAO,CAArB,CAAf,EAAwC;AACpCD,4BAAYnC,CAAZ,CAAcoC,OAAO,CAArB,IAA0BpC,EAAE8B,KAAF,CAA1B;AACAK,4BAAYhB,CAAZ,CAAciB,OAAO,CAArB,IAA0BjB,EAAEW,KAAF,CAA1B;AACH;AACDI,mBAAOlC,CAAP,CAASoC,OAAO,CAAhB,IAAqBpC,EAAE8B,KAAF,CAArB;AACAI,mBAAOf,CAAP,CAASiB,OAAO,CAAhB,KAAsBjB,EAAEW,KAAF,CAAtB;AACAA;AACH;AACJ;;AAEDI,WAAOlC,CAAP,GAAWmC,YAAYnC,CAAZ,CAAckB,KAAd,EAAX;;AAEA,WAAOgB,MAAP;AACH,C;;;;;;;;;;;;;kBCjCc,UAAUP,MAAV,EAAkBZ,UAAU,EAA5B,EAAgC;AAAA,QACpCf,CADoC,GAC5B2B,MAD4B,CACpC3B,CADoC;AAAA,QACjCmB,CADiC,GAC5BQ,MAD4B,CACjCR,CADiC;AAAA,8BAIvCJ,OAJuC,CAGvCkB,UAHuC;AAAA,QAGvCA,UAHuC,uCAG1B,KAH0B;;;AAM3C,QAAIC,SAAS,EAAClC,GAAG,EAAJ,EAAQmB,GAAG,EAAX,EAAb;AACA,QAAImB,mBAAmB,EAACtC,GAAG,EAAJ,EAAQmB,GAAG,EAAX,EAAvB;AACA,QAAIiB,OAAO,CAAX;AACA,QAAIN,QAAQ,CAAZ;;AAEA,WAAOA,QAAQ9B,EAAEL,MAAjB,EAAyB;AACrB,YAAKyC,SAAS,CAAV,IAAiBpC,EAAE8B,KAAF,IAAWI,OAAOlC,CAAP,CAASoC,OAAO,CAAhB,CAAX,GAAgCH,UAArD,EAAkE;AAC9DK,6BAAiBtC,CAAjB,CAAmBqC,IAAnB,CAAwBrC,EAAE8B,KAAF,IAAWX,EAAEW,KAAF,CAAnC;AACAQ,6BAAiBnB,CAAjB,CAAmBkB,IAAnB,CAAwBlB,EAAEW,KAAF,CAAxB;AACAI,mBAAOlC,CAAP,CAASqC,IAAT,CAAcrC,EAAE8B,KAAF,CAAd;AACAI,mBAAOf,CAAP,CAASkB,IAAT,CAAclB,EAAEW,KAAF,CAAd;AACAA;AACAM;AACH,SAPD,MAOO;AACHE,6BAAiBtC,CAAjB,CAAmBoC,OAAO,CAA1B,KAAgCpC,EAAE8B,KAAF,IAAWX,EAAEW,KAAF,CAA3C;AACAQ,6BAAiBnB,CAAjB,CAAmBiB,OAAO,CAA1B,KAAgCjB,EAAEW,KAAF,CAAhC;AACAI,mBAAOlC,CAAP,CAASoC,OAAO,CAAhB,IAAqBpC,EAAE8B,KAAF,CAArB;AACAI,mBAAOf,CAAP,CAASiB,OAAO,CAAhB,KAAsBjB,EAAEW,KAAF,CAAtB;AACAA;AACH;AACJ;;AAED,SAAK,IAAIS,IAAI,CAAb,EAAgBA,IAAIL,OAAOlC,CAAP,CAASL,MAA7B,EAAqC4C,GAArC,EAA0C;AACtCL,eAAOlC,CAAP,CAASuC,CAAT,IAAcD,iBAAiBtC,CAAjB,CAAmBuC,CAAnB,IAAwBD,iBAAiBnB,CAAjB,CAAmBoB,CAAnB,CAAtC;AACH;;AAED,WAAOL,MAAP;AACH,C;;;;;;;;;;;;kBC1CuBxB,K;AAAT,SAASA,KAAT,CAAeiB,MAAf,EAAuBZ,UAAU,EAAjC,EAAqC;AAAA,QACzCf,CADyC,GACjC2B,MADiC,CACzC3B,CADyC;AAAA,QACtCmB,CADsC,GACjCQ,MADiC,CACtCR,CADsC;AAAA,2BAI5CJ,OAJ4C,CAG5Cc,OAH4C;AAAA,QAG5CA,OAH4C,oCAGlC,KAHkC;;;AAMhD,QAAIW,QAAJ;AACA,QAAI,CAACX,OAAL,EAAc;AACVW,mBAAW,CAACrC,CAAD,EAAIC,CAAJ,KAAUD,EAAEH,CAAF,GAAMI,EAAEJ,CAA7B;AACH,KAFD,MAEO;AACHwC,mBAAW,CAACrC,CAAD,EAAIC,CAAJ,KAAUA,EAAEJ,CAAF,GAAMG,EAAEH,CAA7B;AACH;;AAED,QAAIyC,UAAUzC,EAAE0C,GAAF,CAAM,CAACC,GAAD,EAAMb,KAAN,MAAiB;AACjC9B,WAAG2C,GAD8B;AAEjCxB,WAAGA,EAAEW,KAAF;AAF8B,KAAjB,CAAN,EAGVc,IAHU,CAGLJ,QAHK,CAAd;;AAKA,QAAIK,WAAW,EAAC7C,GAAGA,EAAEkB,KAAF,EAAJ,EAAeC,GAAGA,EAAED,KAAF,EAAlB,EAAf;AACA,SAAK,IAAIqB,IAAI,CAAb,EAAgBA,IAAIvC,EAAEL,MAAtB,EAA8B4C,GAA9B,EAAmC;AAC/BM,iBAAS7C,CAAT,CAAWuC,CAAX,IAAgBE,QAAQF,CAAR,EAAWvC,CAA3B;AACA6C,iBAAS1B,CAAT,CAAWoB,CAAX,IAAgBE,QAAQF,CAAR,EAAWpB,CAA3B;AACH;;AAED,WAAO0B,QAAP;AACH,C;;;;;;;;;;;;kBCZuBlC,I;;AAbxB;;;;AACA;;;;AAEA;;;;;;;;;;AAUe,SAASA,IAAT,CAAcgB,MAAd,EAAsBZ,UAAU,EAAhC,EAAoC;AAAA,QACxCf,CADwC,GAChC2B,MADgC,CACxC3B,CADwC;AAAA,QACrCmB,CADqC,GAChCQ,MADgC,CACrCR,CADqC;AAAA,wBAM3CJ,OAN2C,CAG3C+B,IAH2C;AAAA,QAG3CA,IAH2C,iCAGpC,EAAChB,OAAO,CAAR,EAHoC;AAAA,sBAM3Cf,OAN2C,CAI3CgC,EAJ2C;AAAA,QAI3CA,EAJ2C,+BAItC,EAACjB,OAAO9B,EAAEL,MAAV,EAJsC;AAAA,2BAM3CoB,OAN2C,CAK3Cc,OAL2C;AAAA,QAK3CA,OAL2C,oCAKjC,KALiC;;;AAQ/C,QAAIiB,KAAKE,KAAL,KAAetD,SAAf,IAA4BoD,KAAKhB,KAAL,KAAepC,SAA/C,EAA0D;AACtDoD,aAAKhB,KAAL,GAAamB,eAAeH,KAAKE,KAApB,EAA2BhD,CAA3B,EAA8B6B,OAA9B,CAAb;AACH;;AAED,QAAIkB,GAAGC,KAAH,KAAatD,SAAb,IAA0BqD,GAAGjB,KAAH,KAAapC,SAA3C,EAAsD;AAClDqD,WAAGjB,KAAH,GAAWmB,eAAeF,GAAGC,KAAlB,EAAyBhD,CAAzB,EAA4B6B,OAA5B,CAAX;AACH;;AAED,QAAIqB,aAAanB,OAAOoB,SAAxB;AACA,QAAIC,YAAJ;AACA,SAAK,IAAIb,IAAIO,KAAKhB,KAAlB,EAAyBS,IAAIQ,GAAGjB,KAAhC,EAAuCS,GAAvC,EAA4C;AACxC,YAAIW,aAAa/B,EAAEoB,CAAF,CAAjB,EAAuB;AACnBW,yBAAa/B,EAAEoB,CAAF,CAAb;AACAa,2BAAeb,CAAf;AACH;AACJ;;AAED,WAAO;AACHT,eAAOsB,YADJ;AAEHJ,eAAOE;AAFJ,KAAP;AAIH;;AAED;;;;;;AAMA,SAASD,cAAT,CAAwBD,KAAxB,EAA+BhD,CAA/B,EAAkC6B,OAAlC,EAA2C;AACvC,QAAIC,cAAJ;AACA,QAAID,OAAJ,EAAa;AACTC,gBAAQ,4BAAa9B,CAAb,EAAgBgD,KAAhB,gBAAR;AACH,KAFD,MAEO;AACHlB,gBAAQ,4BAAa9B,CAAb,EAAgBgD,KAAhB,eAAR;AACH;;AAED,QAAIlB,QAAQ,CAAZ,EAAe;AACX,cAAM,IAAIuB,KAAJ,CAAW,aAAYL,KAAM,wCAA7B,CAAN;AACH;;AAED,WAAOlB,KAAP;AACH,C","file":"array-utils.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"arrayUtils\"] = factory();\n\telse\n\t\troot[\"arrayUtils\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b5381948df1510033526","module.exports = function(haystack, needle, comparator, low, high) {\n  var mid, cmp;\n\n  if(low === undefined)\n    low = 0;\n\n  else {\n    low = low|0;\n    if(low < 0 || low >= haystack.length)\n      throw new RangeError(\"invalid lower bound\");\n  }\n\n  if(high === undefined)\n    high = haystack.length - 1;\n\n  else {\n    high = high|0;\n    if(high < low || high >= haystack.length)\n      throw new RangeError(\"invalid upper bound\");\n  }\n\n  while(low <= high) {\n    /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n     * to double (which gives the wrong results). */\n    mid = low + (high - low >> 1);\n    cmp = +comparator(haystack[mid], needle, mid, haystack);\n\n    /* Too low. */\n    if(cmp < 0.0)\n      low  = mid + 1;\n\n    /* Too high. */\n    else if(cmp > 0.0)\n      high = mid - 1;\n\n    /* Key found. */\n    else\n      return mid;\n  }\n\n  /* Key not found. */\n  return ~low;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/binary-search/index.js","'use strict';\nvar numberIsNan = require('number-is-nan');\n\nfunction assertNum(x) {\n\tif (typeof x !== 'number' || numberIsNan(x)) {\n\t\tthrow new TypeError('Expected a number');\n\t}\n}\n\nexports.asc = function (a, b) {\n\tassertNum(a);\n\tassertNum(b);\n\treturn a - b;\n};\n\nexports.desc = function (a, b) {\n\tassertNum(a);\n\tassertNum(b);\n\treturn b - a;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/num-sort/index.js","module.exports = {\n    centroidsMerge: require('array-xy-centroids-merge'),\n    closestX: require('array-xy-closest-x'),\n    maxMerge: require('array-xy-max-merge'),\n    weightedMerge: require('array-xy-weighted-merge'),\n    sortX: require('array-xy-sort-x'),\n    maxY: require('array-xy-max-y')\n};\n\n\n// WEBPACK FOOTER //\n// ./index.js","/**\n * Merge abscissa values if the ordinate value is in a list of centroids\n * @param {object} originalPoints\n * @param {Array<number>} originalPoints.x\n * @param {Array<number>} originalPoints.y\n * @param {Array<number>} centroids\n * @param {object} [options]\n * @param {number} [options.window = 0.01] - has to be a positive number\n * @return {{x: Array<number>, y: Array<number>}}\n */\nexport default function mergeByCentroids(originalPoints, centroids, options = {}) {\n    const {\n        window = 0.01\n    } = options;\n\n    var mergedPoints = {\n        x: centroids.slice(),\n        y: new Array(centroids.length).fill(0)\n    };\n\n    var originalIndex = 0;\n    var mergedIndex = 0;\n    while ((originalIndex < originalPoints.x.length) && (mergedIndex < centroids.length)) {\n        var diff = originalPoints.x[originalIndex] - centroids[mergedIndex];\n        if (Math.abs(diff) < window) {\n            mergedPoints.y[mergedIndex] += originalPoints.y[originalIndex++];\n        } else if (diff < 0) {\n            originalIndex++;\n        } else {\n            mergedIndex++;\n        }\n    }\n\n    return mergedPoints;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/array-xy-centroids-merge/src/index.js","import binarySearch from 'binary-search';\nimport {asc, desc} from 'num-sort';\n\nexport default function (points, options) {\n    const {x, y} = points;\n    const {\n        target = x[0],\n        reverse = false\n    } = options;\n\n    let index;\n    if (reverse) {\n        index = binarySearch(x, target, desc);\n    } else {\n        index = binarySearch(x, target, asc);\n    }\n\n    if (index >= 0) {\n        return {\n            x: x[index],\n            y: y[index]\n        };\n    } else {\n        index = ~index;\n        if (((index !== 0) && (Math.abs(x[index] - target) > 0.5)) || (index === x.length)) {\n            return {\n                x: x[index - 1],\n                y: y[index - 1]\n            };\n        } else {\n            return {\n                x: x[index],\n                y: y[index]\n            };\n        }\n    }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/array-xy-closest-x/src/index.js","'use strict';\nmodule.exports = Number.isNaN || function (x) {\n\treturn x !== x;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/number-is-nan/index.js","/**\n * Merge abscissas values on similar ordinates and weight the group of abscissas\n * @param {object} points\n * @param {Array<number>} points.x - sorted abscissas values\n * @param {Array<number>} points.y - ordinates values\n * @param {object} [options]\n * @param {number} [options.groupWidth = 0.001] - window for abscissas to merge\n * @return {{x: Array<number>, y: Array<number>}}\n */\nexport default function (points, options = {}) {\n    const {x, y} = points;\n    const {\n        groupWidth = 0.001\n    } = options;\n\n    var merged = {x: [], y: []};\n    var maxAbscissa = {x: [], y: []};\n    var size = 0;\n    var index = 0;\n\n    while (index < x.length) {\n        if ((size === 0) || (x[index] - merged.x[size - 1] > groupWidth)) {\n            maxAbscissa.x.push(x[index]);\n            maxAbscissa.y.push(y[index]);\n            merged.x.push(x[index]);\n            merged.y.push(y[index]);\n            index++;\n            size++;\n        } else {\n            if (y[index] > maxAbscissa.y[size - 1]) {\n                maxAbscissa.x[size - 1] = x[index];\n                maxAbscissa.y[size - 1] = y[index];\n            }\n            merged.x[size - 1] = x[index];\n            merged.y[size - 1] += y[index];\n            index++;\n        }\n    }\n\n    merged.x = maxAbscissa.x.slice();\n\n    return merged;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/array-xy-max-merge/src/index.js","/**\n * Merge abscissas values on similar ordinates and weight the group of abscissas\n * @param {object} points\n * @param {Array<number>} points.x - sorted abscissas values\n * @param {Array<number>} points.y - ordinates values\n * @param {object} [options]\n * @param {number} [options.groupWidth = 0.001] - window for abscissas to merge\n * @return {{x: Array<number>, y: Array<number>}}\n */\nexport default function (points, options = {}) {\n    const {x, y} = points;\n    const {\n        groupWidth = 0.001\n    } = options;\n\n    var merged = {x: [], y: []};\n    var weightedAbscissa = {x: [], y: []};\n    var size = 0;\n    var index = 0;\n\n    while (index < x.length) {\n        if ((size === 0) || (x[index] - merged.x[size - 1] > groupWidth)) {\n            weightedAbscissa.x.push(x[index] * y[index]);\n            weightedAbscissa.y.push(y[index]);\n            merged.x.push(x[index]);\n            merged.y.push(y[index]);\n            index++;\n            size++;\n        } else {\n            weightedAbscissa.x[size - 1] += x[index] * y[index];\n            weightedAbscissa.y[size - 1] += y[index];\n            merged.x[size - 1] = x[index];\n            merged.y[size - 1] += y[index];\n            index++;\n        }\n    }\n\n    for (var i = 0; i < merged.x.length; i++) {\n        merged.x[i] = weightedAbscissa.x[i] / weightedAbscissa.y[i];\n    }\n\n    return merged;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/array-xy-weighted-merge/src/index.js","export default function sortX(points, options = {}) {\n    const {x, y} = points;\n    const {\n        reverse = false\n    } = options;\n\n    var sortFunc;\n    if (!reverse) {\n        sortFunc = (a, b) => a.x - b.x;\n    } else {\n        sortFunc = (a, b) => b.x - a.x;\n    }\n\n    var grouped = x.map((val, index) => ({\n        x: val,\n        y: y[index]\n    })).sort(sortFunc);\n\n    var response = {x: x.slice(), y: y.slice()};\n    for (var i = 0; i < x.length; i++) {\n        response.x[i] = grouped[i].x;\n        response.y[i] = grouped[i].y;\n    }\n\n    return response;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/array-xy-sort-x/src/index.js","import binarySearch from 'binary-search';\nimport {asc, desc} from 'num-sort';\n\n/**\n * @param {object} points\n * @param {Array<number>} points.x - sorted abscissas values\n * @param {Array<number>} points.y - ordinates values\n * @param {object} [options]\n * @param {object} [options.from = {index: 0}]\n * @param {object} [options.to = {index: x.length}]\n * @param {boolean} [options.reverse = false]\n * @return {{index: number, value: number}}\n */\nexport default function maxY(points, options = {}) {\n    const {x, y} = points;\n    let {\n        from = {index: 0},\n        to = {index: x.length},\n        reverse = false\n    } = options;\n\n    if (from.value !== undefined && from.index === undefined) {\n        from.index = calculateIndex(from.value, x, reverse);\n    }\n\n    if (to.value !== undefined && to.index === undefined) {\n        to.index = calculateIndex(to.value, x, reverse);\n    }\n\n    var currentMax = Number.MIN_VALUE;\n    var currentIndex;\n    for (var i = from.index; i < to.index; i++) {\n        if (currentMax < y[i]) {\n            currentMax = y[i];\n            currentIndex = i;\n        }\n    }\n\n    return {\n        index: currentIndex,\n        value: currentMax\n    };\n}\n\n/**\n * @param {number} value\n * @param {Array<number>} x\n * @param {boolean} reverse\n * @return {number} index of the value in the array\n */\nfunction calculateIndex(value, x, reverse) {\n    let index;\n    if (reverse) {\n        index = binarySearch(x, value, desc);\n    } else {\n        index = binarySearch(x, value, asc);\n    }\n\n    if (index < 0) {\n        throw new Error(`the value ${value} doesn't belongs to the abscissa value`);\n    }\n\n    return index;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/array-xy-max-y/src/index.js"],"sourceRoot":""}