diff --git a/.eslintrc b/.eslintrc index a1e0af5..6b052b1 100644 --- a/.eslintrc +++ b/.eslintrc @@ -33,7 +33,13 @@ "objectLiteralComputedProperties": true }, "globals": { - "ENV": true + "ENV": true, + "it": true, + "describe": true, + "beforeEach": true, + "sinon": true, + "expect": true, + "afterEach": true }, "rules": { "no-unused-expressions": 1, diff --git a/.gitignore b/.gitignore index a820c68..e12adf5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ coverage/ .project _site/ .idea/ +.vscode/ diff --git a/dist/quagga.js b/dist/quagga.js index be10b4d..708887e 100644 --- a/dist/quagga.js +++ b/dist/quagga.js @@ -15,23 +15,23 @@ return /******/ (function(modules) { // webpackBootstrap /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; +/******/ return installedModules[moduleId].e; /******/ /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { +/******/ e: {}, /******/ i: moduleId, -/******/ l: false, -/******/ exports: {} +/******/ l: false /******/ }; /******/ /******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ modules[moduleId].call(module.e, module, module.e, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module -/******/ return module.exports; +/******/ return module.e; /******/ } /******/ /******/ @@ -45,14 +45,45 @@ return /******/ (function(modules) { // webpackBootstrap /******/ __webpack_require__.p = "/"; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 195); +/******/ return __webpack_require__(__webpack_require__.s = 194); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @type {Function} + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + module.e = isArray; + + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { - "use strict"; /* * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. * @@ -63,7 +94,7 @@ return /******/ (function(modules) { // webpackBootstrap /* eslint-env node */ 'use strict'; - var logDisabled_ = false; + var logDisabled_ = true; // Utility methods. var utils = { @@ -190,7 +221,7 @@ return /******/ (function(modules) { // webpackBootstrap }; // Export. - module.exports = { + module.e = { log: utils.log, disableLog: utils.disableLog, browserDetails: utils.detectBrowser(), @@ -198,41 +229,9 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 1 */ -/***/ function(module, exports) { - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @type {Function} - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - module.exports = isArray; - - /***/ }, /* 2 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. @@ -262,14 +261,14 @@ return /******/ (function(modules) { // webpackBootstrap return !!value && (type == 'object' || type == 'function'); } - module.exports = isObject; + module.e = isObject; /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { - /* WEBPACK VAR INJECTION */(function(module, global) {var checkGlobal = __webpack_require__(132); + /* WEBPACK VAR INJECTION */(function(module, global) {var checkGlobal = __webpack_require__(131); /** Used to determine if values are of the language type `Object`. */ var objectTypes = { @@ -309,13 +308,13 @@ return /******/ (function(modules) { // webpackBootstrap ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) || freeSelf || thisGlobal || Function('return this')(); - module.exports = root; + module.e = root; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(67)(module), __webpack_require__(66))) + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(66)(module), (function() { return this; }()))) /***/ }, /* 4 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** * Checks if `value` is object-like. A value is object-like if it's not `null` @@ -344,14 +343,13 @@ return /******/ (function(modules) { // webpackBootstrap return !!value && typeof value == 'object'; } - module.exports = isObjectLike; + module.e = isObjectLike; /***/ }, /* 5 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ = __webpack_require__(12); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default = __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ && __WEBPACK_IMPORTED_MODULE_0_lodash_merge__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_0_lodash_merge___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default }); @@ -735,14 +733,13 @@ return /******/ (function(modules) { // webpackBootstrap /* Built-in method references that are verified to be native. */ var Map = getNative(root, 'Map'); - module.exports = Map; + module.e = Map; /***/ }, /* 7 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony default export */ exports["a"] = { drawRect: function drawRect(pos, size, ctx, style) { ctx.strokeStyle = style.color; @@ -789,7 +786,6 @@ return /******/ (function(modules) { // webpackBootstrap /* 8 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; function BarcodeReader(config, supplements) { this._row = []; this.config = config || {}; @@ -1009,9 +1005,9 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 9 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { - module.exports = clone + module.e = clone /** * Creates a new vec2 initialized with values from an existing vector @@ -1072,7 +1068,7 @@ return /******/ (function(modules) { // webpackBootstrap (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); } - module.exports = isArguments; + module.e = isArguments; /***/ }, @@ -1118,15 +1114,15 @@ return /******/ (function(modules) { // webpackBootstrap return tag == funcTag || tag == genTag; } - module.exports = isFunction; + module.e = isFunction; /***/ }, /* 12 */ /***/ function(module, exports, __webpack_require__) { - var baseMerge = __webpack_require__(124), - createAssigner = __webpack_require__(141); + var baseMerge = __webpack_require__(123), + createAssigner = __webpack_require__(140); /** * This method is like `_.assign` except that it recursively merges own and @@ -1162,14 +1158,13 @@ return /******/ (function(modules) { // webpackBootstrap baseMerge(object, source, srcIndex); }); - module.exports = merge; + module.e = merge; /***/ }, /* 13 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony default export */ exports["a"] = { init: function init(arr, val) { var l = arr.length; @@ -1262,11 +1257,11 @@ return /******/ (function(modules) { // webpackBootstrap /* 14 */ /***/ function(module, exports, __webpack_require__) { - var stackClear = __webpack_require__(164), - stackDelete = __webpack_require__(165), - stackGet = __webpack_require__(166), - stackHas = __webpack_require__(167), - stackSet = __webpack_require__(168); + var stackClear = __webpack_require__(163), + stackDelete = __webpack_require__(164), + stackGet = __webpack_require__(165), + stackHas = __webpack_require__(166), + stackSet = __webpack_require__(167); /** * Creates a stack cache object to store key-value pairs. @@ -1293,7 +1288,7 @@ return /******/ (function(modules) { // webpackBootstrap Stack.prototype.has = stackHas; Stack.prototype.set = stackSet; - module.exports = Stack; + module.e = Stack; /***/ }, @@ -1321,14 +1316,14 @@ return /******/ (function(modules) { // webpackBootstrap return -1; } - module.exports = assocIndexOf; + module.e = assocIndexOf; /***/ }, /* 16 */ /***/ function(module, exports, __webpack_require__) { - var isNative = __webpack_require__(175); + var isNative = __webpack_require__(174); /** * Gets the native function at `key` of `object`. @@ -1343,12 +1338,12 @@ return /******/ (function(modules) { // webpackBootstrap return isNative(value) ? value : undefined; } - module.exports = getNative; + module.e = getNative; /***/ }, /* 17 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** * Checks if `value` is a host object in IE < 9. @@ -1369,12 +1364,12 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = isHostObject; + module.e = isHostObject; /***/ }, /* 18 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** Used as references for various `Number` constants. */ var MAX_SAFE_INTEGER = 9007199254740991; @@ -1396,12 +1391,12 @@ return /******/ (function(modules) { // webpackBootstrap return value > -1 && value % 1 == 0 && value < length; } - module.exports = isIndex; + module.e = isIndex; /***/ }, /* 19 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** * Checks if `value` is suitable for use as unique object key. @@ -1416,7 +1411,7 @@ return /******/ (function(modules) { // webpackBootstrap (type == 'string' && value != '__proto__') || value == null; } - module.exports = isKeyable; + module.e = isKeyable; /***/ }, @@ -1428,12 +1423,12 @@ return /******/ (function(modules) { // webpackBootstrap /* Built-in method references that are verified to be native. */ var nativeCreate = getNative(Object, 'create'); - module.exports = nativeCreate; + module.e = nativeCreate; /***/ }, /* 21 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** * Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) @@ -1469,14 +1464,14 @@ return /******/ (function(modules) { // webpackBootstrap return value === other || (value !== value && other !== other); } - module.exports = eq; + module.e = eq; /***/ }, /* 22 */ /***/ function(module, exports, __webpack_require__) { - var getLength = __webpack_require__(145), + var getLength = __webpack_require__(144), isFunction = __webpack_require__(11), isLength = __webpack_require__(23); @@ -1508,12 +1503,12 @@ return /******/ (function(modules) { // webpackBootstrap return value != null && isLength(getLength(value)) && !isFunction(value); } - module.exports = isArrayLike; + module.e = isArrayLike; /***/ }, /* 23 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** Used as references for various `Number` constants. */ var MAX_SAFE_INTEGER = 9007199254740991; @@ -1547,7 +1542,7 @@ return /******/ (function(modules) { // webpackBootstrap value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; } - module.exports = isLength; + module.e = isLength; /***/ }, @@ -1555,7 +1550,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var baseHas = __webpack_require__(52), - baseKeys = __webpack_require__(120), + baseKeys = __webpack_require__(119), indexKeys = __webpack_require__(60), isArrayLike = __webpack_require__(22), isIndex = __webpack_require__(18), @@ -1608,15 +1603,14 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = keys; + module.e = keys; /***/ }, /* 25 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cluster__ = __webpack_require__(69); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cluster__ = __webpack_require__(68); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__array_helper__ = __webpack_require__(13); /* harmony export */ exports["f"] = imageRef;/* unused harmony export computeIntegralImage2 *//* unused harmony export computeIntegralImage *//* unused harmony export thresholdImage *//* unused harmony export computeHistogram *//* unused harmony export sharpenLine *//* unused harmony export determineOtsuThreshold *//* harmony export */ exports["c"] = otsuThreshold;/* unused harmony export computeBinaryImage *//* harmony export */ exports["d"] = cluster;/* unused harmony export dilate *//* unused harmony export erode *//* unused harmony export subtract *//* unused harmony export bitwiseOr *//* unused harmony export countNonZero *//* harmony export */ exports["e"] = topGeneric;/* unused harmony export grayArrayFromImage *//* unused harmony export grayArrayFromContext *//* harmony export */ exports["i"] = grayAndHalfSampleFromCanvasData;/* harmony export */ exports["j"] = computeGray;/* unused harmony export loadImageArray *//* harmony export */ exports["g"] = halfSample;/* harmony export */ exports["a"] = hsv2rgb;/* unused harmony export _computeDivisors *//* harmony export */ exports["b"] = calculatePatchSize;/* unused harmony export _parseCSSDimensionValues *//* harmony export */ exports["h"] = computeImageArea; @@ -1624,7 +1618,7 @@ return /******/ (function(modules) { // webpackBootstrap clone: __webpack_require__(9) }; var vec3 = { - clone: __webpack_require__(98) + clone: __webpack_require__(97) }; /** @@ -2400,8 +2394,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 26 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__subImage__ = __webpack_require__(71); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__subImage__ = __webpack_require__(70); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_cv_utils__ = __webpack_require__(25); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__common_array_helper__ = __webpack_require__(13); @@ -2766,12 +2759,12 @@ return /******/ (function(modules) { // webpackBootstrap /** Built-in value references. */ var Symbol = root.Symbol; - module.exports = Symbol; + module.e = Symbol; /***/ }, /* 28 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** * A specialized version of `_.reduce` for arrays without support for @@ -2797,14 +2790,14 @@ return /******/ (function(modules) { // webpackBootstrap return accumulator; } - module.exports = arrayReduce; + module.e = arrayReduce; /***/ }, /* 29 */ /***/ function(module, exports, __webpack_require__) { - var copyObjectWith = __webpack_require__(139); + var copyObjectWith = __webpack_require__(138); /** * Copies properties of `source` to `object`. @@ -2819,14 +2812,14 @@ return /******/ (function(modules) { // webpackBootstrap return copyObjectWith(source, props, object); } - module.exports = copyObject; + module.e = copyObject; /***/ }, /* 30 */ /***/ function(module, exports, __webpack_require__) { - var isArray = __webpack_require__(1); + var isArray = __webpack_require__(0); /** Used to match property names within property paths. */ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, @@ -2849,12 +2842,12 @@ return /******/ (function(modules) { // webpackBootstrap (object != null && value in Object(object))); } - module.exports = isKey; + module.e = isKey; /***/ }, /* 31 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -2873,7 +2866,7 @@ return /******/ (function(modules) { // webpackBootstrap return value === proto; } - module.exports = isPrototype; + module.e = isPrototype; /***/ }, @@ -2910,14 +2903,14 @@ return /******/ (function(modules) { // webpackBootstrap return isObjectLike(value) && isArrayLike(value); } - module.exports = isArrayLikeObject; + module.e = isArrayLikeObject; /***/ }, /* 33 */ /***/ function(module, exports, __webpack_require__) { - var isArray = __webpack_require__(1), + var isArray = __webpack_require__(0), isObjectLike = __webpack_require__(4); /** `Object#toString` result references. */ @@ -2953,7 +2946,7 @@ return /******/ (function(modules) { // webpackBootstrap (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag); } - module.exports = isString; + module.e = isString; /***/ }, @@ -3034,14 +3027,14 @@ return /******/ (function(modules) { // webpackBootstrap isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; } - module.exports = isTypedArray; + module.e = isTypedArray; /***/ }, /* 35 */ /***/ function(module, exports, __webpack_require__) { - var baseKeysIn = __webpack_require__(121), + var baseKeysIn = __webpack_require__(120), indexKeys = __webpack_require__(60), isIndex = __webpack_require__(18), isPrototype = __webpack_require__(31); @@ -3094,14 +3087,13 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = keysIn; + module.e = keysIn; /***/ }, /* 36 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_image_debug__ = __webpack_require__(7); @@ -3162,11 +3154,10 @@ return /******/ (function(modules) { // webpackBootstrap /* 37 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; var config = void 0; if (true) { - config = __webpack_require__(73); + config = __webpack_require__(72); } else if (ENV.node) { config = require('./config.node.js'); } else { @@ -3179,7 +3170,6 @@ return /******/ (function(modules) { // webpackBootstrap /* 38 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /** * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization */ @@ -3284,7 +3274,6 @@ return /******/ (function(modules) { // webpackBootstrap /* 39 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__barcode_reader__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_array_helper__ = __webpack_require__(13); @@ -3501,9 +3490,9 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 40 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { - module.exports = dot + module.e = dot /** * Calculates the dot product of two vec2's @@ -3525,12 +3514,12 @@ return /******/ (function(modules) { // webpackBootstrap /** Built-in value references. */ var Uint8Array = root.Uint8Array; - module.exports = Uint8Array; + module.e = Uint8Array; /***/ }, /* 42 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** * A specialized version of `_.forEach` for arrays without support for @@ -3553,7 +3542,7 @@ return /******/ (function(modules) { // webpackBootstrap return array; } - module.exports = arrayEach; + module.e = arrayEach; /***/ }, @@ -3578,7 +3567,7 @@ return /******/ (function(modules) { // webpackBootstrap } } - module.exports = assignMergeValue; + module.e = assignMergeValue; /***/ }, @@ -3611,7 +3600,7 @@ return /******/ (function(modules) { // webpackBootstrap } } - module.exports = assignValue; + module.e = assignValue; /***/ }, @@ -3648,7 +3637,7 @@ return /******/ (function(modules) { // webpackBootstrap return true; } - module.exports = assocDelete; + module.e = assocDelete; /***/ }, @@ -3670,7 +3659,7 @@ return /******/ (function(modules) { // webpackBootstrap return index < 0 ? undefined : array[index][1]; } - module.exports = assocGet; + module.e = assocGet; /***/ }, @@ -3691,7 +3680,7 @@ return /******/ (function(modules) { // webpackBootstrap return assocIndexOf(array, key) > -1; } - module.exports = assocHas; + module.e = assocHas; /***/ }, @@ -3717,15 +3706,15 @@ return /******/ (function(modules) { // webpackBootstrap } } - module.exports = assocSet; + module.e = assocSet; /***/ }, /* 49 */ /***/ function(module, exports, __webpack_require__) { - var isArray = __webpack_require__(1), - stringToPath = __webpack_require__(169); + var isArray = __webpack_require__(0), + stringToPath = __webpack_require__(168); /** * Casts `value` to a path array if it's not one. @@ -3738,14 +3727,14 @@ return /******/ (function(modules) { // webpackBootstrap return isArray(value) ? value : stringToPath(value); } - module.exports = baseCastPath; + module.e = baseCastPath; /***/ }, /* 50 */ /***/ function(module, exports, __webpack_require__) { - var createBaseFor = __webpack_require__(142); + var createBaseFor = __webpack_require__(141); /** * The base implementation of `baseForIn` and `baseForOwn` which iterates @@ -3761,7 +3750,7 @@ return /******/ (function(modules) { // webpackBootstrap */ var baseFor = createBaseFor(); - module.exports = baseFor; + module.e = baseFor; /***/ }, @@ -3791,12 +3780,12 @@ return /******/ (function(modules) { // webpackBootstrap return (index && index == length) ? object : undefined; } - module.exports = baseGet; + module.e = baseGet; /***/ }, /* 52 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -3823,14 +3812,14 @@ return /******/ (function(modules) { // webpackBootstrap (typeof object == 'object' && key in object && getPrototypeOf(object) === null); } - module.exports = baseHas; + module.e = baseHas; /***/ }, /* 53 */ /***/ function(module, exports, __webpack_require__) { - var baseIsEqualDeep = __webpack_require__(117), + var baseIsEqualDeep = __webpack_require__(116), isObject = __webpack_require__(2), isObjectLike = __webpack_require__(4); @@ -3859,12 +3848,12 @@ return /******/ (function(modules) { // webpackBootstrap return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack); } - module.exports = baseIsEqual; + module.e = baseIsEqual; /***/ }, /* 54 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** * The base implementation of `_.property` without support for deep paths. @@ -3879,7 +3868,7 @@ return /******/ (function(modules) { // webpackBootstrap }; } - module.exports = baseProperty; + module.e = baseProperty; /***/ }, @@ -3901,12 +3890,12 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = cloneArrayBuffer; + module.e = cloneArrayBuffer; /***/ }, /* 56 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** * Copies the values of `source` to `array`. @@ -3927,14 +3916,14 @@ return /******/ (function(modules) { // webpackBootstrap return array; } - module.exports = copyArray; + module.e = copyArray; /***/ }, /* 57 */ /***/ function(module, exports, __webpack_require__) { - var arraySome = __webpack_require__(109); + var arraySome = __webpack_require__(108); /** Used to compose bitmasks for comparison styles. */ var UNORDERED_COMPARE_FLAG = 1, @@ -4005,7 +3994,7 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = equalArrays; + module.e = equalArrays; /***/ }, @@ -4013,8 +4002,8 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var Map = __webpack_require__(6), - Set = __webpack_require__(102), - WeakMap = __webpack_require__(103); + Set = __webpack_require__(101), + WeakMap = __webpack_require__(102); /** `Object#toString` result references. */ var mapTag = '[object Map]', @@ -4070,7 +4059,7 @@ return /******/ (function(modules) { // webpackBootstrap }; } - module.exports = getTag; + module.e = getTag; /***/ }, @@ -4097,16 +4086,16 @@ return /******/ (function(modules) { // webpackBootstrap return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key); } - module.exports = hashHas; + module.e = hashHas; /***/ }, /* 60 */ /***/ function(module, exports, __webpack_require__) { - var baseTimes = __webpack_require__(130), + var baseTimes = __webpack_require__(129), isArguments = __webpack_require__(10), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isLength = __webpack_require__(23), isString = __webpack_require__(33); @@ -4127,12 +4116,12 @@ return /******/ (function(modules) { // webpackBootstrap return null; } - module.exports = indexKeys; + module.e = indexKeys; /***/ }, /* 61 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** * Converts `map` to an array. @@ -4151,12 +4140,12 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = mapToArray; + module.e = mapToArray; /***/ }, /* 62 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { /** * Converts `set` to an array. @@ -4175,7 +4164,7 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = setToArray; + module.e = setToArray; /***/ }, @@ -4213,15 +4202,15 @@ return /******/ (function(modules) { // webpackBootstrap return result === undefined ? defaultValue : result; } - module.exports = get; + module.e = get; /***/ }, /* 64 */ /***/ function(module, exports, __webpack_require__) { - var baseFlatten = __webpack_require__(113), - basePick = __webpack_require__(126), + var baseFlatten = __webpack_require__(112), + basePick = __webpack_require__(125), rest = __webpack_require__(65); /** @@ -4245,15 +4234,15 @@ return /******/ (function(modules) { // webpackBootstrap return object == null ? {} : basePick(object, baseFlatten(props, 1)); }); - module.exports = pick; + module.e = pick; /***/ }, /* 65 */ /***/ function(module, exports, __webpack_require__) { - var apply = __webpack_require__(106), - toInteger = __webpack_require__(181); + var apply = __webpack_require__(105), + toInteger = __webpack_require__(180); /** Used as the `TypeError` message for "Functions" methods. */ var FUNC_ERROR_TEXT = 'Expected a function'; @@ -4312,44 +4301,25 @@ return /******/ (function(modules) { // webpackBootstrap }; } - module.exports = rest; + module.e = rest; /***/ }, /* 66 */ -/***/ function(module, exports) { - - var g; - - // This works in non-strict mode - g = (function() { return this; })(); - - try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1,eval)("this"); - } catch(e) { - // This works if the window reference is available - if(typeof window === "object") - g = window; - } - - // g can still be undefined, but nothing to do about it... - // We return undefined, instead of nothing here, so it's - // easier to handle this case. if(!global) { ...} - - module.exports = g; - - -/***/ }, -/* 67 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { - module.exports = function(module) { + module.e = function(module) { if(!module.webpackPolyfill) { module.deprecate = function() {}; module.paths = []; // module.parent = undefined by default module.children = []; + Object.defineProperty(module, "exports", { + enumerable: true, + configurable: false, + get: function() { return module.e; }, + set: function(v) { return module.e = v; } + }); Object.defineProperty(module, "loaded", { enumerable: true, configurable: false, @@ -4367,14 +4337,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_isEmpty__ = __webpack_require__(174); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_isEmpty__ = __webpack_require__(173); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_isEmpty___default = __WEBPACK_IMPORTED_MODULE_0_lodash_isEmpty__ && __WEBPACK_IMPORTED_MODULE_0_lodash_isEmpty__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_isEmpty__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_isEmpty__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_0_lodash_isEmpty___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_0_lodash_isEmpty___default }); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_omitBy__ = __webpack_require__(179); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_omitBy__ = __webpack_require__(178); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_omitBy___default = __WEBPACK_IMPORTED_MODULE_1_lodash_omitBy__ && __WEBPACK_IMPORTED_MODULE_1_lodash_omitBy__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_1_lodash_omitBy__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_1_lodash_omitBy__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_1_lodash_omitBy___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_1_lodash_omitBy___default }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_lodash_pick__ = __webpack_require__(64); @@ -4383,13 +4352,13 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_merge__ = __webpack_require__(12); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_lodash_merge___default = __WEBPACK_IMPORTED_MODULE_3_lodash_merge__ && __WEBPACK_IMPORTED_MODULE_3_lodash_merge__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_3_lodash_merge__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_3_lodash_merge__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_3_lodash_merge___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_3_lodash_merge___default }); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__common_typedefs__ = __webpack_require__(72); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__common_typedefs__ = __webpack_require__(71); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__common_typedefs___default = __WEBPACK_IMPORTED_MODULE_4__common_typedefs__ && __WEBPACK_IMPORTED_MODULE_4__common_typedefs__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_4__common_typedefs__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_4__common_typedefs__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_4__common_typedefs___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_4__common_typedefs___default }); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_webrtc_adapter__ = __webpack_require__(187); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_webrtc_adapter__ = __webpack_require__(186); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_webrtc_adapter___default = __WEBPACK_IMPORTED_MODULE_5_webrtc_adapter__ && __WEBPACK_IMPORTED_MODULE_5_webrtc_adapter__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_5_webrtc_adapter__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_5_webrtc_adapter__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_5_webrtc_adapter___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_5_webrtc_adapter___default }); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__scanner__ = __webpack_require__(92); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__scanner__ = __webpack_require__(91); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__common_image_wrapper__ = __webpack_require__(26); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__common_image_debug__ = __webpack_require__(7); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__analytics_result_collector__ = __webpack_require__(36); @@ -4563,10 +4532,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["default"] = createApi(); /***/ }, -/* 69 */ +/* 68 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; var vec2 = { clone: __webpack_require__(9), dot: __webpack_require__(40) @@ -4639,10 +4607,9 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 70 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony export */ exports["a"] = createEventedElement;function createEventedElement() { var events = {}; @@ -4695,14 +4662,19 @@ return /******/ (function(modules) { // webpackBootstrap var event = getEvent(eventName), subscribers = event.subscribers; + // Publish one-time subscriptions subscribers.filter(function (subscriber) { return !!subscriber.once; }).forEach(function (subscriber) { publishSubscription(subscriber, data); }); + + // remove them from the subscriber event.subscribers = subscribers.filter(function (subscriber) { return !subscriber.once; }); + + // publish the rest event.subscribers.forEach(function (subscriber) { publishSubscription(subscriber, data); }); @@ -4734,10 +4706,9 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 71 */ +/* 70 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /** * Construct representing a part of another {ImageWrapper}. Shares data * between the parent and the child. @@ -4824,7 +4795,7 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = SubImage; /***/ }, -/* 72 */ +/* 71 */ /***/ function(module, exports) { /* @@ -4850,10 +4821,10 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 73 */ -/***/ function(module, exports) { +/* 72 */ +/***/ function(module, exports, __webpack_require__) { - module.exports = { + module.e = { inputStream: { name: "Live", type: "LiveStream", @@ -4904,23 +4875,22 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 74 */ +/* 73 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__bresenham__ = __webpack_require__(75); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__bresenham__ = __webpack_require__(74); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_image_debug__ = __webpack_require__(7); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__reader_code_128_reader__ = __webpack_require__(84); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__reader_code_128_reader__ = __webpack_require__(83); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__reader_ean_reader__ = __webpack_require__(5); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__reader_code_39_reader__ = __webpack_require__(39); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__reader_code_39_vin_reader__ = __webpack_require__(85); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__reader_codabar_reader__ = __webpack_require__(83); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__reader_upc_reader__ = __webpack_require__(91); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__reader_ean_8_reader__ = __webpack_require__(88); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__reader_ean_2_reader__ = __webpack_require__(86); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__reader_ean_5_reader__ = __webpack_require__(87); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__reader_upc_e_reader__ = __webpack_require__(90); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__reader_i2of5_reader__ = __webpack_require__(89); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__reader_code_39_vin_reader__ = __webpack_require__(84); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__reader_codabar_reader__ = __webpack_require__(82); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__reader_upc_reader__ = __webpack_require__(90); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__reader_ean_8_reader__ = __webpack_require__(87); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__reader_ean_2_reader__ = __webpack_require__(85); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__reader_ean_5_reader__ = __webpack_require__(86); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__reader_upc_e_reader__ = __webpack_require__(89); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__reader_i2of5_reader__ = __webpack_require__(88); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; @@ -5240,10 +5210,9 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 75 */ +/* 74 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; var Bresenham = {}; var Slope = { @@ -5443,10 +5412,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = Bresenham; /***/ }, -/* 76 */ +/* 75 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_pick__ = __webpack_require__(64); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_pick___default = __WEBPACK_IMPORTED_MODULE_0_lodash_pick__ && __WEBPACK_IMPORTED_MODULE_0_lodash_pick__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_pick__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_pick__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_0_lodash_pick___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_0_lodash_pick___default }); @@ -5490,11 +5458,11 @@ return /******/ (function(modules) { // webpackBootstrap */ function initCamera(video, constraints) { return navigator.mediaDevices.getUserMedia(constraints).then(function (stream) { - return new Promise(function (resolve, reject) { + return new Promise(function (resolve) { streamRef = stream; video.setAttribute("autoplay", 'true'); video.srcObject = stream; - video.addEventListener('loadedmetadata', function (e) { + video.addEventListener('loadedmetadata', function () { video.play(); resolve(); }); @@ -5505,12 +5473,12 @@ return /******/ (function(modules) { // webpackBootstrap function deprecatedConstraints(videoConstraints) { var normalized = /* harmony import */__WEBPACK_IMPORTED_MODULE_0_lodash_pick___default.a.bind()(videoConstraints, ["width", "height", "facingMode", "aspectRatio", "deviceId"]); - if (typeof videoConstraints["minAspectRatio"] !== 'undefined' && videoConstraints["minAspectRatio"] > 0) { - normalized["aspectRatio"] = videoConstraints["minAspectRatio"]; + if (typeof videoConstraints.minAspectRatio !== 'undefined' && videoConstraints.minAspectRatio > 0) { + normalized.aspectRatio = videoConstraints.minAspectRatio; console.log("WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead"); } - if (typeof videoConstraints["facing"] !== 'undefined') { - normalized["facingMode"] = videoConstraints["facing"]; + if (typeof videoConstraints.facing !== 'undefined') { + normalized.facingMode = videoConstraints.facing; console.log("WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'"); } return normalized; @@ -5521,7 +5489,7 @@ return /******/ (function(modules) { // webpackBootstrap return Promise.resolve(constraints); } if (typeof MediaStreamTrack !== 'undefined' && typeof MediaStreamTrack.getSources !== 'undefined') { - return new Promise(function (resolve, reject) { + return new Promise(function (resolve) { MediaStreamTrack.getSources(function (sourceInfos) { var videoSource = sourceInfos.filter(function (sourceInfo) { return sourceInfo.kind === "video" && sourceInfo.facing === facing; @@ -5558,10 +5526,9 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 77 */ +/* 76 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_cv_utils__ = __webpack_require__(25); @@ -5656,10 +5623,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = FrameGrabber; /***/ }, -/* 78 */ +/* 77 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; var ImageLoader = {}; ImageLoader.load = function (directory, callback, offset, size, sequence) { var htmlImagesSrcArray = new Array(size), @@ -5720,11 +5686,10 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = ImageLoader; /***/ }, -/* 79 */ +/* 78 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__image_loader__ = __webpack_require__(78); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__image_loader__ = __webpack_require__(77); var InputStream = {}; @@ -6039,17 +6004,16 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = InputStream; /***/ }, -/* 80 */ +/* 79 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_image_wrapper__ = __webpack_require__(26); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_cv_utils__ = __webpack_require__(25); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__common_array_helper__ = __webpack_require__(13); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__common_image_debug__ = __webpack_require__(7); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__rasterizer__ = __webpack_require__(81); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__rasterizer__ = __webpack_require__(80); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__tracer__ = __webpack_require__(38); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__skeletonizer__ = __webpack_require__(82); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__skeletonizer__ = __webpack_require__(81); /* harmony export */ exports["b"] = createLocator;/* harmony export */ exports["a"] = checkImageConstraints; @@ -6060,13 +6024,13 @@ return /******/ (function(modules) { // webpackBootstrap var vec2 = { clone: __webpack_require__(9), dot: __webpack_require__(40), - scale: __webpack_require__(96), - transformMat2: __webpack_require__(97) + scale: __webpack_require__(95), + transformMat2: __webpack_require__(96) }; var mat2 = { - copy: __webpack_require__(93), - create: __webpack_require__(94), - invert: __webpack_require__(95) + copy: __webpack_require__(92), + create: __webpack_require__(93), + invert: __webpack_require__(94) }; function createLocator(inputImageWrapper, config) { @@ -6626,13 +6590,12 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error("Image dimensions do not comply with the current settings: Width (" + width + " )and height (" + height + ") must a multiple of " + patchSize.x); } - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(66))) + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) /***/ }, -/* 81 */ +/* 80 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tracer__ = __webpack_require__(38); @@ -6829,10 +6792,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = Rasterizer; /***/ }, -/* 82 */ +/* 81 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* @preserve ASM BEGIN */ /* eslint-disable eqeqeq*/ function Skeletonizer(stdlib, foreign, buffer) { @@ -7032,10 +6994,9 @@ return /******/ (function(modules) { // webpackBootstrap /* eslint-enable eqeqeq*/ /***/ }, -/* 83 */ +/* 82 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__barcode_reader__ = __webpack_require__(8); @@ -7323,10 +7284,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = CodabarReader; /***/ }, -/* 84 */ +/* 83 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__barcode_reader__ = __webpack_require__(8); @@ -7675,10 +7635,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = Code128Reader; /***/ }, -/* 85 */ +/* 84 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__code_39_reader__ = __webpack_require__(39); @@ -7733,10 +7692,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = Code39VINReader; /***/ }, -/* 86 */ +/* 85 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(5); @@ -7791,10 +7749,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = EAN2Reader; /***/ }, -/* 87 */ +/* 86 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(5); @@ -7881,10 +7838,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = EAN5Reader; /***/ }, -/* 88 */ +/* 87 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(5); @@ -7933,10 +7889,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = EAN8Reader; /***/ }, -/* 89 */ +/* 88 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ = __webpack_require__(12); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default = __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ && __WEBPACK_IMPORTED_MODULE_0_lodash_merge__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_0_lodash_merge___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default }); @@ -8256,10 +8211,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = I2of5Reader; /***/ }, -/* 90 */ +/* 89 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(5); @@ -8357,10 +8311,9 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = UPCEReader; /***/ }, -/* 91 */ +/* 90 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(5); @@ -8388,23 +8341,22 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = UPCReader; /***/ }, -/* 92 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_frame_grabber__ = __webpack_require__(77); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_input_stream__ = __webpack_require__(79); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__config_config__ = __webpack_require__(37); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__analytics_result_collector__ = __webpack_require__(36); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__common_image_debug__ = __webpack_require__(7); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__input_camera_access__ = __webpack_require__(76); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__common_events__ = __webpack_require__(70); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__decoder_barcode_decoder__ = __webpack_require__(74); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__locator_barcode_locator__ = __webpack_require__(80); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_image_wrapper__ = __webpack_require__(26); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ = __webpack_require__(12); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default = __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ && __WEBPACK_IMPORTED_MODULE_0_lodash_merge__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_0_lodash_merge___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default }); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_image_wrapper__ = __webpack_require__(26); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__locator_barcode_locator__ = __webpack_require__(79); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__decoder_barcode_decoder__ = __webpack_require__(73); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__common_events__ = __webpack_require__(69); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__input_camera_access__ = __webpack_require__(75); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__common_image_debug__ = __webpack_require__(7); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__analytics_result_collector__ = __webpack_require__(36); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__config_config__ = __webpack_require__(37); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_input_stream__ = __webpack_require__(78); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_frame_grabber__ = __webpack_require__(76); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; @@ -8921,10 +8873,10 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = createScanner; /***/ }, -/* 93 */ -/***/ function(module, exports) { +/* 92 */ +/***/ function(module, exports, __webpack_require__) { - module.exports = copy + module.e = copy /** * Copy the values from one mat2 to another @@ -8944,10 +8896,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 94 */ -/***/ function(module, exports) { +/* 93 */ +/***/ function(module, exports, __webpack_require__) { - module.exports = create + module.e = create /** * Creates a new identity mat2 @@ -8966,10 +8918,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 95 */ -/***/ function(module, exports) { +/* 94 */ +/***/ function(module, exports, __webpack_require__) { - module.exports = invert + module.e = invert /** * Inverts a mat2 @@ -8999,10 +8951,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 96 */ -/***/ function(module, exports) { +/* 95 */ +/***/ function(module, exports, __webpack_require__) { - module.exports = scale + module.e = scale /** * Scales a vec2 by a scalar number @@ -9019,10 +8971,10 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }, -/* 97 */ -/***/ function(module, exports) { +/* 96 */ +/***/ function(module, exports, __webpack_require__) { - module.exports = transformMat2 + module.e = transformMat2 /** * Transforms the vec2 with a mat2 @@ -9041,10 +8993,10 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }, -/* 98 */ -/***/ function(module, exports) { +/* 97 */ +/***/ function(module, exports, __webpack_require__) { - module.exports = clone; + module.e = clone; /** * Creates a new vec3 initialized with values from an existing vector @@ -9061,7 +9013,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }, -/* 99 */ +/* 98 */ /***/ function(module, exports, __webpack_require__) { var nativeCreate = __webpack_require__(20); @@ -9081,18 +9033,18 @@ return /******/ (function(modules) { // webpackBootstrap // Avoid inheriting from `Object.prototype` when possible. Hash.prototype = nativeCreate ? nativeCreate(null) : objectProto; - module.exports = Hash; + module.e = Hash; /***/ }, -/* 100 */ +/* 99 */ /***/ function(module, exports, __webpack_require__) { - var mapClear = __webpack_require__(158), - mapDelete = __webpack_require__(159), - mapGet = __webpack_require__(160), - mapHas = __webpack_require__(161), - mapSet = __webpack_require__(162); + var mapClear = __webpack_require__(157), + mapDelete = __webpack_require__(158), + mapGet = __webpack_require__(159), + mapHas = __webpack_require__(160), + mapSet = __webpack_require__(161); /** * Creates a map cache object to store key-value pairs. @@ -9119,11 +9071,11 @@ return /******/ (function(modules) { // webpackBootstrap MapCache.prototype.has = mapHas; MapCache.prototype.set = mapSet; - module.exports = MapCache; + module.e = MapCache; /***/ }, -/* 101 */ +/* 100 */ /***/ function(module, exports, __webpack_require__) { var root = __webpack_require__(3); @@ -9131,11 +9083,11 @@ return /******/ (function(modules) { // webpackBootstrap /** Built-in value references. */ var Reflect = root.Reflect; - module.exports = Reflect; + module.e = Reflect; /***/ }, -/* 102 */ +/* 101 */ /***/ function(module, exports, __webpack_require__) { var getNative = __webpack_require__(16), @@ -9144,11 +9096,11 @@ return /******/ (function(modules) { // webpackBootstrap /* Built-in method references that are verified to be native. */ var Set = getNative(root, 'Set'); - module.exports = Set; + module.e = Set; /***/ }, -/* 103 */ +/* 102 */ /***/ function(module, exports, __webpack_require__) { var getNative = __webpack_require__(16), @@ -9157,12 +9109,12 @@ return /******/ (function(modules) { // webpackBootstrap /* Built-in method references that are verified to be native. */ var WeakMap = getNative(root, 'WeakMap'); - module.exports = WeakMap; + module.e = WeakMap; /***/ }, -/* 104 */ -/***/ function(module, exports) { +/* 103 */ +/***/ function(module, exports, __webpack_require__) { /** * Adds the key-value `pair` to `map`. @@ -9178,12 +9130,12 @@ return /******/ (function(modules) { // webpackBootstrap return map; } - module.exports = addMapEntry; + module.e = addMapEntry; /***/ }, -/* 105 */ -/***/ function(module, exports) { +/* 104 */ +/***/ function(module, exports, __webpack_require__) { /** * Adds `value` to `set`. @@ -9198,12 +9150,12 @@ return /******/ (function(modules) { // webpackBootstrap return set; } - module.exports = addSetEntry; + module.e = addSetEntry; /***/ }, -/* 106 */ -/***/ function(module, exports) { +/* 105 */ +/***/ function(module, exports, __webpack_require__) { /** * A faster alternative to `Function#apply`, this function invokes `func` @@ -9226,12 +9178,12 @@ return /******/ (function(modules) { // webpackBootstrap return func.apply(thisArg, args); } - module.exports = apply; + module.e = apply; /***/ }, -/* 107 */ -/***/ function(module, exports) { +/* 106 */ +/***/ function(module, exports, __webpack_require__) { /** * A specialized version of `_.map` for arrays without support for iteratee @@ -9253,12 +9205,12 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = arrayMap; + module.e = arrayMap; /***/ }, -/* 108 */ -/***/ function(module, exports) { +/* 107 */ +/***/ function(module, exports, __webpack_require__) { /** * Appends the elements of `values` to `array`. @@ -9279,12 +9231,12 @@ return /******/ (function(modules) { // webpackBootstrap return array; } - module.exports = arrayPush; + module.e = arrayPush; /***/ }, -/* 109 */ -/***/ function(module, exports) { +/* 108 */ +/***/ function(module, exports, __webpack_require__) { /** * A specialized version of `_.some` for arrays without support for iteratee @@ -9307,11 +9259,11 @@ return /******/ (function(modules) { // webpackBootstrap return false; } - module.exports = arraySome; + module.e = arraySome; /***/ }, -/* 110 */ +/* 109 */ /***/ function(module, exports, __webpack_require__) { var copyObject = __webpack_require__(29), @@ -9330,27 +9282,27 @@ return /******/ (function(modules) { // webpackBootstrap return object && copyObject(source, keys(source), object); } - module.exports = baseAssign; + module.e = baseAssign; /***/ }, -/* 111 */ +/* 110 */ /***/ function(module, exports, __webpack_require__) { var Stack = __webpack_require__(14), arrayEach = __webpack_require__(42), assignValue = __webpack_require__(44), - baseAssign = __webpack_require__(110), - baseForOwn = __webpack_require__(115), - cloneBuffer = __webpack_require__(133), + baseAssign = __webpack_require__(109), + baseForOwn = __webpack_require__(114), + cloneBuffer = __webpack_require__(132), copyArray = __webpack_require__(56), - copySymbols = __webpack_require__(140), + copySymbols = __webpack_require__(139), getTag = __webpack_require__(58), - initCloneArray = __webpack_require__(152), - initCloneByTag = __webpack_require__(153), - initCloneObject = __webpack_require__(154), - isArray = __webpack_require__(1), - isBuffer = __webpack_require__(173), + initCloneArray = __webpack_require__(151), + initCloneByTag = __webpack_require__(152), + initCloneObject = __webpack_require__(153), + isArray = __webpack_require__(0), + isBuffer = __webpack_require__(172), isHostObject = __webpack_require__(17), isObject = __webpack_require__(2); @@ -9467,11 +9419,11 @@ return /******/ (function(modules) { // webpackBootstrap return (isFull && !isArr) ? copySymbols(value, result) : result; } - module.exports = baseClone; + module.e = baseClone; /***/ }, -/* 112 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(2); @@ -9491,16 +9443,16 @@ return /******/ (function(modules) { // webpackBootstrap return isObject(proto) ? objectCreate(proto) : {}; } - module.exports = baseCreate; + module.e = baseCreate; /***/ }, -/* 113 */ +/* 112 */ /***/ function(module, exports, __webpack_require__) { - var arrayPush = __webpack_require__(108), + var arrayPush = __webpack_require__(107), isArguments = __webpack_require__(10), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isArrayLikeObject = __webpack_require__(32); /** @@ -9536,11 +9488,11 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = baseFlatten; + module.e = baseFlatten; /***/ }, -/* 114 */ +/* 113 */ /***/ function(module, exports, __webpack_require__) { var baseFor = __webpack_require__(50), @@ -9558,11 +9510,11 @@ return /******/ (function(modules) { // webpackBootstrap return object == null ? object : baseFor(object, iteratee, keysIn); } - module.exports = baseForIn; + module.e = baseForIn; /***/ }, -/* 115 */ +/* 114 */ /***/ function(module, exports, __webpack_require__) { var baseFor = __webpack_require__(50), @@ -9580,12 +9532,12 @@ return /******/ (function(modules) { // webpackBootstrap return object && baseFor(object, iteratee, keys); } - module.exports = baseForOwn; + module.e = baseForOwn; /***/ }, -/* 116 */ -/***/ function(module, exports) { +/* 115 */ +/***/ function(module, exports, __webpack_require__) { /** * The base implementation of `_.hasIn` without support for deep paths. @@ -9599,19 +9551,19 @@ return /******/ (function(modules) { // webpackBootstrap return key in Object(object); } - module.exports = baseHasIn; + module.e = baseHasIn; /***/ }, -/* 117 */ +/* 116 */ /***/ function(module, exports, __webpack_require__) { var Stack = __webpack_require__(14), equalArrays = __webpack_require__(57), - equalByTag = __webpack_require__(143), - equalObjects = __webpack_require__(144), + equalByTag = __webpack_require__(142), + equalObjects = __webpack_require__(143), getTag = __webpack_require__(58), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isHostObject = __webpack_require__(17), isTypedArray = __webpack_require__(34); @@ -9683,11 +9635,11 @@ return /******/ (function(modules) { // webpackBootstrap return equalObjects(object, other, equalFunc, customizer, bitmask, stack); } - module.exports = baseIsEqualDeep; + module.e = baseIsEqualDeep; /***/ }, -/* 118 */ +/* 117 */ /***/ function(module, exports, __webpack_require__) { var Stack = __webpack_require__(14), @@ -9750,18 +9702,18 @@ return /******/ (function(modules) { // webpackBootstrap return true; } - module.exports = baseIsMatch; + module.e = baseIsMatch; /***/ }, -/* 119 */ +/* 118 */ /***/ function(module, exports, __webpack_require__) { - var baseMatches = __webpack_require__(122), - baseMatchesProperty = __webpack_require__(123), - identity = __webpack_require__(172), - isArray = __webpack_require__(1), - property = __webpack_require__(180); + var baseMatches = __webpack_require__(121), + baseMatchesProperty = __webpack_require__(122), + identity = __webpack_require__(171), + isArray = __webpack_require__(0), + property = __webpack_require__(179); /** * The base implementation of `_.iteratee`. @@ -9786,12 +9738,12 @@ return /******/ (function(modules) { // webpackBootstrap return property(value); } - module.exports = baseIteratee; + module.e = baseIteratee; /***/ }, -/* 120 */ -/***/ function(module, exports) { +/* 119 */ +/***/ function(module, exports, __webpack_require__) { /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeKeys = Object.keys; @@ -9808,15 +9760,15 @@ return /******/ (function(modules) { // webpackBootstrap return nativeKeys(Object(object)); } - module.exports = baseKeys; + module.e = baseKeys; /***/ }, -/* 121 */ +/* 120 */ /***/ function(module, exports, __webpack_require__) { - var Reflect = __webpack_require__(101), - iteratorToArray = __webpack_require__(157); + var Reflect = __webpack_require__(100), + iteratorToArray = __webpack_require__(156); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -9850,15 +9802,15 @@ return /******/ (function(modules) { // webpackBootstrap }; } - module.exports = baseKeysIn; + module.e = baseKeysIn; /***/ }, -/* 122 */ +/* 121 */ /***/ function(module, exports, __webpack_require__) { - var baseIsMatch = __webpack_require__(118), - getMatchData = __webpack_require__(146); + var baseIsMatch = __webpack_require__(117), + getMatchData = __webpack_require__(145); /** * The base implementation of `_.matches` which doesn't clone `source`. @@ -9886,16 +9838,16 @@ return /******/ (function(modules) { // webpackBootstrap }; } - module.exports = baseMatches; + module.e = baseMatches; /***/ }, -/* 123 */ +/* 122 */ /***/ function(module, exports, __webpack_require__) { var baseIsEqual = __webpack_require__(53), get = __webpack_require__(63), - hasIn = __webpack_require__(171); + hasIn = __webpack_require__(170); /** Used to compose bitmasks for comparison styles. */ var UNORDERED_COMPARE_FLAG = 1, @@ -9918,18 +9870,18 @@ return /******/ (function(modules) { // webpackBootstrap }; } - module.exports = baseMatchesProperty; + module.e = baseMatchesProperty; /***/ }, -/* 124 */ +/* 123 */ /***/ function(module, exports, __webpack_require__) { var Stack = __webpack_require__(14), arrayEach = __webpack_require__(42), assignMergeValue = __webpack_require__(43), - baseMergeDeep = __webpack_require__(125), - isArray = __webpack_require__(1), + baseMergeDeep = __webpack_require__(124), + isArray = __webpack_require__(0), isObject = __webpack_require__(2), isTypedArray = __webpack_require__(34), keysIn = __webpack_require__(35); @@ -9974,24 +9926,24 @@ return /******/ (function(modules) { // webpackBootstrap }); } - module.exports = baseMerge; + module.e = baseMerge; /***/ }, -/* 125 */ +/* 124 */ /***/ function(module, exports, __webpack_require__) { var assignMergeValue = __webpack_require__(43), - baseClone = __webpack_require__(111), + baseClone = __webpack_require__(110), copyArray = __webpack_require__(56), isArguments = __webpack_require__(10), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isArrayLikeObject = __webpack_require__(32), isFunction = __webpack_require__(11), isObject = __webpack_require__(2), - isPlainObject = __webpack_require__(176), + isPlainObject = __webpack_require__(175), isTypedArray = __webpack_require__(34), - toPlainObject = __webpack_require__(184); + toPlainObject = __webpack_require__(183); /** * A specialized version of `baseMerge` for arrays and objects which performs @@ -10062,11 +10014,11 @@ return /******/ (function(modules) { // webpackBootstrap assignMergeValue(object, key, newValue); } - module.exports = baseMergeDeep; + module.e = baseMergeDeep; /***/ }, -/* 126 */ +/* 125 */ /***/ function(module, exports, __webpack_require__) { var arrayReduce = __webpack_require__(28); @@ -10090,14 +10042,14 @@ return /******/ (function(modules) { // webpackBootstrap }, {}); } - module.exports = basePick; + module.e = basePick; /***/ }, -/* 127 */ +/* 126 */ /***/ function(module, exports, __webpack_require__) { - var baseForIn = __webpack_require__(114); + var baseForIn = __webpack_require__(113); /** * The base implementation of `_.pickBy` without support for iteratee shorthands. @@ -10117,11 +10069,11 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = basePickBy; + module.e = basePickBy; /***/ }, -/* 128 */ +/* 127 */ /***/ function(module, exports, __webpack_require__) { var baseGet = __webpack_require__(51); @@ -10139,12 +10091,12 @@ return /******/ (function(modules) { // webpackBootstrap }; } - module.exports = basePropertyDeep; + module.e = basePropertyDeep; /***/ }, -/* 129 */ -/***/ function(module, exports) { +/* 128 */ +/***/ function(module, exports, __webpack_require__) { /** * The base implementation of `_.slice` without an iteratee call guard. @@ -10176,12 +10128,12 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = baseSlice; + module.e = baseSlice; /***/ }, -/* 130 */ -/***/ function(module, exports) { +/* 129 */ +/***/ function(module, exports, __webpack_require__) { /** * The base implementation of `_.times` without support for iteratee shorthands @@ -10202,14 +10154,14 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = baseTimes; + module.e = baseTimes; /***/ }, -/* 131 */ +/* 130 */ /***/ function(module, exports, __webpack_require__) { - var arrayMap = __webpack_require__(107); + var arrayMap = __webpack_require__(106); /** * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array @@ -10226,12 +10178,12 @@ return /******/ (function(modules) { // webpackBootstrap }); } - module.exports = baseToPairs; + module.e = baseToPairs; /***/ }, -/* 132 */ -/***/ function(module, exports) { +/* 131 */ +/***/ function(module, exports, __webpack_require__) { /** * Checks if `value` is a global object. @@ -10244,12 +10196,12 @@ return /******/ (function(modules) { // webpackBootstrap return (value && value.Object === Object) ? value : null; } - module.exports = checkGlobal; + module.e = checkGlobal; /***/ }, -/* 133 */ -/***/ function(module, exports) { +/* 132 */ +/***/ function(module, exports, __webpack_require__) { /** * Creates a clone of `buffer`. @@ -10268,14 +10220,14 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = cloneBuffer; + module.e = cloneBuffer; /***/ }, -/* 134 */ +/* 133 */ /***/ function(module, exports, __webpack_require__) { - var addMapEntry = __webpack_require__(104), + var addMapEntry = __webpack_require__(103), arrayReduce = __webpack_require__(28), mapToArray = __webpack_require__(61); @@ -10290,12 +10242,12 @@ return /******/ (function(modules) { // webpackBootstrap return arrayReduce(mapToArray(map), addMapEntry, new map.constructor); } - module.exports = cloneMap; + module.e = cloneMap; /***/ }, -/* 135 */ -/***/ function(module, exports) { +/* 134 */ +/***/ function(module, exports, __webpack_require__) { /** Used to match `RegExp` flags from their coerced string values. */ var reFlags = /\w*$/; @@ -10313,14 +10265,14 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = cloneRegExp; + module.e = cloneRegExp; /***/ }, -/* 136 */ +/* 135 */ /***/ function(module, exports, __webpack_require__) { - var addSetEntry = __webpack_require__(105), + var addSetEntry = __webpack_require__(104), arrayReduce = __webpack_require__(28), setToArray = __webpack_require__(62); @@ -10335,11 +10287,11 @@ return /******/ (function(modules) { // webpackBootstrap return arrayReduce(setToArray(set), addSetEntry, new set.constructor); } - module.exports = cloneSet; + module.e = cloneSet; /***/ }, -/* 137 */ +/* 136 */ /***/ function(module, exports, __webpack_require__) { var Symbol = __webpack_require__(27); @@ -10359,11 +10311,11 @@ return /******/ (function(modules) { // webpackBootstrap return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; } - module.exports = cloneSymbol; + module.e = cloneSymbol; /***/ }, -/* 138 */ +/* 137 */ /***/ function(module, exports, __webpack_require__) { var cloneArrayBuffer = __webpack_require__(55); @@ -10381,11 +10333,11 @@ return /******/ (function(modules) { // webpackBootstrap return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); } - module.exports = cloneTypedArray; + module.e = cloneTypedArray; /***/ }, -/* 139 */ +/* 138 */ /***/ function(module, exports, __webpack_require__) { var assignValue = __webpack_require__(44); @@ -10419,15 +10371,15 @@ return /******/ (function(modules) { // webpackBootstrap return object; } - module.exports = copyObjectWith; + module.e = copyObjectWith; /***/ }, -/* 140 */ +/* 139 */ /***/ function(module, exports, __webpack_require__) { var copyObject = __webpack_require__(29), - getSymbols = __webpack_require__(147); + getSymbols = __webpack_require__(146); /** * Copies own symbol properties of `source` to `object`. @@ -10441,14 +10393,14 @@ return /******/ (function(modules) { // webpackBootstrap return copyObject(source, getSymbols(source), object); } - module.exports = copySymbols; + module.e = copySymbols; /***/ }, -/* 141 */ +/* 140 */ /***/ function(module, exports, __webpack_require__) { - var isIterateeCall = __webpack_require__(155), + var isIterateeCall = __webpack_require__(154), rest = __webpack_require__(65); /** @@ -10484,12 +10436,12 @@ return /******/ (function(modules) { // webpackBootstrap }); } - module.exports = createAssigner; + module.e = createAssigner; /***/ }, -/* 142 */ -/***/ function(module, exports) { +/* 141 */ +/***/ function(module, exports, __webpack_require__) { /** * Creates a base function for methods like `_.forIn`. @@ -10515,11 +10467,11 @@ return /******/ (function(modules) { // webpackBootstrap }; } - module.exports = createBaseFor; + module.e = createBaseFor; /***/ }, -/* 143 */ +/* 142 */ /***/ function(module, exports, __webpack_require__) { var Symbol = __webpack_require__(27), @@ -10620,11 +10572,11 @@ return /******/ (function(modules) { // webpackBootstrap return false; } - module.exports = equalByTag; + module.e = equalByTag; /***/ }, -/* 144 */ +/* 143 */ /***/ function(module, exports, __webpack_require__) { var baseHas = __webpack_require__(52), @@ -10708,11 +10660,11 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = equalObjects; + module.e = equalObjects; /***/ }, -/* 145 */ +/* 144 */ /***/ function(module, exports, __webpack_require__) { var baseProperty = __webpack_require__(54); @@ -10729,15 +10681,15 @@ return /******/ (function(modules) { // webpackBootstrap */ var getLength = baseProperty('length'); - module.exports = getLength; + module.e = getLength; /***/ }, -/* 146 */ +/* 145 */ /***/ function(module, exports, __webpack_require__) { - var isStrictComparable = __webpack_require__(156), - toPairs = __webpack_require__(183); + var isStrictComparable = __webpack_require__(155), + toPairs = __webpack_require__(182); /** * Gets the property names, values, and compare flags of `object`. @@ -10756,12 +10708,12 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = getMatchData; + module.e = getMatchData; /***/ }, -/* 147 */ -/***/ function(module, exports) { +/* 146 */ +/***/ function(module, exports, __webpack_require__) { /** Built-in value references. */ var getOwnPropertySymbols = Object.getOwnPropertySymbols; @@ -10777,22 +10729,22 @@ return /******/ (function(modules) { // webpackBootstrap return []; }; - module.exports = getSymbols; + module.e = getSymbols; /***/ }, -/* 148 */ +/* 147 */ /***/ function(module, exports, __webpack_require__) { var baseCastPath = __webpack_require__(49), isArguments = __webpack_require__(10), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isIndex = __webpack_require__(18), isKey = __webpack_require__(30), isLength = __webpack_require__(23), isString = __webpack_require__(33), - last = __webpack_require__(178), - parent = __webpack_require__(163); + last = __webpack_require__(177), + parent = __webpack_require__(162); /** * Checks if `path` exists on `object`. @@ -10823,11 +10775,11 @@ return /******/ (function(modules) { // webpackBootstrap ); } - module.exports = hasPath; + module.e = hasPath; /***/ }, -/* 149 */ +/* 148 */ /***/ function(module, exports, __webpack_require__) { var hashHas = __webpack_require__(59); @@ -10844,11 +10796,11 @@ return /******/ (function(modules) { // webpackBootstrap return hashHas(hash, key) && delete hash[key]; } - module.exports = hashDelete; + module.e = hashDelete; /***/ }, -/* 150 */ +/* 149 */ /***/ function(module, exports, __webpack_require__) { var nativeCreate = __webpack_require__(20); @@ -10878,11 +10830,11 @@ return /******/ (function(modules) { // webpackBootstrap return hasOwnProperty.call(hash, key) ? hash[key] : undefined; } - module.exports = hashGet; + module.e = hashGet; /***/ }, -/* 151 */ +/* 150 */ /***/ function(module, exports, __webpack_require__) { var nativeCreate = __webpack_require__(20); @@ -10902,12 +10854,12 @@ return /******/ (function(modules) { // webpackBootstrap hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; } - module.exports = hashSet; + module.e = hashSet; /***/ }, -/* 152 */ -/***/ function(module, exports) { +/* 151 */ +/***/ function(module, exports, __webpack_require__) { /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -10934,19 +10886,19 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = initCloneArray; + module.e = initCloneArray; /***/ }, -/* 153 */ +/* 152 */ /***/ function(module, exports, __webpack_require__) { var cloneArrayBuffer = __webpack_require__(55), - cloneMap = __webpack_require__(134), - cloneRegExp = __webpack_require__(135), - cloneSet = __webpack_require__(136), - cloneSymbol = __webpack_require__(137), - cloneTypedArray = __webpack_require__(138); + cloneMap = __webpack_require__(133), + cloneRegExp = __webpack_require__(134), + cloneSet = __webpack_require__(135), + cloneSymbol = __webpack_require__(136), + cloneTypedArray = __webpack_require__(137); /** `Object#toString` result references. */ var boolTag = '[object Boolean]', @@ -11014,14 +10966,14 @@ return /******/ (function(modules) { // webpackBootstrap } } - module.exports = initCloneByTag; + module.e = initCloneByTag; /***/ }, -/* 154 */ +/* 153 */ /***/ function(module, exports, __webpack_require__) { - var baseCreate = __webpack_require__(112), + var baseCreate = __webpack_require__(111), isPrototype = __webpack_require__(31); /** Built-in value references. */ @@ -11040,11 +10992,11 @@ return /******/ (function(modules) { // webpackBootstrap : {}; } - module.exports = initCloneObject; + module.e = initCloneObject; /***/ }, -/* 155 */ +/* 154 */ /***/ function(module, exports, __webpack_require__) { var eq = __webpack_require__(21), @@ -11074,11 +11026,11 @@ return /******/ (function(modules) { // webpackBootstrap return false; } - module.exports = isIterateeCall; + module.e = isIterateeCall; /***/ }, -/* 156 */ +/* 155 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(2); @@ -11095,12 +11047,12 @@ return /******/ (function(modules) { // webpackBootstrap return value === value && !isObject(value); } - module.exports = isStrictComparable; + module.e = isStrictComparable; /***/ }, -/* 157 */ -/***/ function(module, exports) { +/* 156 */ +/***/ function(module, exports, __webpack_require__) { /** * Converts `iterator` to an array. @@ -11119,14 +11071,14 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = iteratorToArray; + module.e = iteratorToArray; /***/ }, -/* 158 */ +/* 157 */ /***/ function(module, exports, __webpack_require__) { - var Hash = __webpack_require__(99), + var Hash = __webpack_require__(98), Map = __webpack_require__(6); /** @@ -11144,16 +11096,16 @@ return /******/ (function(modules) { // webpackBootstrap }; } - module.exports = mapClear; + module.e = mapClear; /***/ }, -/* 159 */ +/* 158 */ /***/ function(module, exports, __webpack_require__) { var Map = __webpack_require__(6), assocDelete = __webpack_require__(45), - hashDelete = __webpack_require__(149), + hashDelete = __webpack_require__(148), isKeyable = __webpack_require__(19); /** @@ -11173,16 +11125,16 @@ return /******/ (function(modules) { // webpackBootstrap return Map ? data.map['delete'](key) : assocDelete(data.map, key); } - module.exports = mapDelete; + module.e = mapDelete; /***/ }, -/* 160 */ +/* 159 */ /***/ function(module, exports, __webpack_require__) { var Map = __webpack_require__(6), assocGet = __webpack_require__(46), - hashGet = __webpack_require__(150), + hashGet = __webpack_require__(149), isKeyable = __webpack_require__(19); /** @@ -11202,11 +11154,11 @@ return /******/ (function(modules) { // webpackBootstrap return Map ? data.map.get(key) : assocGet(data.map, key); } - module.exports = mapGet; + module.e = mapGet; /***/ }, -/* 161 */ +/* 160 */ /***/ function(module, exports, __webpack_require__) { var Map = __webpack_require__(6), @@ -11231,16 +11183,16 @@ return /******/ (function(modules) { // webpackBootstrap return Map ? data.map.has(key) : assocHas(data.map, key); } - module.exports = mapHas; + module.e = mapHas; /***/ }, -/* 162 */ +/* 161 */ /***/ function(module, exports, __webpack_require__) { var Map = __webpack_require__(6), assocSet = __webpack_require__(48), - hashSet = __webpack_require__(151), + hashSet = __webpack_require__(150), isKeyable = __webpack_require__(19); /** @@ -11265,14 +11217,14 @@ return /******/ (function(modules) { // webpackBootstrap return this; } - module.exports = mapSet; + module.e = mapSet; /***/ }, -/* 163 */ +/* 162 */ /***/ function(module, exports, __webpack_require__) { - var baseSlice = __webpack_require__(129), + var baseSlice = __webpack_require__(128), get = __webpack_require__(63); /** @@ -11287,12 +11239,12 @@ return /******/ (function(modules) { // webpackBootstrap return path.length == 1 ? object : get(object, baseSlice(path, 0, -1)); } - module.exports = parent; + module.e = parent; /***/ }, -/* 164 */ -/***/ function(module, exports) { +/* 163 */ +/***/ function(module, exports, __webpack_require__) { /** * Removes all key-value entries from the stack. @@ -11305,11 +11257,11 @@ return /******/ (function(modules) { // webpackBootstrap this.__data__ = { 'array': [], 'map': null }; } - module.exports = stackClear; + module.e = stackClear; /***/ }, -/* 165 */ +/* 164 */ /***/ function(module, exports, __webpack_require__) { var assocDelete = __webpack_require__(45); @@ -11330,11 +11282,11 @@ return /******/ (function(modules) { // webpackBootstrap return array ? assocDelete(array, key) : data.map['delete'](key); } - module.exports = stackDelete; + module.e = stackDelete; /***/ }, -/* 166 */ +/* 165 */ /***/ function(module, exports, __webpack_require__) { var assocGet = __webpack_require__(46); @@ -11355,11 +11307,11 @@ return /******/ (function(modules) { // webpackBootstrap return array ? assocGet(array, key) : data.map.get(key); } - module.exports = stackGet; + module.e = stackGet; /***/ }, -/* 167 */ +/* 166 */ /***/ function(module, exports, __webpack_require__) { var assocHas = __webpack_require__(47); @@ -11380,14 +11332,14 @@ return /******/ (function(modules) { // webpackBootstrap return array ? assocHas(array, key) : data.map.has(key); } - module.exports = stackHas; + module.e = stackHas; /***/ }, -/* 168 */ +/* 167 */ /***/ function(module, exports, __webpack_require__) { - var MapCache = __webpack_require__(100), + var MapCache = __webpack_require__(99), assocSet = __webpack_require__(48); /** Used as the size to enable large array optimizations. */ @@ -11422,14 +11374,14 @@ return /******/ (function(modules) { // webpackBootstrap return this; } - module.exports = stackSet; + module.e = stackSet; /***/ }, -/* 169 */ +/* 168 */ /***/ function(module, exports, __webpack_require__) { - var toString = __webpack_require__(185); + var toString = __webpack_require__(184); /** Used to match property names within property paths. */ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g; @@ -11452,12 +11404,12 @@ return /******/ (function(modules) { // webpackBootstrap return result; } - module.exports = stringToPath; + module.e = stringToPath; /***/ }, -/* 170 */ -/***/ function(module, exports) { +/* 169 */ +/***/ function(module, exports, __webpack_require__) { /** * Creates a function that returns `value`. @@ -11481,15 +11433,15 @@ return /******/ (function(modules) { // webpackBootstrap }; } - module.exports = constant; + module.e = constant; /***/ }, -/* 171 */ +/* 170 */ /***/ function(module, exports, __webpack_require__) { - var baseHasIn = __webpack_require__(116), - hasPath = __webpack_require__(148); + var baseHasIn = __webpack_require__(115), + hasPath = __webpack_require__(147); /** * Checks if `path` is a direct or inherited property of `object`. @@ -11520,12 +11472,12 @@ return /******/ (function(modules) { // webpackBootstrap return hasPath(object, path, baseHasIn); } - module.exports = hasIn; + module.e = hasIn; /***/ }, -/* 172 */ -/***/ function(module, exports) { +/* 171 */ +/***/ function(module, exports, __webpack_require__) { /** * This method returns the first argument given to it. @@ -11546,14 +11498,14 @@ return /******/ (function(modules) { // webpackBootstrap return value; } - module.exports = identity; + module.e = identity; /***/ }, -/* 173 */ +/* 172 */ /***/ function(module, exports, __webpack_require__) { - /* WEBPACK VAR INJECTION */(function(module) {var constant = __webpack_require__(170), + /* WEBPACK VAR INJECTION */(function(module) {var constant = __webpack_require__(169), root = __webpack_require__(3); /** Used to determine if values are of the language type `Object`. */ @@ -11600,16 +11552,16 @@ return /******/ (function(modules) { // webpackBootstrap return value instanceof Buffer; }; - module.exports = isBuffer; + module.e = isBuffer; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(67)(module))) + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(66)(module))) /***/ }, -/* 174 */ +/* 173 */ /***/ function(module, exports, __webpack_require__) { var isArguments = __webpack_require__(10), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isArrayLike = __webpack_require__(22), isFunction = __webpack_require__(11), isString = __webpack_require__(33); @@ -11661,11 +11613,11 @@ return /******/ (function(modules) { // webpackBootstrap return true; } - module.exports = isEmpty; + module.e = isEmpty; /***/ }, -/* 175 */ +/* 174 */ /***/ function(module, exports, __webpack_require__) { var isFunction = __webpack_require__(11), @@ -11720,11 +11672,11 @@ return /******/ (function(modules) { // webpackBootstrap (isHostObject(value) ? reIsNative : reIsHostCtor).test(value); } - module.exports = isNative; + module.e = isNative; /***/ }, -/* 176 */ +/* 175 */ /***/ function(module, exports, __webpack_require__) { var isHostObject = __webpack_require__(17), @@ -11792,11 +11744,11 @@ return /******/ (function(modules) { // webpackBootstrap Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString); } - module.exports = isPlainObject; + module.e = isPlainObject; /***/ }, -/* 177 */ +/* 176 */ /***/ function(module, exports, __webpack_require__) { var isObjectLike = __webpack_require__(4); @@ -11834,12 +11786,12 @@ return /******/ (function(modules) { // webpackBootstrap (isObjectLike(value) && objectToString.call(value) == symbolTag); } - module.exports = isSymbol; + module.e = isSymbol; /***/ }, -/* 178 */ -/***/ function(module, exports) { +/* 177 */ +/***/ function(module, exports, __webpack_require__) { /** * Gets the last element of `array`. @@ -11859,15 +11811,15 @@ return /******/ (function(modules) { // webpackBootstrap return length ? array[length - 1] : undefined; } - module.exports = last; + module.e = last; /***/ }, -/* 179 */ +/* 178 */ /***/ function(module, exports, __webpack_require__) { - var baseIteratee = __webpack_require__(119), - basePickBy = __webpack_require__(127); + var baseIteratee = __webpack_require__(118), + basePickBy = __webpack_require__(126); /** * The opposite of `_.pickBy`; this method creates an object composed of @@ -11895,15 +11847,15 @@ return /******/ (function(modules) { // webpackBootstrap }); } - module.exports = omitBy; + module.e = omitBy; /***/ }, -/* 180 */ +/* 179 */ /***/ function(module, exports, __webpack_require__) { var baseProperty = __webpack_require__(54), - basePropertyDeep = __webpack_require__(128), + basePropertyDeep = __webpack_require__(127), isKey = __webpack_require__(30); /** @@ -11931,14 +11883,14 @@ return /******/ (function(modules) { // webpackBootstrap return isKey(path) ? baseProperty(path) : basePropertyDeep(path); } - module.exports = property; + module.e = property; /***/ }, -/* 181 */ +/* 180 */ /***/ function(module, exports, __webpack_require__) { - var toNumber = __webpack_require__(182); + var toNumber = __webpack_require__(181); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0, @@ -11981,11 +11933,11 @@ return /******/ (function(modules) { // webpackBootstrap return value === value ? (remainder ? value - remainder : value) : 0; } - module.exports = toInteger; + module.e = toInteger; /***/ }, -/* 182 */ +/* 181 */ /***/ function(module, exports, __webpack_require__) { var isFunction = __webpack_require__(11), @@ -12046,14 +11998,14 @@ return /******/ (function(modules) { // webpackBootstrap : (reIsBadHex.test(value) ? NAN : +value); } - module.exports = toNumber; + module.e = toNumber; /***/ }, -/* 183 */ +/* 182 */ /***/ function(module, exports, __webpack_require__) { - var baseToPairs = __webpack_require__(131), + var baseToPairs = __webpack_require__(130), keys = __webpack_require__(24); /** @@ -12081,11 +12033,11 @@ return /******/ (function(modules) { // webpackBootstrap return baseToPairs(object, keys(object)); } - module.exports = toPairs; + module.e = toPairs; /***/ }, -/* 184 */ +/* 183 */ /***/ function(module, exports, __webpack_require__) { var copyObject = __webpack_require__(29), @@ -12118,15 +12070,15 @@ return /******/ (function(modules) { // webpackBootstrap return copyObject(value, keysIn(value)); } - module.exports = toPlainObject; + module.e = toPlainObject; /***/ }, -/* 185 */ +/* 184 */ /***/ function(module, exports, __webpack_require__) { var Symbol = __webpack_require__(27), - isSymbol = __webpack_require__(177); + isSymbol = __webpack_require__(176); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; @@ -12170,14 +12122,13 @@ return /******/ (function(modules) { // webpackBootstrap return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; } - module.exports = toString; + module.e = toString; /***/ }, -/* 186 */ -/***/ function(module, exports) { +/* 185 */ +/***/ function(module, exports, __webpack_require__) { - "use strict"; /* eslint-env node */ 'use strict'; @@ -12377,7 +12328,8 @@ return /******/ (function(modules) { // webpackBootstrap if (codec.rtcpFeedback && codec.rtcpFeedback.length) { // FIXME: special handling for trr-int? codec.rtcpFeedback.forEach(function(fb) { - lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + ' ' + fb.parameter + + lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + + (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') + '\r\n'; }); } @@ -12667,14 +12619,13 @@ return /******/ (function(modules) { // webpackBootstrap }; // Expose public methods. - module.exports = SDPUtils; + module.e = SDPUtils; /***/ }, -/* 187 */ +/* 186 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. * @@ -12689,24 +12640,24 @@ return /******/ (function(modules) { // webpackBootstrap // Shimming starts here. (function() { // Utils. - var logging = __webpack_require__(0).log; - var browserDetails = __webpack_require__(0).browserDetails; + var logging = __webpack_require__(1).log; + var browserDetails = __webpack_require__(1).browserDetails; // Export to the adapter global object visible in the browser. - module.exports.browserDetails = browserDetails; - module.exports.extractVersion = __webpack_require__(0).extractVersion; - module.exports.disableLog = __webpack_require__(0).disableLog; + module.e.browserDetails = browserDetails; + module.e.extractVersion = __webpack_require__(1).extractVersion; + module.e.disableLog = __webpack_require__(1).disableLog; - // Comment out the line below if you want logging to occur, including logging + // Uncomment the line below if you want logging to occur, including logging // for the switch statement below. Can also be turned on in the browser via // adapter.disableLog(false), but then logging from the switch statement below // will not appear. - __webpack_require__(0).disableLog(true); + // require('./utils').disableLog(false); // Browser shims. - var chromeShim = __webpack_require__(188) || null; - var edgeShim = __webpack_require__(190) || null; - var firefoxShim = __webpack_require__(192) || null; - var safariShim = __webpack_require__(194) || null; + var chromeShim = __webpack_require__(187) || null; + var edgeShim = __webpack_require__(189) || null; + var firefoxShim = __webpack_require__(191) || null; + var safariShim = __webpack_require__(193) || null; // Shim browser if found. switch (browserDetails.browser) { @@ -12718,7 +12669,7 @@ return /******/ (function(modules) { // webpackBootstrap } logging('adapter.js shimming chrome.'); // Export to the adapter global object visible in the browser. - module.exports.browserShim = chromeShim; + module.e.browserShim = chromeShim; chromeShim.shimGetUserMedia(); chromeShim.shimMediaStream(); @@ -12733,7 +12684,7 @@ return /******/ (function(modules) { // webpackBootstrap } logging('adapter.js shimming firefox.'); // Export to the adapter global object visible in the browser. - module.exports.browserShim = firefoxShim; + module.e.browserShim = firefoxShim; firefoxShim.shimGetUserMedia(); firefoxShim.shimSourceObject(); @@ -12747,7 +12698,7 @@ return /******/ (function(modules) { // webpackBootstrap } logging('adapter.js shimming edge.'); // Export to the adapter global object visible in the browser. - module.exports.browserShim = edgeShim; + module.e.browserShim = edgeShim; edgeShim.shimGetUserMedia(); edgeShim.shimPeerConnection(); @@ -12759,7 +12710,7 @@ return /******/ (function(modules) { // webpackBootstrap } logging('adapter.js shimming safari.'); // Export to the adapter global object visible in the browser. - module.exports.browserShim = safariShim; + module.e.browserShim = safariShim; safariShim.shimGetUserMedia(); break; @@ -12770,10 +12721,9 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 188 */ +/* 187 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. @@ -12784,8 +12734,8 @@ return /******/ (function(modules) { // webpackBootstrap */ /* eslint-env node */ 'use strict'; - var logging = __webpack_require__(0).log; - var browserDetails = __webpack_require__(0).browserDetails; + var logging = __webpack_require__(1).log; + var browserDetails = __webpack_require__(1).browserDetails; var chromeShim = { shimMediaStream: function() { @@ -13004,6 +12954,14 @@ return /******/ (function(modules) { // webpackBootstrap }); } + // support for addIceCandidate(null) + var nativeAddIceCandidate = + RTCPeerConnection.prototype.addIceCandidate; + RTCPeerConnection.prototype.addIceCandidate = function() { + return arguments[0] === null ? Promise.resolve() + : nativeAddIceCandidate.apply(this, arguments); + }; + // shim implicit creation of RTCSessionDescription/RTCIceCandidate ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'] .forEach(function(method) { @@ -13040,22 +12998,21 @@ return /******/ (function(modules) { // webpackBootstrap // Expose public methods. - module.exports = { + module.e = { shimMediaStream: chromeShim.shimMediaStream, shimOnTrack: chromeShim.shimOnTrack, shimSourceObject: chromeShim.shimSourceObject, shimPeerConnection: chromeShim.shimPeerConnection, - shimGetUserMedia: __webpack_require__(189), + shimGetUserMedia: __webpack_require__(188), attachMediaStream: chromeShim.attachMediaStream, reattachMediaStream: chromeShim.reattachMediaStream }; /***/ }, -/* 189 */ +/* 188 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. * @@ -13065,10 +13022,10 @@ return /******/ (function(modules) { // webpackBootstrap */ /* eslint-env node */ 'use strict'; - var logging = __webpack_require__(0).log; + var logging = __webpack_require__(1).log; // Expose public methods. - module.exports = function() { + module.e = function() { var constraintsToChrome_ = function(c) { if (typeof c !== 'object' || c.mandatory || c.optional) { return c; @@ -13248,10 +13205,9 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 190 */ +/* 189 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. * @@ -13262,8 +13218,8 @@ return /******/ (function(modules) { // webpackBootstrap /* eslint-env node */ 'use strict'; - var SDPUtils = __webpack_require__(186); - var logging = __webpack_require__(0).log; + var SDPUtils = __webpack_require__(185); + var logging = __webpack_require__(1).log; var edgeShim = { shimPeerConnection: function() { @@ -14159,38 +14115,44 @@ return /******/ (function(modules) { // webpackBootstrap }; window.RTCPeerConnection.prototype.addIceCandidate = function(candidate) { - var mLineIndex = candidate.sdpMLineIndex; - if (candidate.sdpMid) { - for (var i = 0; i < this.transceivers.length; i++) { - if (this.transceivers[i].mid === candidate.sdpMid) { - mLineIndex = i; - break; + if (candidate === null) { + this.transceivers.forEach(function(transceiver) { + transceiver.iceTransport.addIceCandidate({}); + }); + } else { + var mLineIndex = candidate.sdpMLineIndex; + if (candidate.sdpMid) { + for (var i = 0; i < this.transceivers.length; i++) { + if (this.transceivers[i].mid === candidate.sdpMid) { + mLineIndex = i; + break; + } } } - } - var transceiver = this.transceivers[mLineIndex]; - if (transceiver) { - var cand = Object.keys(candidate.candidate).length > 0 ? - SDPUtils.parseCandidate(candidate.candidate) : {}; - // Ignore Chrome's invalid candidates since Edge does not like them. - if (cand.protocol === 'tcp' && cand.port === 0) { - return; - } - // Ignore RTCP candidates, we assume RTCP-MUX. - if (cand.component !== '1') { - return; - } - // A dirty hack to make samples work. - if (cand.type === 'endOfCandidates') { - cand = {}; - } - transceiver.iceTransport.addRemoteCandidate(cand); + var transceiver = this.transceivers[mLineIndex]; + if (transceiver) { + var cand = Object.keys(candidate.candidate).length > 0 ? + SDPUtils.parseCandidate(candidate.candidate) : {}; + // Ignore Chrome's invalid candidates since Edge does not like them. + if (cand.protocol === 'tcp' && cand.port === 0) { + return; + } + // Ignore RTCP candidates, we assume RTCP-MUX. + if (cand.component !== '1') { + return; + } + // A dirty hack to make samples work. + if (cand.type === 'endOfCandidates') { + cand = {}; + } + transceiver.iceTransport.addRemoteCandidate(cand); - // update the remoteDescription. - var sections = SDPUtils.splitSections(this.remoteDescription.sdp); - sections[mLineIndex + 1] += (cand.type ? candidate.candidate.trim() - : 'a=end-of-candidates') + '\r\n'; - this.remoteDescription.sdp = sections.join(''); + // update the remoteDescription. + var sections = SDPUtils.splitSections(this.remoteDescription.sdp); + sections[mLineIndex + 1] += (cand.type ? candidate.candidate.trim() + : 'a=end-of-candidates') + '\r\n'; + this.remoteDescription.sdp = sections.join(''); + } } if (arguments.length > 1 && typeof arguments[1] === 'function') { window.setTimeout(arguments[1], 0); @@ -14242,19 +14204,18 @@ return /******/ (function(modules) { // webpackBootstrap }; // Expose public methods. - module.exports = { + module.e = { shimPeerConnection: edgeShim.shimPeerConnection, - shimGetUserMedia: __webpack_require__(191), + shimGetUserMedia: __webpack_require__(190), attachMediaStream: edgeShim.attachMediaStream, reattachMediaStream: edgeShim.reattachMediaStream }; /***/ }, -/* 191 */ -/***/ function(module, exports) { +/* 190 */ +/***/ function(module, exports, __webpack_require__) { - "use strict"; /* * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. * @@ -14266,7 +14227,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; // Expose public methods. - module.exports = function() { + module.e = function() { var shimError_ = function(e) { return { name: {PermissionDeniedError: 'NotAllowedError'}[e.name] || e.name, @@ -14290,10 +14251,9 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 192 */ +/* 191 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. * @@ -14304,8 +14264,8 @@ return /******/ (function(modules) { // webpackBootstrap /* eslint-env node */ 'use strict'; - var logging = __webpack_require__(0).log; - var browserDetails = __webpack_require__(0).browserDetails; + var logging = __webpack_require__(1).log; + var browserDetails = __webpack_require__(1).browserDetails; var firefoxShim = { shimOnTrack: function() { @@ -14414,6 +14374,14 @@ return /******/ (function(modules) { // webpackBootstrap }; }); + // support for addIceCandidate(null) + var nativeAddIceCandidate = + RTCPeerConnection.prototype.addIceCandidate; + RTCPeerConnection.prototype.addIceCandidate = function() { + return arguments[0] === null ? Promise.resolve() + : nativeAddIceCandidate.apply(this, arguments); + }; + // shim getStats with maplike support var makeMapStats = function(stats) { var map = new Map(); @@ -14550,21 +14518,20 @@ return /******/ (function(modules) { // webpackBootstrap }; // Expose public methods. - module.exports = { + module.e = { shimOnTrack: firefoxShim.shimOnTrack, shimSourceObject: firefoxShim.shimSourceObject, shimPeerConnection: firefoxShim.shimPeerConnection, - shimGetUserMedia: __webpack_require__(193), + shimGetUserMedia: __webpack_require__(192), attachMediaStream: firefoxShim.attachMediaStream, reattachMediaStream: firefoxShim.reattachMediaStream }; /***/ }, -/* 193 */ +/* 192 */ /***/ function(module, exports, __webpack_require__) { - "use strict"; /* * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. * @@ -14575,26 +14542,27 @@ return /******/ (function(modules) { // webpackBootstrap /* eslint-env node */ 'use strict'; - var logging = __webpack_require__(0).log; - var browserDetails = __webpack_require__(0).browserDetails; + var logging = __webpack_require__(1).log; + var browserDetails = __webpack_require__(1).browserDetails; // Expose public methods. - module.exports = function() { - var shimError_ = e => ({ - name: { - SecurityError: 'NotAllowedError', - PermissionDeniedError: 'NotAllowedError' - }[e.name] || e.name, - message: { - 'The operation is insecure.': 'The request is not allowed by the user ' + - 'agent or the platform in the current context.' - }[e.message] || e.message, - constraint: e.constraint, - toString: function() { - return this.name + (this.message && ': ') + this.message; - } - }); - + module.e = function() { + var shimError_ = function(e) { + return { + name: { + SecurityError: 'NotAllowedError', + PermissionDeniedError: 'NotAllowedError' + }[e.name] || e.name, + message: { + 'The operation is insecure.': 'The request is not allowed by the ' + + 'user agent or the platform in the current context.' + }[e.message] || e.message, + constraint: e.constraint, + toString: function() { + return this.name + (this.message && ': ') + this.message; + } + }; + }; // getUserMedia constraints shim. var getUserMedia_ = function(constraints, onSuccess, onError) { @@ -14652,8 +14620,9 @@ return /******/ (function(modules) { // webpackBootstrap } logging('ff37: ' + JSON.stringify(constraints)); } - return navigator.mozGetUserMedia(constraints, onSuccess, - e => onError(shimError_(e))); + return navigator.mozGetUserMedia(constraints, onSuccess, function(e) { + onError(shimError_(e)); + }); }; navigator.getUserMedia = getUserMedia_; @@ -14699,17 +14668,19 @@ return /******/ (function(modules) { // webpackBootstrap if (browserDetails.version < 49) { var origGetUserMedia = navigator.mediaDevices.getUserMedia. bind(navigator.mediaDevices); - navigator.mediaDevices.getUserMedia = c => - origGetUserMedia(c).catch(e => Promise.reject(shimError_(e))); + navigator.mediaDevices.getUserMedia = function(c) { + return origGetUserMedia(c).catch(function(e) { + return Promise.reject(shimError_(e)); + }); + }; } }; /***/ }, -/* 194 */ -/***/ function(module, exports) { +/* 193 */ +/***/ function(module, exports, __webpack_require__) { - "use strict"; /* * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. * @@ -14736,7 +14707,7 @@ return /******/ (function(modules) { // webpackBootstrap }; // Expose public methods. - module.exports = { + module.e = { shimGetUserMedia: safariShim.shimGetUserMedia // TODO // shimOnTrack: safariShim.shimOnTrack, @@ -14747,10 +14718,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 195 */ +/* 194 */ /***/ function(module, exports, __webpack_require__) { - module.exports = __webpack_require__(68); + module.e = __webpack_require__(67); /***/ } diff --git a/dist/quagga.js.map b/dist/quagga.js.map index 14faf61..6e49399 100644 --- a/dist/quagga.js.map +++ b/dist/quagga.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/myModuleDefinition","webpack:///webpack/bootstrap 63e18667171d67c5f9ac","webpack:///./~/webrtc-adapter/src/js/utils.js","webpack:///./~/lodash/isArray.js","webpack:///./~/lodash/isObject.js","webpack:///./~/lodash/_root.js","webpack:///./~/lodash/isObjectLike.js","webpack:///./src/reader/ean_reader.js","webpack:///./~/lodash/_Map.js","webpack:///./src/common/image_debug.js","webpack:///./src/reader/barcode_reader.js","webpack:///./~/gl-vec2/clone.js","webpack:///./~/lodash/isArguments.js","webpack:///./~/lodash/isFunction.js","webpack:///./~/lodash/merge.js","webpack:///./src/common/array_helper.js","webpack:///./~/lodash/_Stack.js","webpack:///./~/lodash/_assocIndexOf.js","webpack:///./~/lodash/_getNative.js","webpack:///./~/lodash/_isHostObject.js","webpack:///./~/lodash/_isIndex.js","webpack:///./~/lodash/_isKeyable.js","webpack:///./~/lodash/_nativeCreate.js","webpack:///./~/lodash/eq.js","webpack:///./~/lodash/isArrayLike.js","webpack:///./~/lodash/isLength.js","webpack:///./~/lodash/keys.js","webpack:///./src/common/cv_utils.js","webpack:///./src/common/image_wrapper.js","webpack:///./~/lodash/_Symbol.js","webpack:///./~/lodash/_arrayReduce.js","webpack:///./~/lodash/_copyObject.js","webpack:///./~/lodash/_isKey.js","webpack:///./~/lodash/_isPrototype.js","webpack:///./~/lodash/isArrayLikeObject.js","webpack:///./~/lodash/isString.js","webpack:///./~/lodash/isTypedArray.js","webpack:///./~/lodash/keysIn.js","webpack:///./src/analytics/result_collector.js","webpack:///./src/config/config.js","webpack:///./src/locator/tracer.js","webpack:///./src/reader/code_39_reader.js","webpack:///./~/gl-vec2/dot.js","webpack:///./~/lodash/_Uint8Array.js","webpack:///./~/lodash/_arrayEach.js","webpack:///./~/lodash/_assignMergeValue.js","webpack:///./~/lodash/_assignValue.js","webpack:///./~/lodash/_assocDelete.js","webpack:///./~/lodash/_assocGet.js","webpack:///./~/lodash/_assocHas.js","webpack:///./~/lodash/_assocSet.js","webpack:///./~/lodash/_baseCastPath.js","webpack:///./~/lodash/_baseFor.js","webpack:///./~/lodash/_baseGet.js","webpack:///./~/lodash/_baseHas.js","webpack:///./~/lodash/_baseIsEqual.js","webpack:///./~/lodash/_baseProperty.js","webpack:///./~/lodash/_cloneArrayBuffer.js","webpack:///./~/lodash/_copyArray.js","webpack:///./~/lodash/_equalArrays.js","webpack:///./~/lodash/_getTag.js","webpack:///./~/lodash/_hashHas.js","webpack:///./~/lodash/_indexKeys.js","webpack:///./~/lodash/_mapToArray.js","webpack:///./~/lodash/_setToArray.js","webpack:///./~/lodash/get.js","webpack:///./~/lodash/pick.js","webpack:///./~/lodash/rest.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/quagga.js","webpack:///./src/common/cluster.js","webpack:///./src/common/events.js","webpack:///./src/common/subImage.js","webpack:///./src/common/typedefs.js","webpack:///./src/config/config.dev.js","webpack:///./src/decoder/barcode_decoder.js","webpack:///./src/decoder/bresenham.js","webpack:///./src/input/camera_access.js","webpack:///./src/input/frame_grabber.js","webpack:///./src/input/image_loader.js","webpack:///./src/input/input_stream.js","webpack:///./src/locator/barcode_locator.js","webpack:///./src/locator/rasterizer.js","webpack:///./src/locator/skeletonizer.js","webpack:///./src/reader/codabar_reader.js","webpack:///./src/reader/code_128_reader.js","webpack:///./src/reader/code_39_vin_reader.js","webpack:///./src/reader/ean_2_reader.js","webpack:///./src/reader/ean_5_reader.js","webpack:///./src/reader/ean_8_reader.js","webpack:///./src/reader/i2of5_reader.js","webpack:///./src/reader/upc_e_reader.js","webpack:///./src/reader/upc_reader.js","webpack:///./src/scanner.js","webpack:///./~/gl-mat2/copy.js","webpack:///./~/gl-mat2/create.js","webpack:///./~/gl-mat2/invert.js","webpack:///./~/gl-vec2/scale.js","webpack:///./~/gl-vec2/transformMat2.js","webpack:///./~/gl-vec3/clone.js","webpack:///./~/lodash/_Hash.js","webpack:///./~/lodash/_MapCache.js","webpack:///./~/lodash/_Reflect.js","webpack:///./~/lodash/_Set.js","webpack:///./~/lodash/_WeakMap.js","webpack:///./~/lodash/_addMapEntry.js","webpack:///./~/lodash/_addSetEntry.js","webpack:///./~/lodash/_apply.js","webpack:///./~/lodash/_arrayMap.js","webpack:///./~/lodash/_arrayPush.js","webpack:///./~/lodash/_arraySome.js","webpack:///./~/lodash/_baseAssign.js","webpack:///./~/lodash/_baseClone.js","webpack:///./~/lodash/_baseCreate.js","webpack:///./~/lodash/_baseFlatten.js","webpack:///./~/lodash/_baseForIn.js","webpack:///./~/lodash/_baseForOwn.js","webpack:///./~/lodash/_baseHasIn.js","webpack:///./~/lodash/_baseIsEqualDeep.js","webpack:///./~/lodash/_baseIsMatch.js","webpack:///./~/lodash/_baseIteratee.js","webpack:///./~/lodash/_baseKeys.js","webpack:///./~/lodash/_baseKeysIn.js","webpack:///./~/lodash/_baseMatches.js","webpack:///./~/lodash/_baseMatchesProperty.js","webpack:///./~/lodash/_baseMerge.js","webpack:///./~/lodash/_baseMergeDeep.js","webpack:///./~/lodash/_basePick.js","webpack:///./~/lodash/_basePickBy.js","webpack:///./~/lodash/_basePropertyDeep.js","webpack:///./~/lodash/_baseSlice.js","webpack:///./~/lodash/_baseTimes.js","webpack:///./~/lodash/_baseToPairs.js","webpack:///./~/lodash/_checkGlobal.js","webpack:///./~/lodash/_cloneBuffer.js","webpack:///./~/lodash/_cloneMap.js","webpack:///./~/lodash/_cloneRegExp.js","webpack:///./~/lodash/_cloneSet.js","webpack:///./~/lodash/_cloneSymbol.js","webpack:///./~/lodash/_cloneTypedArray.js","webpack:///./~/lodash/_copyObjectWith.js","webpack:///./~/lodash/_copySymbols.js","webpack:///./~/lodash/_createAssigner.js","webpack:///./~/lodash/_createBaseFor.js","webpack:///./~/lodash/_equalByTag.js","webpack:///./~/lodash/_equalObjects.js","webpack:///./~/lodash/_getLength.js","webpack:///./~/lodash/_getMatchData.js","webpack:///./~/lodash/_getSymbols.js","webpack:///./~/lodash/_hasPath.js","webpack:///./~/lodash/_hashDelete.js","webpack:///./~/lodash/_hashGet.js","webpack:///./~/lodash/_hashSet.js","webpack:///./~/lodash/_initCloneArray.js","webpack:///./~/lodash/_initCloneByTag.js","webpack:///./~/lodash/_initCloneObject.js","webpack:///./~/lodash/_isIterateeCall.js","webpack:///./~/lodash/_isStrictComparable.js","webpack:///./~/lodash/_iteratorToArray.js","webpack:///./~/lodash/_mapClear.js","webpack:///./~/lodash/_mapDelete.js","webpack:///./~/lodash/_mapGet.js","webpack:///./~/lodash/_mapHas.js","webpack:///./~/lodash/_mapSet.js","webpack:///./~/lodash/_parent.js","webpack:///./~/lodash/_stackClear.js","webpack:///./~/lodash/_stackDelete.js","webpack:///./~/lodash/_stackGet.js","webpack:///./~/lodash/_stackHas.js","webpack:///./~/lodash/_stackSet.js","webpack:///./~/lodash/_stringToPath.js","webpack:///./~/lodash/constant.js","webpack:///./~/lodash/hasIn.js","webpack:///./~/lodash/identity.js","webpack:///./~/lodash/isBuffer.js","webpack:///./~/lodash/isEmpty.js","webpack:///./~/lodash/isNative.js","webpack:///./~/lodash/isPlainObject.js","webpack:///./~/lodash/isSymbol.js","webpack:///./~/lodash/last.js","webpack:///./~/lodash/omitBy.js","webpack:///./~/lodash/property.js","webpack:///./~/lodash/toInteger.js","webpack:///./~/lodash/toNumber.js","webpack:///./~/lodash/toPairs.js","webpack:///./~/lodash/toPlainObject.js","webpack:///./~/lodash/toString.js","webpack:///./~/sdp/sdp.js","webpack:///./~/webrtc-adapter/src/js/adapter_core.js","webpack:///./~/webrtc-adapter/src/js/chrome/chrome_shim.js","webpack:///./~/webrtc-adapter/src/js/chrome/getusermedia.js","webpack:///./~/webrtc-adapter/src/js/edge/edge_shim.js","webpack:///./~/webrtc-adapter/src/js/edge/getusermedia.js","webpack:///./~/webrtc-adapter/src/js/firefox/firefox_shim.js","webpack:///./~/webrtc-adapter/src/js/firefox/getusermedia.js","webpack:///./~/webrtc-adapter/src/js/safari/safari_shim.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACRA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9IA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AA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AQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;;AAEA;AACA;;AAEA;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;gtCCtDA;AACA;AACA,KAAM,OAAO;AACT,YAAO,oBAAQ,CAAR,CAAP;EADE;AAGN,KAAM,OAAO;AACT,YAAO,oBAAQ,EAAR,CAAP;EADE;;;;;;;AASC,UAAS,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAwB;AAC3B,SAAI,OAAO;AACP,YAAG,CAAH;AACA,YAAG,CAAH;AACA,iBAAQ,kBAAW;AACf,oBAAO,KAAK,KA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AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1EA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACrDA;;AAEA,UAAS,QAAT,CAAkB,UAAlB,EAA8B,IAA9B,EAAoC;AAChC,SAAI,IAAJ,EAAU;AACN,gBAAO,KAAK,IAAL,CAAU,UAAU,IAAV,EAAgB;AAC7B,oBAAO,OAAO,IAAP,CAAY,IAAZ,EAAkB,KAAlB,CAAwB,UAAU,GAAV,EAAe;AA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CA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1BA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;;AAEA;;;;;;;AChBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;;AAEA;AACA;AACA;AACA;AACA,YAAW,YAAY;AACvB,cAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1DA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvBA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,qBAAqB;AAChC;AACA,cAAa,OAAO;AACpB;AACA;AACA,kBAAiB;AACjB;AACA;AACA,WAAU;AACV;AACA;AACA,6BAA4B;AAC5B,EAAC;;AAED;;;;;;;ACzBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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,GADkC;AAElC,oCAAe,IAAf,CAAoB,IAApB,EAA0B,MAA1B,EAFkC;kBAAZ,EAGvB,IAHH,EADoB;AAKpB,0BALoB;cAAN,CAAlB,CAD2C;UAAjC;AASd,iBAAQ,gBAAR;MA9CJ,CApcqB;EAAzB;;6CAsfe,aAAf,C;;;;;;ACtgBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;;AAEA;AACA;AACA;AACA;AACA,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC1BA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,YAAW,OAAO;AAClB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACdA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;AChBA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACdA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;;AAEA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;;AAEA;AACA;;AAEA;;;;;;;ACLA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACNA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACNA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,EAAE;AACb,YAAW,KAAK;AAChB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;AClIA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtCA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7EA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5DA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjFA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG,IAAI;AACP;;AAEA;;;;;;;ACrBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACpBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;;;;;;;ACXA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,OAAO,WAAW;AAC7B,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA,yBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO,WAAW;AAC7B,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACpCA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACxBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjFA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;;;;;;;ACdA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvCA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;ACzEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;;;;;;;ACXA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA,2BAA0B,gBAAgB,gBAAgB,SAAS,GAAG,GAAG;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrDA;AACA;AACA;;AAEA;AACA,qCAAoC;;AAEpC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpDA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClBA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,uBAAuB;AAClC,cAAa,OAAO;AACpB;AACA;AACA,kBAAiB;AACjB;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;AC7BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA,OAAM,OAAO,OAAO,SAAS,EAAE,EAAE;AACjC,OAAM,OAAO,OAAO,SAAS,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3CA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1DA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,WAAU;AACV;AACA,cAAa,SAAS;AACtB,WAAU;AACV;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC7CA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAoB;AACpB,2BAA0B;AAC1B;AACA;AACA;AACA,0DAAyD;AACzD,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,kDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,kBAAkB,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;ACzeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;AC1FD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D,YAAY;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,0DAAyD,qBAAqB;AAC9E,0DAAyD;AACzD;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,sCAAsC;AACjE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;;AAEf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA,gBAAe;AACf,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,8BAA8B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACn+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,yCAAyC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,gCAAgC;AAC3D;AACA;AACA,gCAA+B,wBAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,iCAAgC;AAChC,uCAAsC,EAAE;AACxC,0CAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,gEAAgE;AAC/E,gBAAe;AACf;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,IAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,+BAA8B;AAC9B,qCAAoC,EAAE;AACtC,wCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,gEAAgE;AAC7E,cAAa;AACb;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,EAAE;;AAEhC;AACA,oDAAmD,EAAE;AACrD,+CAA8C,EAAE;;AAEhD;AACA;AACA,sCAAqC,EAAE;;AAEvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"quagga.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(factory.toString()).default;\n\telse if(typeof exports === 'object')\n\t\texports[\"Quagga\"] = factory(factory.toString()).default;\n\telse\n\t\troot[\"Quagga\"] = factory(factory.toString()).default;\n})(this, function(__factorySource__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/myModuleDefinition\n **/"," \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\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// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 195);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 63e18667171d67c5f9ac\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar logDisabled_ = false;\n\n// Utility methods.\nvar utils = {\n disableLog: function(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n logDisabled_ = bool;\n return (bool) ? 'adapter.js logging disabled' :\n 'adapter.js logging enabled';\n },\n\n log: function() {\n if (typeof window === 'object') {\n if (logDisabled_) {\n return;\n }\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\n console.log.apply(console, arguments);\n }\n }\n },\n\n /**\n * Extract browser version out of the provided user agent string.\n *\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\n extractVersion: function(uastring, expr, pos) {\n var match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n },\n\n /**\n * Browser detector.\n *\n * @return {object} result containing browser, version and minVersion\n * properties.\n */\n detectBrowser: function() {\n // Returned result object.\n var result = {};\n result.browser = null;\n result.version = null;\n result.minVersion = null;\n\n // Fail early if it's not a browser\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a browser.';\n return result;\n }\n\n // Firefox.\n if (navigator.mozGetUserMedia) {\n result.browser = 'firefox';\n result.version = this.extractVersion(navigator.userAgent,\n /Firefox\\/([0-9]+)\\./, 1);\n result.minVersion = 31;\n\n // all webkit-based browsers\n } else if (navigator.webkitGetUserMedia) {\n // Chrome, Chromium, Webview, Opera, all use the chrome shim for now\n if (window.webkitRTCPeerConnection) {\n result.browser = 'chrome';\n result.version = this.extractVersion(navigator.userAgent,\n /Chrom(e|ium)\\/([0-9]+)\\./, 2);\n result.minVersion = 38;\n\n // Safari or unknown webkit-based\n // for the time being Safari has support for MediaStreams but not webRTC\n } else {\n // Safari UA substrings of interest for reference:\n // - webkit version: AppleWebKit/602.1.25 (also used in Op,Cr)\n // - safari UI version: Version/9.0.3 (unique to Safari)\n // - safari UI webkit version: Safari/601.4.4 (also used in Op,Cr)\n //\n // if the webkit version and safari UI webkit versions are equals,\n // ... this is a stable version.\n //\n // only the internal webkit version is important today to know if\n // media streams are supported\n //\n if (navigator.userAgent.match(/Version\\/(\\d+).(\\d+)/)) {\n result.browser = 'safari';\n result.version = this.extractVersion(navigator.userAgent,\n /AppleWebKit\\/([0-9]+)\\./, 1);\n result.minVersion = 602;\n\n // unknown webkit-based browser\n } else {\n result.browser = 'Unsupported webkit-based browser ' +\n 'with GUM support but no WebRTC support.';\n return result;\n }\n }\n\n // Edge.\n } else if (navigator.mediaDevices &&\n navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)) {\n result.browser = 'edge';\n result.version = this.extractVersion(navigator.userAgent,\n /Edge\\/(\\d+).(\\d+)$/, 2);\n result.minVersion = 10547;\n\n // Default fallthrough: not supported.\n } else {\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n // Warn if version is less than minVersion.\n if (result.version < result.minVersion) {\n utils.log('Browser: ' + result.browser + ' Version: ' + result.version +\n ' < minimum supported version: ' + result.minVersion +\n '\\n some things might not work!');\n }\n\n return result;\n }\n};\n\n// Export.\nmodule.exports = {\n log: utils.log,\n disableLog: utils.disableLog,\n browserDetails: utils.detectBrowser(),\n extractVersion: utils.extractVersion\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/utils.js\n ** module id = 0\n ** module chunks = 0\n **/","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArray.js\n ** module id = 1\n ** module chunks = 0\n **/","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isObject.js\n ** module id = 2\n ** module chunks = 0\n **/","var checkGlobal = require('./_checkGlobal');\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\nmodule.exports = root;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_root.js\n ** module id = 3\n ** module chunks = 0\n **/","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isObjectLike.js\n ** module id = 4\n ** module chunks = 0\n **/","import BarcodeReader from './barcode_reader';\r\nimport {merge} from 'lodash';\r\n\r\nfunction EANReader(opts, supplements) {\r\n opts = merge(getDefaulConfig(), opts);\r\n BarcodeReader.call(this, opts, supplements);\r\n}\r\n\r\nfunction getDefaulConfig() {\r\n var config = {};\r\n\r\n Object.keys(EANReader.CONFIG_KEYS).forEach(function(key) {\r\n config[key] = EANReader.CONFIG_KEYS[key].default;\r\n });\r\n return config;\r\n}\r\n\r\nvar properties = {\r\n CODE_L_START: {value: 0},\r\n CODE_G_START: {value: 10},\r\n START_PATTERN: {value: [1, 1, 1]},\r\n STOP_PATTERN: {value: [1, 1, 1]},\r\n MIDDLE_PATTERN: {value: [1, 1, 1, 1, 1]},\r\n EXTENSION_START_PATTERN: {value: [1, 1, 2]},\r\n CODE_PATTERN: {value: [\r\n [3, 2, 1, 1],\r\n [2, 2, 2, 1],\r\n [2, 1, 2, 2],\r\n [1, 4, 1, 1],\r\n [1, 1, 3, 2],\r\n [1, 2, 3, 1],\r\n [1, 1, 1, 4],\r\n [1, 3, 1, 2],\r\n [1, 2, 1, 3],\r\n [3, 1, 1, 2],\r\n [1, 1, 2, 3],\r\n [1, 2, 2, 2],\r\n [2, 2, 1, 2],\r\n [1, 1, 4, 1],\r\n [2, 3, 1, 1],\r\n [1, 3, 2, 1],\r\n [4, 1, 1, 1],\r\n [2, 1, 3, 1],\r\n [3, 1, 2, 1],\r\n [2, 1, 1, 3]\r\n ]},\r\n CODE_FREQUENCY: {value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26]},\r\n SINGLE_CODE_ERROR: {value: 0.70},\r\n AVG_CODE_ERROR: {value: 0.48},\r\n FORMAT: {value: \"ean_13\", writeable: false}\r\n};\r\n\r\nEANReader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nEANReader.prototype.constructor = EANReader;\r\n\r\nEANReader.prototype._decodeCode = function(start, coderange) {\r\n var counter = [0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = start,\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: start,\r\n end: start\r\n },\r\n code,\r\n error;\r\n\r\n if (!coderange) {\r\n coderange = self.CODE_PATTERN.length;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n for (code = 0; code < coderange; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n bestMatch.end = i;\r\n if (bestMatch.error > self.AVG_CODE_ERROR) {\r\n return null;\r\n }\r\n return bestMatch;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findPattern = function(pattern, offset, isWhite, tryHarder, epsilon) {\r\n var counter = [],\r\n self = this,\r\n i,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n },\r\n error,\r\n j,\r\n sum;\r\n\r\n if (!offset) {\r\n offset = self._nextSet(self._row);\r\n }\r\n\r\n if (isWhite === undefined) {\r\n isWhite = false;\r\n }\r\n\r\n if (tryHarder === undefined) {\r\n tryHarder = true;\r\n }\r\n\r\n if ( epsilon === undefined) {\r\n epsilon = self.AVG_CODE_ERROR;\r\n }\r\n\r\n for ( i = 0; i < pattern.length; i++) {\r\n counter[i] = 0;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n error = self._matchPattern(counter, pattern);\r\n\r\n if (error < epsilon) {\r\n bestMatch.error = error;\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n return bestMatch;\r\n }\r\n if (tryHarder) {\r\n for ( j = 0; j < counter.length - 2; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[counter.length - 2] = 0;\r\n counter[counter.length - 1] = 0;\r\n counterPos--;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findStart = function() {\r\n var self = this,\r\n leadingWhitespaceStart,\r\n offset = self._nextSet(self._row),\r\n startInfo;\r\n\r\n while (!startInfo) {\r\n startInfo = self._findPattern(self.START_PATTERN, offset);\r\n if (!startInfo) {\r\n return null;\r\n }\r\n leadingWhitespaceStart = startInfo.start - (startInfo.end - startInfo.start);\r\n if (leadingWhitespaceStart >= 0) {\r\n if (self._matchRange(leadingWhitespaceStart, startInfo.start, 0)) {\r\n return startInfo;\r\n }\r\n }\r\n offset = startInfo.end;\r\n startInfo = null;\r\n }\r\n};\r\n\r\nEANReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + (endInfo.end - endInfo.start);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findEnd = function(offset, isWhite) {\r\n var self = this,\r\n endInfo = self._findPattern(self.STOP_PATTERN, offset, isWhite, false);\r\n\r\n return endInfo !== null ? self._verifyTrailingWhitespace(endInfo) : null;\r\n};\r\n\r\nEANReader.prototype._calculateFirstDigit = function(codeFrequency) {\r\n var i,\r\n self = this;\r\n\r\n for ( i = 0; i < self.CODE_FREQUENCY.length; i++) {\r\n if (codeFrequency === self.CODE_FREQUENCY[i]) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n codeFrequency = 0x0,\r\n firstDigit;\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end);\r\n if (!code) {\r\n return null;\r\n }\r\n if (code.code >= self.CODE_G_START) {\r\n code.code = code.code - self.CODE_G_START;\r\n codeFrequency |= 1 << (5 - i);\r\n } else {\r\n codeFrequency |= 0 << (5 - i);\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n\r\n firstDigit = self._calculateFirstDigit(codeFrequency);\r\n if (firstDigit === null) {\r\n return null;\r\n }\r\n result.unshift(firstDigit);\r\n\r\n code = self._findPattern(self.MIDDLE_PATTERN, code.end, true, false);\r\n if (code === null) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code);\r\n }\r\n\r\n return code;\r\n};\r\n\r\nEANReader.prototype._decode = function() {\r\n var startInfo,\r\n self = this,\r\n code,\r\n result = [],\r\n decodedCodes = [],\r\n resultInfo = {};\r\n\r\n startInfo = self._findStart();\r\n if (!startInfo) {\r\n return null;\r\n }\r\n code = {\r\n code: startInfo.code,\r\n start: startInfo.start,\r\n end: startInfo.end\r\n };\r\n decodedCodes.push(code);\r\n code = self._decodePayload(code, result, decodedCodes);\r\n if (!code) {\r\n return null;\r\n }\r\n code = self._findEnd(code.end, false);\r\n if (!code){\r\n return null;\r\n }\r\n\r\n decodedCodes.push(code);\r\n\r\n // Checksum\r\n if (!self._checksum(result)) {\r\n return null;\r\n }\r\n\r\n if (this.supplements.length > 0) {\r\n let ext = this._decodeExtensions(code.end);\r\n if (!ext) {\r\n return null;\r\n }\r\n let lastCode = ext.decodedCodes[ext.decodedCodes.length-1],\r\n endInfo = {\r\n start: lastCode.start + (((lastCode.end - lastCode.start) / 2) | 0),\r\n end: lastCode.end\r\n };\r\n if(!self._verifyTrailingWhitespace(endInfo)) {\r\n return null;\r\n }\r\n resultInfo = {\r\n supplement: ext,\r\n code: result.join(\"\") + ext.code\r\n }\r\n }\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: code.end,\r\n codeset: \"\",\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes,\r\n ...resultInfo\r\n };\r\n};\r\n\r\nEANReader.prototype._decodeExtensions = function(offset) {\r\n var i,\r\n start = this._nextSet(this._row, offset),\r\n startInfo = this._findPattern(this.EXTENSION_START_PATTERN, start, false, false),\r\n result;\r\n\r\n if (startInfo === null) {\r\n return null;\r\n }\r\n\r\n for (i = 0; i < this.supplements.length; i++) {\r\n result = this.supplements[i].decode(this._row, startInfo.end);\r\n if (result !== null) {\r\n return {\r\n code: result.code,\r\n start,\r\n startInfo,\r\n end: result.end,\r\n codeset: \"\",\r\n decodedCodes: result.decodedCodes\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._checksum = function(result) {\r\n var sum = 0, i;\r\n\r\n for ( i = result.length - 2; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n for ( i = result.length - 1; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n return sum % 10 === 0;\r\n};\r\n\r\nEANReader.CONFIG_KEYS = {\r\n supplements: {\r\n 'type': 'arrayOf(string)',\r\n 'default': [],\r\n 'description': 'Allowed extensions to be decoded (2 and/or 5)'\r\n }\r\n};\r\n\r\nexport default (EANReader);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_reader.js\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Map.js\n ** module id = 6\n ** module chunks = 0\n **/","export default {\r\n drawRect: function(pos, size, ctx, style){\r\n ctx.strokeStyle = style.color;\r\n ctx.fillStyle = style.color;\r\n ctx.lineWidth = 1;\r\n ctx.beginPath();\r\n ctx.strokeRect(pos.x, pos.y, size.x, size.y);\r\n },\r\n drawPath: function(path, def, ctx, style) {\r\n ctx.strokeStyle = style.color;\r\n ctx.fillStyle = style.color;\r\n ctx.lineWidth = style.lineWidth;\r\n ctx.beginPath();\r\n ctx.moveTo(path[0][def.x], path[0][def.y]);\r\n for (var j = 1; j < path.length; j++) {\r\n ctx.lineTo(path[j][def.x], path[j][def.y]);\r\n }\r\n ctx.closePath();\r\n ctx.stroke();\r\n },\r\n drawImage: function(imageData, size, ctx) {\r\n var canvasData = ctx.getImageData(0, 0, size.x, size.y),\r\n data = canvasData.data,\r\n imageDataPos = imageData.length,\r\n canvasDataPos = data.length,\r\n value;\r\n\r\n if (canvasDataPos / imageDataPos !== 4) {\r\n return false;\r\n }\r\n while (imageDataPos--){\r\n value = imageData[imageDataPos];\r\n data[--canvasDataPos] = 255;\r\n data[--canvasDataPos] = value;\r\n data[--canvasDataPos] = value;\r\n data[--canvasDataPos] = value;\r\n }\r\n ctx.putImageData(canvasData, 0, 0);\r\n return true;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/image_debug.js\n **/","function BarcodeReader(config, supplements) {\r\n this._row = [];\r\n this.config = config || {};\r\n this.supplements = supplements;\r\n return this;\r\n}\r\n\r\nBarcodeReader.prototype._nextUnset = function(line, start) {\r\n var i;\r\n\r\n if (start === undefined) {\r\n start = 0;\r\n }\r\n for (i = start; i < line.length; i++) {\r\n if (!line[i]) {\r\n return i;\r\n }\r\n }\r\n return line.length;\r\n};\r\n\r\nBarcodeReader.prototype._matchPattern = function(counter, code, maxSingleError) {\r\n var i,\r\n error = 0,\r\n singleError = 0,\r\n sum = 0,\r\n modulo = 0,\r\n barWidth,\r\n count,\r\n scaled;\r\n\r\n maxSingleError = maxSingleError || this.SINGLE_CODE_ERROR || 1;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n sum += counter[i];\r\n modulo += code[i];\r\n }\r\n if (sum < modulo) {\r\n return Number.MAX_VALUE;\r\n }\r\n barWidth = sum / modulo;\r\n maxSingleError *= barWidth;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n count = counter[i];\r\n scaled = code[i] * barWidth;\r\n singleError = Math.abs(count - scaled) / scaled;\r\n if (singleError > maxSingleError) {\r\n return Number.MAX_VALUE;\r\n }\r\n error += singleError;\r\n }\r\n return error / modulo;\r\n};\r\n\r\nBarcodeReader.prototype._nextSet = function(line, offset) {\r\n var i;\r\n\r\n offset = offset || 0;\r\n for (i = offset; i < line.length; i++) {\r\n if (line[i]) {\r\n return i;\r\n }\r\n }\r\n return line.length;\r\n};\r\n\r\nBarcodeReader.prototype._correctBars = function(counter, correction, indices) {\r\n var length = indices.length,\r\n tmp = 0;\r\n while(length--) {\r\n tmp = counter[indices[length]] * (1 - ((1 - correction) / 2));\r\n if (tmp > 1) {\r\n counter[indices[length]] = tmp;\r\n }\r\n }\r\n}\r\n\r\nBarcodeReader.prototype._matchTrace = function(cmpCounter, epsilon) {\r\n var counter = [],\r\n i,\r\n self = this,\r\n offset = self._nextSet(self._row),\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0\r\n },\r\n error;\r\n\r\n if (cmpCounter) {\r\n for ( i = 0; i < cmpCounter.length; i++) {\r\n counter.push(0);\r\n }\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n error = self._matchPattern(counter, cmpCounter);\r\n\r\n if (error < epsilon) {\r\n bestMatch.start = i - offset;\r\n bestMatch.end = i;\r\n bestMatch.counter = counter;\r\n return bestMatch;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n } else {\r\n counter.push(0);\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n counterPos++;\r\n counter.push(0);\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n }\r\n\r\n // if cmpCounter was not given\r\n bestMatch.start = offset;\r\n bestMatch.end = self._row.length - 1;\r\n bestMatch.counter = counter;\r\n return bestMatch;\r\n};\r\n\r\nBarcodeReader.prototype.decodePattern = function(pattern) {\r\n var self = this,\r\n result;\r\n\r\n self._row = pattern;\r\n result = self._decode();\r\n if (result === null) {\r\n self._row.reverse();\r\n result = self._decode();\r\n if (result) {\r\n result.direction = BarcodeReader.DIRECTION.REVERSE;\r\n result.start = self._row.length - result.start;\r\n result.end = self._row.length - result.end;\r\n }\r\n } else {\r\n result.direction = BarcodeReader.DIRECTION.FORWARD;\r\n }\r\n if (result) {\r\n result.format = self.FORMAT;\r\n }\r\n return result;\r\n};\r\n\r\nBarcodeReader.prototype._matchRange = function(start, end, value) {\r\n var i;\r\n\r\n start = start < 0 ? 0 : start;\r\n for (i = start; i < end; i++) {\r\n if (this._row[i] !== value) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nBarcodeReader.prototype._fillCounters = function(offset, end, isWhite) {\r\n var self = this,\r\n counterPos = 0,\r\n i,\r\n counters = [];\r\n\r\n isWhite = (typeof isWhite !== 'undefined') ? isWhite : true;\r\n offset = (typeof offset !== 'undefined') ? offset : self._nextUnset(self._row);\r\n end = end || self._row.length;\r\n\r\n counters[counterPos] = 0;\r\n for (i = offset; i < end; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counters[counterPos]++;\r\n } else {\r\n counterPos++;\r\n counters[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return counters;\r\n};\r\n\r\nObject.defineProperty(BarcodeReader.prototype, \"FORMAT\", {\r\n value: 'unknown',\r\n writeable: false\r\n});\r\n\r\nBarcodeReader.DIRECTION = {\r\n FORWARD: 1,\r\n REVERSE: -1\r\n};\r\n\r\nBarcodeReader.Exception = {\r\n StartNotFoundException: \"Start-Info was not found!\",\r\n CodeNotFoundException: \"Code could not be found!\",\r\n PatternNotFoundException: \"Pattern could not be found!\"\r\n};\r\n\r\nBarcodeReader.CONFIG_KEYS = {};\r\n\r\nexport default BarcodeReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/barcode_reader.js\n **/","module.exports = clone\n\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {vec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\nfunction clone(a) {\n var out = new Float32Array(2)\n out[0] = a[0]\n out[1] = a[1]\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/clone.js\n ** module id = 9\n ** module chunks = 0\n **/","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\nmodule.exports = isArguments;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArguments.js\n ** module id = 10\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isFunction.js\n ** module id = 11\n ** module chunks = 0\n **/","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable properties of source objects into the destination\n * object. Source properties that resolve to `undefined` are skipped if a\n * destination value exists. Array and plain object properties are merged\n * recursively.Other objects and value types are overridden by assignment.\n * Source objects are applied from left to right. Subsequent sources\n * overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/merge.js\n ** module id = 12\n ** module chunks = 0\n **/","export default {\r\n init: function(arr, val) {\r\n var l = arr.length;\r\n while (l--) {\r\n arr[l] = val;\r\n }\r\n },\r\n\r\n /**\r\n * Shuffles the content of an array\r\n * @return {Array} the array itself shuffled\r\n */\r\n shuffle: function(arr) {\r\n var i = arr.length - 1, j, x;\r\n for (i; i >= 0; i--) {\r\n j = Math.floor(Math.random() * i);\r\n x = arr[i];\r\n arr[i] = arr[j];\r\n arr[j] = x;\r\n }\r\n return arr;\r\n },\r\n\r\n toPointList: function(arr) {\r\n var i, j, row = [], rows = [];\r\n for ( i = 0; i < arr.length; i++) {\r\n row = [];\r\n for ( j = 0; j < arr[i].length; j++) {\r\n row[j] = arr[i][j];\r\n }\r\n rows[i] = \"[\" + row.join(\",\") + \"]\";\r\n }\r\n return \"[\" + rows.join(\",\\r\\n\") + \"]\";\r\n },\r\n\r\n /**\r\n * returns the elements which's score is bigger than the threshold\r\n * @return {Array} the reduced array\r\n */\r\n threshold: function(arr, threshold, scoreFunc) {\r\n var i, queue = [];\r\n for ( i = 0; i < arr.length; i++) {\r\n if (scoreFunc.apply(arr, [arr[i]]) >= threshold) {\r\n queue.push(arr[i]);\r\n }\r\n }\r\n return queue;\r\n },\r\n\r\n maxIndex: function(arr) {\r\n var i, max = 0;\r\n for ( i = 0; i < arr.length; i++) {\r\n if (arr[i] > arr[max]) {\r\n max = i;\r\n }\r\n }\r\n return max;\r\n },\r\n\r\n max: function(arr) {\r\n var i, max = 0;\r\n for ( i = 0; i < arr.length; i++) {\r\n if (arr[i] > max) {\r\n max = arr[i];\r\n }\r\n }\r\n return max;\r\n },\r\n\r\n sum: function(arr) {\r\n var length = arr.length,\r\n sum = 0;\r\n\r\n while (length--) {\r\n sum += arr[length];\r\n }\r\n return sum;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/array_helper.js\n **/","var stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction Stack(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = values[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add functions to the `Stack` cache.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Stack.js\n ** module id = 14\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/**\n * Gets the index at which the first occurrence of `key` is found in `array`\n * of key-value pairs.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocIndexOf.js\n ** module id = 15\n ** module chunks = 0\n **/","var isNative = require('./isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getNative.js\n ** module id = 16\n ** module chunks = 0\n **/","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\nmodule.exports = isHostObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isHostObject.js\n ** module id = 17\n ** module chunks = 0\n **/","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isIndex.js\n ** module id = 18\n ** module chunks = 0\n **/","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return type == 'number' || type == 'boolean' ||\n (type == 'string' && value != '__proto__') || value == null;\n}\n\nmodule.exports = isKeyable;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isKeyable.js\n ** module id = 19\n ** module chunks = 0\n **/","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_nativeCreate.js\n ** module id = 20\n ** module chunks = 0\n **/","/**\n * Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/eq.js\n ** module id = 21\n ** module chunks = 0\n **/","var getLength = require('./_getLength'),\n isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArrayLike.js\n ** module id = 22\n ** module chunks = 0\n **/","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isLength.js\n ** module id = 23\n ** module chunks = 0\n **/","var baseHas = require('./_baseHas'),\n baseKeys = require('./_baseKeys'),\n indexKeys = require('./_indexKeys'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n var isProto = isPrototype(object);\n if (!(isProto || isArrayLike(object))) {\n return baseKeys(object);\n }\n var indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n for (var key in object) {\n if (baseHas(object, key) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(isProto && key == 'constructor')) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/keys.js\n ** module id = 24\n ** module chunks = 0\n **/","import Cluster2 from './cluster';\r\nimport ArrayHelper from './array_helper';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone')\r\n};\r\nconst vec3 = {\r\n clone: require('gl-vec3/clone')\r\n};\r\n\r\n/**\r\n * @param x x-coordinate\r\n * @param y y-coordinate\r\n * @return ImageReference {x,y} Coordinate\r\n */\r\nexport function imageRef(x, y) {\r\n var that = {\r\n x: x,\r\n y: y,\r\n toVec2: function() {\r\n return vec2.clone([this.x, this.y]);\r\n },\r\n toVec3: function() {\r\n return vec3.clone([this.x, this.y, 1]);\r\n },\r\n round: function() {\r\n this.x = this.x > 0.0 ? Math.floor(this.x + 0.5) : Math.floor(this.x - 0.5);\r\n this.y = this.y > 0.0 ? Math.floor(this.y + 0.5) : Math.floor(this.y - 0.5);\r\n return this;\r\n }\r\n };\r\n return that;\r\n};\r\n\r\n/**\r\n * Computes an integral image of a given grayscale image.\r\n * @param imageDataContainer {ImageDataContainer} the image to be integrated\r\n */\r\nexport function computeIntegralImage2(imageWrapper, integralWrapper) {\r\n var imageData = imageWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0, posA = 0, posB = 0, posC = 0, posD = 0, x, y;\r\n\r\n // sum up first column\r\n posB = width;\r\n sum = 0;\r\n for ( y = 1; y < height; y++) {\r\n sum += imageData[posA];\r\n integralImageData[posB] += sum;\r\n posA += width;\r\n posB += width;\r\n }\r\n\r\n posA = 0;\r\n posB = 1;\r\n sum = 0;\r\n for ( x = 1; x < width; x++) {\r\n sum += imageData[posA];\r\n integralImageData[posB] += sum;\r\n posA++;\r\n posB++;\r\n }\r\n\r\n for ( y = 1; y < height; y++) {\r\n posA = y * width + 1;\r\n posB = (y - 1) * width + 1;\r\n posC = y * width;\r\n posD = (y - 1) * width;\r\n for ( x = 1; x < width; x++) {\r\n integralImageData[posA] +=\r\n imageData[posA] + integralImageData[posB] + integralImageData[posC] - integralImageData[posD];\r\n posA++;\r\n posB++;\r\n posC++;\r\n posD++;\r\n }\r\n }\r\n};\r\n\r\nexport function computeIntegralImage(imageWrapper, integralWrapper) {\r\n var imageData = imageWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0;\r\n\r\n // sum up first row\r\n for (var i = 0; i < width; i++) {\r\n sum += imageData[i];\r\n integralImageData[i] = sum;\r\n }\r\n\r\n for (var v = 1; v < height; v++) {\r\n sum = 0;\r\n for (var u = 0; u < width; u++) {\r\n sum += imageData[v * width + u];\r\n integralImageData[((v) * width) + u] = sum + integralImageData[(v - 1) * width + u];\r\n }\r\n }\r\n};\r\n\r\nexport function thresholdImage(imageWrapper, threshold, targetWrapper) {\r\n if (!targetWrapper) {\r\n targetWrapper = imageWrapper;\r\n }\r\n var imageData = imageWrapper.data, length = imageData.length, targetData = targetWrapper.data;\r\n\r\n while (length--) {\r\n targetData[length] = imageData[length] < threshold ? 1 : 0;\r\n }\r\n};\r\n\r\nexport function computeHistogram(imageWrapper, bitsPerPixel) {\r\n if (!bitsPerPixel) {\r\n bitsPerPixel = 8;\r\n }\r\n var imageData = imageWrapper.data,\r\n length = imageData.length,\r\n bitShift = 8 - bitsPerPixel,\r\n bucketCnt = 1 << bitsPerPixel,\r\n hist = new Int32Array(bucketCnt);\r\n\r\n while (length--) {\r\n hist[imageData[length] >> bitShift]++;\r\n }\r\n return hist;\r\n};\r\n\r\nexport function sharpenLine(line) {\r\n var i,\r\n length = line.length,\r\n left = line[0],\r\n center = line[1],\r\n right;\r\n\r\n for (i = 1; i < length - 1; i++) {\r\n right = line[i + 1];\r\n // -1 4 -1 kernel\r\n line[i - 1] = (((center * 2) - left - right)) & 255;\r\n left = center;\r\n center = right;\r\n }\r\n return line;\r\n};\r\n\r\nexport function determineOtsuThreshold(imageWrapper, bitsPerPixel) {\r\n if (!bitsPerPixel) {\r\n bitsPerPixel = 8;\r\n }\r\n var hist,\r\n threshold,\r\n bitShift = 8 - bitsPerPixel;\r\n\r\n function px(init, end) {\r\n var sum = 0, i;\r\n for ( i = init; i <= end; i++) {\r\n sum += hist[i];\r\n }\r\n return sum;\r\n }\r\n\r\n function mx(init, end) {\r\n var i, sum = 0;\r\n\r\n for ( i = init; i <= end; i++) {\r\n sum += i * hist[i];\r\n }\r\n\r\n return sum;\r\n }\r\n\r\n function determineThreshold() {\r\n var vet = [0], p1, p2, p12, k, m1, m2, m12,\r\n max = (1 << bitsPerPixel) - 1;\r\n\r\n hist = computeHistogram(imageWrapper, bitsPerPixel);\r\n for ( k = 1; k < max; k++) {\r\n p1 = px(0, k);\r\n p2 = px(k + 1, max);\r\n p12 = p1 * p2;\r\n if (p12 === 0) {\r\n p12 = 1;\r\n }\r\n m1 = mx(0, k) * p2;\r\n m2 = mx(k + 1, max) * p1;\r\n m12 = m1 - m2;\r\n vet[k] = m12 * m12 / p12;\r\n }\r\n return ArrayHelper.maxIndex(vet);\r\n }\r\n\r\n threshold = determineThreshold();\r\n return threshold << bitShift;\r\n};\r\n\r\nexport function otsuThreshold(imageWrapper, targetWrapper) {\r\n var threshold = determineOtsuThreshold(imageWrapper);\r\n\r\n thresholdImage(imageWrapper, threshold, targetWrapper);\r\n return threshold;\r\n};\r\n\r\n// local thresholding\r\nexport function computeBinaryImage(imageWrapper, integralWrapper, targetWrapper) {\r\n computeIntegralImage(imageWrapper, integralWrapper);\r\n\r\n if (!targetWrapper) {\r\n targetWrapper = imageWrapper;\r\n }\r\n var imageData = imageWrapper.data;\r\n var targetData = targetWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0, v, u, kernel = 3, A, B, C, D, avg, size = (kernel * 2 + 1) * (kernel * 2 + 1);\r\n\r\n // clear out top & bottom-border\r\n for ( v = 0; v <= kernel; v++) {\r\n for ( u = 0; u < width; u++) {\r\n targetData[((v) * width) + u] = 0;\r\n targetData[(((height - 1) - v) * width) + u] = 0;\r\n }\r\n }\r\n\r\n // clear out left & right border\r\n for ( v = kernel; v < height - kernel; v++) {\r\n for ( u = 0; u <= kernel; u++) {\r\n targetData[((v) * width) + u] = 0;\r\n targetData[((v) * width) + (width - 1 - u)] = 0;\r\n }\r\n }\r\n\r\n for ( v = kernel + 1; v < height - kernel - 1; v++) {\r\n for ( u = kernel + 1; u < width - kernel; u++) {\r\n A = integralImageData[(v - kernel - 1) * width + (u - kernel - 1)];\r\n B = integralImageData[(v - kernel - 1) * width + (u + kernel)];\r\n C = integralImageData[(v + kernel) * width + (u - kernel - 1)];\r\n D = integralImageData[(v + kernel) * width + (u + kernel)];\r\n sum = D - C - B + A;\r\n avg = sum / (size);\r\n targetData[v * width + u] = imageData[v * width + u] > (avg + 5) ? 0 : 1;\r\n }\r\n }\r\n};\r\n\r\nexport function cluster(points, threshold, property) {\r\n var i, k, cluster, point, clusters = [];\r\n\r\n if (!property) {\r\n property = \"rad\";\r\n }\r\n\r\n function addToCluster(newPoint) {\r\n var found = false;\r\n for ( k = 0; k < clusters.length; k++) {\r\n cluster = clusters[k];\r\n if (cluster.fits(newPoint)) {\r\n cluster.add(newPoint);\r\n found = true;\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n // iterate over each cloud\r\n for ( i = 0; i < points.length; i++) {\r\n point = Cluster2.createPoint(points[i], i, property);\r\n if (!addToCluster(point)) {\r\n clusters.push(Cluster2.create(point, threshold));\r\n }\r\n }\r\n return clusters;\r\n};\r\n\r\nexport const Tracer = {\r\n trace: function(points, vec) {\r\n var iteration, maxIterations = 10, top = [], result = [], centerPos = 0, currentPos = 0;\r\n\r\n function trace(idx, forward) {\r\n var from, to, toIdx, predictedPos, thresholdX = 1, thresholdY = Math.abs(vec[1] / 10), found = false;\r\n\r\n function match(pos, predicted) {\r\n if (pos.x > (predicted.x - thresholdX)\r\n && pos.x < (predicted.x + thresholdX)\r\n && pos.y > (predicted.y - thresholdY)\r\n && pos.y < (predicted.y + thresholdY)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // check if the next index is within the vec specifications\r\n // if not, check as long as the threshold is met\r\n\r\n from = points[idx];\r\n if (forward) {\r\n predictedPos = {\r\n x: from.x + vec[0],\r\n y: from.y + vec[1]\r\n };\r\n } else {\r\n predictedPos = {\r\n x: from.x - vec[0],\r\n y: from.y - vec[1]\r\n };\r\n }\r\n\r\n toIdx = forward ? idx + 1 : idx - 1;\r\n to = points[toIdx];\r\n while (to && ( found = match(to, predictedPos)) !== true && (Math.abs(to.y - from.y) < vec[1])) {\r\n toIdx = forward ? toIdx + 1 : toIdx - 1;\r\n to = points[toIdx];\r\n }\r\n\r\n return found ? toIdx : null;\r\n }\r\n\r\n for ( iteration = 0; iteration < maxIterations; iteration++) {\r\n // randomly select point to start with\r\n centerPos = Math.floor(Math.random() * points.length);\r\n\r\n // trace forward\r\n top = [];\r\n currentPos = centerPos;\r\n top.push(points[currentPos]);\r\n while (( currentPos = trace(currentPos, true)) !== null) {\r\n top.push(points[currentPos]);\r\n }\r\n if (centerPos > 0) {\r\n currentPos = centerPos;\r\n while (( currentPos = trace(currentPos, false)) !== null) {\r\n top.push(points[currentPos]);\r\n }\r\n }\r\n\r\n if (top.length > result.length) {\r\n result = top;\r\n }\r\n }\r\n return result;\r\n }\r\n};\r\n\r\nexport const DILATE = 1;\r\nexport const ERODE = 2;\r\n\r\nexport function dilate(inImageWrapper, outImageWrapper) {\r\n var v,\r\n u,\r\n inImageData = inImageWrapper.data,\r\n outImageData = outImageWrapper.data,\r\n height = inImageWrapper.size.y,\r\n width = inImageWrapper.size.x,\r\n sum,\r\n yStart1,\r\n yStart2,\r\n xStart1,\r\n xStart2;\r\n\r\n for ( v = 1; v < height - 1; v++) {\r\n for ( u = 1; u < width - 1; u++) {\r\n yStart1 = v - 1;\r\n yStart2 = v + 1;\r\n xStart1 = u - 1;\r\n xStart2 = u + 1;\r\n sum = inImageData[yStart1 * width + xStart1] + inImageData[yStart1 * width + xStart2] +\r\n inImageData[v * width + u] +\r\n inImageData[yStart2 * width + xStart1] + inImageData[yStart2 * width + xStart2];\r\n outImageData[v * width + u] = sum > 0 ? 1 : 0;\r\n }\r\n }\r\n};\r\n\r\nexport function erode(inImageWrapper, outImageWrapper) {\r\n var v,\r\n u,\r\n inImageData = inImageWrapper.data,\r\n outImageData = outImageWrapper.data,\r\n height = inImageWrapper.size.y,\r\n width = inImageWrapper.size.x,\r\n sum,\r\n yStart1,\r\n yStart2,\r\n xStart1,\r\n xStart2;\r\n\r\n for ( v = 1; v < height - 1; v++) {\r\n for ( u = 1; u < width - 1; u++) {\r\n yStart1 = v - 1;\r\n yStart2 = v + 1;\r\n xStart1 = u - 1;\r\n xStart2 = u + 1;\r\n sum = inImageData[yStart1 * width + xStart1] + inImageData[yStart1 * width + xStart2] +\r\n inImageData[v * width + u] +\r\n inImageData[yStart2 * width + xStart1] + inImageData[yStart2 * width + xStart2];\r\n outImageData[v * width + u] = sum === 5 ? 1 : 0;\r\n }\r\n }\r\n};\r\n\r\nexport function subtract(aImageWrapper, bImageWrapper, resultImageWrapper) {\r\n if (!resultImageWrapper) {\r\n resultImageWrapper = aImageWrapper;\r\n }\r\n var length = aImageWrapper.data.length,\r\n aImageData = aImageWrapper.data,\r\n bImageData = bImageWrapper.data,\r\n cImageData = resultImageWrapper.data;\r\n\r\n while (length--) {\r\n cImageData[length] = aImageData[length] - bImageData[length];\r\n }\r\n};\r\n\r\nexport function bitwiseOr(aImageWrapper, bImageWrapper, resultImageWrapper) {\r\n if (!resultImageWrapper) {\r\n resultImageWrapper = aImageWrapper;\r\n }\r\n var length = aImageWrapper.data.length,\r\n aImageData = aImageWrapper.data,\r\n bImageData = bImageWrapper.data,\r\n cImageData = resultImageWrapper.data;\r\n\r\n while (length--) {\r\n cImageData[length] = aImageData[length] || bImageData[length];\r\n }\r\n};\r\n\r\nexport function countNonZero(imageWrapper) {\r\n var length = imageWrapper.data.length, data = imageWrapper.data, sum = 0;\r\n\r\n while (length--) {\r\n sum += data[length];\r\n }\r\n return sum;\r\n};\r\n\r\nexport function topGeneric(list, top, scoreFunc) {\r\n var i, minIdx = 0, min = 0, queue = [], score, hit, pos;\r\n\r\n for ( i = 0; i < top; i++) {\r\n queue[i] = {\r\n score: 0,\r\n item: null\r\n };\r\n }\r\n\r\n for ( i = 0; i < list.length; i++) {\r\n score = scoreFunc.apply(this, [list[i]]);\r\n if (score > min) {\r\n hit = queue[minIdx];\r\n hit.score = score;\r\n hit.item = list[i];\r\n min = Number.MAX_VALUE;\r\n for ( pos = 0; pos < top; pos++) {\r\n if (queue[pos].score < min) {\r\n min = queue[pos].score;\r\n minIdx = pos;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return queue;\r\n};\r\n\r\nexport function grayArrayFromImage(htmlImage, offsetX, ctx, array) {\r\n ctx.drawImage(htmlImage, offsetX, 0, htmlImage.width, htmlImage.height);\r\n var ctxData = ctx.getImageData(offsetX, 0, htmlImage.width, htmlImage.height).data;\r\n computeGray(ctxData, array);\r\n};\r\n\r\nexport function grayArrayFromContext(ctx, size, offset, array) {\r\n var ctxData = ctx.getImageData(offset.x, offset.y, size.x, size.y).data;\r\n computeGray(ctxData, array);\r\n};\r\n\r\nexport function grayAndHalfSampleFromCanvasData(canvasData, size, outArray) {\r\n var topRowIdx = 0;\r\n var bottomRowIdx = size.x;\r\n var endIdx = Math.floor(canvasData.length / 4);\r\n var outWidth = size.x / 2;\r\n var outImgIdx = 0;\r\n var inWidth = size.x;\r\n var i;\r\n\r\n while (bottomRowIdx < endIdx) {\r\n for ( i = 0; i < outWidth; i++) {\r\n outArray[outImgIdx] = Math.floor((\r\n (0.299 * canvasData[topRowIdx * 4 + 0] +\r\n 0.587 * canvasData[topRowIdx * 4 + 1] +\r\n 0.114 * canvasData[topRowIdx * 4 + 2]) +\r\n (0.299 * canvasData[(topRowIdx + 1) * 4 + 0] +\r\n 0.587 * canvasData[(topRowIdx + 1) * 4 + 1] +\r\n 0.114 * canvasData[(topRowIdx + 1) * 4 + 2]) +\r\n (0.299 * canvasData[(bottomRowIdx) * 4 + 0] +\r\n 0.587 * canvasData[(bottomRowIdx) * 4 + 1] +\r\n 0.114 * canvasData[(bottomRowIdx) * 4 + 2]) +\r\n (0.299 * canvasData[(bottomRowIdx + 1) * 4 + 0] +\r\n 0.587 * canvasData[(bottomRowIdx + 1) * 4 + 1] +\r\n 0.114 * canvasData[(bottomRowIdx + 1) * 4 + 2])) / 4);\r\n outImgIdx++;\r\n topRowIdx = topRowIdx + 2;\r\n bottomRowIdx = bottomRowIdx + 2;\r\n }\r\n topRowIdx = topRowIdx + inWidth;\r\n bottomRowIdx = bottomRowIdx + inWidth;\r\n }\r\n};\r\n\r\nexport function computeGray(imageData, outArray, config) {\r\n var l = (imageData.length / 4) | 0,\r\n i,\r\n singleChannel = config && config.singleChannel === true;\r\n\r\n if (singleChannel) {\r\n for (i = 0; i < l; i++) {\r\n outArray[i] = imageData[i * 4 + 0];\r\n }\r\n } else {\r\n for (i = 0; i < l; i++) {\r\n outArray[i] = Math.floor(\r\n 0.299 * imageData[i * 4 + 0] + 0.587 * imageData[i * 4 + 1] + 0.114 * imageData[i * 4 + 2]);\r\n }\r\n }\r\n};\r\n\r\nexport function loadImageArray(src, callback, canvas) {\r\n if (!canvas) {\r\n canvas = document.createElement('canvas');\r\n }\r\n var img = new Image();\r\n img.callback = callback;\r\n img.onload = function() {\r\n canvas.width = this.width;\r\n canvas.height = this.height;\r\n var ctx = canvas.getContext('2d');\r\n ctx.drawImage(this, 0, 0);\r\n var array = new Uint8Array(this.width * this.height);\r\n ctx.drawImage(this, 0, 0);\r\n var data = ctx.getImageData(0, 0, this.width, this.height).data;\r\n computeGray(data, array);\r\n this.callback(array, {\r\n x: this.width,\r\n y: this.height\r\n }, this);\r\n };\r\n img.src = src;\r\n};\r\n\r\n/**\r\n * @param inImg {ImageWrapper} input image to be sampled\r\n * @param outImg {ImageWrapper} to be stored in\r\n */\r\nexport function halfSample(inImgWrapper, outImgWrapper) {\r\n var inImg = inImgWrapper.data;\r\n var inWidth = inImgWrapper.size.x;\r\n var outImg = outImgWrapper.data;\r\n var topRowIdx = 0;\r\n var bottomRowIdx = inWidth;\r\n var endIdx = inImg.length;\r\n var outWidth = inWidth / 2;\r\n var outImgIdx = 0;\r\n while (bottomRowIdx < endIdx) {\r\n for (var i = 0; i < outWidth; i++) {\r\n outImg[outImgIdx] = Math.floor(\r\n (inImg[topRowIdx] + inImg[topRowIdx + 1] + inImg[bottomRowIdx] + inImg[bottomRowIdx + 1]) / 4);\r\n outImgIdx++;\r\n topRowIdx = topRowIdx + 2;\r\n bottomRowIdx = bottomRowIdx + 2;\r\n }\r\n topRowIdx = topRowIdx + inWidth;\r\n bottomRowIdx = bottomRowIdx + inWidth;\r\n }\r\n};\r\n\r\nexport function hsv2rgb(hsv, rgb) {\r\n var h = hsv[0],\r\n s = hsv[1],\r\n v = hsv[2],\r\n c = v * s,\r\n x = c * (1 - Math.abs((h / 60) % 2 - 1)),\r\n m = v - c,\r\n r = 0,\r\n g = 0,\r\n b = 0;\r\n\r\n rgb = rgb || [0, 0, 0];\r\n\r\n if (h < 60) {\r\n r = c;\r\n g = x;\r\n } else if (h < 120) {\r\n r = x;\r\n g = c;\r\n } else if (h < 180) {\r\n g = c;\r\n b = x;\r\n } else if (h < 240) {\r\n g = x;\r\n b = c;\r\n } else if (h < 300) {\r\n r = x;\r\n b = c;\r\n } else if (h < 360) {\r\n r = c;\r\n b = x;\r\n }\r\n rgb[0] = ((r + m) * 255) | 0;\r\n rgb[1] = ((g + m) * 255) | 0;\r\n rgb[2] = ((b + m) * 255) | 0;\r\n return rgb;\r\n};\r\n\r\nexport function _computeDivisors(n) {\r\n var largeDivisors = [],\r\n divisors = [],\r\n i;\r\n\r\n for (i = 1; i < Math.sqrt(n) + 1; i++) {\r\n if (n % i === 0) {\r\n divisors.push(i);\r\n if (i !== n / i) {\r\n largeDivisors.unshift(Math.floor(n / i));\r\n }\r\n }\r\n }\r\n return divisors.concat(largeDivisors);\r\n};\r\n\r\nfunction _computeIntersection(arr1, arr2) {\r\n var i = 0,\r\n j = 0,\r\n result = [];\r\n\r\n while (i < arr1.length && j < arr2.length) {\r\n if (arr1[i] === arr2[j]) {\r\n result.push(arr1[i]);\r\n i++;\r\n j++;\r\n } else if (arr1[i] > arr2[j]) {\r\n j++;\r\n } else {\r\n i++;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nexport function calculatePatchSize(patchSize, imgSize) {\r\n var divisorsX = _computeDivisors(imgSize.x),\r\n divisorsY = _computeDivisors(imgSize.y),\r\n wideSide = Math.max(imgSize.x, imgSize.y),\r\n common = _computeIntersection(divisorsX, divisorsY),\r\n nrOfPatchesList = [8, 10, 15, 20, 32, 60, 80],\r\n nrOfPatchesMap = {\r\n \"x-small\": 5,\r\n \"small\": 4,\r\n \"medium\": 3,\r\n \"large\": 2,\r\n \"x-large\": 1\r\n },\r\n nrOfPatchesIdx = nrOfPatchesMap[patchSize] || nrOfPatchesMap.medium,\r\n nrOfPatches = nrOfPatchesList[nrOfPatchesIdx],\r\n desiredPatchSize = Math.floor(wideSide / nrOfPatches),\r\n optimalPatchSize;\r\n\r\n function findPatchSizeForDivisors(divisors) {\r\n var i = 0,\r\n found = divisors[Math.floor(divisors.length / 2)];\r\n\r\n while (i < (divisors.length - 1) && divisors[i] < desiredPatchSize) {\r\n i++;\r\n }\r\n if (i > 0) {\r\n if (Math.abs(divisors[i] - desiredPatchSize) > Math.abs(divisors[i - 1] - desiredPatchSize)) {\r\n found = divisors[i - 1];\r\n } else {\r\n found = divisors[i];\r\n }\r\n }\r\n if (desiredPatchSize / found < nrOfPatchesList[nrOfPatchesIdx + 1] / nrOfPatchesList[nrOfPatchesIdx] &&\r\n desiredPatchSize / found > nrOfPatchesList[nrOfPatchesIdx - 1] / nrOfPatchesList[nrOfPatchesIdx] ) {\r\n return {x: found, y: found};\r\n }\r\n return null;\r\n }\r\n\r\n optimalPatchSize = findPatchSizeForDivisors(common);\r\n if (!optimalPatchSize) {\r\n optimalPatchSize = findPatchSizeForDivisors(_computeDivisors(wideSide));\r\n if (!optimalPatchSize) {\r\n optimalPatchSize = findPatchSizeForDivisors((_computeDivisors(desiredPatchSize * nrOfPatches)));\r\n }\r\n }\r\n return optimalPatchSize;\r\n};\r\n\r\nexport function _parseCSSDimensionValues(value) {\r\n var dimension = {\r\n value: parseFloat(value),\r\n unit: value.indexOf(\"%\") === value.length - 1 ? \"%\" : \"%\"\r\n };\r\n\r\n return dimension;\r\n};\r\n\r\nexport const _dimensionsConverters = {\r\n top: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.height * (dimension.value / 100));\r\n }\r\n },\r\n right: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.width - (context.width * (dimension.value / 100)));\r\n }\r\n },\r\n bottom: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.height - (context.height * (dimension.value / 100)));\r\n }\r\n },\r\n left: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.width * (dimension.value / 100));\r\n }\r\n }\r\n};\r\n\r\nexport function computeImageArea(inputWidth, inputHeight, area) {\r\n var context = {width: inputWidth, height: inputHeight};\r\n\r\n var parsedArea = Object.keys(area).reduce(function(result, key) {\r\n var value = area[key],\r\n parsed = _parseCSSDimensionValues(value),\r\n calculated = _dimensionsConverters[key](parsed, context);\r\n\r\n result[key] = calculated;\r\n return result;\r\n }, {});\r\n\r\n return {\r\n sx: parsedArea.left,\r\n sy: parsedArea.top,\r\n sw: parsedArea.right - parsedArea.left,\r\n sh: parsedArea.bottom - parsedArea.top\r\n };\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/cv_utils.js\n **/","import SubImage from './subImage';\r\nimport {hsv2rgb} from '../common/cv_utils';\r\nimport ArrayHelper from '../common/array_helper';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n};\r\n\r\n/**\r\n * Represents a basic image combining the data and size.\r\n * In addition, some methods for manipulation are contained.\r\n * @param size {x,y} The size of the image in pixel\r\n * @param data {Array} If given, a flat array containing the pixel data\r\n * @param ArrayType {Type} If given, the desired DataType of the Array (may be typed/non-typed)\r\n * @param initialize {Boolean} Indicating if the array should be initialized on creation.\r\n * @returns {ImageWrapper}\r\n */\r\nfunction ImageWrapper(size, data, ArrayType, initialize) {\r\n if (!data) {\r\n if (ArrayType) {\r\n this.data = new ArrayType(size.x * size.y);\r\n if (ArrayType === Array && initialize) {\r\n ArrayHelper.init(this.data, 0);\r\n }\r\n } else {\r\n this.data = new Uint8Array(size.x * size.y);\r\n if (Uint8Array === Array && initialize) {\r\n ArrayHelper.init(this.data, 0);\r\n }\r\n }\r\n } else {\r\n this.data = data;\r\n }\r\n this.size = size;\r\n}\r\n\r\n/**\r\n * tests if a position is within the image with a given offset\r\n * @param imgRef {x, y} The location to test\r\n * @param border Number the padding value in pixel\r\n * @returns {Boolean} true if location inside the image's border, false otherwise\r\n * @see cvd/image.h\r\n */\r\nImageWrapper.prototype.inImageWithBorder = function(imgRef, border) {\r\n return (imgRef.x >= border)\r\n && (imgRef.y >= border)\r\n && (imgRef.x < (this.size.x - border))\r\n && (imgRef.y < (this.size.y - border));\r\n};\r\n\r\n/**\r\n * Performs bilinear sampling\r\n * @param inImg Image to extract sample from\r\n * @param x the x-coordinate\r\n * @param y the y-coordinate\r\n * @returns the sampled value\r\n * @see cvd/vision.h\r\n */\r\nImageWrapper.sample = function(inImg, x, y) {\r\n var lx = Math.floor(x);\r\n var ly = Math.floor(y);\r\n var w = inImg.size.x;\r\n var base = ly * inImg.size.x + lx;\r\n var a = inImg.data[base + 0];\r\n var b = inImg.data[base + 1];\r\n var c = inImg.data[base + w];\r\n var d = inImg.data[base + w + 1];\r\n var e = a - b;\r\n x -= lx;\r\n y -= ly;\r\n\r\n var result = Math.floor(x * (y * (e - c + d) - e) + y * (c - a) + a);\r\n return result;\r\n};\r\n\r\n/**\r\n * Initializes a given array. Sets each element to zero.\r\n * @param array {Array} The array to initialize\r\n */\r\nImageWrapper.clearArray = function(array) {\r\n var l = array.length;\r\n while (l--) {\r\n array[l] = 0;\r\n }\r\n};\r\n\r\n/**\r\n * Creates a {SubImage} from the current image ({this}).\r\n * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner)\r\n * @param size {ImageRef} The size of the resulting image\r\n * @returns {SubImage} A shared part of the original image\r\n */\r\nImageWrapper.prototype.subImage = function(from, size) {\r\n return new SubImage(from, size, this);\r\n};\r\n\r\n/**\r\n * Creates an {ImageWrapper) and copies the needed underlying image-data area\r\n * @param imageWrapper {ImageWrapper} The target {ImageWrapper} where the data should be copied\r\n * @param from {ImageRef} The location where to copy from (top-left location)\r\n */\r\nImageWrapper.prototype.subImageAsCopy = function(imageWrapper, from) {\r\n var sizeY = imageWrapper.size.y, sizeX = imageWrapper.size.x;\r\n var x, y;\r\n for ( x = 0; x < sizeX; x++) {\r\n for ( y = 0; y < sizeY; y++) {\r\n imageWrapper.data[y * sizeX + x] = this.data[(from.y + y) * this.size.x + from.x + x];\r\n }\r\n }\r\n};\r\n\r\nImageWrapper.prototype.copyTo = function(imageWrapper) {\r\n var length = this.data.length, srcData = this.data, dstData = imageWrapper.data;\r\n\r\n while (length--) {\r\n dstData[length] = srcData[length];\r\n }\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nImageWrapper.prototype.get = function(x, y) {\r\n return this.data[y * this.size.x + x];\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nImageWrapper.prototype.getSafe = function(x, y) {\r\n var i;\r\n\r\n if (!this.indexMapping) {\r\n this.indexMapping = {\r\n x: [],\r\n y: []\r\n };\r\n for (i = 0; i < this.size.x; i++) {\r\n this.indexMapping.x[i] = i;\r\n this.indexMapping.x[i + this.size.x] = i;\r\n }\r\n for (i = 0; i < this.size.y; i++) {\r\n this.indexMapping.y[i] = i;\r\n this.indexMapping.y[i + this.size.y] = i;\r\n }\r\n }\r\n return this.data[(this.indexMapping.y[y + this.size.y]) * this.size.x + this.indexMapping.x[x + this.size.x]];\r\n};\r\n\r\n/**\r\n * Sets a given pixel position in the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @param value {Number} The grayscale value to set\r\n * @returns {ImageWrapper} The Image itself (for possible chaining)\r\n */\r\nImageWrapper.prototype.set = function(x, y, value) {\r\n this.data[y * this.size.x + x] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets the border of the image (1 pixel) to zero\r\n */\r\nImageWrapper.prototype.zeroBorder = function() {\r\n var i, width = this.size.x, height = this.size.y, data = this.data;\r\n for ( i = 0; i < width; i++) {\r\n data[i] = data[(height - 1) * width + i] = 0;\r\n }\r\n for ( i = 1; i < height - 1; i++) {\r\n data[i * width] = data[i * width + (width - 1)] = 0;\r\n }\r\n};\r\n\r\n/**\r\n * Inverts a binary image in place\r\n */\r\nImageWrapper.prototype.invert = function() {\r\n var data = this.data, length = data.length;\r\n\r\n while (length--) {\r\n data[length] = data[length] ? 0 : 1;\r\n }\r\n};\r\n\r\nImageWrapper.prototype.convolve = function(kernel) {\r\n var x, y, kx, ky, kSize = (kernel.length / 2) | 0, accu = 0;\r\n for ( y = 0; y < this.size.y; y++) {\r\n for ( x = 0; x < this.size.x; x++) {\r\n accu = 0;\r\n for ( ky = -kSize; ky <= kSize; ky++) {\r\n for ( kx = -kSize; kx <= kSize; kx++) {\r\n accu += kernel[ky + kSize][kx + kSize] * this.getSafe(x + kx, y + ky);\r\n }\r\n }\r\n this.data[y * this.size.x + x] = accu;\r\n }\r\n }\r\n};\r\n\r\nImageWrapper.prototype.moments = function(labelcount) {\r\n var data = this.data,\r\n x,\r\n y,\r\n height = this.size.y,\r\n width = this.size.x,\r\n val,\r\n ysq,\r\n labelsum = [],\r\n i,\r\n label,\r\n mu11,\r\n mu02,\r\n mu20,\r\n x_,\r\n y_,\r\n tmp,\r\n result = [],\r\n PI = Math.PI,\r\n PI_4 = PI / 4;\r\n\r\n if (labelcount <= 0) {\r\n return result;\r\n }\r\n\r\n for ( i = 0; i < labelcount; i++) {\r\n labelsum[i] = {\r\n m00: 0,\r\n m01: 0,\r\n m10: 0,\r\n m11: 0,\r\n m02: 0,\r\n m20: 0,\r\n theta: 0,\r\n rad: 0\r\n };\r\n }\r\n\r\n for ( y = 0; y < height; y++) {\r\n ysq = y * y;\r\n for ( x = 0; x < width; x++) {\r\n val = data[y * width + x];\r\n if (val > 0) {\r\n label = labelsum[val - 1];\r\n label.m00 += 1;\r\n label.m01 += y;\r\n label.m10 += x;\r\n label.m11 += x * y;\r\n label.m02 += ysq;\r\n label.m20 += x * x;\r\n }\r\n }\r\n }\r\n\r\n for ( i = 0; i < labelcount; i++) {\r\n label = labelsum[i];\r\n if (!isNaN(label.m00) && label.m00 !== 0) {\r\n x_ = label.m10 / label.m00;\r\n y_ = label.m01 / label.m00;\r\n mu11 = label.m11 / label.m00 - x_ * y_;\r\n mu02 = label.m02 / label.m00 - y_ * y_;\r\n mu20 = label.m20 / label.m00 - x_ * x_;\r\n tmp = (mu02 - mu20) / (2 * mu11);\r\n tmp = 0.5 * Math.atan(tmp) + (mu11 >= 0 ? PI_4 : -PI_4 ) + PI;\r\n label.theta = (tmp * 180 / PI + 90) % 180 - 90;\r\n if (label.theta < 0) {\r\n label.theta += 180;\r\n }\r\n label.rad = tmp > PI ? tmp - PI : tmp;\r\n label.vec = vec2.clone([Math.cos(tmp), Math.sin(tmp)]);\r\n result.push(label);\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Displays the {ImageWrapper} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nImageWrapper.prototype.show = function(canvas, scale) {\r\n var ctx,\r\n frame,\r\n data,\r\n current,\r\n pixel,\r\n x,\r\n y;\r\n\r\n if (!scale) {\r\n scale = 1.0;\r\n }\r\n ctx = canvas.getContext('2d');\r\n canvas.width = this.size.x;\r\n canvas.height = this.size.y;\r\n frame = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n data = frame.data;\r\n current = 0;\r\n for (y = 0; y < this.size.y; y++) {\r\n for (x = 0; x < this.size.x; x++) {\r\n pixel = y * this.size.x + x;\r\n current = this.get(x, y) * scale;\r\n data[pixel * 4 + 0] = current;\r\n data[pixel * 4 + 1] = current;\r\n data[pixel * 4 + 2] = current;\r\n data[pixel * 4 + 3] = 255;\r\n }\r\n }\r\n //frame.data = data;\r\n ctx.putImageData(frame, 0, 0);\r\n};\r\n\r\n/**\r\n * Displays the {SubImage} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nImageWrapper.prototype.overlay = function(canvas, scale, from) {\r\n if (!scale || scale < 0 || scale > 360) {\r\n scale = 360;\r\n }\r\n var hsv = [0, 1, 1];\r\n var rgb = [0, 0, 0];\r\n var whiteRgb = [255, 255, 255];\r\n var blackRgb = [0, 0, 0];\r\n var result = [];\r\n var ctx = canvas.getContext('2d');\r\n var frame = ctx.getImageData(from.x, from.y, this.size.x, this.size.y);\r\n var data = frame.data;\r\n var length = this.data.length;\r\n while (length--) {\r\n hsv[0] = this.data[length] * scale;\r\n result = hsv[0] <= 0 ? whiteRgb : hsv[0] >= 360 ? blackRgb : hsv2rgb(hsv, rgb);\r\n data[length * 4 + 0] = result[0];\r\n data[length * 4 + 1] = result[1];\r\n data[length * 4 + 2] = result[2];\r\n data[length * 4 + 3] = 255;\r\n }\r\n ctx.putImageData(frame, from.x, from.y);\r\n};\r\n\r\nexport default ImageWrapper;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/image_wrapper.js\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Symbol.js\n ** module id = 27\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayReduce.js\n ** module id = 28\n ** module chunks = 0\n **/","var copyObjectWith = require('./_copyObjectWith');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object) {\n return copyObjectWith(source, props, object);\n}\n\nmodule.exports = copyObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyObject.js\n ** module id = 29\n ** module chunks = 0\n **/","var isArray = require('./isArray');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (typeof value == 'number') {\n return true;\n }\n return !isArray(value) &&\n (reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object)));\n}\n\nmodule.exports = isKey;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isKey.js\n ** module id = 30\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isPrototype.js\n ** module id = 31\n ** module chunks = 0\n **/","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object, else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArrayLikeObject.js\n ** module id = 32\n ** module chunks = 0\n **/","var isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isString.js\n ** module id = 33\n ** module chunks = 0\n **/","var isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isTypedArray.js\n ** module id = 34\n ** module chunks = 0\n **/","var baseKeysIn = require('./_baseKeysIn'),\n indexKeys = require('./_indexKeys'),\n isIndex = require('./_isIndex'),\n isPrototype = require('./_isPrototype');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n var index = -1,\n isProto = isPrototype(object),\n props = baseKeysIn(object),\n propsLength = props.length,\n indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n while (++index < propsLength) {\n var key = props[index];\n if (!(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/keysIn.js\n ** module id = 35\n ** module chunks = 0\n **/","import ImageDebug from '../common/image_debug';\r\n\r\nfunction contains(codeResult, list) {\r\n if (list) {\r\n return list.some(function (item) {\r\n return Object.keys(item).every(function (key) {\r\n return item[key] === codeResult[key];\r\n });\r\n });\r\n }\r\n return false;\r\n}\r\n\r\nfunction passesFilter(codeResult, filter) {\r\n if (typeof filter === 'function') {\r\n return filter(codeResult);\r\n }\r\n return true;\r\n}\r\n\r\nexport default {\r\n create: function(config) {\r\n var canvas = document.createElement(\"canvas\"),\r\n ctx = canvas.getContext(\"2d\"),\r\n results = [],\r\n capacity = config.capacity || 20,\r\n capture = config.capture === true;\r\n\r\n function matchesConstraints(codeResult) {\r\n return capacity\r\n && codeResult\r\n && !contains(codeResult, config.blacklist)\r\n && passesFilter(codeResult, config.filter);\r\n }\r\n\r\n return {\r\n addResult: function(data, imageSize, codeResult) {\r\n var result = {};\r\n\r\n if (matchesConstraints(codeResult)) {\r\n capacity--;\r\n result.codeResult = codeResult;\r\n if (capture) {\r\n canvas.width = imageSize.x;\r\n canvas.height = imageSize.y;\r\n ImageDebug.drawImage(data, imageSize, ctx);\r\n result.frame = canvas.toDataURL();\r\n }\r\n results.push(result);\r\n }\r\n },\r\n getResults: function() {\r\n return results;\r\n }\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/analytics/result_collector.js\n **/","let config;\r\n\r\nif (ENV.development){\r\n config = require('./config.dev.js');\r\n} else if (ENV.node) {\r\n config = require('./config.node.js');\r\n} else {\r\n config = require('./config.prod.js');\r\n}\r\n\r\nexport default config;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/config/config.js\n **/","/**\r\n * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization\r\n */\r\nvar Tracer = {\r\n searchDirections: [[0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [-1, -1], [-1, 0], [-1, 1]],\r\n create: function(imageWrapper, labelWrapper) {\r\n var imageData = imageWrapper.data,\r\n labelData = labelWrapper.data,\r\n searchDirections = this.searchDirections,\r\n width = imageWrapper.size.x,\r\n pos;\r\n\r\n function trace(current, color, label, edgelabel) {\r\n var i,\r\n y,\r\n x;\r\n\r\n for ( i = 0; i < 7; i++) {\r\n y = current.cy + searchDirections[current.dir][0];\r\n x = current.cx + searchDirections[current.dir][1];\r\n pos = y * width + x;\r\n if ((imageData[pos] === color) && ((labelData[pos] === 0) || (labelData[pos] === label))) {\r\n labelData[pos] = label;\r\n current.cy = y;\r\n current.cx = x;\r\n return true;\r\n } else {\r\n if (labelData[pos] === 0) {\r\n labelData[pos] = edgelabel;\r\n }\r\n current.dir = (current.dir + 1) % 8;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function vertex2D(x, y, dir) {\r\n return {\r\n dir: dir,\r\n x: x,\r\n y: y,\r\n next: null,\r\n prev: null\r\n };\r\n }\r\n\r\n function contourTracing(sy, sx, label, color, edgelabel) {\r\n var Fv = null,\r\n Cv,\r\n P,\r\n ldir,\r\n current = {\r\n cx: sx,\r\n cy: sy,\r\n dir: 0\r\n };\r\n\r\n if (trace(current, color, label, edgelabel)) {\r\n Fv = vertex2D(sx, sy, current.dir);\r\n Cv = Fv;\r\n ldir = current.dir;\r\n P = vertex2D(current.cx, current.cy, 0);\r\n P.prev = Cv;\r\n Cv.next = P;\r\n P.next = null;\r\n Cv = P;\r\n do {\r\n current.dir = (current.dir + 6) % 8;\r\n trace(current, color, label, edgelabel);\r\n if (ldir !== current.dir) {\r\n Cv.dir = current.dir;\r\n P = vertex2D(current.cx, current.cy, 0);\r\n P.prev = Cv;\r\n Cv.next = P;\r\n P.next = null;\r\n Cv = P;\r\n } else {\r\n Cv.dir = ldir;\r\n Cv.x = current.cx;\r\n Cv.y = current.cy;\r\n }\r\n ldir = current.dir;\r\n } while (current.cx !== sx || current.cy !== sy);\r\n Fv.prev = Cv.prev;\r\n Cv.prev.next = Fv;\r\n }\r\n return Fv;\r\n }\r\n\r\n return {\r\n trace: function(current, color, label, edgelabel) {\r\n return trace(current, color, label, edgelabel);\r\n },\r\n contourTracing: function(sy, sx, label, color, edgelabel) {\r\n return contourTracing(sy, sx, label, color, edgelabel);\r\n }\r\n };\r\n }\r\n};\r\n\r\nexport default (Tracer);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/tracer.js\n **/","import BarcodeReader from './barcode_reader';\r\nimport ArrayHelper from '../common/array_helper';\r\n\r\nfunction Code39Reader() {\r\n BarcodeReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n ALPHABETH_STRING: {value: \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%\"},\r\n ALPHABET: {value: [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,\r\n 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 45, 46, 32, 42, 36, 47, 43, 37]},\r\n CHARACTER_ENCODINGS: {value: [0x034, 0x121, 0x061, 0x160, 0x031, 0x130, 0x070, 0x025, 0x124, 0x064, 0x109, 0x049,\r\n 0x148, 0x019, 0x118, 0x058, 0x00D, 0x10C, 0x04C, 0x01C, 0x103, 0x043, 0x142, 0x013, 0x112, 0x052, 0x007, 0x106,\r\n 0x046, 0x016, 0x181, 0x0C1, 0x1C0, 0x091, 0x190, 0x0D0, 0x085, 0x184, 0x0C4, 0x094, 0x0A8, 0x0A2, 0x08A, 0x02A\r\n ]},\r\n ASTERISK: {value: 0x094},\r\n FORMAT: {value: \"code_39\", writeable: false}\r\n};\r\n\r\nCode39Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCode39Reader.prototype.constructor = Code39Reader;\r\n\r\nCode39Reader.prototype._toCounters = function(start, counter) {\r\n var self = this,\r\n numCounters = counter.length,\r\n end = self._row.length,\r\n isWhite = !self._row[start],\r\n i,\r\n counterPos = 0;\r\n\r\n ArrayHelper.init(counter, 0);\r\n\r\n for ( i = start; i < end; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n counterPos++;\r\n if (counterPos === numCounters) {\r\n break;\r\n } else {\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n }\r\n\r\n return counter;\r\n};\r\n\r\nCode39Reader.prototype._decode = function() {\r\n var self = this,\r\n counters = [0, 0, 0, 0, 0, 0, 0, 0, 0],\r\n result = [],\r\n start = self._findStart(),\r\n decodedChar,\r\n lastStart,\r\n pattern,\r\n nextStart;\r\n\r\n if (!start) {\r\n return null;\r\n }\r\n nextStart = self._nextSet(self._row, start.end);\r\n\r\n do {\r\n counters = self._toCounters(nextStart, counters);\r\n pattern = self._toPattern(counters);\r\n if (pattern < 0) {\r\n return null;\r\n }\r\n decodedChar = self._patternToChar(pattern);\r\n if (decodedChar < 0){\r\n return null;\r\n }\r\n result.push(decodedChar);\r\n lastStart = nextStart;\r\n nextStart += ArrayHelper.sum(counters);\r\n nextStart = self._nextSet(self._row, nextStart);\r\n } while (decodedChar !== '*');\r\n result.pop();\r\n\r\n if (!result.length) {\r\n return null;\r\n }\r\n\r\n if (!self._verifyTrailingWhitespace(lastStart, nextStart, counters)) {\r\n return null;\r\n }\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: start.start,\r\n end: nextStart,\r\n startInfo: start,\r\n decodedCodes: result\r\n };\r\n};\r\n\r\nCode39Reader.prototype._verifyTrailingWhitespace = function(lastStart, nextStart, counters) {\r\n var trailingWhitespaceEnd,\r\n patternSize = ArrayHelper.sum(counters);\r\n\r\n trailingWhitespaceEnd = nextStart - lastStart - patternSize;\r\n if ((trailingWhitespaceEnd * 3) >= patternSize) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nCode39Reader.prototype._patternToChar = function(pattern) {\r\n var i,\r\n self = this;\r\n\r\n for (i = 0; i < self.CHARACTER_ENCODINGS.length; i++) {\r\n if (self.CHARACTER_ENCODINGS[i] === pattern) {\r\n return String.fromCharCode(self.ALPHABET[i]);\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCode39Reader.prototype._findNextWidth = function(counters, current) {\r\n var i,\r\n minWidth = Number.MAX_VALUE;\r\n\r\n for (i = 0; i < counters.length; i++) {\r\n if (counters[i] < minWidth && counters[i] > current) {\r\n minWidth = counters[i];\r\n }\r\n }\r\n\r\n return minWidth;\r\n};\r\n\r\nCode39Reader.prototype._toPattern = function(counters) {\r\n var numCounters = counters.length,\r\n maxNarrowWidth = 0,\r\n numWideBars = numCounters,\r\n wideBarWidth = 0,\r\n self = this,\r\n pattern,\r\n i;\r\n\r\n while (numWideBars > 3) {\r\n maxNarrowWidth = self._findNextWidth(counters, maxNarrowWidth);\r\n numWideBars = 0;\r\n pattern = 0;\r\n for (i = 0; i < numCounters; i++) {\r\n if (counters[i] > maxNarrowWidth) {\r\n pattern |= 1 << (numCounters - 1 - i);\r\n numWideBars++;\r\n wideBarWidth += counters[i];\r\n }\r\n }\r\n\r\n if (numWideBars === 3) {\r\n for (i = 0; i < numCounters && numWideBars > 0; i++) {\r\n if (counters[i] > maxNarrowWidth) {\r\n numWideBars--;\r\n if ((counters[i] * 2) >= wideBarWidth) {\r\n return -1;\r\n }\r\n }\r\n }\r\n return pattern;\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCode39Reader.prototype._findStart = function() {\r\n var self = this,\r\n offset = self._nextSet(self._row),\r\n patternStart = offset,\r\n counter = [0, 0, 0, 0, 0, 0, 0, 0, 0],\r\n counterPos = 0,\r\n isWhite = false,\r\n i,\r\n j,\r\n whiteSpaceMustStart;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n // find start pattern\r\n if (self._toPattern(counter) === self.ASTERISK) {\r\n whiteSpaceMustStart = Math.floor(Math.max(0, patternStart - ((i - patternStart) / 4)));\r\n if (self._matchRange(whiteSpaceMustStart, patternStart, 0)) {\r\n return {\r\n start: patternStart,\r\n end: i\r\n };\r\n }\r\n }\r\n\r\n patternStart += counter[0] + counter[1];\r\n for ( j = 0; j < 7; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[7] = 0;\r\n counter[8] = 0;\r\n counterPos--;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport default Code39Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_39_reader.js\n **/","module.exports = dot\n\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1]\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/dot.js\n ** module id = 40\n ** module chunks = 0\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Uint8Array.js\n ** module id = 41\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayEach.js\n ** module id = 42\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (typeof key == 'number' && value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\nmodule.exports = assignMergeValue;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assignMergeValue.js\n ** module id = 43\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\nmodule.exports = assignValue;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assignValue.js\n ** module id = 44\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the associative array.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction assocDelete(array, key) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = array.length - 1;\n if (index == lastIndex) {\n array.pop();\n } else {\n splice.call(array, index, 1);\n }\n return true;\n}\n\nmodule.exports = assocDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocDelete.js\n ** module id = 45\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the associative array value for `key`.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction assocGet(array, key) {\n var index = assocIndexOf(array, key);\n return index < 0 ? undefined : array[index][1];\n}\n\nmodule.exports = assocGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocGet.js\n ** module id = 46\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if an associative array value for `key` exists.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction assocHas(array, key) {\n return assocIndexOf(array, key) > -1;\n}\n\nmodule.exports = assocHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocHas.js\n ** module id = 47\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the associative array `key` to `value`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n */\nfunction assocSet(array, key, value) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n array.push([key, value]);\n } else {\n array[index][1] = value;\n }\n}\n\nmodule.exports = assocSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocSet.js\n ** module id = 48\n ** module chunks = 0\n **/","var isArray = require('./isArray'),\n stringToPath = require('./_stringToPath');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction baseCastPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\nmodule.exports = baseCastPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseCastPath.js\n ** module id = 49\n ** module chunks = 0\n **/","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseFor.js\n ** module id = 50\n ** module chunks = 0\n **/","var baseCastPath = require('./_baseCastPath'),\n isKey = require('./_isKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path + ''] : baseCastPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[path[index++]];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseGet.js\n ** module id = 51\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n // that are composed entirely of index properties, return `false` for\n // `hasOwnProperty` checks of them.\n return hasOwnProperty.call(object, key) ||\n (typeof object == 'object' && key in object && getPrototypeOf(object) === null);\n}\n\nmodule.exports = baseHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseHas.js\n ** module id = 52\n ** module chunks = 0\n **/","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObject = require('./isObject'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsEqual.js\n ** module id = 53\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseProperty.js\n ** module id = 54\n ** module chunks = 0\n **/","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneArrayBuffer.js\n ** module id = 55\n ** module chunks = 0\n **/","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyArray.js\n ** module id = 56\n ** module chunks = 0\n **/","var arraySome = require('./_arraySome');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var index = -1,\n isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n isUnordered = bitmask & UNORDERED_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(array, other);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (isUnordered) {\n if (!arraySome(other, function(othValue) {\n return arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack);\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n return result;\n}\n\nmodule.exports = equalArrays;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalArrays.js\n ** module id = 57\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect maps, sets, and weakmaps. */\nvar mapCtorString = Map ? funcToString.call(Map) : '',\n setCtorString = Set ? funcToString.call(Set) : '',\n weakMapCtorString = WeakMap ? funcToString.call(WeakMap) : '';\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction getTag(value) {\n return objectToString.call(value);\n}\n\n// Fallback for IE 11 providing `toStringTag` values for maps, sets, and weakmaps.\nif ((Map && getTag(new Map) != mapTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : null,\n ctorString = typeof Ctor == 'function' ? funcToString.call(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case mapCtorString: return mapTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getTag.js\n ** module id = 58\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @param {Object} hash The hash to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(hash, key) {\n return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key);\n}\n\nmodule.exports = hashHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashHas.js\n ** module id = 59\n ** module chunks = 0\n **/","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isLength = require('./isLength'),\n isString = require('./isString');\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\nmodule.exports = indexKeys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_indexKeys.js\n ** module id = 60\n ** module chunks = 0\n **/","/**\n * Converts `map` to an array.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapToArray.js\n ** module id = 61\n ** module chunks = 0\n **/","/**\n * Converts `set` to an array.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_setToArray.js\n ** module id = 62\n ** module chunks = 0\n **/","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined` the `defaultValue` is used in its place.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/get.js\n ** module id = 63\n ** module chunks = 0\n **/","var baseFlatten = require('./_baseFlatten'),\n basePick = require('./_basePick'),\n rest = require('./rest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property names to pick, specified\n * individually or in arrays.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = rest(function(object, props) {\n return object == null ? {} : basePick(object, baseFlatten(props, 1));\n});\n\nmodule.exports = pick;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/pick.js\n ** module id = 64\n ** module chunks = 0\n **/","var apply = require('./_apply'),\n toInteger = require('./toInteger');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : toInteger(start), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, array);\n case 1: return func.call(this, args[0], array);\n case 2: return func.call(this, args[0], args[1], array);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = rest;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/rest.js\n ** module id = 65\n ** module chunks = 0\n **/","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() { return this; })();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/buildin/global.js\n ** module id = 66\n ** module chunks = 0\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.l; }\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.i; }\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/buildin/module.js\n ** module id = 67\n ** module chunks = 0\n **/","import './common/typedefs';\r\nimport 'webrtc-adapter';\r\nimport createScanner from './scanner';\r\nimport ImageWrapper from './common/image_wrapper';\r\nimport ImageDebug from './common/image_debug';\r\nimport ResultCollector from './analytics/result_collector';\r\nimport Config from './config/config';\r\nimport {merge, pick, omitBy, isEmpty} from 'lodash';\r\n\r\n\r\nfunction fromImage(config, imageSrc, inputConfig = {}) {\r\n const staticImageConfig = {\r\n inputStream: {\r\n type: \"ImageStream\",\r\n sequence: false,\r\n size: 800,\r\n src: imageSrc\r\n },\r\n numOfWorkers: (ENV.development && config.debug) ? 0 : 1\r\n };\r\n config = merge(\r\n config,\r\n staticImageConfig,\r\n {numOfWorkers: typeof config.numOfWorkers === 'number' && config.numOfWorkers > 0 ? 1 : 0},\r\n {inputStream: omitBy(pick(config.inputStream, ['size', 'src']), isEmpty)},\r\n {inputStream: inputConfig});\r\n\r\n const scanner = createScanner();\r\n return {\r\n addEventListener(eventType, cb) {\r\n scanner.subscribe(eventType, cb);\r\n return this;\r\n },\r\n removeEventListener(eventType, cb) {\r\n scanner.unsubscribe(eventType, cb);\r\n return this;\r\n },\r\n start() {\r\n scanner.init(config, () => {\r\n scanner.start();\r\n });\r\n return this;\r\n },\r\n stop() {\r\n scanner.stop();\r\n return this;\r\n },\r\n toPromise() {\r\n return new Promise((resolve, reject) => {\r\n scanner.decodeSingle(config, (result) => {\r\n if (result && result.codeResult && result.codeResult.code) {\r\n return resolve(result);\r\n }\r\n return reject(result);\r\n });\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction fromVideo(config, source, inputConfig = {}) {\r\n // remember last instance\r\n // check if anything but the imagesrc has changed\r\n //\r\n let sourceConfig = {\r\n type: \"LiveStream\",\r\n constraints: {\r\n width: 640,\r\n height: 480,\r\n facingMode: \"environment\"\r\n }\r\n };\r\n\r\n /*if (source instanceof MediaStream) {\r\n // stream\r\n } else*/ if (source instanceof Element) {\r\n // video element\r\n } else if (typeof source === 'string') {\r\n // video source\r\n } else if (typeof source === 'object'\r\n && (typeof source.constraints !== 'undefined'\r\n || typeof source.area !== 'undefined')) {\r\n inputConfig = source;\r\n } else if (!source) {\r\n // LiveStream\r\n }\r\n config = merge({}, config, {inputStream: sourceConfig}, {inputStream: inputConfig});\r\n console.log(config);\r\n const scanner = createScanner();\r\n return {\r\n addEventListener(eventType, cb) {\r\n scanner.subscribe(eventType, cb);\r\n return this;\r\n },\r\n removeEventListener(eventType, cb) {\r\n scanner.unsubscribe(eventType, cb);\r\n return this;\r\n },\r\n start() {\r\n scanner.init(config, (error) => {\r\n if (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n scanner.start();\r\n });\r\n return this;\r\n },\r\n stop() {\r\n scanner.stop();\r\n return this;\r\n }\r\n };\r\n}\r\n\r\nconst defaultScanner = createScanner();\r\n\r\nfunction setConfig(configuration = {}, key, config = {}) {\r\n var mergedConfig = merge({}, configuration, {[key]: config});\r\n return createApi(mergedConfig);\r\n}\r\n\r\nfunction createApi(configuration = Config) {\r\n return {\r\n fromImage(src, conf) {\r\n return fromImage(configuration, src, conf);\r\n },\r\n fromVideo(src, inputConfig) {\r\n return fromVideo(configuration, src, inputConfig);\r\n },\r\n decoder(conf) {\r\n return setConfig(configuration, \"decoder\", conf);\r\n },\r\n locator(conf) {\r\n return setConfig(configuration, \"locator\", conf);\r\n },\r\n config(conf) {\r\n return createApi(merge({}, configuration, conf));\r\n },\r\n registerResultCollector(resultCollector) {\r\n defaultScanner.registerResultCollector(resultCollector);\r\n },\r\n getCanvas() {\r\n return defaultScanner.canvas;\r\n },\r\n ImageWrapper,\r\n ImageDebug,\r\n ResultCollector,\r\n _worker: {\r\n createScanner\r\n }\r\n };\r\n}\r\nexport default createApi();\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/quagga.js\n **/","const vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n dot: require('gl-vec2/dot')\r\n};\r\n\r\n/**\r\n * Creates a cluster for grouping similar orientations of datapoints\r\n */\r\nexport default {\r\n create: function(point, threshold) {\r\n var points = [],\r\n center = {\r\n rad: 0,\r\n vec: vec2.clone([0, 0])\r\n },\r\n pointMap = {};\r\n\r\n function init() {\r\n add(point);\r\n updateCenter();\r\n }\r\n\r\n function add(pointToAdd) {\r\n pointMap[pointToAdd.id] = pointToAdd;\r\n points.push(pointToAdd);\r\n }\r\n\r\n function updateCenter() {\r\n var i, sum = 0;\r\n for ( i = 0; i < points.length; i++) {\r\n sum += points[i].rad;\r\n }\r\n center.rad = sum / points.length;\r\n center.vec = vec2.clone([Math.cos(center.rad), Math.sin(center.rad)]);\r\n }\r\n\r\n init();\r\n\r\n return {\r\n add: function(pointToAdd) {\r\n if (!pointMap[pointToAdd.id]) {\r\n add(pointToAdd);\r\n updateCenter();\r\n }\r\n },\r\n fits: function(otherPoint) {\r\n // check cosine similarity to center-angle\r\n var similarity = Math.abs(vec2.dot(otherPoint.point.vec, center.vec));\r\n if (similarity > threshold) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n getPoints: function() {\r\n return points;\r\n },\r\n getCenter: function() {\r\n return center;\r\n }\r\n };\r\n },\r\n createPoint: function(newPoint, id, property) {\r\n return {\r\n rad: newPoint[property],\r\n point: newPoint,\r\n id: id\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/cluster.js\n **/","export default function createEventedElement() {\r\n var events = {};\r\n\r\n function getEvent(eventName) {\r\n if (!events[eventName]) {\r\n events[eventName] = {\r\n subscribers: []\r\n };\r\n }\r\n return events[eventName];\r\n }\r\n\r\n function clearEvents(){\r\n events = {};\r\n }\r\n\r\n function publishSubscription(subscription, data) {\r\n if (subscription.async) {\r\n setTimeout(function() {\r\n subscription.callback(data);\r\n }, 4);\r\n } else {\r\n subscription.callback(data);\r\n }\r\n }\r\n\r\n function subscribe(event, callback, async) {\r\n var subscription;\r\n\r\n if ( typeof callback === \"function\") {\r\n subscription = {\r\n callback: callback,\r\n async: async\r\n };\r\n } else {\r\n subscription = callback;\r\n if (!subscription.callback) {\r\n throw \"Callback was not specified on options\";\r\n }\r\n }\r\n\r\n getEvent(event).subscribers.push(subscription);\r\n }\r\n\r\n return {\r\n subscribe: function(event, callback, async) {\r\n return subscribe(event, callback, async);\r\n },\r\n publish: function(eventName, data) {\r\n var event = getEvent(eventName),\r\n subscribers = event.subscribers;\r\n\r\n subscribers.filter(function(subscriber) {\r\n return !!subscriber.once;\r\n }).forEach((subscriber) => {\r\n publishSubscription(subscriber, data);\r\n });\r\n event.subscribers = subscribers.filter(function(subscriber) {\r\n return !subscriber.once;\r\n });\r\n event.subscribers.forEach((subscriber) => {\r\n publishSubscription(subscriber, data);\r\n });\r\n },\r\n once: function(event, callback, async) {\r\n subscribe(event, {\r\n callback: callback,\r\n async: async,\r\n once: true\r\n });\r\n },\r\n unsubscribe: function(eventName, callback) {\r\n var event;\r\n\r\n if (eventName) {\r\n event = getEvent(eventName);\r\n if (event && callback) {\r\n event.subscribers = event.subscribers.filter(function(subscriber){\r\n return subscriber.callback !== callback;\r\n });\r\n } else {\r\n event.subscribers = [];\r\n }\r\n } else {\r\n clearEvents();\r\n }\r\n }\r\n };\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/events.js\n **/","/**\r\n * Construct representing a part of another {ImageWrapper}. Shares data\r\n * between the parent and the child.\r\n * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner)\r\n * @param size {ImageRef} The size of the resulting image\r\n * @param I {ImageWrapper} The {ImageWrapper} to share from\r\n * @returns {SubImage} A shared part of the original image\r\n */\r\nfunction SubImage(from, size, I) {\r\n if (!I) {\r\n I = {\r\n data: null,\r\n size: size\r\n };\r\n }\r\n this.data = I.data;\r\n this.originalSize = I.size;\r\n this.I = I;\r\n\r\n this.from = from;\r\n this.size = size;\r\n}\r\n\r\n/**\r\n * Displays the {SubImage} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nSubImage.prototype.show = function(canvas, scale) {\r\n var ctx,\r\n frame,\r\n data,\r\n current,\r\n y,\r\n x,\r\n pixel;\r\n\r\n if (!scale) {\r\n scale = 1.0;\r\n }\r\n ctx = canvas.getContext('2d');\r\n canvas.width = this.size.x;\r\n canvas.height = this.size.y;\r\n frame = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n data = frame.data;\r\n current = 0;\r\n for (y = 0; y < this.size.y; y++) {\r\n for (x = 0; x < this.size.x; x++) {\r\n pixel = y * this.size.x + x;\r\n current = this.get(x, y) * scale;\r\n data[pixel * 4 + 0] = current;\r\n data[pixel * 4 + 1] = current;\r\n data[pixel * 4 + 2] = current;\r\n data[pixel * 4 + 3] = 255;\r\n }\r\n }\r\n frame.data = data;\r\n ctx.putImageData(frame, 0, 0);\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the {SubImage}\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nSubImage.prototype.get = function(x, y) {\r\n return this.data[(this.from.y + y) * this.originalSize.x + this.from.x + x];\r\n};\r\n\r\n/**\r\n * Updates the underlying data from a given {ImageWrapper}\r\n * @param image {ImageWrapper} The updated image\r\n */\r\nSubImage.prototype.updateData = function(image) {\r\n this.originalSize = image.size;\r\n this.data = image.data;\r\n};\r\n\r\n/**\r\n * Updates the position of the shared area\r\n * @param from {x,y} The new location\r\n * @returns {SubImage} returns {this} for possible chaining\r\n */\r\nSubImage.prototype.updateFrom = function(from) {\r\n this.from = from;\r\n return this;\r\n};\r\n\r\nexport default (SubImage);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/subImage.js\n **/","/*\r\n * typedefs.js\r\n * Normalizes browser-specific prefixes\r\n */\r\n\r\nif (typeof window !== 'undefined') {\r\n window.requestAnimFrame = (function () {\r\n return window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n window.msRequestAnimationFrame ||\r\n function (/* function FrameRequestCallback */ callback) {\r\n window.setTimeout(callback, 1000 / 60);\r\n };\r\n })();\r\n}\r\nMath.imul = Math.imul || function(a, b) {\r\n var ah = (a >>> 16) & 0xffff,\r\n al = a & 0xffff,\r\n bh = (b >>> 16) & 0xffff,\r\n bl = b & 0xffff;\r\n // the shift by 0 fixes the sign on the high part\r\n // the final |0 converts the unsigned value into a signed value\r\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/typedefs.js\n **/","module.exports = {\r\n inputStream: {\r\n name: \"Live\",\r\n type: \"LiveStream\",\r\n constraints: {\r\n width: 640,\r\n height: 480,\r\n // aspectRatio: 640/480, // optional\r\n facingMode: \"environment\", // or user\r\n // deviceId: \"38745983457387598375983759834\"\r\n },\r\n area: {\r\n top: \"0%\",\r\n right: \"0%\",\r\n left: \"0%\",\r\n bottom: \"0%\"\r\n },\r\n singleChannel: false // true: only the red color-channel is read\r\n },\r\n locate: true,\r\n numOfWorkers: 2,\r\n decoder: {\r\n readers: [\r\n 'code_128_reader'\r\n ],\r\n debug: {\r\n drawBoundingBox: false,\r\n showFrequency: false,\r\n drawScanline: false,\r\n showPattern: false\r\n }\r\n },\r\n locator: {\r\n halfSample: true,\r\n patchSize: \"medium\", // x-small, small, medium, large, x-large\r\n debug: {\r\n showCanvas: false,\r\n showPatches: false,\r\n showFoundPatches: false,\r\n showSkeleton: false,\r\n showLabels: false,\r\n showPatchLabels: false,\r\n showRemainingPatchLabels: false,\r\n boxFromPatches: {\r\n showTransformed: false,\r\n showTransformedBox: false,\r\n showBB: false\r\n }\r\n }\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/config/config.dev.js\n **/","import Bresenham from './bresenham';\r\nimport ImageDebug from '../common/image_debug';\r\nimport Code128Reader from '../reader/code_128_reader';\r\nimport EANReader from '../reader/ean_reader';\r\nimport Code39Reader from '../reader/code_39_reader';\r\nimport Code39VINReader from '../reader/code_39_vin_reader';\r\nimport CodabarReader from '../reader/codabar_reader';\r\nimport UPCReader from '../reader/upc_reader';\r\nimport EAN8Reader from '../reader/ean_8_reader';\r\nimport EAN2Reader from '../reader/ean_2_reader';\r\nimport EAN5Reader from '../reader/ean_5_reader';\r\nimport UPCEReader from '../reader/upc_e_reader';\r\nimport I2of5Reader from '../reader/i2of5_reader';\r\n\r\nconst READERS = {\r\n code_128_reader: Code128Reader,\r\n ean_reader: EANReader,\r\n ean_5_reader: EAN5Reader,\r\n ean_2_reader: EAN2Reader,\r\n ean_8_reader: EAN8Reader,\r\n code_39_reader: Code39Reader,\r\n code_39_vin_reader: Code39VINReader,\r\n codabar_reader: CodabarReader,\r\n upc_reader: UPCReader,\r\n upc_e_reader: UPCEReader,\r\n i2of5_reader: I2of5Reader\r\n};\r\nexport default {\r\n create: function(config, inputImageWrapper) {\r\n var _canvas = {\r\n ctx: {\r\n frequency: null,\r\n pattern: null,\r\n overlay: null\r\n },\r\n dom: {\r\n frequency: null,\r\n pattern: null,\r\n overlay: null\r\n }\r\n },\r\n _barcodeReaders = [];\r\n\r\n initCanvas();\r\n initReaders();\r\n initConfig();\r\n\r\n function initCanvas() {\r\n if (ENV.development && typeof document !== 'undefined') {\r\n var $debug = document.querySelector(\"#debug.detection\");\r\n _canvas.dom.frequency = document.querySelector(\"canvas.frequency\");\r\n if (!_canvas.dom.frequency) {\r\n _canvas.dom.frequency = document.createElement(\"canvas\");\r\n _canvas.dom.frequency.className = \"frequency\";\r\n if ($debug) {\r\n $debug.appendChild(_canvas.dom.frequency);\r\n }\r\n }\r\n _canvas.ctx.frequency = _canvas.dom.frequency.getContext(\"2d\");\r\n\r\n _canvas.dom.pattern = document.querySelector(\"canvas.patternBuffer\");\r\n if (!_canvas.dom.pattern) {\r\n _canvas.dom.pattern = document.createElement(\"canvas\");\r\n _canvas.dom.pattern.className = \"patternBuffer\";\r\n if ($debug) {\r\n $debug.appendChild(_canvas.dom.pattern);\r\n }\r\n }\r\n _canvas.ctx.pattern = _canvas.dom.pattern.getContext(\"2d\");\r\n\r\n _canvas.dom.overlay = document.querySelector(\"canvas.drawingBuffer\");\r\n if (_canvas.dom.overlay) {\r\n _canvas.ctx.overlay = _canvas.dom.overlay.getContext(\"2d\");\r\n }\r\n }\r\n }\r\n\r\n function initReaders() {\r\n config.readers.forEach(function(readerConfig) {\r\n var reader,\r\n configuration = {},\r\n supplements = [];\r\n\r\n if (typeof readerConfig === 'object') {\r\n reader = readerConfig.format;\r\n configuration = readerConfig.config;\r\n } else if (typeof readerConfig === 'string') {\r\n reader = readerConfig;\r\n }\r\n if (ENV.development) {\r\n console.log(\"Before registering reader: \", reader);\r\n }\r\n if (configuration.supplements) {\r\n supplements = configuration\r\n .supplements.map((supplement) => {\r\n return new READERS[supplement]();\r\n });\r\n }\r\n _barcodeReaders.push(new READERS[reader](configuration, supplements));\r\n });\r\n if (ENV.development) {\r\n console.log(\"Registered Readers: \" + _barcodeReaders\r\n .map((reader) => JSON.stringify({format: reader.FORMAT, config: reader.config}))\r\n .join(', '));\r\n }\r\n }\r\n\r\n function initConfig() {\r\n if (ENV.development && typeof document !== 'undefined') {\r\n var i,\r\n vis = [{\r\n node: _canvas.dom.frequency,\r\n prop: config.debug.showFrequency\r\n }, {\r\n node: _canvas.dom.pattern,\r\n prop: config.debug.showPattern\r\n }];\r\n\r\n for (i = 0; i < vis.length; i++) {\r\n if (vis[i].prop === true) {\r\n vis[i].node.style.display = \"block\";\r\n } else {\r\n vis[i].node.style.display = \"none\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * extend the line on both ends\r\n * @param {Array} line\r\n * @param {Number} angle\r\n */\r\n function getExtendedLine(line, angle, ext) {\r\n function extendLine(amount) {\r\n var extension = {\r\n y: amount * Math.sin(angle),\r\n x: amount * Math.cos(angle)\r\n };\r\n\r\n line[0].y -= extension.y;\r\n line[0].x -= extension.x;\r\n line[1].y += extension.y;\r\n line[1].x += extension.x;\r\n }\r\n\r\n // check if inside image\r\n extendLine(ext);\r\n while (ext > 1 && (!inputImageWrapper.inImageWithBorder(line[0], 0)\r\n || !inputImageWrapper.inImageWithBorder(line[1], 0))) {\r\n ext -= Math.ceil(ext / 2);\r\n extendLine(-ext);\r\n }\r\n return line;\r\n }\r\n\r\n function getLine(box) {\r\n return [{\r\n x: (box[1][0] - box[0][0]) / 2 + box[0][0],\r\n y: (box[1][1] - box[0][1]) / 2 + box[0][1]\r\n }, {\r\n x: (box[3][0] - box[2][0]) / 2 + box[2][0],\r\n y: (box[3][1] - box[2][1]) / 2 + box[2][1]\r\n }];\r\n }\r\n\r\n function tryDecode(line) {\r\n var result = null,\r\n i,\r\n barcodeLine = Bresenham.getBarcodeLine(inputImageWrapper, line[0], line[1]);\r\n\r\n if (ENV.development && config.debug.showFrequency) {\r\n ImageDebug.drawPath(line, {x: 'x', y: 'y'}, _canvas.ctx.overlay, {color: 'red', lineWidth: 3});\r\n Bresenham.debug.printFrequency(barcodeLine.line, _canvas.dom.frequency);\r\n }\r\n\r\n Bresenham.toBinaryLine(barcodeLine);\r\n\r\n if (ENV.development && config.debug.showPattern) {\r\n Bresenham.debug.printPattern(barcodeLine.line, _canvas.dom.pattern);\r\n }\r\n\r\n for ( i = 0; i < _barcodeReaders.length && result === null; i++) {\r\n result = _barcodeReaders[i].decodePattern(barcodeLine.line);\r\n }\r\n if (result === null){\r\n return null;\r\n }\r\n return {\r\n codeResult: result,\r\n barcodeLine: barcodeLine\r\n };\r\n }\r\n\r\n /**\r\n * This method slices the given area apart and tries to detect a barcode-pattern\r\n * for each slice. It returns the decoded barcode, or null if nothing was found\r\n * @param {Array} box\r\n * @param {Array} line\r\n * @param {Number} lineAngle\r\n */\r\n function tryDecodeBruteForce(box, line, lineAngle) {\r\n var sideLength = Math.sqrt(Math.pow(box[1][0] - box[0][0], 2) + Math.pow((box[1][1] - box[0][1]), 2)),\r\n i,\r\n slices = 16,\r\n result = null,\r\n dir,\r\n extension,\r\n xdir = Math.sin(lineAngle),\r\n ydir = Math.cos(lineAngle);\r\n\r\n for ( i = 1; i < slices && result === null; i++) {\r\n // move line perpendicular to angle\r\n dir = sideLength / slices * i * (i % 2 === 0 ? -1 : 1);\r\n extension = {\r\n y: dir * xdir,\r\n x: dir * ydir\r\n };\r\n line[0].y += extension.x;\r\n line[0].x -= extension.y;\r\n line[1].y += extension.x;\r\n line[1].x -= extension.y;\r\n\r\n result = tryDecode(line);\r\n }\r\n return result;\r\n }\r\n\r\n function getLineLength(line) {\r\n return Math.sqrt(\r\n Math.pow(Math.abs(line[1].y - line[0].y), 2) +\r\n Math.pow(Math.abs(line[1].x - line[0].x), 2));\r\n }\r\n\r\n /**\r\n * With the help of the configured readers (Code128 or EAN) this function tries to detect a\r\n * valid barcode pattern within the given area.\r\n * @param {Object} box The area to search in\r\n * @returns {Object} the result {codeResult, line, angle, pattern, threshold}\r\n */\r\n function decodeFromBoundingBox(box) {\r\n var line,\r\n lineAngle,\r\n ctx = _canvas.ctx.overlay,\r\n result,\r\n lineLength;\r\n\r\n if (ENV.development) {\r\n if (config.debug.drawBoundingBox && ctx) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, ctx, {color: \"blue\", lineWidth: 2});\r\n }\r\n }\r\n\r\n line = getLine(box);\r\n lineLength = getLineLength(line);\r\n lineAngle = Math.atan2(line[1].y - line[0].y, line[1].x - line[0].x);\r\n line = getExtendedLine(line, lineAngle, Math.floor(lineLength * 0.1));\r\n if (line === null){\r\n return null;\r\n }\r\n\r\n result = tryDecode(line);\r\n if (result === null) {\r\n result = tryDecodeBruteForce(box, line, lineAngle);\r\n }\r\n\r\n if (result === null) {\r\n return null;\r\n }\r\n\r\n if (ENV.development && result && config.debug.drawScanline && ctx) {\r\n ImageDebug.drawPath(line, {x: 'x', y: 'y'}, ctx, {color: 'red', lineWidth: 3});\r\n }\r\n\r\n return {\r\n codeResult: result.codeResult,\r\n line: line,\r\n angle: lineAngle,\r\n pattern: result.barcodeLine.line,\r\n threshold: result.barcodeLine.threshold\r\n };\r\n }\r\n\r\n return {\r\n decodeFromBoundingBox: function(box) {\r\n return decodeFromBoundingBox(box);\r\n },\r\n decodeFromBoundingBoxes: function(boxes) {\r\n var i, result,\r\n barcodes = [],\r\n multiple = config.multiple;\r\n\r\n for ( i = 0; i < boxes.length; i++) {\r\n const box = boxes[i];\r\n result = decodeFromBoundingBox(box) || {};\r\n result.box = box;\r\n\r\n if (multiple) {\r\n barcodes.push(result);\r\n } else if (result.codeResult) {\r\n return result;\r\n }\r\n }\r\n\r\n if (multiple) {\r\n return {\r\n barcodes\r\n };\r\n }\r\n },\r\n setReaders: function(readers) {\r\n config.readers = readers;\r\n _barcodeReaders.length = 0;\r\n initReaders();\r\n }\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/decoder/barcode_decoder.js\n **/","var Bresenham = {};\r\n\r\nvar Slope = {\r\n DIR: {\r\n UP: 1,\r\n DOWN: -1\r\n }\r\n};\r\n/**\r\n * Scans a line of the given image from point p1 to p2 and returns a result object containing\r\n * gray-scale values (0-255) of the underlying pixels in addition to the min\r\n * and max values.\r\n * @param {Object} imageWrapper\r\n * @param {Object} p1 The start point {x,y}\r\n * @param {Object} p2 The end point {x,y}\r\n * @returns {line, min, max}\r\n */\r\nBresenham.getBarcodeLine = function(imageWrapper, p1, p2) {\r\n var x0 = p1.x | 0,\r\n y0 = p1.y | 0,\r\n x1 = p2.x | 0,\r\n y1 = p2.y | 0,\r\n steep = Math.abs(y1 - y0) > Math.abs(x1 - x0),\r\n deltax,\r\n deltay,\r\n error,\r\n ystep,\r\n y,\r\n tmp,\r\n x,\r\n line = [],\r\n imageData = imageWrapper.data,\r\n width = imageWrapper.size.x,\r\n sum = 0,\r\n val,\r\n min = 255,\r\n max = 0;\r\n\r\n function read(a, b) {\r\n val = imageData[b * width + a];\r\n sum += val;\r\n min = val < min ? val : min;\r\n max = val > max ? val : max;\r\n line.push(val);\r\n }\r\n\r\n if (steep) {\r\n tmp = x0;\r\n x0 = y0;\r\n y0 = tmp;\r\n\r\n tmp = x1;\r\n x1 = y1;\r\n y1 = tmp;\r\n }\r\n if (x0 > x1) {\r\n tmp = x0;\r\n x0 = x1;\r\n x1 = tmp;\r\n\r\n tmp = y0;\r\n y0 = y1;\r\n y1 = tmp;\r\n }\r\n deltax = x1 - x0;\r\n deltay = Math.abs(y1 - y0);\r\n error = (deltax / 2) | 0;\r\n y = y0;\r\n ystep = y0 < y1 ? 1 : -1;\r\n for ( x = x0; x < x1; x++) {\r\n if (steep){\r\n read(y, x);\r\n } else {\r\n read(x, y);\r\n }\r\n error = error - deltay;\r\n if (error < 0) {\r\n y = y + ystep;\r\n error = error + deltax;\r\n }\r\n }\r\n\r\n return {\r\n line: line,\r\n min: min,\r\n max: max\r\n };\r\n};\r\n\r\n/**\r\n * Converts the result from getBarcodeLine into a binary representation\r\n * also considering the frequency and slope of the signal for more robust results\r\n * @param {Object} result {line, min, max}\r\n */\r\nBresenham.toBinaryLine = function(result) {\r\n var min = result.min,\r\n max = result.max,\r\n line = result.line,\r\n slope,\r\n slope2,\r\n center = min + (max - min) / 2,\r\n extrema = [],\r\n currentDir,\r\n dir,\r\n threshold = (max - min) / 12,\r\n rThreshold = -threshold,\r\n i,\r\n j;\r\n\r\n // 1. find extrema\r\n currentDir = line[0] > center ? Slope.DIR.UP : Slope.DIR.DOWN;\r\n extrema.push({\r\n pos: 0,\r\n val: line[0]\r\n });\r\n for ( i = 0; i < line.length - 2; i++) {\r\n slope = (line[i + 1] - line[i]);\r\n slope2 = (line[i + 2] - line[i + 1]);\r\n if ((slope + slope2) < rThreshold && line[i + 1] < (center * 1.5)) {\r\n dir = Slope.DIR.DOWN;\r\n } else if ((slope + slope2) > threshold && line[i + 1] > (center * 0.5)) {\r\n dir = Slope.DIR.UP;\r\n } else {\r\n dir = currentDir;\r\n }\r\n\r\n if (currentDir !== dir) {\r\n extrema.push({\r\n pos: i,\r\n val: line[i]\r\n });\r\n currentDir = dir;\r\n }\r\n }\r\n extrema.push({\r\n pos: line.length,\r\n val: line[line.length - 1]\r\n });\r\n\r\n for ( j = extrema[0].pos; j < extrema[1].pos; j++) {\r\n line[j] = line[j] > center ? 0 : 1;\r\n }\r\n\r\n // iterate over extrema and convert to binary based on avg between minmax\r\n for ( i = 1; i < extrema.length - 1; i++) {\r\n if (extrema[i + 1].val > extrema[i].val) {\r\n threshold = (extrema[i].val + ((extrema[i + 1].val - extrema[i].val) / 3) * 2) | 0;\r\n } else {\r\n threshold = (extrema[i + 1].val + ((extrema[i].val - extrema[i + 1].val) / 3)) | 0;\r\n }\r\n\r\n for ( j = extrema[i].pos; j < extrema[i + 1].pos; j++) {\r\n line[j] = line[j] > threshold ? 0 : 1;\r\n }\r\n }\r\n\r\n return {\r\n line: line,\r\n threshold: threshold\r\n };\r\n};\r\n\r\n/**\r\n * Used for development only\r\n */\r\nBresenham.debug = {\r\n printFrequency: function(line, canvas) {\r\n var i,\r\n ctx = canvas.getContext(\"2d\");\r\n canvas.width = line.length;\r\n canvas.height = 256;\r\n\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"blue\";\r\n for ( i = 0; i < line.length; i++) {\r\n ctx.moveTo(i, 255);\r\n ctx.lineTo(i, 255 - line[i]);\r\n }\r\n ctx.stroke();\r\n ctx.closePath();\r\n },\r\n\r\n printPattern: function(line, canvas) {\r\n var ctx = canvas.getContext(\"2d\"), i;\r\n\r\n canvas.width = line.length;\r\n ctx.fillColor = \"black\";\r\n for ( i = 0; i < line.length; i++) {\r\n if (line[i] === 1) {\r\n ctx.fillRect(i, 0, 1, 100);\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default Bresenham;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/decoder/bresenham.js\n **/","import {merge, pick} from 'lodash';\r\n\r\nvar streamRef;\r\n\r\nfunction waitForVideo(video) {\r\n return new Promise((resolve, reject) => {\r\n let attempts = 10;\r\n\r\n function checkVideo() {\r\n if (attempts > 0) {\r\n if (video.videoWidth > 0 && video.videoHeight > 0) {\r\n if (ENV.development) {\r\n console.log(video.videoWidth + \"px x \" + video.videoHeight + \"px\");\r\n }\r\n resolve();\r\n } else {\r\n window.setTimeout(checkVideo, 500);\r\n }\r\n } else {\r\n reject('Unable to play video stream. Is webcam working?');\r\n }\r\n attempts--;\r\n }\r\n checkVideo();\r\n });\r\n}\r\n\r\n/**\r\n * Tries to attach the camera-stream to a given video-element\r\n * and calls the callback function when the content is ready\r\n * @param {Object} constraints\r\n * @param {Object} video\r\n */\r\nfunction initCamera(video, constraints) {\r\n return navigator.mediaDevices.getUserMedia(constraints)\r\n .then((stream) => {\r\n return new Promise((resolve, reject) => {\r\n streamRef = stream;\r\n video.setAttribute(\"autoplay\", 'true');\r\n video.srcObject = stream;\r\n video.addEventListener('loadedmetadata', (e) => {\r\n video.play();\r\n resolve();\r\n });\r\n });\r\n })\r\n .then(waitForVideo.bind(null, video));\r\n}\r\n\r\nfunction deprecatedConstraints(videoConstraints) {\r\n const normalized = pick(videoConstraints, [\"width\", \"height\", \"facingMode\",\r\n \"aspectRatio\", \"deviceId\"]);\r\n\r\n if (typeof videoConstraints[\"minAspectRatio\"] !== 'undefined' &&\r\n videoConstraints[\"minAspectRatio\"] > 0) {\r\n normalized[\"aspectRatio\"] = videoConstraints[\"minAspectRatio\"];\r\n console.log(\"WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead\");\r\n }\r\n if (typeof videoConstraints[\"facing\"] !== 'undefined') {\r\n normalized[\"facingMode\"] = videoConstraints[\"facing\"];\r\n console.log(\"WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'\");\r\n }\r\n return normalized;\r\n}\r\n\r\nfunction applyCameraFacing(facing, constraints) {\r\n if (typeof constraints.video.deviceId !== 'undefined' || !facing){\r\n return Promise.resolve(constraints);\r\n }\r\n if ( typeof MediaStreamTrack !== 'undefined' &&\r\n typeof MediaStreamTrack.getSources !== 'undefined') {\r\n return new Promise((resolve, reject) => {\r\n MediaStreamTrack.getSources((sourceInfos) => {\r\n const videoSource = sourceInfos.filter((sourceInfo) => (\r\n sourceInfo.kind === \"video\" && sourceInfo.facing === facing\r\n ))[0];\r\n if (videoSource) {\r\n return resolve(merge({}, constraints,\r\n {video: {deviceId: videoSource.id}}));\r\n }\r\n return resolve(constraints);\r\n });\r\n });\r\n }\r\n return Promise.resolve(merge({}, constraints, {video: {facingMode: facing}}));\r\n}\r\n\r\nfunction pickConstraints(videoConstraints) {\r\n const constraints = {\r\n audio: false,\r\n video: deprecatedConstraints(videoConstraints)\r\n };\r\n return applyCameraFacing(constraints.video.facingMode, constraints);\r\n}\r\n\r\nexport default {\r\n request: function(video, videoConstraints) {\r\n return pickConstraints(videoConstraints)\r\n .then(initCamera.bind(null, video));\r\n },\r\n release: function() {\r\n var tracks = streamRef && streamRef.getVideoTracks();\r\n if (tracks && tracks.length) {\r\n tracks[0].stop();\r\n }\r\n streamRef = null;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/input/camera_access.js\n **/","import {\r\n imageRef,\r\n grayAndHalfSampleFromCanvasData,\r\n computeGray\r\n} from '../common/cv_utils';\r\n\r\nfunction adjustCanvasSize(canvas, targetSize) {\r\n if (canvas.width !== targetSize.x) {\r\n if (ENV.development) {\r\n console.log(\"WARNING: canvas-size needs to be adjusted\");\r\n }\r\n canvas.width = targetSize.x;\r\n }\r\n if (canvas.height !== targetSize.y) {\r\n if (ENV.development) {\r\n console.log(\"WARNING: canvas-size needs to be adjusted\");\r\n }\r\n canvas.height = targetSize.y;\r\n }\r\n}\r\n\r\nvar FrameGrabber = {};\r\n\r\nFrameGrabber.create = function(inputStream, canvas) {\r\n var _that = {},\r\n _streamConfig = inputStream.getConfig(),\r\n _video_size = imageRef(inputStream.getRealWidth(), inputStream.getRealHeight()),\r\n _canvasSize = inputStream.getCanvasSize(),\r\n _size = imageRef(inputStream.getWidth(), inputStream.getHeight()),\r\n topRight = inputStream.getTopRight(),\r\n _sx = topRight.x,\r\n _sy = topRight.y,\r\n _canvas,\r\n _ctx = null,\r\n _data = null;\r\n\r\n _canvas = canvas ? canvas : document.createElement(\"canvas\");\r\n _canvas.width = _canvasSize.x;\r\n _canvas.height = _canvasSize.y;\r\n _ctx = _canvas.getContext(\"2d\");\r\n _data = new Uint8Array(_size.x * _size.y);\r\n if (ENV.development) {\r\n console.log(\"FrameGrabber\", JSON.stringify({\r\n size: _size,\r\n topRight: topRight,\r\n videoSize: _video_size,\r\n canvasSize: _canvasSize\r\n }));\r\n }\r\n\r\n /**\r\n * Uses the given array as frame-buffer\r\n */\r\n _that.attachData = function(data) {\r\n _data = data;\r\n };\r\n\r\n /**\r\n * Returns the used frame-buffer\r\n */\r\n _that.getData = function() {\r\n return _data;\r\n };\r\n\r\n /**\r\n * Fetches a frame from the input-stream and puts into the frame-buffer.\r\n * The image-data is converted to gray-scale and then half-sampled if configured.\r\n */\r\n _that.grab = function() {\r\n var doHalfSample = _streamConfig.halfSample,\r\n frame = inputStream.getFrame(),\r\n ctxData;\r\n if (frame) {\r\n adjustCanvasSize(_canvas, _canvasSize);\r\n _ctx.drawImage(frame, 0, 0, _canvasSize.x, _canvasSize.y);\r\n ctxData = _ctx.getImageData(_sx, _sy, _size.x, _size.y).data;\r\n if (doHalfSample){\r\n grayAndHalfSampleFromCanvasData(ctxData, _size, _data);\r\n } else {\r\n computeGray(ctxData, _data, _streamConfig);\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n _that.getSize = function() {\r\n return _size;\r\n };\r\n\r\n return _that;\r\n};\r\n\r\nexport default FrameGrabber;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/input/frame_grabber.js\n **/","var ImageLoader = {};\r\nImageLoader.load = function(directory, callback, offset, size, sequence) {\r\n var htmlImagesSrcArray = new Array(size),\r\n htmlImagesArray = new Array(htmlImagesSrcArray.length),\r\n i,\r\n img,\r\n num;\r\n\r\n if (sequence === false) {\r\n htmlImagesSrcArray[0] = directory;\r\n } else {\r\n for ( i = 0; i < htmlImagesSrcArray.length; i++) {\r\n num = (offset + i);\r\n htmlImagesSrcArray[i] = directory + \"image-\" + (\"00\" + num).slice(-3) + \".jpg\";\r\n }\r\n }\r\n htmlImagesArray.notLoaded = [];\r\n htmlImagesArray.addImage = function(image) {\r\n htmlImagesArray.notLoaded.push(image);\r\n };\r\n htmlImagesArray.loaded = function(loadedImg) {\r\n var notloadedImgs = htmlImagesArray.notLoaded;\r\n for (var x = 0; x < notloadedImgs.length; x++) {\r\n if (notloadedImgs[x] === loadedImg) {\r\n notloadedImgs.splice(x, 1);\r\n for (var y = 0; y < htmlImagesSrcArray.length; y++) {\r\n var imgName = htmlImagesSrcArray[y].substr(htmlImagesSrcArray[y].lastIndexOf(\"/\"));\r\n if (loadedImg.src.lastIndexOf(imgName) !== -1) {\r\n htmlImagesArray[y] = loadedImg;\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n if (notloadedImgs.length === 0) {\r\n if (ENV.development) {\r\n console.log(\"Images loaded\");\r\n }\r\n callback.apply(null, [htmlImagesArray]);\r\n }\r\n };\r\n\r\n for ( i = 0; i < htmlImagesSrcArray.length; i++) {\r\n img = new Image();\r\n htmlImagesArray.addImage(img);\r\n addOnloadHandler(img, htmlImagesArray);\r\n img.src = htmlImagesSrcArray[i];\r\n }\r\n};\r\n\r\nfunction addOnloadHandler(img, htmlImagesArray) {\r\n img.onload = function() {\r\n htmlImagesArray.loaded(this);\r\n };\r\n}\r\n\r\nexport default (ImageLoader);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/input/image_loader.js\n **/","import ImageLoader from './image_loader';\r\n\r\nvar InputStream = {};\r\nInputStream.createVideoStream = function(video) {\r\n var that = {},\r\n _config = null,\r\n _eventNames = ['canrecord', 'ended'],\r\n _eventHandlers = {},\r\n _calculatedWidth,\r\n _calculatedHeight,\r\n _topRight = {x: 0, y: 0},\r\n _canvasSize = {x: 0, y: 0};\r\n\r\n function initSize() {\r\n var width = video.videoWidth,\r\n height = video.videoHeight;\r\n\r\n _calculatedWidth =\r\n _config.size ? width / height > 1 ? _config.size : Math.floor((width / height) * _config.size) : width;\r\n _calculatedHeight =\r\n _config.size ? width / height > 1 ? Math.floor((height / width) * _config.size) : _config.size : height;\r\n\r\n _canvasSize.x = _calculatedWidth;\r\n _canvasSize.y = _calculatedHeight;\r\n }\r\n\r\n that.getRealWidth = function() {\r\n return video.videoWidth;\r\n };\r\n\r\n that.getRealHeight = function() {\r\n return video.videoHeight;\r\n };\r\n\r\n that.getWidth = function() {\r\n return _calculatedWidth;\r\n };\r\n\r\n that.getHeight = function() {\r\n return _calculatedHeight;\r\n };\r\n\r\n that.setWidth = function(width) {\r\n _calculatedWidth = width;\r\n };\r\n\r\n that.setHeight = function(height) {\r\n _calculatedHeight = height;\r\n };\r\n\r\n that.setInputStream = function(config) {\r\n _config = config;\r\n video.src = (typeof config.src !== 'undefined') ? config.src : '';\r\n };\r\n\r\n that.ended = function() {\r\n return video.ended;\r\n };\r\n\r\n that.getConfig = function() {\r\n return _config;\r\n };\r\n\r\n that.setAttribute = function(name, value) {\r\n video.setAttribute(name, value);\r\n };\r\n\r\n that.pause = function() {\r\n video.pause();\r\n };\r\n\r\n that.play = function() {\r\n video.play();\r\n };\r\n\r\n that.setCurrentTime = function(time) {\r\n if (_config.type !== \"LiveStream\") {\r\n video.currentTime = time;\r\n }\r\n };\r\n\r\n that.addEventListener = function(event, f, bool) {\r\n if (_eventNames.indexOf(event) !== -1) {\r\n if (!_eventHandlers[event]) {\r\n _eventHandlers[event] = [];\r\n }\r\n _eventHandlers[event].push(f);\r\n } else {\r\n video.addEventListener(event, f, bool);\r\n }\r\n };\r\n\r\n that.clearEventHandlers = function() {\r\n _eventNames.forEach(function(eventName) {\r\n var handlers = _eventHandlers[eventName];\r\n if (handlers && handlers.length > 0) {\r\n handlers.forEach(function(handler) {\r\n video.removeEventListener(eventName, handler);\r\n });\r\n }\r\n });\r\n };\r\n\r\n that.trigger = function(eventName, args) {\r\n var j,\r\n handlers = _eventHandlers[eventName];\r\n\r\n if (eventName === 'canrecord') {\r\n initSize();\r\n }\r\n if (handlers && handlers.length > 0) {\r\n for ( j = 0; j < handlers.length; j++) {\r\n handlers[j].apply(that, args);\r\n }\r\n }\r\n };\r\n\r\n that.setTopRight = function(topRight) {\r\n _topRight.x = topRight.x;\r\n _topRight.y = topRight.y;\r\n };\r\n\r\n that.getTopRight = function() {\r\n return _topRight;\r\n };\r\n\r\n that.setCanvasSize = function(size) {\r\n _canvasSize.x = size.x;\r\n _canvasSize.y = size.y;\r\n };\r\n\r\n that.getCanvasSize = function() {\r\n return _canvasSize;\r\n };\r\n\r\n that.getFrame = function() {\r\n return video;\r\n };\r\n\r\n return that;\r\n};\r\n\r\nInputStream.createLiveStream = function(video) {\r\n video.setAttribute(\"autoplay\", true);\r\n var that = InputStream.createVideoStream(video);\r\n\r\n that.ended = function() {\r\n return false;\r\n };\r\n\r\n return that;\r\n};\r\n\r\nInputStream.createImageStream = function() {\r\n var that = {};\r\n var _config = null;\r\n\r\n var width = 0,\r\n height = 0,\r\n frameIdx = 0,\r\n paused = true,\r\n loaded = false,\r\n imgArray = null,\r\n size = 0,\r\n offset = 1,\r\n baseUrl = null,\r\n ended = false,\r\n calculatedWidth,\r\n calculatedHeight,\r\n _eventNames = ['canrecord', 'ended'],\r\n _eventHandlers = {},\r\n _topRight = {x: 0, y: 0},\r\n _canvasSize = {x: 0, y: 0};\r\n\r\n function loadImages() {\r\n loaded = false;\r\n ImageLoader.load(baseUrl, function(imgs) {\r\n imgArray = imgs;\r\n width = imgs[0].width;\r\n height = imgs[0].height;\r\n calculatedWidth =\r\n _config.size ? width / height > 1 ? _config.size : Math.floor((width / height) * _config.size) : width;\r\n calculatedHeight =\r\n _config.size ? width / height > 1 ? Math.floor((height / width) * _config.size) : _config.size : height;\r\n _canvasSize.x = calculatedWidth;\r\n _canvasSize.y = calculatedHeight;\r\n loaded = true;\r\n frameIdx = 0;\r\n setTimeout(function() {\r\n publishEvent(\"canrecord\", []);\r\n }, 0);\r\n }, offset, size, _config.sequence);\r\n }\r\n\r\n function publishEvent(eventName, args) {\r\n var j,\r\n handlers = _eventHandlers[eventName];\r\n\r\n if (handlers && handlers.length > 0) {\r\n for ( j = 0; j < handlers.length; j++) {\r\n handlers[j].apply(that, args);\r\n }\r\n }\r\n }\r\n\r\n\r\n that.trigger = publishEvent;\r\n\r\n that.getWidth = function() {\r\n return calculatedWidth;\r\n };\r\n\r\n that.getHeight = function() {\r\n return calculatedHeight;\r\n };\r\n\r\n that.setWidth = function(newWidth) {\r\n calculatedWidth = newWidth;\r\n };\r\n\r\n that.setHeight = function(newHeight) {\r\n calculatedHeight = newHeight;\r\n };\r\n\r\n that.getRealWidth = function() {\r\n return width;\r\n };\r\n\r\n that.getRealHeight = function() {\r\n return height;\r\n };\r\n\r\n that.setInputStream = function(stream) {\r\n _config = stream;\r\n if (stream.sequence === false) {\r\n baseUrl = stream.src;\r\n size = 1;\r\n } else {\r\n baseUrl = stream.src;\r\n size = stream.length;\r\n }\r\n loadImages();\r\n };\r\n\r\n that.ended = function() {\r\n return ended;\r\n };\r\n\r\n that.setAttribute = function() {};\r\n\r\n that.getConfig = function() {\r\n return _config;\r\n };\r\n\r\n that.pause = function() {\r\n paused = true;\r\n };\r\n\r\n that.play = function() {\r\n paused = false;\r\n };\r\n\r\n that.setCurrentTime = function(time) {\r\n frameIdx = time;\r\n };\r\n\r\n that.addEventListener = function(event, f) {\r\n if (_eventNames.indexOf(event) !== -1) {\r\n if (!_eventHandlers[event]) {\r\n _eventHandlers[event] = [];\r\n }\r\n _eventHandlers[event].push(f);\r\n }\r\n };\r\n\r\n that.setTopRight = function(topRight) {\r\n _topRight.x = topRight.x;\r\n _topRight.y = topRight.y;\r\n };\r\n\r\n that.getTopRight = function() {\r\n return _topRight;\r\n };\r\n\r\n that.setCanvasSize = function(canvasSize) {\r\n _canvasSize.x = canvasSize.x;\r\n _canvasSize.y = canvasSize.y;\r\n };\r\n\r\n that.getCanvasSize = function() {\r\n return _canvasSize;\r\n };\r\n\r\n that.getFrame = function() {\r\n var frame;\r\n\r\n if (!loaded){\r\n return null;\r\n }\r\n if (!paused) {\r\n frame = imgArray[frameIdx];\r\n if (frameIdx < (size - 1)) {\r\n frameIdx++;\r\n } else {\r\n setTimeout(function() {\r\n ended = true;\r\n publishEvent(\"ended\", []);\r\n }, 0);\r\n }\r\n }\r\n return frame;\r\n };\r\n\r\n return that;\r\n};\r\n\r\nexport default InputStream;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/input/input_stream.js\n **/","import ImageWrapper from '../common/image_wrapper';\r\nimport {\r\n calculatePatchSize,\r\n otsuThreshold,\r\n hsv2rgb,\r\n cluster,\r\n topGeneric,\r\n imageRef,\r\n halfSample,\r\n computeImageArea\r\n} from '../common/cv_utils';\r\nimport ArrayHelper from '../common/array_helper';\r\nimport ImageDebug from '../common/image_debug';\r\nimport Rasterizer from './rasterizer';\r\nimport Tracer from './tracer';\r\nimport skeletonizer from './skeletonizer';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n dot: require('gl-vec2/dot'),\r\n scale: require('gl-vec2/scale'),\r\n transformMat2: require('gl-vec2/transformMat2')\r\n};\r\nconst mat2 = {\r\n copy: require('gl-mat2/copy'),\r\n create: require('gl-mat2/create'),\r\n invert: require('gl-mat2/invert')\r\n};\r\n\r\nexport default function createLocator(inputImageWrapper, config) {\r\n var _config = config,\r\n _currentImageWrapper,\r\n _skelImageWrapper,\r\n _subImageWrapper,\r\n _labelImageWrapper,\r\n _patchGrid,\r\n _patchLabelGrid,\r\n _imageToPatchGrid,\r\n _binaryImageWrapper,\r\n _patchSize,\r\n _canvasContainer = {\r\n ctx: {\r\n binary: null\r\n },\r\n dom: {\r\n binary: null\r\n }\r\n },\r\n _numPatches = {x: 0, y: 0},\r\n _inputImageWrapper = inputImageWrapper,\r\n _skeletonizer;\r\n\r\n initBuffers();\r\n initCanvas();\r\n\r\n function initBuffers() {\r\n var skeletonImageData;\r\n\r\n if (_config.halfSample) {\r\n _currentImageWrapper = new ImageWrapper({\r\n x: _inputImageWrapper.size.x / 2 | 0,\r\n y: _inputImageWrapper.size.y / 2 | 0\r\n });\r\n } else {\r\n _currentImageWrapper = _inputImageWrapper;\r\n }\r\n\r\n _patchSize = calculatePatchSize(_config.patchSize, _currentImageWrapper.size);\r\n\r\n _numPatches.x = _currentImageWrapper.size.x / _patchSize.x | 0;\r\n _numPatches.y = _currentImageWrapper.size.y / _patchSize.y | 0;\r\n\r\n _binaryImageWrapper = new ImageWrapper(_currentImageWrapper.size, undefined, Uint8Array, false);\r\n\r\n _labelImageWrapper = new ImageWrapper(_patchSize, undefined, Array, true);\r\n\r\n skeletonImageData = new ArrayBuffer(64 * 1024);\r\n _subImageWrapper = new ImageWrapper(_patchSize,\r\n new Uint8Array(skeletonImageData, 0, _patchSize.x * _patchSize.y));\r\n _skelImageWrapper = new ImageWrapper(_patchSize,\r\n new Uint8Array(skeletonImageData, _patchSize.x * _patchSize.y * 3, _patchSize.x * _patchSize.y),\r\n undefined, true);\r\n _skeletonizer = skeletonizer((typeof window !== 'undefined') ? window : (typeof self !== 'undefined') ? self : global, {\r\n size: _patchSize.x\r\n }, skeletonImageData);\r\n\r\n _imageToPatchGrid = new ImageWrapper({\r\n x: (_currentImageWrapper.size.x / _subImageWrapper.size.x) | 0,\r\n y: (_currentImageWrapper.size.y / _subImageWrapper.size.y) | 0\r\n }, undefined, Array, true);\r\n _patchGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, undefined, true);\r\n _patchLabelGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, Int32Array, true);\r\n }\r\n\r\n function initCanvas() {\r\n if (_config.useWorker || typeof document === 'undefined') {\r\n return;\r\n }\r\n _canvasContainer.dom.binary = document.createElement(\"canvas\");\r\n _canvasContainer.dom.binary.className = \"binaryBuffer\";\r\n if (ENV.development && _config.debug.showCanvas === true) {\r\n document.querySelector(\"#debug\").appendChild(_canvasContainer.dom.binary);\r\n }\r\n _canvasContainer.ctx.binary = _canvasContainer.dom.binary.getContext(\"2d\");\r\n _canvasContainer.dom.binary.width = _binaryImageWrapper.size.x;\r\n _canvasContainer.dom.binary.height = _binaryImageWrapper.size.y;\r\n }\r\n\r\n /**\r\n * Creates a bounding box which encloses all the given patches\r\n * @returns {Array} The minimal bounding box\r\n */\r\n function boxFromPatches(patches) {\r\n var overAvg,\r\n i,\r\n j,\r\n patch,\r\n transMat,\r\n minx =\r\n _binaryImageWrapper.size.x,\r\n miny = _binaryImageWrapper.size.y,\r\n maxx = -_binaryImageWrapper.size.x,\r\n maxy = -_binaryImageWrapper.size.y,\r\n box,\r\n scale;\r\n\r\n // draw all patches which are to be taken into consideration\r\n overAvg = 0;\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n overAvg += patch.rad;\r\n if (ENV.development && _config.debug.showPatches) {\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: \"red\"});\r\n }\r\n }\r\n\r\n overAvg /= patches.length;\r\n overAvg = (overAvg * 180 / Math.PI + 90) % 180 - 90;\r\n if (overAvg < 0) {\r\n overAvg += 180;\r\n }\r\n\r\n overAvg = (180 - overAvg) * Math.PI / 180;\r\n transMat = mat2.copy(mat2.create(), [Math.cos(overAvg), Math.sin(overAvg), -Math.sin(overAvg), Math.cos(overAvg)]);\r\n\r\n // iterate over patches and rotate by angle\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n for ( j = 0; j < 4; j++) {\r\n vec2.transformMat2(patch.box[j], patch.box[j], transMat);\r\n }\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showTransformed) {\r\n ImageDebug.drawPath(patch.box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#99ff00', lineWidth: 2});\r\n }\r\n }\r\n\r\n // find bounding box\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n for ( j = 0; j < 4; j++) {\r\n if (patch.box[j][0] < minx) {\r\n minx = patch.box[j][0];\r\n }\r\n if (patch.box[j][0] > maxx) {\r\n maxx = patch.box[j][0];\r\n }\r\n if (patch.box[j][1] < miny) {\r\n miny = patch.box[j][1];\r\n }\r\n if (patch.box[j][1] > maxy) {\r\n maxy = patch.box[j][1];\r\n }\r\n }\r\n }\r\n\r\n box = [[minx, miny], [maxx, miny], [maxx, maxy], [minx, maxy]];\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showTransformedBox) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2});\r\n }\r\n\r\n scale = _config.halfSample ? 2 : 1;\r\n // reverse rotation;\r\n transMat = mat2.invert(transMat, transMat);\r\n for ( j = 0; j < 4; j++) {\r\n vec2.transformMat2(box[j], box[j], transMat);\r\n }\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showBB) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2});\r\n }\r\n\r\n for ( j = 0; j < 4; j++) {\r\n vec2.scale(box[j], box[j], scale);\r\n }\r\n\r\n return box;\r\n }\r\n\r\n /**\r\n * Creates a binary image of the current image\r\n */\r\n function binarizeImage() {\r\n otsuThreshold(_currentImageWrapper, _binaryImageWrapper);\r\n _binaryImageWrapper.zeroBorder();\r\n if (ENV.development && _config.debug.showCanvas) {\r\n _binaryImageWrapper.show(_canvasContainer.dom.binary, 255);\r\n }\r\n }\r\n\r\n /**\r\n * Iterate over the entire image\r\n * extract patches\r\n */\r\n function findPatches() {\r\n var i,\r\n j,\r\n x,\r\n y,\r\n moments,\r\n patchesFound = [],\r\n rasterizer,\r\n rasterResult,\r\n patch;\r\n for (i = 0; i < _numPatches.x; i++) {\r\n for (j = 0; j < _numPatches.y; j++) {\r\n x = _subImageWrapper.size.x * i;\r\n y = _subImageWrapper.size.y * j;\r\n\r\n // seperate parts\r\n skeletonize(x, y);\r\n\r\n // Rasterize, find individual bars\r\n _skelImageWrapper.zeroBorder();\r\n ArrayHelper.init(_labelImageWrapper.data, 0);\r\n rasterizer = Rasterizer.create(_skelImageWrapper, _labelImageWrapper);\r\n rasterResult = rasterizer.rasterize(0);\r\n\r\n if (ENV.development && _config.debug.showLabels) {\r\n _labelImageWrapper.overlay(_canvasContainer.dom.binary, Math.floor(360 / rasterResult.count),\r\n {x: x, y: y});\r\n }\r\n\r\n // calculate moments from the skeletonized patch\r\n moments = _labelImageWrapper.moments(rasterResult.count);\r\n\r\n // extract eligible patches\r\n patchesFound = patchesFound.concat(describePatch(moments, [i, j], x, y));\r\n }\r\n }\r\n\r\n if (ENV.development && _config.debug.showFoundPatches) {\r\n for ( i = 0; i < patchesFound.length; i++) {\r\n patch = patchesFound[i];\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"#99ff00\", lineWidth: 2});\r\n }\r\n }\r\n\r\n return patchesFound;\r\n }\r\n\r\n /**\r\n * Finds those connected areas which contain at least 6 patches\r\n * and returns them ordered DESC by the number of contained patches\r\n * @param {Number} maxLabel\r\n */\r\n function findBiggestConnectedAreas(maxLabel){\r\n var i,\r\n sum,\r\n labelHist = [],\r\n topLabels = [];\r\n\r\n for ( i = 0; i < maxLabel; i++) {\r\n labelHist.push(0);\r\n }\r\n sum = _patchLabelGrid.data.length;\r\n while (sum--) {\r\n if (_patchLabelGrid.data[sum] > 0) {\r\n labelHist[_patchLabelGrid.data[sum] - 1]++;\r\n }\r\n }\r\n\r\n labelHist = labelHist.map(function(val, idx) {\r\n return {\r\n val: val,\r\n label: idx + 1\r\n };\r\n });\r\n\r\n labelHist.sort(function(a, b) {\r\n return b.val - a.val;\r\n });\r\n\r\n // extract top areas with at least 6 patches present\r\n topLabels = labelHist.filter(function(el) {\r\n return el.val >= 5;\r\n });\r\n\r\n return topLabels;\r\n }\r\n\r\n /**\r\n *\r\n */\r\n function findBoxes(topLabels, maxLabel) {\r\n var i,\r\n j,\r\n sum,\r\n patches = [],\r\n patch,\r\n box,\r\n boxes = [],\r\n hsv = [0, 1, 1],\r\n rgb = [0, 0, 0];\r\n\r\n for ( i = 0; i < topLabels.length; i++) {\r\n sum = _patchLabelGrid.data.length;\r\n patches.length = 0;\r\n while (sum--) {\r\n if (_patchLabelGrid.data[sum] === topLabels[i].label) {\r\n patch = _imageToPatchGrid.data[sum];\r\n patches.push(patch);\r\n }\r\n }\r\n box = boxFromPatches(patches);\r\n if (box) {\r\n boxes.push(box);\r\n\r\n // draw patch-labels if requested\r\n if (ENV.development && _config.debug.showRemainingPatchLabels) {\r\n for ( j = 0; j < patches.length; j++) {\r\n patch = patches[j];\r\n hsv[0] = (topLabels[i].label / (maxLabel + 1)) * 360;\r\n hsv2rgb(hsv, rgb);\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"rgb(\" + rgb.join(\",\") + \")\", lineWidth: 2});\r\n }\r\n }\r\n }\r\n }\r\n return boxes;\r\n }\r\n\r\n /**\r\n * Find similar moments (via cluster)\r\n * @param {Object} moments\r\n */\r\n function similarMoments(moments) {\r\n var clusters = cluster(moments, 0.90);\r\n var topCluster = topGeneric(clusters, 1, function(e) {\r\n return e.getPoints().length;\r\n });\r\n var points = [], result = [];\r\n if (topCluster.length === 1) {\r\n points = topCluster[0].item.getPoints();\r\n for (var i = 0; i < points.length; i++) {\r\n result.push(points[i].point);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function skeletonize(x, y) {\r\n _binaryImageWrapper.subImageAsCopy(_subImageWrapper, imageRef(x, y));\r\n _skeletonizer.skeletonize();\r\n\r\n // Show skeleton if requested\r\n if (ENV.development && _config.debug.showSkeleton) {\r\n _skelImageWrapper.overlay(_canvasContainer.dom.binary, 360, imageRef(x, y));\r\n }\r\n }\r\n\r\n /**\r\n * Extracts and describes those patches which seem to contain a barcode pattern\r\n * @param {Array} moments\r\n * @param {Object} patchPos,\r\n * @param {Number} x\r\n * @param {Number} y\r\n * @returns {Array} list of patches\r\n */\r\n function describePatch(moments, patchPos, x, y) {\r\n var k,\r\n avg,\r\n eligibleMoments = [],\r\n matchingMoments,\r\n patch,\r\n patchesFound = [],\r\n minComponentWeight = Math.ceil(_patchSize.x / 3);\r\n\r\n if (moments.length >= 2) {\r\n // only collect moments which's area covers at least minComponentWeight pixels.\r\n for ( k = 0; k < moments.length; k++) {\r\n if (moments[k].m00 > minComponentWeight) {\r\n eligibleMoments.push(moments[k]);\r\n }\r\n }\r\n\r\n // if at least 2 moments are found which have at least minComponentWeights covered\r\n if (eligibleMoments.length >= 2) {\r\n matchingMoments = similarMoments(eligibleMoments);\r\n avg = 0;\r\n // determine the similarity of the moments\r\n for ( k = 0; k < matchingMoments.length; k++) {\r\n avg += matchingMoments[k].rad;\r\n }\r\n\r\n // Only two of the moments are allowed not to fit into the equation\r\n // add the patch to the set\r\n if (matchingMoments.length > 1\r\n && matchingMoments.length >= (eligibleMoments.length / 4) * 3\r\n && matchingMoments.length > moments.length / 4) {\r\n avg /= matchingMoments.length;\r\n patch = {\r\n index: patchPos[1] * _numPatches.x + patchPos[0],\r\n pos: {\r\n x: x,\r\n y: y\r\n },\r\n box: [\r\n vec2.clone([x, y]),\r\n vec2.clone([x + _subImageWrapper.size.x, y]),\r\n vec2.clone([x + _subImageWrapper.size.x, y + _subImageWrapper.size.y]),\r\n vec2.clone([x, y + _subImageWrapper.size.y])\r\n ],\r\n moments: matchingMoments,\r\n rad: avg,\r\n vec: vec2.clone([Math.cos(avg), Math.sin(avg)])\r\n };\r\n patchesFound.push(patch);\r\n }\r\n }\r\n }\r\n return patchesFound;\r\n }\r\n\r\n /**\r\n * finds patches which are connected and share the same orientation\r\n * @param {Object} patchesFound\r\n */\r\n function rasterizeAngularSimilarity(patchesFound) {\r\n var label = 0,\r\n threshold = 0.95,\r\n currIdx = 0,\r\n j,\r\n patch,\r\n hsv = [0, 1, 1],\r\n rgb = [0, 0, 0];\r\n\r\n function notYetProcessed() {\r\n var i;\r\n for ( i = 0; i < _patchLabelGrid.data.length; i++) {\r\n if (_patchLabelGrid.data[i] === 0 && _patchGrid.data[i] === 1) {\r\n return i;\r\n }\r\n }\r\n return _patchLabelGrid.length;\r\n }\r\n\r\n function trace(currentIdx) {\r\n var x,\r\n y,\r\n currentPatch,\r\n idx,\r\n dir,\r\n current = {\r\n x: currentIdx % _patchLabelGrid.size.x,\r\n y: (currentIdx / _patchLabelGrid.size.x) | 0\r\n },\r\n similarity;\r\n\r\n if (currentIdx < _patchLabelGrid.data.length) {\r\n currentPatch = _imageToPatchGrid.data[currentIdx];\r\n // assign label\r\n _patchLabelGrid.data[currentIdx] = label;\r\n for ( dir = 0; dir < Tracer.searchDirections.length; dir++) {\r\n y = current.y + Tracer.searchDirections[dir][0];\r\n x = current.x + Tracer.searchDirections[dir][1];\r\n idx = y * _patchLabelGrid.size.x + x;\r\n\r\n // continue if patch empty\r\n if (_patchGrid.data[idx] === 0) {\r\n _patchLabelGrid.data[idx] = Number.MAX_VALUE;\r\n continue;\r\n }\r\n\r\n if (_patchLabelGrid.data[idx] === 0) {\r\n similarity = Math.abs(vec2.dot(_imageToPatchGrid.data[idx].vec, currentPatch.vec));\r\n if (similarity > threshold) {\r\n trace(idx);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // prepare for finding the right patches\r\n ArrayHelper.init(_patchGrid.data, 0);\r\n ArrayHelper.init(_patchLabelGrid.data, 0);\r\n ArrayHelper.init(_imageToPatchGrid.data, null);\r\n\r\n for ( j = 0; j < patchesFound.length; j++) {\r\n patch = patchesFound[j];\r\n _imageToPatchGrid.data[patch.index] = patch;\r\n _patchGrid.data[patch.index] = 1;\r\n }\r\n\r\n // rasterize the patches found to determine area\r\n _patchGrid.zeroBorder();\r\n\r\n while (( currIdx = notYetProcessed()) < _patchLabelGrid.data.length) {\r\n label++;\r\n trace(currIdx);\r\n }\r\n\r\n // draw patch-labels if requested\r\n if (ENV.development && _config.debug.showPatchLabels) {\r\n for ( j = 0; j < _patchLabelGrid.data.length; j++) {\r\n if (_patchLabelGrid.data[j] > 0 && _patchLabelGrid.data[j] <= label) {\r\n patch = _imageToPatchGrid.data[j];\r\n hsv[0] = (_patchLabelGrid.data[j] / (label + 1)) * 360;\r\n hsv2rgb(hsv, rgb);\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"rgb(\" + rgb.join(\",\") + \")\", lineWidth: 2});\r\n }\r\n }\r\n }\r\n\r\n return label;\r\n }\r\n\r\n return {\r\n locate: function() {\r\n var patchesFound,\r\n topLabels,\r\n boxes;\r\n\r\n if (_config.halfSample) {\r\n halfSample(_inputImageWrapper, _currentImageWrapper);\r\n }\r\n\r\n binarizeImage();\r\n patchesFound = findPatches();\r\n // return unless 5% or more patches are found\r\n if (patchesFound.length < _numPatches.x * _numPatches.y * 0.05) {\r\n return null;\r\n }\r\n\r\n // rasterrize area by comparing angular similarity;\r\n var maxLabel = rasterizeAngularSimilarity(patchesFound);\r\n if (maxLabel < 1) {\r\n return null;\r\n }\r\n\r\n // search for area with the most patches (biggest connected area)\r\n topLabels = findBiggestConnectedAreas(maxLabel);\r\n if (topLabels.length === 0) {\r\n return null;\r\n }\r\n\r\n boxes = findBoxes(topLabels, maxLabel);\r\n return boxes;\r\n }\r\n }\r\n}\r\nexport function checkImageConstraints(inputStream, config) {\r\n var patchSize,\r\n width = inputStream.getWidth(),\r\n height = inputStream.getHeight(),\r\n halfSample = config.halfSample ? 0.5 : 1,\r\n size,\r\n area;\r\n\r\n // calculate width and height based on area\r\n if (inputStream.getConfig().area) {\r\n area = computeImageArea(width, height, inputStream.getConfig().area);\r\n inputStream.setTopRight({x: area.sx, y: area.sy});\r\n inputStream.setCanvasSize({x: width, y: height});\r\n width = area.sw;\r\n height = area.sh;\r\n }\r\n\r\n size = {\r\n x: Math.floor(width * halfSample),\r\n y: Math.floor(height * halfSample)\r\n };\r\n\r\n patchSize = calculatePatchSize(config.patchSize, size);\r\n if (ENV.development) {\r\n console.log(\"Patch-Size: \" + JSON.stringify(patchSize));\r\n }\r\n\r\n inputStream.setWidth(Math.floor(Math.floor(size.x / patchSize.x) * (1 / halfSample) * patchSize.x));\r\n inputStream.setHeight(Math.floor(Math.floor(size.y / patchSize.y) * (1 / halfSample) * patchSize.y));\r\n\r\n if ((inputStream.getWidth() % patchSize.x) === 0 && (inputStream.getHeight() % patchSize.y) === 0) {\r\n return true;\r\n }\r\n\r\n throw new Error(\"Image dimensions do not comply with the current settings: Width (\" +\r\n width + \" )and height (\" + height +\r\n \") must a multiple of \" + patchSize.x);\r\n}\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/barcode_locator.js\n **/","import Tracer from './tracer';\r\n\r\n/**\r\n * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization\r\n */\r\nvar Rasterizer = {\r\n createContour2D: function() {\r\n return {\r\n dir: null,\r\n index: null,\r\n firstVertex: null,\r\n insideContours: null,\r\n nextpeer: null,\r\n prevpeer: null\r\n };\r\n },\r\n CONTOUR_DIR: {\r\n CW_DIR: 0,\r\n CCW_DIR: 1,\r\n UNKNOWN_DIR: 2\r\n },\r\n DIR: {\r\n OUTSIDE_EDGE: -32767,\r\n INSIDE_EDGE: -32766\r\n },\r\n create: function(imageWrapper, labelWrapper) {\r\n var imageData = imageWrapper.data,\r\n labelData = labelWrapper.data,\r\n width = imageWrapper.size.x,\r\n height = imageWrapper.size.y,\r\n tracer = Tracer.create(imageWrapper, labelWrapper);\r\n\r\n return {\r\n rasterize: function(depthlabel) {\r\n var color,\r\n bc,\r\n lc,\r\n labelindex,\r\n cx,\r\n cy,\r\n colorMap = [],\r\n vertex,\r\n p,\r\n cc,\r\n sc,\r\n pos,\r\n connectedCount = 0,\r\n i;\r\n\r\n for ( i = 0; i < 400; i++) {\r\n colorMap[i] = 0;\r\n }\r\n\r\n colorMap[0] = imageData[0];\r\n cc = null;\r\n for ( cy = 1; cy < height - 1; cy++) {\r\n labelindex = 0;\r\n bc = colorMap[0];\r\n for ( cx = 1; cx < width - 1; cx++) {\r\n pos = cy * width + cx;\r\n if (labelData[pos] === 0) {\r\n color = imageData[pos];\r\n if (color !== bc) {\r\n if (labelindex === 0) {\r\n lc = connectedCount + 1;\r\n colorMap[lc] = color;\r\n bc = color;\r\n vertex = tracer.contourTracing(cy, cx, lc, color, Rasterizer.DIR.OUTSIDE_EDGE);\r\n if (vertex !== null) {\r\n connectedCount++;\r\n labelindex = lc;\r\n p = Rasterizer.createContour2D();\r\n p.dir = Rasterizer.CONTOUR_DIR.CW_DIR;\r\n p.index = labelindex;\r\n p.firstVertex = vertex;\r\n p.nextpeer = cc;\r\n p.insideContours = null;\r\n if (cc !== null) {\r\n cc.prevpeer = p;\r\n }\r\n cc = p;\r\n }\r\n } else {\r\n vertex = tracer\r\n .contourTracing(cy, cx, Rasterizer.DIR.INSIDE_EDGE, color, labelindex);\r\n if (vertex !== null) {\r\n p = Rasterizer.createContour2D();\r\n p.firstVertex = vertex;\r\n p.insideContours = null;\r\n if (depthlabel === 0) {\r\n p.dir = Rasterizer.CONTOUR_DIR.CCW_DIR;\r\n } else {\r\n p.dir = Rasterizer.CONTOUR_DIR.CW_DIR;\r\n }\r\n p.index = depthlabel;\r\n sc = cc;\r\n while ((sc !== null) && sc.index !== labelindex) {\r\n sc = sc.nextpeer;\r\n }\r\n if (sc !== null) {\r\n p.nextpeer = sc.insideContours;\r\n if (sc.insideContours !== null) {\r\n sc.insideContours.prevpeer = p;\r\n }\r\n sc.insideContours = p;\r\n }\r\n }\r\n }\r\n } else {\r\n labelData[pos] = labelindex;\r\n }\r\n } else if (labelData[pos] === Rasterizer.DIR.OUTSIDE_EDGE\r\n || labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) {\r\n labelindex = 0;\r\n if (labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) {\r\n bc = imageData[pos];\r\n } else {\r\n bc = colorMap[0];\r\n }\r\n } else {\r\n labelindex = labelData[pos];\r\n bc = colorMap[labelindex];\r\n }\r\n }\r\n }\r\n sc = cc;\r\n while (sc !== null) {\r\n sc.index = depthlabel;\r\n sc = sc.nextpeer;\r\n }\r\n return {\r\n cc: cc,\r\n count: connectedCount\r\n };\r\n },\r\n debug: {\r\n drawContour: function(canvas, firstContour) {\r\n var ctx = canvas.getContext(\"2d\"),\r\n pq = firstContour,\r\n iq,\r\n q,\r\n p;\r\n\r\n ctx.strokeStyle = \"red\";\r\n ctx.fillStyle = \"red\";\r\n ctx.lineWidth = 1;\r\n\r\n if (pq !== null) {\r\n iq = pq.insideContours;\r\n } else {\r\n iq = null;\r\n }\r\n\r\n while (pq !== null) {\r\n if (iq !== null) {\r\n q = iq;\r\n iq = iq.nextpeer;\r\n } else {\r\n q = pq;\r\n pq = pq.nextpeer;\r\n if (pq !== null) {\r\n iq = pq.insideContours;\r\n } else {\r\n iq = null;\r\n }\r\n }\r\n\r\n switch (q.dir) {\r\n case Rasterizer.CONTOUR_DIR.CW_DIR:\r\n ctx.strokeStyle = \"red\";\r\n break;\r\n case Rasterizer.CONTOUR_DIR.CCW_DIR:\r\n ctx.strokeStyle = \"blue\";\r\n break;\r\n case Rasterizer.CONTOUR_DIR.UNKNOWN_DIR:\r\n ctx.strokeStyle = \"green\";\r\n break;\r\n }\r\n\r\n p = q.firstVertex;\r\n ctx.beginPath();\r\n ctx.moveTo(p.x, p.y);\r\n do {\r\n p = p.next;\r\n ctx.lineTo(p.x, p.y);\r\n } while (p !== q.firstVertex);\r\n ctx.stroke();\r\n }\r\n }\r\n }\r\n };\r\n }\r\n};\r\n\r\nexport default Rasterizer;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/rasterizer.js\n **/","/* @preserve ASM BEGIN */\r\n/* eslint-disable eqeqeq*/\r\nfunction Skeletonizer(stdlib, foreign, buffer) {\r\n \"use asm\";\r\n\r\n var images = new stdlib.Uint8Array(buffer),\r\n size = foreign.size | 0,\r\n imul = stdlib.Math.imul;\r\n\r\n function erode(inImagePtr, outImagePtr) {\r\n inImagePtr = inImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var v = 0,\r\n u = 0,\r\n sum = 0,\r\n yStart1 = 0,\r\n yStart2 = 0,\r\n xStart1 = 0,\r\n xStart2 = 0,\r\n offset = 0;\r\n\r\n for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) {\r\n offset = (offset + size) | 0;\r\n for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) {\r\n yStart1 = (offset - size) | 0;\r\n yStart2 = (offset + size) | 0;\r\n xStart1 = (u - 1) | 0;\r\n xStart2 = (u + 1) | 0;\r\n sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0)\r\n + (images[(inImagePtr + offset + u) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0;\r\n if ((sum | 0) == (5 | 0)) {\r\n images[(outImagePtr + offset + u) | 0] = 1;\r\n } else {\r\n images[(outImagePtr + offset + u) | 0] = 0;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n\r\n function subtract(aImagePtr, bImagePtr, outImagePtr) {\r\n aImagePtr = aImagePtr | 0;\r\n bImagePtr = bImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(outImagePtr + length) | 0] =\r\n ((images[(aImagePtr + length) | 0] | 0) - (images[(bImagePtr + length) | 0] | 0)) | 0;\r\n }\r\n }\r\n\r\n function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {\r\n aImagePtr = aImagePtr | 0;\r\n bImagePtr = bImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(outImagePtr + length) | 0] =\r\n ((images[(aImagePtr + length) | 0] | 0) | (images[(bImagePtr + length) | 0] | 0)) | 0;\r\n }\r\n }\r\n\r\n function countNonZero(imagePtr) {\r\n imagePtr = imagePtr | 0;\r\n\r\n var sum = 0,\r\n length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n sum = ((sum | 0) + (images[(imagePtr + length) | 0] | 0)) | 0;\r\n }\r\n\r\n return (sum | 0);\r\n }\r\n\r\n function init(imagePtr, value) {\r\n imagePtr = imagePtr | 0;\r\n value = value | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(imagePtr + length) | 0] = value;\r\n }\r\n }\r\n\r\n function dilate(inImagePtr, outImagePtr) {\r\n inImagePtr = inImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var v = 0,\r\n u = 0,\r\n sum = 0,\r\n yStart1 = 0,\r\n yStart2 = 0,\r\n xStart1 = 0,\r\n xStart2 = 0,\r\n offset = 0;\r\n\r\n for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) {\r\n offset = (offset + size) | 0;\r\n for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) {\r\n yStart1 = (offset - size) | 0;\r\n yStart2 = (offset + size) | 0;\r\n xStart1 = (u - 1) | 0;\r\n xStart2 = (u + 1) | 0;\r\n sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0)\r\n + (images[(inImagePtr + offset + u) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0;\r\n if ((sum | 0) > (0 | 0)) {\r\n images[(outImagePtr + offset + u) | 0] = 1;\r\n } else {\r\n images[(outImagePtr + offset + u) | 0] = 0;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n\r\n function memcpy(srcImagePtr, dstImagePtr) {\r\n srcImagePtr = srcImagePtr | 0;\r\n dstImagePtr = dstImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(dstImagePtr + length) | 0] = (images[(srcImagePtr + length) | 0] | 0);\r\n }\r\n }\r\n\r\n function zeroBorder(imagePtr) {\r\n imagePtr = imagePtr | 0;\r\n\r\n var x = 0,\r\n y = 0;\r\n\r\n for ( x = 0; (x | 0) < ((size - 1) | 0); x = (x + 1) | 0) {\r\n images[(imagePtr + x) | 0] = 0;\r\n images[(imagePtr + y) | 0] = 0;\r\n y = ((y + size) - 1) | 0;\r\n images[(imagePtr + y) | 0] = 0;\r\n y = (y + 1) | 0;\r\n }\r\n for ( x = 0; (x | 0) < (size | 0); x = (x + 1) | 0) {\r\n images[(imagePtr + y) | 0] = 0;\r\n y = (y + 1) | 0;\r\n }\r\n }\r\n\r\n function skeletonize() {\r\n var subImagePtr = 0,\r\n erodedImagePtr = 0,\r\n tempImagePtr = 0,\r\n skelImagePtr = 0,\r\n sum = 0,\r\n done = 0;\r\n\r\n erodedImagePtr = imul(size, size) | 0;\r\n tempImagePtr = (erodedImagePtr + erodedImagePtr) | 0;\r\n skelImagePtr = (tempImagePtr + erodedImagePtr) | 0;\r\n\r\n // init skel-image\r\n init(skelImagePtr, 0);\r\n zeroBorder(subImagePtr);\r\n\r\n do {\r\n erode(subImagePtr, erodedImagePtr);\r\n dilate(erodedImagePtr, tempImagePtr);\r\n subtract(subImagePtr, tempImagePtr, tempImagePtr);\r\n bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);\r\n memcpy(erodedImagePtr, subImagePtr);\r\n sum = countNonZero(subImagePtr) | 0;\r\n done = ((sum | 0) == 0 | 0);\r\n } while (!done);\r\n }\r\n return {\r\n skeletonize: skeletonize\r\n };\r\n}\r\n/* @preserve ASM END */\r\nexport default Skeletonizer;\r\n/* eslint-enable eqeqeq*/\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/skeletonizer.js\n **/","import BarcodeReader from './barcode_reader';\r\n\r\nfunction CodabarReader() {\r\n BarcodeReader.call(this);\r\n this._counters = [];\r\n}\r\n\r\nvar properties = {\r\n ALPHABETH_STRING: {value: \"0123456789-$:/.+ABCD\"},\r\n ALPHABET: {value: [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 45, 36, 58, 47, 46, 43, 65, 66, 67, 68]},\r\n CHARACTER_ENCODINGS: {value: [0x003, 0x006, 0x009, 0x060, 0x012, 0x042, 0x021, 0x024, 0x030, 0x048, 0x00c, 0x018,\r\n 0x045, 0x051, 0x054, 0x015, 0x01A, 0x029, 0x00B, 0x00E]},\r\n START_END: {value: [0x01A, 0x029, 0x00B, 0x00E]},\r\n MIN_ENCODED_CHARS: {value: 4},\r\n MAX_ACCEPTABLE: {value: 2.0},\r\n PADDING: {value: 1.5},\r\n FORMAT: {value: \"codabar\", writeable: false}\r\n};\r\n\r\nCodabarReader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCodabarReader.prototype.constructor = CodabarReader;\r\n\r\nCodabarReader.prototype._decode = function() {\r\n var self = this,\r\n result = [],\r\n start,\r\n decodedChar,\r\n pattern,\r\n nextStart,\r\n end;\r\n\r\n this._counters = self._fillCounters();\r\n start = self._findStart();\r\n if (!start) {\r\n return null;\r\n }\r\n nextStart = start.startCounter;\r\n\r\n do {\r\n pattern = self._toPattern(nextStart);\r\n if (pattern < 0) {\r\n return null;\r\n }\r\n decodedChar = self._patternToChar(pattern);\r\n if (decodedChar < 0){\r\n return null;\r\n }\r\n result.push(decodedChar);\r\n nextStart += 8;\r\n if (result.length > 1 && self._isStartEnd(pattern)) {\r\n break;\r\n }\r\n } while (nextStart < self._counters.length);\r\n\r\n // verify end\r\n if ((result.length - 2) < self.MIN_ENCODED_CHARS || !self._isStartEnd(pattern)) {\r\n return null;\r\n }\r\n\r\n // verify end white space\r\n if (!self._verifyWhitespace(start.startCounter, nextStart - 8)){\r\n return null;\r\n }\r\n\r\n if (!self._validateResult(result, start.startCounter)){\r\n return null;\r\n }\r\n\r\n nextStart = nextStart > self._counters.length ? self._counters.length : nextStart;\r\n end = start.start + self._sumCounters(start.startCounter, nextStart - 8);\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: start.start,\r\n end: end,\r\n startInfo: start,\r\n decodedCodes: result\r\n };\r\n};\r\n\r\nCodabarReader.prototype._verifyWhitespace = function(startCounter, endCounter) {\r\n if ((startCounter - 1 <= 0)\r\n || this._counters[startCounter - 1] >= (this._calculatePatternLength(startCounter) / 2.0)) {\r\n if ((endCounter + 8 >= this._counters.length)\r\n || this._counters[endCounter + 7] >= (this._calculatePatternLength(endCounter) / 2.0)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nCodabarReader.prototype._calculatePatternLength = function(offset) {\r\n var i,\r\n sum = 0;\r\n\r\n for (i = offset; i < offset + 7; i++) {\r\n sum += this._counters[i];\r\n }\r\n\r\n return sum;\r\n};\r\n\r\nCodabarReader.prototype._thresholdResultPattern = function(result, startCounter){\r\n var self = this,\r\n categorization = {\r\n space: {\r\n narrow: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE},\r\n wide: {size: 0, counts: 0, min: 0, max: Number.MAX_VALUE}\r\n },\r\n bar: {\r\n narrow: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE},\r\n wide: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE}\r\n }\r\n },\r\n kind,\r\n cat,\r\n i,\r\n j,\r\n pos = startCounter,\r\n pattern;\r\n\r\n for (i = 0; i < result.length; i++){\r\n pattern = self._charToPattern(result[i]);\r\n for (j = 6; j >= 0; j--) {\r\n kind = (j & 1) === 2 ? categorization.bar : categorization.space;\r\n cat = (pattern & 1) === 1 ? kind.wide : kind.narrow;\r\n cat.size += self._counters[pos + j];\r\n cat.counts++;\r\n pattern >>= 1;\r\n }\r\n pos += 8;\r\n }\r\n\r\n [\"space\", \"bar\"].forEach(function(key) {\r\n var newkind = categorization[key];\r\n newkind.wide.min =\r\n Math.floor((newkind.narrow.size / newkind.narrow.counts + newkind.wide.size / newkind.wide.counts) / 2);\r\n newkind.narrow.max = Math.ceil(newkind.wide.min);\r\n newkind.wide.max = Math.ceil((newkind.wide.size * self.MAX_ACCEPTABLE + self.PADDING) / newkind.wide.counts);\r\n });\r\n\r\n return categorization;\r\n};\r\n\r\nCodabarReader.prototype._charToPattern = function(char) {\r\n var self = this,\r\n charCode = char.charCodeAt(0),\r\n i;\r\n\r\n for (i = 0; i < self.ALPHABET.length; i++) {\r\n if (self.ALPHABET[i] === charCode){\r\n return self.CHARACTER_ENCODINGS[i];\r\n }\r\n }\r\n return 0x0;\r\n};\r\n\r\nCodabarReader.prototype._validateResult = function(result, startCounter) {\r\n var self = this,\r\n thresholds = self._thresholdResultPattern(result, startCounter),\r\n i,\r\n j,\r\n kind,\r\n cat,\r\n size,\r\n pos = startCounter,\r\n pattern;\r\n\r\n for (i = 0; i < result.length; i++) {\r\n pattern = self._charToPattern(result[i]);\r\n for (j = 6; j >= 0; j--) {\r\n kind = (j & 1) === 0 ? thresholds.bar : thresholds.space;\r\n cat = (pattern & 1) === 1 ? kind.wide : kind.narrow;\r\n size = self._counters[pos + j];\r\n if (size < cat.min || size > cat.max) {\r\n return false;\r\n }\r\n pattern >>= 1;\r\n }\r\n pos += 8;\r\n }\r\n return true;\r\n};\r\n\r\nCodabarReader.prototype._patternToChar = function(pattern) {\r\n var i,\r\n self = this;\r\n\r\n for (i = 0; i < self.CHARACTER_ENCODINGS.length; i++) {\r\n if (self.CHARACTER_ENCODINGS[i] === pattern) {\r\n return String.fromCharCode(self.ALPHABET[i]);\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCodabarReader.prototype._computeAlternatingThreshold = function(offset, end) {\r\n var i,\r\n min = Number.MAX_VALUE,\r\n max = 0,\r\n counter;\r\n\r\n for (i = offset; i < end; i += 2){\r\n counter = this._counters[i];\r\n if (counter > max) {\r\n max = counter;\r\n }\r\n if (counter < min) {\r\n min = counter;\r\n }\r\n }\r\n\r\n return ((min + max) / 2.0) | 0;\r\n};\r\n\r\nCodabarReader.prototype._toPattern = function(offset) {\r\n var numCounters = 7,\r\n end = offset + numCounters,\r\n barThreshold,\r\n spaceThreshold,\r\n bitmask = 1 << (numCounters - 1),\r\n pattern = 0,\r\n i,\r\n threshold;\r\n\r\n if (end > this._counters.length) {\r\n return -1;\r\n }\r\n\r\n barThreshold = this._computeAlternatingThreshold(offset, end);\r\n spaceThreshold = this._computeAlternatingThreshold(offset + 1, end);\r\n\r\n for (i = 0; i < numCounters; i++){\r\n threshold = (i & 1) === 0 ? barThreshold : spaceThreshold;\r\n if (this._counters[offset + i] > threshold) {\r\n pattern |= bitmask;\r\n }\r\n bitmask >>= 1;\r\n }\r\n\r\n return pattern;\r\n};\r\n\r\nCodabarReader.prototype._isStartEnd = function(pattern) {\r\n var i;\r\n\r\n for (i = 0; i < this.START_END.length; i++) {\r\n if (this.START_END[i] === pattern) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nCodabarReader.prototype._sumCounters = function(start, end) {\r\n var i,\r\n sum = 0;\r\n\r\n for (i = start; i < end; i++) {\r\n sum += this._counters[i];\r\n }\r\n return sum;\r\n};\r\n\r\nCodabarReader.prototype._findStart = function() {\r\n var self = this,\r\n i,\r\n pattern,\r\n start = self._nextUnset(self._row),\r\n end;\r\n\r\n for (i = 1; i < this._counters.length; i++) {\r\n pattern = self._toPattern(i);\r\n if (pattern !== -1 && self._isStartEnd(pattern)) {\r\n // TODO: Look for whitespace ahead\r\n start += self._sumCounters(0, i);\r\n end = start + self._sumCounters(i, i + 8);\r\n return {\r\n start: start,\r\n end: end,\r\n startCounter: i,\r\n endCounter: i + 8\r\n };\r\n }\r\n }\r\n};\r\n\r\nexport default CodabarReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/codabar_reader.js\n **/","import BarcodeReader from './barcode_reader';\r\n\r\nfunction Code128Reader() {\r\n BarcodeReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n CODE_SHIFT: {value: 98},\r\n CODE_C: {value: 99},\r\n CODE_B: {value: 100},\r\n CODE_A: {value: 101},\r\n START_CODE_A: {value: 103},\r\n START_CODE_B: {value: 104},\r\n START_CODE_C: {value: 105},\r\n STOP_CODE: {value: 106},\r\n CODE_PATTERN: {value: [\r\n [2, 1, 2, 2, 2, 2],\r\n [2, 2, 2, 1, 2, 2],\r\n [2, 2, 2, 2, 2, 1],\r\n [1, 2, 1, 2, 2, 3],\r\n [1, 2, 1, 3, 2, 2],\r\n [1, 3, 1, 2, 2, 2],\r\n [1, 2, 2, 2, 1, 3],\r\n [1, 2, 2, 3, 1, 2],\r\n [1, 3, 2, 2, 1, 2],\r\n [2, 2, 1, 2, 1, 3],\r\n [2, 2, 1, 3, 1, 2],\r\n [2, 3, 1, 2, 1, 2],\r\n [1, 1, 2, 2, 3, 2],\r\n [1, 2, 2, 1, 3, 2],\r\n [1, 2, 2, 2, 3, 1],\r\n [1, 1, 3, 2, 2, 2],\r\n [1, 2, 3, 1, 2, 2],\r\n [1, 2, 3, 2, 2, 1],\r\n [2, 2, 3, 2, 1, 1],\r\n [2, 2, 1, 1, 3, 2],\r\n [2, 2, 1, 2, 3, 1],\r\n [2, 1, 3, 2, 1, 2],\r\n [2, 2, 3, 1, 1, 2],\r\n [3, 1, 2, 1, 3, 1],\r\n [3, 1, 1, 2, 2, 2],\r\n [3, 2, 1, 1, 2, 2],\r\n [3, 2, 1, 2, 2, 1],\r\n [3, 1, 2, 2, 1, 2],\r\n [3, 2, 2, 1, 1, 2],\r\n [3, 2, 2, 2, 1, 1],\r\n [2, 1, 2, 1, 2, 3],\r\n [2, 1, 2, 3, 2, 1],\r\n [2, 3, 2, 1, 2, 1],\r\n [1, 1, 1, 3, 2, 3],\r\n [1, 3, 1, 1, 2, 3],\r\n [1, 3, 1, 3, 2, 1],\r\n [1, 1, 2, 3, 1, 3],\r\n [1, 3, 2, 1, 1, 3],\r\n [1, 3, 2, 3, 1, 1],\r\n [2, 1, 1, 3, 1, 3],\r\n [2, 3, 1, 1, 1, 3],\r\n [2, 3, 1, 3, 1, 1],\r\n [1, 1, 2, 1, 3, 3],\r\n [1, 1, 2, 3, 3, 1],\r\n [1, 3, 2, 1, 3, 1],\r\n [1, 1, 3, 1, 2, 3],\r\n [1, 1, 3, 3, 2, 1],\r\n [1, 3, 3, 1, 2, 1],\r\n [3, 1, 3, 1, 2, 1],\r\n [2, 1, 1, 3, 3, 1],\r\n [2, 3, 1, 1, 3, 1],\r\n [2, 1, 3, 1, 1, 3],\r\n [2, 1, 3, 3, 1, 1],\r\n [2, 1, 3, 1, 3, 1],\r\n [3, 1, 1, 1, 2, 3],\r\n [3, 1, 1, 3, 2, 1],\r\n [3, 3, 1, 1, 2, 1],\r\n [3, 1, 2, 1, 1, 3],\r\n [3, 1, 2, 3, 1, 1],\r\n [3, 3, 2, 1, 1, 1],\r\n [3, 1, 4, 1, 1, 1],\r\n [2, 2, 1, 4, 1, 1],\r\n [4, 3, 1, 1, 1, 1],\r\n [1, 1, 1, 2, 2, 4],\r\n [1, 1, 1, 4, 2, 2],\r\n [1, 2, 1, 1, 2, 4],\r\n [1, 2, 1, 4, 2, 1],\r\n [1, 4, 1, 1, 2, 2],\r\n [1, 4, 1, 2, 2, 1],\r\n [1, 1, 2, 2, 1, 4],\r\n [1, 1, 2, 4, 1, 2],\r\n [1, 2, 2, 1, 1, 4],\r\n [1, 2, 2, 4, 1, 1],\r\n [1, 4, 2, 1, 1, 2],\r\n [1, 4, 2, 2, 1, 1],\r\n [2, 4, 1, 2, 1, 1],\r\n [2, 2, 1, 1, 1, 4],\r\n [4, 1, 3, 1, 1, 1],\r\n [2, 4, 1, 1, 1, 2],\r\n [1, 3, 4, 1, 1, 1],\r\n [1, 1, 1, 2, 4, 2],\r\n [1, 2, 1, 1, 4, 2],\r\n [1, 2, 1, 2, 4, 1],\r\n [1, 1, 4, 2, 1, 2],\r\n [1, 2, 4, 1, 1, 2],\r\n [1, 2, 4, 2, 1, 1],\r\n [4, 1, 1, 2, 1, 2],\r\n [4, 2, 1, 1, 1, 2],\r\n [4, 2, 1, 2, 1, 1],\r\n [2, 1, 2, 1, 4, 1],\r\n [2, 1, 4, 1, 2, 1],\r\n [4, 1, 2, 1, 2, 1],\r\n [1, 1, 1, 1, 4, 3],\r\n [1, 1, 1, 3, 4, 1],\r\n [1, 3, 1, 1, 4, 1],\r\n [1, 1, 4, 1, 1, 3],\r\n [1, 1, 4, 3, 1, 1],\r\n [4, 1, 1, 1, 1, 3],\r\n [4, 1, 1, 3, 1, 1],\r\n [1, 1, 3, 1, 4, 1],\r\n [1, 1, 4, 1, 3, 1],\r\n [3, 1, 1, 1, 4, 1],\r\n [4, 1, 1, 1, 3, 1],\r\n [2, 1, 1, 4, 1, 2],\r\n [2, 1, 1, 2, 1, 4],\r\n [2, 1, 1, 2, 3, 2],\r\n [2, 3, 3, 1, 1, 1, 2]\r\n ]},\r\n SINGLE_CODE_ERROR: {value: 0.64},\r\n AVG_CODE_ERROR: {value: 0.30},\r\n FORMAT: {value: \"code_128\", writeable: false},\r\n MODULE_INDICES: {value: {bar: [0, 2, 4], space: [1, 3, 5]}}\r\n};\r\n\r\nCode128Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCode128Reader.prototype.constructor = Code128Reader;\r\n\r\nCode128Reader.prototype._decodeCode = function(start, correction) {\r\n var counter = [0, 0, 0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = start,\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: start,\r\n end: start,\r\n correction: {\r\n bar: 1,\r\n space: 1\r\n }\r\n },\r\n code,\r\n error;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n if (correction) {\r\n self._correct(counter, correction);\r\n }\r\n for (code = 0; code < self.CODE_PATTERN.length; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n bestMatch.end = i;\r\n if (bestMatch.code === -1 || bestMatch.error > self.AVG_CODE_ERROR) {\r\n return null;\r\n }\r\n if (self.CODE_PATTERN[bestMatch.code]) {\r\n bestMatch.correction.bar = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.bar);\r\n bestMatch.correction.space = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.space);\r\n }\r\n return bestMatch;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nCode128Reader.prototype._correct = function(counter, correction) {\r\n this._correctBars(counter, correction.bar, this.MODULE_INDICES.bar);\r\n this._correctBars(counter, correction.space, this.MODULE_INDICES.space);\r\n};\r\n\r\nCode128Reader.prototype._findStart = function() {\r\n var counter = [0, 0, 0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = self._nextSet(self._row),\r\n isWhite = false,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0,\r\n correction: {\r\n bar: 1,\r\n space: 1\r\n }\r\n },\r\n code,\r\n error,\r\n j,\r\n sum;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n for (code = self.START_CODE_A; code <= self.START_CODE_C; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n if (bestMatch.error < self.AVG_CODE_ERROR) {\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n bestMatch.correction.bar = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.bar);\r\n bestMatch.correction.space = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.space);\r\n return bestMatch;\r\n }\r\n\r\n for ( j = 0; j < 4; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[4] = 0;\r\n counter[5] = 0;\r\n counterPos--;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nCode128Reader.prototype._decode = function() {\r\n var self = this,\r\n startInfo = self._findStart(),\r\n code = null,\r\n done = false,\r\n result = [],\r\n multiplier = 0,\r\n checksum = 0,\r\n codeset,\r\n rawResult = [],\r\n decodedCodes = [],\r\n shiftNext = false,\r\n unshift,\r\n removeLastCharacter = true;\r\n\r\n if (startInfo === null) {\r\n return null;\r\n }\r\n code = {\r\n code: startInfo.code,\r\n start: startInfo.start,\r\n end: startInfo.end,\r\n correction: {\r\n bar: startInfo.correction.bar,\r\n space: startInfo.correction.space\r\n }\r\n };\r\n decodedCodes.push(code);\r\n checksum = code.code;\r\n switch (code.code) {\r\n case self.START_CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.START_CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.START_CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n default:\r\n return null;\r\n }\r\n\r\n while (!done) {\r\n unshift = shiftNext;\r\n shiftNext = false;\r\n code = self._decodeCode(code.end, code.correction);\r\n if (code !== null) {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = true;\r\n }\r\n\r\n if (code.code !== self.STOP_CODE) {\r\n rawResult.push(code.code);\r\n multiplier++;\r\n checksum += multiplier * code.code;\r\n }\r\n decodedCodes.push(code);\r\n\r\n switch (codeset) {\r\n case self.CODE_A:\r\n if (code.code < 64) {\r\n result.push(String.fromCharCode(32 + code.code));\r\n } else if (code.code < 96) {\r\n result.push(String.fromCharCode(code.code - 64));\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_SHIFT:\r\n shiftNext = true;\r\n codeset = self.CODE_B;\r\n break;\r\n case self.CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n case self.CODE_B:\r\n if (code.code < 96) {\r\n result.push(String.fromCharCode(32 + code.code));\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_SHIFT:\r\n shiftNext = true;\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n case self.CODE_C:\r\n if (code.code < 100) {\r\n result.push(code.code < 10 ? \"0\" + code.code : code.code);\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n } else {\r\n done = true;\r\n }\r\n if (unshift) {\r\n codeset = codeset === self.CODE_A ? self.CODE_B : self.CODE_A;\r\n }\r\n }\r\n\r\n if (code === null) {\r\n return null;\r\n }\r\n\r\n code.end = self._nextUnset(self._row, code.end);\r\n if (!self._verifyTrailingWhitespace(code)){\r\n return null;\r\n }\r\n\r\n checksum -= multiplier * rawResult[rawResult.length - 1];\r\n if (checksum % 103 !== rawResult[rawResult.length - 1]) {\r\n return null;\r\n }\r\n\r\n if (!result.length) {\r\n return null;\r\n }\r\n\r\n // remove last code from result (checksum)\r\n if (removeLastCharacter) {\r\n result.splice(result.length - 1, 1);\r\n }\r\n\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: code.end,\r\n codeset: codeset,\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes,\r\n endInfo: code\r\n };\r\n};\r\n\r\n\r\nBarcodeReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nfunction calculateCorrection(expected, normalized, indices) {\r\n var length = indices.length,\r\n sumNormalized = 0,\r\n sumExpected = 0;\r\n\r\n while(length--) {\r\n sumExpected += expected[indices[length]];\r\n sumNormalized += normalized[indices[length]];\r\n }\r\n return sumExpected/sumNormalized;\r\n}\r\n\r\nexport default Code128Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_128_reader.js\n **/","import Code39Reader from './code_39_reader';\r\n\r\nfunction Code39VINReader() {\r\n Code39Reader.call(this);\r\n}\r\n\r\nvar patterns = {\r\n IOQ: /[IOQ]/g,\r\n AZ09: /[A-Z0-9]{17}/\r\n};\r\n\r\nCode39VINReader.prototype = Object.create(Code39Reader.prototype);\r\nCode39VINReader.prototype.constructor = Code39VINReader;\r\n\r\n// Cribbed from:\r\n// https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/client/result/VINResultParser.java\r\nCode39VINReader.prototype._decode = function() {\r\n var result = Code39Reader.prototype._decode.apply(this);\r\n if (!result) {\r\n return null;\r\n }\r\n\r\n var code = result.code;\r\n\r\n if (!code) {\r\n return null;\r\n }\r\n\r\n code = code.replace(patterns.IOQ, '');\r\n\r\n if (!code.match(patterns.AZ09)) {\r\n if (ENV.development) {\r\n console.log('Failed AZ09 pattern code:', code);\r\n }\r\n return null;\r\n }\r\n\r\n if (!this._checkChecksum(code)) {\r\n return null;\r\n }\r\n\r\n result.code = code;\r\n return result;\r\n};\r\n\r\nCode39VINReader.prototype._checkChecksum = function(code) {\r\n // TODO\r\n return !!code;\r\n};\r\n\r\nexport default Code39VINReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_39_vin_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN2Reader() {\r\n EANReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_2\", writeable: false}\r\n};\r\n\r\nEAN2Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN2Reader.prototype.constructor = EAN2Reader;\r\n\r\nEAN2Reader.prototype.decode = function(row, start) {\r\n this._row = row;\r\n var counters = [0, 0, 0, 0],\r\n codeFrequency = 0,\r\n i = 0,\r\n offset = start,\r\n end = this._row.length,\r\n code,\r\n result = [],\r\n decodedCodes = [];\r\n\r\n for (i = 0; i < 2 && offset < end; i++) {\r\n code = this._decodeCode(offset);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code % 10);\r\n if (code.code >= this.CODE_G_START) {\r\n codeFrequency |= 1 << (1 - i);\r\n }\r\n if (i != 1) {\r\n offset = this._nextSet(this._row, code.end);\r\n offset = this._nextUnset(this._row, offset);\r\n }\r\n }\r\n\r\n if (result.length != 2 || (parseInt(result.join(\"\")) % 4) !== codeFrequency) {\r\n return null;\r\n }\r\n return {\r\n code: result.join(\"\"),\r\n decodedCodes,\r\n end: code.end\r\n };\r\n};\r\n\r\nexport default EAN2Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_2_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN5Reader() {\r\n EANReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_5\", writeable: false}\r\n};\r\n\r\nconst CHECK_DIGIT_ENCODINGS = [24, 20, 18, 17, 12, 6, 3, 10, 9, 5];\r\n\r\nEAN5Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN5Reader.prototype.constructor = EAN5Reader;\r\n\r\nEAN5Reader.prototype.decode = function(row, start) {\r\n this._row = row;\r\n var counters = [0, 0, 0, 0],\r\n codeFrequency = 0,\r\n i = 0,\r\n offset = start,\r\n end = this._row.length,\r\n code,\r\n result = [],\r\n decodedCodes = [];\r\n\r\n for (i = 0; i < 5 && offset < end; i++) {\r\n code = this._decodeCode(offset);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code % 10);\r\n if (code.code >= this.CODE_G_START) {\r\n codeFrequency |= 1 << (4 - i);\r\n }\r\n if (i != 4) {\r\n offset = this._nextSet(this._row, code.end);\r\n offset = this._nextUnset(this._row, offset);\r\n }\r\n }\r\n\r\n if (result.length != 5) {\r\n return null;\r\n }\r\n\r\n if (extensionChecksum(result) !== determineCheckDigit(codeFrequency)) {\r\n return null;\r\n }\r\n return {\r\n code: result.join(\"\"),\r\n decodedCodes,\r\n end: code.end\r\n };\r\n};\r\n\r\nfunction determineCheckDigit(codeFrequency) {\r\n var i;\r\n for (i = 0; i < 10; i++) {\r\n if (codeFrequency === CHECK_DIGIT_ENCODINGS[i]) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n\r\nfunction extensionChecksum(result) {\r\n var length = result.length,\r\n sum = 0,\r\n i;\r\n\r\n for (i = length - 2; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n for (i = length - 1; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n return sum % 10;\r\n}\r\n\r\nexport default EAN5Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_5_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN8Reader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_8\", writeable: false}\r\n};\r\n\r\nEAN8Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN8Reader.prototype.constructor = EAN8Reader;\r\n\r\nEAN8Reader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this;\r\n\r\n for ( i = 0; i < 4; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n\r\n code = self._findPattern(self.MIDDLE_PATTERN, code.end, true, false);\r\n if (code === null) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n\r\n for ( i = 0; i < 4; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code);\r\n }\r\n\r\n return code;\r\n};\r\n\r\nexport default EAN8Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_8_reader.js\n **/","import BarcodeReader from './barcode_reader';\r\nimport {merge} from 'lodash';\r\n\r\nfunction I2of5Reader(opts) {\r\n opts = merge(getDefaulConfig(), opts);\r\n BarcodeReader.call(this, opts);\r\n this.barSpaceRatio = [1, 1];\r\n if (opts.normalizeBarSpaceWidth) {\r\n this.SINGLE_CODE_ERROR = 0.38;\r\n this.AVG_CODE_ERROR = 0.09;\r\n }\r\n}\r\n\r\nfunction getDefaulConfig() {\r\n var config = {};\r\n\r\n Object.keys(I2of5Reader.CONFIG_KEYS).forEach(function(key) {\r\n config[key] = I2of5Reader.CONFIG_KEYS[key].default;\r\n });\r\n return config;\r\n}\r\n\r\nvar N = 1,\r\n W = 3,\r\n properties = {\r\n START_PATTERN: {value: [N, N, N, N]},\r\n STOP_PATTERN: {value: [N, N, W]},\r\n CODE_PATTERN: {value: [\r\n [N, N, W, W, N],\r\n [W, N, N, N, W],\r\n [N, W, N, N, W],\r\n [W, W, N, N, N],\r\n [N, N, W, N, W],\r\n [W, N, W, N, N],\r\n [N, W, W, N, N],\r\n [N, N, N, W, W],\r\n [W, N, N, W, N],\r\n [N, W, N, W, N]\r\n ]},\r\n SINGLE_CODE_ERROR: {value: 0.78, writable: true},\r\n AVG_CODE_ERROR: {value: 0.38, writable: true},\r\n MAX_CORRECTION_FACTOR: {value: 5},\r\n FORMAT: {value: \"i2of5\"}\r\n };\r\n\r\nI2of5Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nI2of5Reader.prototype.constructor = I2of5Reader;\r\n\r\nI2of5Reader.prototype._matchPattern = function(counter, code) {\r\n if (this.config.normalizeBarSpaceWidth) {\r\n var i,\r\n counterSum = [0, 0],\r\n codeSum = [0, 0],\r\n correction = [0, 0],\r\n correctionRatio = this.MAX_CORRECTION_FACTOR,\r\n correctionRatioInverse = 1 / correctionRatio;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n counterSum[i % 2] += counter[i];\r\n codeSum[i % 2] += code[i];\r\n }\r\n correction[0] = codeSum[0] / counterSum[0];\r\n correction[1] = codeSum[1] / counterSum[1];\r\n\r\n correction[0] = Math.max(Math.min(correction[0], correctionRatio), correctionRatioInverse);\r\n correction[1] = Math.max(Math.min(correction[1], correctionRatio), correctionRatioInverse);\r\n this.barSpaceRatio = correction;\r\n for (i = 0; i < counter.length; i++) {\r\n counter[i] *= this.barSpaceRatio[i % 2];\r\n }\r\n }\r\n return BarcodeReader.prototype._matchPattern.call(this, counter, code);\r\n};\r\n\r\nI2of5Reader.prototype._findPattern = function(pattern, offset, isWhite, tryHarder) {\r\n var counter = [],\r\n self = this,\r\n i,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n },\r\n error,\r\n j,\r\n sum,\r\n normalized,\r\n epsilon = self.AVG_CODE_ERROR;\r\n\r\n isWhite = isWhite || false;\r\n tryHarder = tryHarder || false;\r\n\r\n if (!offset) {\r\n offset = self._nextSet(self._row);\r\n }\r\n\r\n for ( i = 0; i < pattern.length; i++) {\r\n counter[i] = 0;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n error = self._matchPattern(counter, pattern);\r\n if (error < epsilon) {\r\n bestMatch.error = error;\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n return bestMatch;\r\n }\r\n if (tryHarder) {\r\n for (j = 0; j < counter.length - 2; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[counter.length - 2] = 0;\r\n counter[counter.length - 1] = 0;\r\n counterPos--;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nI2of5Reader.prototype._findStart = function() {\r\n var self = this,\r\n leadingWhitespaceStart,\r\n offset = self._nextSet(self._row),\r\n startInfo,\r\n narrowBarWidth = 1;\r\n\r\n while (!startInfo) {\r\n startInfo = self._findPattern(self.START_PATTERN, offset, false, true);\r\n if (!startInfo) {\r\n return null;\r\n }\r\n narrowBarWidth = Math.floor((startInfo.end - startInfo.start) / 4);\r\n leadingWhitespaceStart = startInfo.start - narrowBarWidth * 10;\r\n if (leadingWhitespaceStart >= 0) {\r\n if (self._matchRange(leadingWhitespaceStart, startInfo.start, 0)) {\r\n return startInfo;\r\n }\r\n }\r\n offset = startInfo.end;\r\n startInfo = null;\r\n }\r\n};\r\n\r\nI2of5Reader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nI2of5Reader.prototype._findEnd = function() {\r\n var self = this,\r\n endInfo,\r\n tmp;\r\n\r\n self._row.reverse();\r\n endInfo = self._findPattern(self.STOP_PATTERN);\r\n self._row.reverse();\r\n\r\n if (endInfo === null) {\r\n return null;\r\n }\r\n\r\n // reverse numbers\r\n tmp = endInfo.start;\r\n endInfo.start = self._row.length - endInfo.end;\r\n endInfo.end = self._row.length - tmp;\r\n\r\n return endInfo !== null ? self._verifyTrailingWhitespace(endInfo) : null;\r\n};\r\n\r\nI2of5Reader.prototype._decodePair = function(counterPair) {\r\n var i,\r\n code,\r\n codes = [],\r\n self = this;\r\n\r\n for (i = 0; i < counterPair.length; i++) {\r\n code = self._decodeCode(counterPair[i]);\r\n if (!code) {\r\n return null;\r\n }\r\n codes.push(code);\r\n }\r\n return codes;\r\n};\r\n\r\nI2of5Reader.prototype._decodeCode = function(counter) {\r\n var j,\r\n self = this,\r\n sum = 0,\r\n normalized,\r\n error,\r\n epsilon = self.AVG_CODE_ERROR,\r\n code,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n };\r\n\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n for (code = 0; code < self.CODE_PATTERN.length; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n if (bestMatch.error < epsilon) {\r\n return bestMatch;\r\n }\r\n};\r\n\r\nI2of5Reader.prototype._decodePayload = function(counters, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n pos = 0,\r\n counterLength = counters.length,\r\n counterPair = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]],\r\n codes;\r\n\r\n while (pos < counterLength) {\r\n for (i = 0; i < 5; i++) {\r\n counterPair[0][i] = counters[pos] * this.barSpaceRatio[0];\r\n counterPair[1][i] = counters[pos + 1] * this.barSpaceRatio[1];\r\n pos += 2;\r\n }\r\n codes = self._decodePair(counterPair);\r\n if (!codes) {\r\n return null;\r\n }\r\n for (i = 0; i < codes.length; i++) {\r\n result.push(codes[i].code + \"\");\r\n decodedCodes.push(codes[i]);\r\n }\r\n }\r\n return codes;\r\n};\r\n\r\nI2of5Reader.prototype._verifyCounterLength = function(counters) {\r\n return (counters.length % 10 === 0);\r\n};\r\n\r\nI2of5Reader.prototype._decode = function() {\r\n var startInfo,\r\n endInfo,\r\n self = this,\r\n code,\r\n result = [],\r\n decodedCodes = [],\r\n counters;\r\n\r\n startInfo = self._findStart();\r\n if (!startInfo) {\r\n return null;\r\n }\r\n decodedCodes.push(startInfo);\r\n\r\n endInfo = self._findEnd();\r\n if (!endInfo) {\r\n return null;\r\n }\r\n\r\n counters = self._fillCounters(startInfo.end, endInfo.start, false);\r\n if (!self._verifyCounterLength(counters)) {\r\n return null;\r\n }\r\n code = self._decodePayload(counters, result, decodedCodes);\r\n if (!code) {\r\n return null;\r\n }\r\n if (result.length % 2 !== 0 ||\r\n result.length < 6) {\r\n return null;\r\n }\r\n\r\n decodedCodes.push(endInfo);\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: endInfo.end,\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes\r\n };\r\n};\r\n\r\nI2of5Reader.CONFIG_KEYS = {\r\n normalizeBarSpaceWidth: {\r\n 'type': 'boolean',\r\n 'default': false,\r\n 'description': 'If true, the reader tries to normalize the' +\r\n 'width-difference between bars and spaces'\r\n }\r\n};\r\n\r\nexport default I2of5Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/i2of5_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction UPCEReader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n CODE_FREQUENCY: {value: [\r\n [ 56, 52, 50, 49, 44, 38, 35, 42, 41, 37 ],\r\n [7, 11, 13, 14, 19, 25, 28, 21, 22, 26]]},\r\n STOP_PATTERN: { value: [1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7]},\r\n FORMAT: {value: \"upc_e\", writeable: false}\r\n};\r\n\r\nUPCEReader.prototype = Object.create(EANReader.prototype, properties);\r\nUPCEReader.prototype.constructor = UPCEReader;\r\n\r\nUPCEReader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n codeFrequency = 0x0;\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end);\r\n if (!code) {\r\n return null;\r\n }\r\n if (code.code >= self.CODE_G_START) {\r\n code.code = code.code - self.CODE_G_START;\r\n codeFrequency |= 1 << (5 - i);\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n if (!self._determineParity(codeFrequency, result)) {\r\n return null;\r\n }\r\n\r\n return code;\r\n};\r\n\r\nUPCEReader.prototype._determineParity = function(codeFrequency, result) {\r\n var i,\r\n nrSystem;\r\n\r\n for (nrSystem = 0; nrSystem < this.CODE_FREQUENCY.length; nrSystem++){\r\n for ( i = 0; i < this.CODE_FREQUENCY[nrSystem].length; i++) {\r\n if (codeFrequency === this.CODE_FREQUENCY[nrSystem][i]) {\r\n result.unshift(nrSystem);\r\n result.push(i);\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nUPCEReader.prototype._convertToUPCA = function(result) {\r\n var upca = [result[0]],\r\n lastDigit = result[result.length - 2];\r\n\r\n if (lastDigit <= 2) {\r\n upca = upca.concat(result.slice(1, 3))\r\n .concat([lastDigit, 0, 0, 0, 0])\r\n .concat(result.slice(3, 6));\r\n } else if (lastDigit === 3) {\r\n upca = upca.concat(result.slice(1, 4))\r\n .concat([0, 0, 0, 0, 0])\r\n .concat(result.slice(4, 6));\r\n } else if (lastDigit === 4) {\r\n upca = upca.concat(result.slice(1, 5))\r\n .concat([0, 0, 0, 0, 0, result[5]]);\r\n } else {\r\n upca = upca.concat(result.slice(1, 6))\r\n .concat([0, 0, 0, 0, lastDigit]);\r\n }\r\n\r\n upca.push(result[result.length - 1]);\r\n return upca;\r\n};\r\n\r\nUPCEReader.prototype._checksum = function(result) {\r\n return EANReader.prototype._checksum.call(this, this._convertToUPCA(result));\r\n};\r\n\r\nUPCEReader.prototype._findEnd = function(offset, isWhite) {\r\n isWhite = true;\r\n return EANReader.prototype._findEnd.call(this, offset, isWhite);\r\n};\r\n\r\nUPCEReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n};\r\n\r\nexport default UPCEReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/upc_e_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction UPCReader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"upc_a\", writeable: false}\r\n};\r\n\r\nUPCReader.prototype = Object.create(EANReader.prototype, properties);\r\nUPCReader.prototype.constructor = UPCReader;\r\n\r\nUPCReader.prototype._decode = function() {\r\n var result = EANReader.prototype._decode.call(this);\r\n\r\n if (result && result.code && result.code.length === 13 && result.code.charAt(0) === \"0\") {\r\n result.code = result.code.substring(1);\r\n return result;\r\n }\r\n return null;\r\n};\r\n\r\nexport default UPCReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/upc_reader.js\n **/","import ImageWrapper from './common/image_wrapper';\r\nimport createLocator, {checkImageConstraints} from './locator/barcode_locator';\r\nimport BarcodeDecoder from './decoder/barcode_decoder';\r\nimport createEventedElement from './common/events';\r\nimport CameraAccess from './input/camera_access';\r\nimport ImageDebug from './common/image_debug';\r\nimport ResultCollector from './analytics/result_collector';\r\nimport Config from './config/config';\r\nimport InputStream from 'input_stream';\r\nimport FrameGrabber from 'frame_grabber';\r\nimport {merge} from 'lodash';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone')\r\n};\r\n\r\n\r\nfunction createScanner() {\r\n var _inputStream,\r\n _framegrabber,\r\n _stopped,\r\n _canvasContainer = {\r\n ctx: {\r\n image: null,\r\n overlay: null\r\n },\r\n dom: {\r\n image: null,\r\n overlay: null\r\n }\r\n },\r\n _inputImageWrapper,\r\n _boxSize,\r\n _decoder,\r\n _workerPool = [],\r\n _onUIThread = true,\r\n _resultCollector,\r\n _config = {},\r\n _events = createEventedElement(),\r\n _locator;\r\n\r\n function initializeData(imageWrapper) {\r\n initBuffers(imageWrapper);\r\n _decoder = BarcodeDecoder.create(_config.decoder, _inputImageWrapper);\r\n }\r\n\r\n function initInputStream(cb) {\r\n var video;\r\n if (_config.inputStream.type === \"VideoStream\") {\r\n video = document.createElement(\"video\");\r\n _inputStream = InputStream.createVideoStream(video);\r\n } else if (_config.inputStream.type === \"ImageStream\") {\r\n _inputStream = InputStream.createImageStream();\r\n } else if (_config.inputStream.type === \"LiveStream\") {\r\n var $viewport = getViewPort();\r\n if ($viewport) {\r\n video = $viewport.querySelector(\"video\");\r\n if (!video) {\r\n video = document.createElement(\"video\");\r\n $viewport.appendChild(video);\r\n }\r\n }\r\n _inputStream = InputStream.createLiveStream(video);\r\n CameraAccess.request(video, _config.inputStream.constraints)\r\n .then(() => {\r\n _inputStream.trigger(\"canrecord\");\r\n }).catch((err) => {\r\n return cb(err);\r\n });\r\n }\r\n\r\n _inputStream.setAttribute(\"preload\", \"auto\");\r\n _inputStream.setInputStream(_config.inputStream);\r\n _inputStream.addEventListener(\"canrecord\", canRecord.bind(undefined, cb));\r\n }\r\n\r\n function getViewPort() {\r\n var target = _config.inputStream.target;\r\n // Check if target is already a DOM element\r\n if (target && target.nodeName && target.nodeType === 1) {\r\n return target;\r\n } else {\r\n // Use '#interactive.viewport' as a fallback selector (backwards compatibility)\r\n var selector = typeof target === 'string' ? target : '#interactive.viewport';\r\n return document.querySelector(selector);\r\n }\r\n }\r\n\r\n function canRecord(cb) {\r\n checkImageConstraints(_inputStream, _config.locator);\r\n initCanvas(_config);\r\n _framegrabber = FrameGrabber.create(_inputStream, _canvasContainer.dom.image);\r\n\r\n adjustWorkerPool(_config.numOfWorkers, function() {\r\n if (_config.numOfWorkers === 0) {\r\n initializeData();\r\n }\r\n ready(cb);\r\n });\r\n }\r\n\r\n function ready(cb){\r\n _inputStream.play();\r\n cb();\r\n }\r\n\r\n function initCanvas() {\r\n if (typeof document !== \"undefined\") {\r\n var $viewport = getViewPort();\r\n _canvasContainer.dom.image = document.querySelector(\"canvas.imgBuffer\");\r\n if (!_canvasContainer.dom.image) {\r\n _canvasContainer.dom.image = document.createElement(\"canvas\");\r\n _canvasContainer.dom.image.className = \"imgBuffer\";\r\n if ($viewport && _config.inputStream.type === \"ImageStream\") {\r\n $viewport.appendChild(_canvasContainer.dom.image);\r\n }\r\n }\r\n _canvasContainer.ctx.image = _canvasContainer.dom.image.getContext(\"2d\");\r\n _canvasContainer.dom.image.width = _inputStream.getCanvasSize().x;\r\n _canvasContainer.dom.image.height = _inputStream.getCanvasSize().y;\r\n\r\n _canvasContainer.dom.overlay = document.querySelector(\"canvas.drawingBuffer\");\r\n if (!_canvasContainer.dom.overlay) {\r\n _canvasContainer.dom.overlay = document.createElement(\"canvas\");\r\n _canvasContainer.dom.overlay.className = \"drawingBuffer\";\r\n if ($viewport) {\r\n $viewport.appendChild(_canvasContainer.dom.overlay);\r\n }\r\n }\r\n _canvasContainer.ctx.overlay = _canvasContainer.dom.overlay.getContext(\"2d\");\r\n _canvasContainer.dom.overlay.width = _inputStream.getCanvasSize().x;\r\n _canvasContainer.dom.overlay.height = _inputStream.getCanvasSize().y;\r\n }\r\n }\r\n\r\n function initBuffers(imageWrapper) {\r\n if (imageWrapper) {\r\n _inputImageWrapper = imageWrapper;\r\n } else {\r\n _inputImageWrapper = new ImageWrapper({\r\n x: _inputStream.getWidth(),\r\n y: _inputStream.getHeight()\r\n });\r\n }\r\n\r\n if (ENV.development) {\r\n console.log(_inputImageWrapper.size);\r\n }\r\n _boxSize = [\r\n vec2.clone([0, 0]),\r\n vec2.clone([0, _inputImageWrapper.size.y]),\r\n vec2.clone([_inputImageWrapper.size.x, _inputImageWrapper.size.y]),\r\n vec2.clone([_inputImageWrapper.size.x, 0])\r\n ];\r\n _locator = createLocator(_inputImageWrapper, _config.locator);\r\n }\r\n\r\n function getBoundingBoxes() {\r\n if (_config.locate) {\r\n return _locator.locate();\r\n } else {\r\n return [[\r\n vec2.clone(_boxSize[0]),\r\n vec2.clone(_boxSize[1]),\r\n vec2.clone(_boxSize[2]),\r\n vec2.clone(_boxSize[3])]];\r\n }\r\n }\r\n\r\n function transformResult(result) {\r\n var topRight = _inputStream.getTopRight(),\r\n xOffset = topRight.x,\r\n yOffset = topRight.y,\r\n i;\r\n\r\n if (xOffset === 0 && yOffset === 0) {\r\n return;\r\n }\r\n\r\n if (result.barcodes) {\r\n for (i = 0; i < result.barcodes.length; i++) {\r\n transformResult(result.barcodes[i]);\r\n }\r\n }\r\n\r\n if (result.line && result.line.length === 2) {\r\n moveLine(result.line);\r\n }\r\n\r\n if (result.box) {\r\n moveBox(result.box);\r\n }\r\n\r\n if (result.boxes && result.boxes.length > 0) {\r\n for (i = 0; i < result.boxes.length; i++) {\r\n moveBox(result.boxes[i]);\r\n }\r\n }\r\n\r\n function moveBox(box) {\r\n var corner = box.length;\r\n\r\n while (corner--) {\r\n box[corner][0] += xOffset;\r\n box[corner][1] += yOffset;\r\n }\r\n }\r\n\r\n function moveLine(line) {\r\n line[0].x += xOffset;\r\n line[0].y += yOffset;\r\n line[1].x += xOffset;\r\n line[1].y += yOffset;\r\n }\r\n }\r\n\r\n function addResult (result, imageData) {\r\n if (!imageData || !_resultCollector) {\r\n return;\r\n }\r\n\r\n if (result.barcodes) {\r\n result.barcodes.filter(barcode => barcode.codeResult)\r\n .forEach(barcode => addResult(barcode, imageData));\r\n } else if (result.codeResult) {\r\n _resultCollector.addResult(imageData, _inputStream.getCanvasSize(), result.codeResult);\r\n }\r\n }\r\n\r\n function hasCodeResult (result) {\r\n return result && (result.barcodes ?\r\n result.barcodes.some(barcode => barcode.codeResult) :\r\n result.codeResult);\r\n }\r\n\r\n function publishResult(result, imageData) {\r\n let resultToPublish = result;\r\n\r\n if (result && _onUIThread) {\r\n transformResult(result);\r\n addResult(result, imageData);\r\n resultToPublish = result.barcodes || result;\r\n }\r\n\r\n _events.publish(\"processed\", resultToPublish);\r\n if (hasCodeResult(result)) {\r\n _events.publish(\"detected\", resultToPublish);\r\n }\r\n }\r\n\r\n function locateAndDecode() {\r\n var result,\r\n boxes;\r\n\r\n boxes = getBoundingBoxes();\r\n if (boxes) {\r\n result = _decoder.decodeFromBoundingBoxes(boxes);\r\n result = result || {};\r\n result.boxes = boxes;\r\n publishResult(result, _inputImageWrapper.data);\r\n } else {\r\n publishResult();\r\n }\r\n }\r\n\r\n function update() {\r\n var availableWorker;\r\n\r\n if (_onUIThread) {\r\n if (_workerPool.length > 0) {\r\n availableWorker = _workerPool.filter(function(workerThread) {\r\n return !workerThread.busy;\r\n })[0];\r\n if (availableWorker) {\r\n _framegrabber.attachData(availableWorker.imageData);\r\n } else {\r\n return; // all workers are busy\r\n }\r\n } else {\r\n _framegrabber.attachData(_inputImageWrapper.data);\r\n }\r\n if (_framegrabber.grab()) {\r\n if (availableWorker) {\r\n availableWorker.busy = true;\r\n availableWorker.worker.postMessage({\r\n cmd: 'process',\r\n imageData: availableWorker.imageData\r\n }, [availableWorker.imageData.buffer]);\r\n } else {\r\n locateAndDecode();\r\n }\r\n }\r\n } else {\r\n locateAndDecode();\r\n }\r\n }\r\n\r\n function startContinuousUpdate() {\r\n var next = null,\r\n delay = 1000 / (_config.frequency || 60);\r\n\r\n _stopped = false;\r\n (function frame(timestamp) {\r\n next = next || timestamp;\r\n if (!_stopped) {\r\n if (timestamp >= next) {\r\n next += delay;\r\n update();\r\n }\r\n window.requestAnimFrame(frame);\r\n }\r\n }(performance.now()));\r\n }\r\n\r\n function start() {\r\n if (_onUIThread && _config.inputStream.type === \"LiveStream\") {\r\n startContinuousUpdate();\r\n } else {\r\n update();\r\n }\r\n }\r\n\r\n function initWorker(cb) {\r\n var blobURL,\r\n workerThread = {\r\n worker: undefined,\r\n imageData: new Uint8Array(_inputStream.getWidth() * _inputStream.getHeight()),\r\n busy: true\r\n };\r\n\r\n blobURL = generateWorkerBlob();\r\n workerThread.worker = new Worker(blobURL);\r\n\r\n workerThread.worker.onmessage = function(e) {\r\n if (e.data.event === 'initialized') {\r\n URL.revokeObjectURL(blobURL);\r\n workerThread.busy = false;\r\n workerThread.imageData = new Uint8Array(e.data.imageData);\r\n if (ENV.development) {\r\n console.log(\"Worker initialized\");\r\n }\r\n return cb(workerThread);\r\n } else if (e.data.event === 'processed') {\r\n workerThread.imageData = new Uint8Array(e.data.imageData);\r\n workerThread.busy = false;\r\n publishResult(e.data.result, workerThread.imageData);\r\n } else if (e.data.event === 'error') {\r\n if (ENV.development) {\r\n console.log(\"Worker error: \" + e.data.message);\r\n }\r\n }\r\n };\r\n\r\n workerThread.worker.postMessage({\r\n cmd: 'init',\r\n size: {x: _inputStream.getWidth(), y: _inputStream.getHeight()},\r\n imageData: workerThread.imageData,\r\n config: configForWorker(_config)\r\n }, [workerThread.imageData.buffer]);\r\n }\r\n\r\n function configForWorker(config) {\r\n return {\r\n ...config,\r\n inputStream: {\r\n ...config.inputStream,\r\n target: null\r\n }\r\n };\r\n }\r\n\r\n function workerInterface(factory) {\r\n /* eslint-disable no-undef*/\r\n if (factory) {\r\n var Quagga = factory().default;\r\n if (!Quagga) {\r\n self.postMessage({'event': 'error', message: 'Quagga could not be created'});\r\n return;\r\n }\r\n }\r\n var imageWrapper,\r\n scanner = Quagga._worker.createScanner();\r\n\r\n self.onmessage = function(e) {\r\n if (e.data.cmd === 'init') {\r\n var config = e.data.config;\r\n config.numOfWorkers = 0;\r\n imageWrapper = new Quagga.ImageWrapper({\r\n x: e.data.size.x,\r\n y: e.data.size.y\r\n }, new Uint8Array(e.data.imageData));\r\n scanner.init(config, ready, imageWrapper);\r\n scanner.subscribe(\"processed\", onProcessed);\r\n } else if (e.data.cmd === 'process') {\r\n imageWrapper.data = new Uint8Array(e.data.imageData);\r\n scanner.start();\r\n }\r\n };\r\n\r\n function onProcessed(result) {\r\n self.postMessage({\r\n 'event': 'processed',\r\n imageData: imageWrapper.data,\r\n result: result\r\n }, [imageWrapper.data.buffer]);\r\n }\r\n\r\n function ready() { // eslint-disable-line\r\n self.postMessage({'event': 'initialized', imageData: imageWrapper.data}, [imageWrapper.data.buffer]);\r\n }\r\n\r\n /* eslint-enable */\r\n }\r\n\r\n function generateWorkerBlob() {\r\n var blob,\r\n factorySource;\r\n\r\n /* jshint ignore:start */\r\n if (typeof __factorySource__ !== 'undefined') {\r\n factorySource = __factorySource__; // eslint-disable-line no-undef\r\n }\r\n /* jshint ignore:end */\r\n\r\n blob = new Blob(['(' + workerInterface.toString() + ')(' + factorySource + ');'],\r\n {type: 'text/javascript'});\r\n\r\n return window.URL.createObjectURL(blob);\r\n }\r\n\r\n function setReaders(readers) {\r\n if (_decoder) {\r\n _decoder.setReaders(readers);\r\n } else if (_onUIThread && _workerPool.length > 0) {\r\n _workerPool.forEach(function(workerThread) {\r\n workerThread.worker.postMessage({cmd: 'setReaders', readers: readers});\r\n });\r\n }\r\n }\r\n\r\n function adjustWorkerPool(capacity, cb) {\r\n const increaseBy = capacity - _workerPool.length;\r\n if (increaseBy === 0) {\r\n return cb && cb();\r\n }\r\n if (increaseBy < 0) {\r\n const workersToTerminate = _workerPool.slice(increaseBy);\r\n workersToTerminate.forEach(function(workerThread) {\r\n workerThread.worker.terminate();\r\n if (ENV.development) {\r\n console.log(\"Worker terminated!\");\r\n }\r\n });\r\n _workerPool = _workerPool.slice(0, increaseBy);\r\n return cb && cb();\r\n } else {\r\n for (var i = 0; i < increaseBy; i++) {\r\n initWorker(workerInitialized);\r\n }\r\n\r\n function workerInitialized(workerThread) {\r\n _workerPool.push(workerThread);\r\n if (_workerPool.length >= capacity){\r\n cb && cb();\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n init: function(config, cb, imageWrapper) {\r\n _config = merge({}, Config, config);\r\n\r\n if (imageWrapper) {\r\n _onUIThread = false;\r\n initializeData(imageWrapper);\r\n return cb();\r\n } else {\r\n initInputStream(cb);\r\n }\r\n },\r\n start: function() {\r\n start();\r\n },\r\n stop: function() {\r\n _stopped = true;\r\n adjustWorkerPool(0);\r\n if (_config.inputStream.type === \"LiveStream\") {\r\n CameraAccess.release();\r\n _inputStream.clearEventHandlers();\r\n }\r\n },\r\n pause: function() {\r\n _stopped = true;\r\n },\r\n subscribe(eventName, callback) {\r\n _events.subscribe(eventName, callback);\r\n },\r\n unsubscribe(eventName, callback) {\r\n _events.unsubscribe(eventName, callback);\r\n },\r\n registerResultCollector: function(resultCollector) {\r\n if (resultCollector && typeof resultCollector.addResult === 'function') {\r\n _resultCollector = resultCollector;\r\n }\r\n },\r\n decodeSingle: function(config, resultCallback) {\r\n this.init(config, () => {\r\n _events.once(\"processed\", (result) => {\r\n this.stop();\r\n resultCallback.call(null, result);\r\n }, true);\r\n start();\r\n });\r\n },\r\n canvas: _canvasContainer\r\n };\r\n}\r\n\r\nexport default createScanner;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/scanner.js\n **/","module.exports = copy\n\n/**\n * Copy the values from one mat2 to another\n *\n * @alias mat2.copy\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction copy(out, a) {\n out[0] = a[0]\n out[1] = a[1]\n out[2] = a[2]\n out[3] = a[3]\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/copy.js\n ** module id = 93\n ** module chunks = 0\n **/","module.exports = create\n\n/**\n * Creates a new identity mat2\n *\n * @alias mat2.create\n * @returns {mat2} a new 2x2 matrix\n */\nfunction create() {\n var out = new Float32Array(4)\n out[0] = 1\n out[1] = 0\n out[2] = 0\n out[3] = 1\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/create.js\n ** module id = 94\n ** module chunks = 0\n **/","module.exports = invert\n\n/**\n * Inverts a mat2\n *\n * @alias mat2.invert\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction invert(out, a) {\n var a0 = a[0]\n var a1 = a[1]\n var a2 = a[2]\n var a3 = a[3]\n var det = a0 * a3 - a2 * a1\n\n if (!det) return null\n det = 1.0 / det\n\n out[0] = a3 * det\n out[1] = -a1 * det\n out[2] = -a2 * det\n out[3] = a0 * det\n\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/invert.js\n ** module id = 95\n ** module chunks = 0\n **/","module.exports = scale\n\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\nfunction scale(out, a, b) {\n out[0] = a[0] * b\n out[1] = a[1] * b\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/scale.js\n ** module id = 96\n ** module chunks = 0\n **/","module.exports = transformMat2\n\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat2(out, a, m) {\n var x = a[0],\n y = a[1]\n out[0] = m[0] * x + m[2] * y\n out[1] = m[1] * x + m[3] * y\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/transformMat2.js\n ** module id = 97\n ** module chunks = 0\n **/","module.exports = clone;\n\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {vec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\nfunction clone(a) {\n var out = new Float32Array(3)\n out[0] = a[0]\n out[1] = a[1]\n out[2] = a[2]\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec3/clone.js\n ** module id = 98\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Creates an hash object.\n *\n * @private\n * @constructor\n * @returns {Object} Returns the new hash object.\n */\nfunction Hash() {}\n\n// Avoid inheriting from `Object.prototype` when possible.\nHash.prototype = nativeCreate ? nativeCreate(null) : objectProto;\n\nmodule.exports = Hash;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Hash.js\n ** module id = 99\n ** module chunks = 0\n **/","var mapClear = require('./_mapClear'),\n mapDelete = require('./_mapDelete'),\n mapGet = require('./_mapGet'),\n mapHas = require('./_mapHas'),\n mapSet = require('./_mapSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction MapCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = values[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add functions to the `MapCache`.\nMapCache.prototype.clear = mapClear;\nMapCache.prototype['delete'] = mapDelete;\nMapCache.prototype.get = mapGet;\nMapCache.prototype.has = mapHas;\nMapCache.prototype.set = mapSet;\n\nmodule.exports = MapCache;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_MapCache.js\n ** module id = 100\n ** module chunks = 0\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Reflect = root.Reflect;\n\nmodule.exports = Reflect;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Reflect.js\n ** module id = 101\n ** module chunks = 0\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Set.js\n ** module id = 102\n ** module chunks = 0\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_WeakMap.js\n ** module id = 103\n ** module chunks = 0\n **/","/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `Map#set` because it doesn't return the map instance in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\nmodule.exports = addMapEntry;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_addMapEntry.js\n ** module id = 104\n ** module chunks = 0\n **/","/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n set.add(value);\n return set;\n}\n\nmodule.exports = addSetEntry;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_addSetEntry.js\n ** module id = 105\n ** module chunks = 0\n **/","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n var length = args.length;\n switch (length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_apply.js\n ** module id = 106\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayMap.js\n ** module id = 107\n ** module chunks = 0\n **/","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayPush.js\n ** module id = 108\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check, else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arraySome.js\n ** module id = 109\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseAssign.js\n ** module id = 110\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseForOwn = require('./_baseForOwn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isHostObject = require('./_isHostObject'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[boolTag] =\ncloneableTags[dateTag] = cloneableTags[float32Tag] =\ncloneableTags[float64Tag] = cloneableTags[int8Tag] =\ncloneableTags[int16Tag] = cloneableTags[int32Tag] =\ncloneableTags[mapTag] = cloneableTags[numberTag] =\ncloneableTags[objectTag] = cloneableTags[regexpTag] =\ncloneableTags[setTag] = cloneableTags[stringTag] =\ncloneableTags[symbolTag] = cloneableTags[uint8Tag] =\ncloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] =\ncloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n result = baseAssign(result, value);\n return isFull ? copySymbols(value, result) : result;\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n // Recursively populate clone (susceptible to call stack limits).\n (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return (isFull && !isArr) ? copySymbols(value, result) : result;\n}\n\nmodule.exports = baseClone;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseClone.js\n ** module id = 111\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\nmodule.exports = baseCreate;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseCreate.js\n ** module id = 112\n ** module chunks = 0\n **/","var arrayPush = require('./_arrayPush'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, isStrict, result) {\n result || (result = []);\n\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && isArrayLikeObject(value) &&\n (isStrict || isArray(value) || isArguments(value))) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseFlatten.js\n ** module id = 113\n ** module chunks = 0\n **/","var baseFor = require('./_baseFor'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return object == null ? object : baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseForIn.js\n ** module id = 114\n ** module chunks = 0\n **/","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseForOwn.js\n ** module id = 115\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseHasIn.js\n ** module id = 116\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isHostObject = require('./_isHostObject'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for comparison styles. */\nvar PARTIAL_COMPARE_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n stack || (stack = new Stack);\n return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsEqualDeep.js\n ** module id = 117\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack,\n result = customizer ? customizer(objValue, srcValue, key, object, source, stack) : undefined;\n\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsMatch.js\n ** module id = 118\n ** module chunks = 0\n **/","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n var type = typeof value;\n if (type == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (type == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIteratee.js\n ** module id = 119\n ** module chunks = 0\n **/","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = Object.keys;\n\n/**\n * The base implementation of `_.keys` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n return nativeKeys(Object(object));\n}\n\nmodule.exports = baseKeys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseKeys.js\n ** module id = 120\n ** module chunks = 0\n **/","var Reflect = require('./_Reflect'),\n iteratorToArray = require('./_iteratorToArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar enumerate = Reflect ? Reflect.enumerate : undefined,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * The base implementation of `_.keysIn` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n object = object == null ? object : Object(object);\n\n var result = [];\n for (var key in object) {\n result.push(key);\n }\n return result;\n}\n\n// Fallback for IE < 9 with es6-shim.\nif (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) {\n baseKeysIn = function(object) {\n return iteratorToArray(enumerate(object));\n };\n}\n\nmodule.exports = baseKeysIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseKeysIn.js\n ** module id = 121\n ** module chunks = 0\n **/","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n var key = matchData[0][0],\n value = matchData[0][1];\n\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === value &&\n (value !== undefined || (key in Object(object)));\n };\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMatches.js\n ** module id = 122\n ** module chunks = 0\n **/","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMatchesProperty.js\n ** module id = 123\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignMergeValue = require('./_assignMergeValue'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isArray = require('./isArray'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n var props = (isArray(source) || isTypedArray(source))\n ? undefined\n : keysIn(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(object[key], srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n });\n}\n\nmodule.exports = baseMerge;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMerge.js\n ** module id = 124\n ** module chunks = 0\n **/","var assignMergeValue = require('./_assignMergeValue'),\n baseClone = require('./_baseClone'),\n copyArray = require('./_copyArray'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = object[key],\n srcValue = source[key],\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n newValue = srcValue;\n if (isArray(srcValue) || isTypedArray(srcValue)) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else {\n isCommon = false;\n newValue = baseClone(srcValue, !customizer);\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n isCommon = false;\n newValue = baseClone(srcValue, !customizer);\n }\n else {\n newValue = objValue;\n }\n }\n else {\n isCommon = false;\n }\n }\n stack.set(srcValue, newValue);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n }\n stack['delete'](srcValue);\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMergeDeep.js\n ** module id = 125\n ** module chunks = 0\n **/","var arrayReduce = require('./_arrayReduce');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property names.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property names to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n object = Object(object);\n return arrayReduce(props, function(result, key) {\n if (key in object) {\n result[key] = object[key];\n }\n return result;\n }, {});\n}\n\nmodule.exports = basePick;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePick.js\n ** module id = 126\n ** module chunks = 0\n **/","var baseForIn = require('./_baseForIn');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, predicate) {\n var result = {};\n baseForIn(object, function(value, key) {\n if (predicate(value, key)) {\n result[key] = value;\n }\n });\n return result;\n}\n\nmodule.exports = basePickBy;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePickBy.js\n ** module id = 127\n ** module chunks = 0\n **/","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePropertyDeep.js\n ** module id = 128\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseSlice.js\n ** module id = 129\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseTimes.js\n ** module id = 130\n ** module chunks = 0\n **/","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the new array of key-value pairs.\n */\nfunction baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n}\n\nmodule.exports = baseToPairs;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseToPairs.js\n ** module id = 131\n ** module chunks = 0\n **/","/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\nmodule.exports = checkGlobal;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_checkGlobal.js\n ** module id = 132\n ** module chunks = 0\n **/","/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneBuffer.js\n ** module id = 133\n ** module chunks = 0\n **/","var addMapEntry = require('./_addMapEntry'),\n arrayReduce = require('./_arrayReduce'),\n mapToArray = require('./_mapToArray');\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map) {\n return arrayReduce(mapToArray(map), addMapEntry, new map.constructor);\n}\n\nmodule.exports = cloneMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneMap.js\n ** module id = 134\n ** module chunks = 0\n **/","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneRegExp.js\n ** module id = 135\n ** module chunks = 0\n **/","var addSetEntry = require('./_addSetEntry'),\n arrayReduce = require('./_arrayReduce'),\n setToArray = require('./_setToArray');\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set) {\n return arrayReduce(setToArray(set), addSetEntry, new set.constructor);\n}\n\nmodule.exports = cloneSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneSet.js\n ** module id = 136\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneSymbol.js\n ** module id = 137\n ** module chunks = 0\n **/","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneTypedArray.js\n ** module id = 138\n ** module chunks = 0\n **/","var assignValue = require('./_assignValue');\n\n/**\n * This function is like `copyObject` except that it accepts a function to\n * customize copied values.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObjectWith(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : source[key];\n\n assignValue(object, key, newValue);\n }\n return object;\n}\n\nmodule.exports = copyObjectWith;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyObjectWith.js\n ** module id = 139\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copySymbols.js\n ** module id = 140\n ** module chunks = 0\n **/","var isIterateeCall = require('./_isIterateeCall'),\n rest = require('./rest');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return rest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = typeof customizer == 'function'\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_createAssigner.js\n ** module id = 141\n ** module chunks = 0\n **/","/**\n * Creates a base function for methods like `_.forIn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_createBaseFor.js\n ** module id = 142\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n // Coerce dates and booleans to numbers, dates to milliseconds and booleans\n // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.\n return +object == +other;\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case numberTag:\n // Treat `NaN` vs. `NaN` as equal.\n return (object != +object) ? other != +other : object == +other;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings primitives and string\n // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n // Recursively compare objects (susceptible to call stack limits).\n return equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask | UNORDERED_COMPARE_FLAG, stack.set(object, other));\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalByTag.js\n ** module id = 143\n ** module chunks = 0\n **/","var baseHas = require('./_baseHas'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for comparison styles. */\nvar PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : baseHas(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n return result;\n}\n\nmodule.exports = equalObjects;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalObjects.js\n ** module id = 144\n ** module chunks = 0\n **/","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getLength.js\n ** module id = 145\n ** module chunks = 0\n **/","var isStrictComparable = require('./_isStrictComparable'),\n toPairs = require('./toPairs');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = toPairs(object),\n length = result.length;\n\n while (length--) {\n result[length][2] = isStrictComparable(result[length][1]);\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getMatchData.js\n ** module id = 146\n ** module chunks = 0\n **/","/** Built-in value references. */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = getOwnPropertySymbols || function() {\n return [];\n};\n\nmodule.exports = getSymbols;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getSymbols.js\n ** module id = 147\n ** module chunks = 0\n **/","var baseCastPath = require('./_baseCastPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isKey = require('./_isKey'),\n isLength = require('./isLength'),\n isString = require('./isString'),\n last = require('./last'),\n parent = require('./_parent');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n if (object == null) {\n return false;\n }\n var result = hasFunc(object, path);\n if (!result && !isKey(path)) {\n path = baseCastPath(path);\n object = parent(object, path);\n if (object != null) {\n path = last(path);\n result = hasFunc(object, path);\n }\n }\n var length = object ? object.length : undefined;\n return result || (\n !!length && isLength(length) && isIndex(path, length) &&\n (isArray(object) || isString(object) || isArguments(object))\n );\n}\n\nmodule.exports = hasPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hasPath.js\n ** module id = 148\n ** module chunks = 0\n **/","var hashHas = require('./_hashHas');\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(hash, key) {\n return hashHas(hash, key) && delete hash[key];\n}\n\nmodule.exports = hashDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashDelete.js\n ** module id = 149\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @param {Object} hash The hash to query.\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(hash, key) {\n if (nativeCreate) {\n var result = hash[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(hash, key) ? hash[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashGet.js\n ** module id = 150\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n */\nfunction hashSet(hash, key, value) {\n hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n}\n\nmodule.exports = hashSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashSet.js\n ** module id = 151\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneArray.js\n ** module id = 152\n ** module chunks = 0\n **/","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneMap = require('./_cloneMap'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSet = require('./_cloneSet'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneByTag.js\n ** module id = 153\n ** module chunks = 0\n **/","var baseCreate = require('./_baseCreate'),\n isPrototype = require('./_isPrototype');\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototypeOf(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneObject.js\n ** module id = 154\n ** module chunks = 0\n **/","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isIterateeCall.js\n ** module id = 155\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isStrictComparable.js\n ** module id = 156\n ** module chunks = 0\n **/","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_iteratorToArray.js\n ** module id = 157\n ** module chunks = 0\n **/","var Hash = require('./_Hash'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': Map ? new Map : [],\n 'string': new Hash\n };\n}\n\nmodule.exports = mapClear;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapClear.js\n ** module id = 158\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocDelete = require('./_assocDelete'),\n hashDelete = require('./_hashDelete'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapDelete(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashDelete(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map['delete'](key) : assocDelete(data.map, key);\n}\n\nmodule.exports = mapDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapDelete.js\n ** module id = 159\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocGet = require('./_assocGet'),\n hashGet = require('./_hashGet'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapGet(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashGet(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.get(key) : assocGet(data.map, key);\n}\n\nmodule.exports = mapGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapGet.js\n ** module id = 160\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocHas = require('./_assocHas'),\n hashHas = require('./_hashHas'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapHas(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashHas(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.has(key) : assocHas(data.map, key);\n}\n\nmodule.exports = mapHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapHas.js\n ** module id = 161\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocSet = require('./_assocSet'),\n hashSet = require('./_hashSet'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache object.\n */\nfunction mapSet(key, value) {\n var data = this.__data__;\n if (isKeyable(key)) {\n hashSet(typeof key == 'string' ? data.string : data.hash, key, value);\n } else if (Map) {\n data.map.set(key, value);\n } else {\n assocSet(data.map, key, value);\n }\n return this;\n}\n\nmodule.exports = mapSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapSet.js\n ** module id = 162\n ** module chunks = 0\n **/","var baseSlice = require('./_baseSlice'),\n get = require('./get');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length == 1 ? object : get(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_parent.js\n ** module id = 163\n ** module chunks = 0\n **/","/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = { 'array': [], 'map': null };\n}\n\nmodule.exports = stackClear;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackClear.js\n ** module id = 164\n ** module chunks = 0\n **/","var assocDelete = require('./_assocDelete');\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocDelete(array, key) : data.map['delete'](key);\n}\n\nmodule.exports = stackDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackDelete.js\n ** module id = 165\n ** module chunks = 0\n **/","var assocGet = require('./_assocGet');\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocGet(array, key) : data.map.get(key);\n}\n\nmodule.exports = stackGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackGet.js\n ** module id = 166\n ** module chunks = 0\n **/","var assocHas = require('./_assocHas');\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocHas(array, key) : data.map.has(key);\n}\n\nmodule.exports = stackHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackHas.js\n ** module id = 167\n ** module chunks = 0\n **/","var MapCache = require('./_MapCache'),\n assocSet = require('./_assocSet');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache object.\n */\nfunction stackSet(key, value) {\n var data = this.__data__,\n array = data.array;\n\n if (array) {\n if (array.length < (LARGE_ARRAY_SIZE - 1)) {\n assocSet(array, key, value);\n } else {\n data.array = null;\n data.map = new MapCache(array);\n }\n }\n var map = data.map;\n if (map) {\n map.set(key, value);\n }\n return this;\n}\n\nmodule.exports = stackSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackSet.js\n ** module id = 168\n ** module chunks = 0\n **/","var toString = require('./toString');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nfunction stringToPath(string) {\n var result = [];\n toString(string).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n}\n\nmodule.exports = stringToPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stringToPath.js\n ** module id = 169\n ** module chunks = 0\n **/","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var getter = _.constant(object);\n *\n * getter() === object;\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/constant.js\n ** module id = 170\n ** module chunks = 0\n **/","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b.c');\n * // => true\n *\n * _.hasIn(object, ['a', 'b', 'c']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/hasIn.js\n ** module id = 171\n ** module chunks = 0\n **/","/**\n * This method returns the first argument given to it.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/identity.js\n ** module id = 172\n ** module chunks = 0\n **/","var constant = require('./constant'),\n root = require('./_root');\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = (freeModule && freeModule.exports === freeExports)\n ? freeExports\n : undefined;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = !Buffer ? constant(false) : function(value) {\n return value instanceof Buffer;\n};\n\nmodule.exports = isBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isBuffer.js\n ** module id = 173\n ** module chunks = 0\n **/","var isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isFunction = require('./isFunction'),\n isString = require('./isString');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty collection or object. A value is considered\n * empty if it's an `arguments` object, array, string, or jQuery-like collection\n * with a length of `0` or has no own enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (isArrayLike(value) &&\n (isArray(value) || isString(value) ||\n isFunction(value.splice) || isArguments(value))) {\n return !value.length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isEmpty.js\n ** module id = 174\n ** module chunks = 0\n **/","var isFunction = require('./isFunction'),\n isHostObject = require('./_isHostObject'),\n isObjectLike = require('./isObjectLike');\n\n/** Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(funcToString.call(value));\n }\n return isObjectLike(value) &&\n (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isNative.js\n ** module id = 175\n ** module chunks = 0\n **/","var isHostObject = require('./_isHostObject'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n var Ctor = proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isPlainObject.js\n ** module id = 176\n ** module chunks = 0\n **/","var isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isSymbol.js\n ** module id = 177\n ** module chunks = 0\n **/","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array ? array.length : 0;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/last.js\n ** module id = 178\n ** module chunks = 0\n **/","var baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable properties of `object` that `predicate`\n * doesn't return truthy for. The predicate is invoked with two arguments:\n * (value, key).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n predicate = baseIteratee(predicate);\n return basePickBy(object, function(value, key) {\n return !predicate(value, key);\n });\n}\n\nmodule.exports = omitBy;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/omitBy.js\n ** module id = 179\n ** module chunks = 0\n **/","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': { 'c': 2 } } },\n * { 'a': { 'b': { 'c': 1 } } }\n * ];\n *\n * _.map(objects, _.property('a.b.c'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(path) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/property.js\n ** module id = 180\n ** module chunks = 0\n **/","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This function is loosely based on [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3');\n * // => 3\n */\nfunction toInteger(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n var remainder = value % 1;\n return value === value ? (remainder ? value - remainder : value) : 0;\n}\n\nmodule.exports = toInteger;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toInteger.js\n ** module id = 181\n ** module chunks = 0\n **/","var isFunction = require('./isFunction'),\n isObject = require('./isObject');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3);\n * // => 3\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3');\n * // => 3\n */\nfunction toNumber(value) {\n if (isObject(value)) {\n var other = isFunction(value.valueOf) ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toNumber.js\n ** module id = 182\n ** module chunks = 0\n **/","var baseToPairs = require('./_baseToPairs'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable key-value pairs for `object` which\n * can be consumed by `_.fromPairs`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the new array of key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\nfunction toPairs(object) {\n return baseToPairs(object, keys(object));\n}\n\nmodule.exports = toPairs;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toPairs.js\n ** module id = 183\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toPlainObject.js\n ** module id = 184\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Converts `value` to a string if it's not one. An empty string is returned\n * for `null` and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (value == null) {\n return '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toString;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toString.js\n ** module id = 185\n ** module chunks = 0\n **/"," /* eslint-env node */\n'use strict';\n\n// SDP helpers.\nvar SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(function(line) {\n return line.trim();\n });\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n var parts = blob.split('\\nm=');\n return parts.map(function(part, index) {\n return (index > 0 ? 'm=' + part : part).trim() + '\\r\\n';\n });\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(function(line) {\n return line.indexOf(prefix) === 0;\n });\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\nSDPUtils.parseCandidate = function(line) {\n var parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n var candidate = {\n foundation: parts[0],\n component: parts[1],\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7]\n };\n\n for (var i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n default: // Unknown extensions are silently ignored.\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\nSDPUtils.writeCandidate = function(candidate) {\n var sdp = [];\n sdp.push(candidate.foundation);\n sdp.push(candidate.component);\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.ip);\n sdp.push(candidate.port);\n\n var type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress); // was: relAddr\n sdp.push('rport');\n sdp.push(candidate.relatedPort); // was: relPort\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n var parts = line.substr(9).split(' ');\n var parsed = {\n payloadType: parseInt(parts.shift(), 10) // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n // was: channels\n parsed.numChannels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n return parsed;\n};\n\n// Generate an a=rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (codec.numChannels !== 1 ? '/' + codec.numChannels : '') + '\\r\\n';\n};\n\n// Parses an a=extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n var parts = line.substr(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n uri: parts[1]\n };\n};\n\n// Generates a=extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n ' ' + headerExtension.uri + '\\r\\n';\n};\n\n// Parses an ftmp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n var parsed = {};\n var kv;\n var parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (var j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n var line = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n var params = [];\n Object.keys(codec.parameters).forEach(function(param) {\n params.push(param + '=' + codec.parameters[param]);\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n var parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' ')\n };\n};\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n var lines = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(function(fb) {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + ' ' + fb.parameter +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses an RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n var sp = line.indexOf(' ');\n var parts = {\n ssrc: parseInt(line.substr(7, sp - 7), 10)\n };\n var colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.splitLines(mediaSection);\n // Search in session part, too.\n lines = lines.concat(SDPUtils.splitLines(sessionpart));\n var fpLine = lines.filter(function(line) {\n return line.indexOf('a=fingerprint:') === 0;\n })[0].substr(14);\n // Note: a=setup line is ignored since we use the 'auto' role.\n var dtlsParameters = {\n role: 'auto',\n fingerprints: [{\n algorithm: fpLine.split(' ')[0],\n value: fpLine.split(' ')[1]\n }]\n };\n return dtlsParameters;\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n var sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(function(fp) {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.splitLines(mediaSection);\n // Search in session part, too.\n lines = lines.concat(SDPUtils.splitLines(sessionpart));\n var iceParameters = {\n usernameFragment: lines.filter(function(line) {\n return line.indexOf('a=ice-ufrag:') === 0;\n })[0].substr(12),\n password: lines.filter(function(line) {\n return line.indexOf('a=ice-pwd:') === 0;\n })[0].substr(10)\n };\n return iceParameters;\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n return 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n var description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: []\n };\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n var pt = mline[i];\n var rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n var codec = SDPUtils.parseRtpMap(rtpmapline);\n var fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp: is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function(line) {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n var sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' UDP/TLS/RTP/SAVPF ';\n sdp += caps.codecs.map(function(codec) {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(function(codec) {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n // FIXME: add headerExtensions, fecMechanismş and rtcp.\n sdp += 'a=rtcp-mux\\r\\n';\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n var encodingParameters = [];\n var description = SDPUtils.parseRtpParameters(mediaSection);\n var hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(parts) {\n return parts.attribute === 'cname';\n });\n var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n var secondarySsrc;\n\n var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(function(line) {\n var parts = line.split(' ');\n parts.shift();\n return parts.map(function(part) {\n return parseInt(part, 10);\n });\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(function(codec) {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n var encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10),\n rtx: {\n payloadType: codec.payloadType,\n ssrc: secondarySsrc\n }\n };\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: secondarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red'\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(5), 10);\n }\n encodingParameters.forEach(function(params) {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\nSDPUtils.writeSessionBoilerplate = function() {\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\nSDPUtils.writeMediaSection = function(transceiver, caps, type, stream) {\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\n\n // Map ICE parameters (ufrag, pwd) to SDP.\n sdp += SDPUtils.writeIceParameters(\n transceiver.iceGatherer.getLocalParameters());\n\n // Map DTLS parameters to SDP.\n sdp += SDPUtils.writeDtlsParameters(\n transceiver.dtlsTransport.getLocalParameters(),\n type === 'offer' ? 'actpass' : 'active');\n\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\n\n if (transceiver.rtpSender && transceiver.rtpReceiver) {\n sdp += 'a=sendrecv\\r\\n';\n } else if (transceiver.rtpSender) {\n sdp += 'a=sendonly\\r\\n';\n } else if (transceiver.rtpReceiver) {\n sdp += 'a=recvonly\\r\\n';\n } else {\n sdp += 'a=inactive\\r\\n';\n }\n\n // FIXME: for RTX there might be multiple SSRCs. Not implemented in Edge yet.\n if (transceiver.rtpSender) {\n var msid = 'msid:' + stream.id + ' ' +\n transceiver.rtpSender.track.id + '\\r\\n';\n sdp += 'a=' + msid;\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' ' + msid;\n }\n // FIXME: this should be written by writeRtpDescription.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n return sdp;\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n var lines = SDPUtils.splitLines(mediaSection);\n for (var i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substr(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\n// Expose public methods.\nmodule.exports = SDPUtils;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sdp/sdp.js\n ** module id = 186\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n\n'use strict';\n\n// Shimming starts here.\n(function() {\n // Utils.\n var logging = require('./utils').log;\n var browserDetails = require('./utils').browserDetails;\n // Export to the adapter global object visible in the browser.\n module.exports.browserDetails = browserDetails;\n module.exports.extractVersion = require('./utils').extractVersion;\n module.exports.disableLog = require('./utils').disableLog;\n\n // Comment out the line below if you want logging to occur, including logging\n // for the switch statement below. Can also be turned on in the browser via\n // adapter.disableLog(false), but then logging from the switch statement below\n // will not appear.\n require('./utils').disableLog(true);\n\n // Browser shims.\n var chromeShim = require('./chrome/chrome_shim') || null;\n var edgeShim = require('./edge/edge_shim') || null;\n var firefoxShim = require('./firefox/firefox_shim') || null;\n var safariShim = require('./safari/safari_shim') || null;\n\n // Shim browser if found.\n switch (browserDetails.browser) {\n case 'opera': // fallthrough as it uses chrome shims\n case 'chrome':\n if (!chromeShim || !chromeShim.shimPeerConnection) {\n logging('Chrome shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming chrome.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = chromeShim;\n\n chromeShim.shimGetUserMedia();\n chromeShim.shimMediaStream();\n chromeShim.shimSourceObject();\n chromeShim.shimPeerConnection();\n chromeShim.shimOnTrack();\n break;\n case 'firefox':\n if (!firefoxShim || !firefoxShim.shimPeerConnection) {\n logging('Firefox shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming firefox.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = firefoxShim;\n\n firefoxShim.shimGetUserMedia();\n firefoxShim.shimSourceObject();\n firefoxShim.shimPeerConnection();\n firefoxShim.shimOnTrack();\n break;\n case 'edge':\n if (!edgeShim || !edgeShim.shimPeerConnection) {\n logging('MS edge shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming edge.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = edgeShim;\n\n edgeShim.shimGetUserMedia();\n edgeShim.shimPeerConnection();\n break;\n case 'safari':\n if (!safariShim) {\n logging('Safari shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming safari.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = safariShim;\n\n safariShim.shimGetUserMedia();\n break;\n default:\n logging('Unsupported browser!');\n }\n})();\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/adapter_core.js\n ** module id = 187\n ** module chunks = 0\n **/","\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\nvar logging = require('../utils.js').log;\nvar browserDetails = require('../utils.js').browserDetails;\n\nvar chromeShim = {\n shimMediaStream: function() {\n window.MediaStream = window.MediaStream || window.webkitMediaStream;\n },\n\n shimOnTrack: function() {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get: function() {\n return this._ontrack;\n },\n set: function(f) {\n var self = this;\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n this.removeEventListener('addstream', this._ontrackpoly);\n }\n this.addEventListener('track', this._ontrack = f);\n this.addEventListener('addstream', this._ontrackpoly = function(e) {\n // onaddstream does not fire when a track is added to an existing\n // stream. But stream.onaddtrack is implemented so we use that.\n e.stream.addEventListener('addtrack', function(te) {\n var event = new Event('track');\n event.track = te.track;\n event.receiver = {track: te.track};\n event.streams = [e.stream];\n self.dispatchEvent(event);\n });\n e.stream.getTracks().forEach(function(track) {\n var event = new Event('track');\n event.track = track;\n event.receiver = {track: track};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n }.bind(this));\n }.bind(this));\n }\n });\n }\n },\n\n shimSourceObject: function() {\n if (typeof window === 'object') {\n if (window.HTMLMediaElement &&\n !('srcObject' in window.HTMLMediaElement.prototype)) {\n // Shim the srcObject property, once, when HTMLMediaElement is found.\n Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', {\n get: function() {\n return this._srcObject;\n },\n set: function(stream) {\n var self = this;\n // Use _srcObject as a private property for this shim\n this._srcObject = stream;\n if (this.src) {\n URL.revokeObjectURL(this.src);\n }\n\n if (!stream) {\n this.src = '';\n return;\n }\n this.src = URL.createObjectURL(stream);\n // We need to recreate the blob url when a track is added or\n // removed. Doing it manually since we want to avoid a recursion.\n stream.addEventListener('addtrack', function() {\n if (self.src) {\n URL.revokeObjectURL(self.src);\n }\n self.src = URL.createObjectURL(stream);\n });\n stream.addEventListener('removetrack', function() {\n if (self.src) {\n URL.revokeObjectURL(self.src);\n }\n self.src = URL.createObjectURL(stream);\n });\n }\n });\n }\n }\n },\n\n shimPeerConnection: function() {\n // The RTCPeerConnection object.\n window.RTCPeerConnection = function(pcConfig, pcConstraints) {\n // Translate iceTransportPolicy to iceTransports,\n // see https://code.google.com/p/webrtc/issues/detail?id=4869\n logging('PeerConnection');\n if (pcConfig && pcConfig.iceTransportPolicy) {\n pcConfig.iceTransports = pcConfig.iceTransportPolicy;\n }\n\n var pc = new webkitRTCPeerConnection(pcConfig, pcConstraints);\n var origGetStats = pc.getStats.bind(pc);\n pc.getStats = function(selector, successCallback, errorCallback) {\n var self = this;\n var args = arguments;\n\n // If selector is a function then we are in the old style stats so just\n // pass back the original getStats format to avoid breaking old users.\n if (arguments.length > 0 && typeof selector === 'function') {\n return origGetStats(selector, successCallback);\n }\n\n var fixChromeStats_ = function(response) {\n var standardReport = {};\n var reports = response.result();\n reports.forEach(function(report) {\n var standardStats = {\n id: report.id,\n timestamp: report.timestamp,\n type: report.type\n };\n report.names().forEach(function(name) {\n standardStats[name] = report.stat(name);\n });\n standardReport[standardStats.id] = standardStats;\n });\n\n return standardReport;\n };\n\n // shim getStats with maplike support\n var makeMapStats = function(stats, legacyStats) {\n var map = new Map(Object.keys(stats).map(function(key) {\n return[key, stats[key]];\n }));\n legacyStats = legacyStats || stats;\n Object.keys(legacyStats).forEach(function(key) {\n map[key] = legacyStats[key];\n });\n return map;\n };\n\n if (arguments.length >= 2) {\n var successCallbackWrapper_ = function(response) {\n args[1](makeMapStats(fixChromeStats_(response)));\n };\n\n return origGetStats.apply(this, [successCallbackWrapper_,\n arguments[0]]);\n }\n\n // promise-support\n return new Promise(function(resolve, reject) {\n if (args.length === 1 && typeof selector === 'object') {\n origGetStats.apply(self, [\n function(response) {\n resolve(makeMapStats(fixChromeStats_(response)));\n }, reject]);\n } else {\n // Preserve legacy chrome stats only on legacy access of stats obj\n origGetStats.apply(self, [\n function(response) {\n resolve(makeMapStats(fixChromeStats_(response),\n response.result()));\n }, reject]);\n }\n }).then(successCallback, errorCallback);\n };\n\n return pc;\n };\n window.RTCPeerConnection.prototype = webkitRTCPeerConnection.prototype;\n\n // wrap static methods. Currently just generateCertificate.\n if (webkitRTCPeerConnection.generateCertificate) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get: function() {\n return webkitRTCPeerConnection.generateCertificate;\n }\n });\n }\n\n // add promise support -- natively available in Chrome 51\n if (browserDetails.version < 51) {\n ['createOffer', 'createAnswer'].forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n var self = this;\n if (arguments.length < 1 || (arguments.length === 1 &&\n typeof arguments[0] === 'object')) {\n var opts = arguments.length === 1 ? arguments[0] : undefined;\n return new Promise(function(resolve, reject) {\n nativeMethod.apply(self, [resolve, reject, opts]);\n });\n }\n return nativeMethod.apply(this, arguments);\n };\n });\n\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n var args = arguments;\n var self = this;\n var promise = new Promise(function(resolve, reject) {\n nativeMethod.apply(self, [args[0], resolve, reject]);\n });\n if (args.length < 2) {\n return promise;\n }\n return promise.then(function() {\n args[1].apply(null, []);\n },\n function(err) {\n if (args.length >= 3) {\n args[2].apply(null, [err]);\n }\n });\n };\n });\n }\n\n // shim implicit creation of RTCSessionDescription/RTCIceCandidate\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n RTCIceCandidate : RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n };\n });\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n if (browserDetails.version >= 43) {\n element.srcObject = stream;\n } else if (typeof element.src !== 'undefined') {\n element.src = URL.createObjectURL(stream);\n } else {\n logging('Error attaching stream to element.');\n }\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n if (browserDetails.version >= 43) {\n to.srcObject = from.srcObject;\n } else {\n to.src = from.src;\n }\n }\n};\n\n\n// Expose public methods.\nmodule.exports = {\n shimMediaStream: chromeShim.shimMediaStream,\n shimOnTrack: chromeShim.shimOnTrack,\n shimSourceObject: chromeShim.shimSourceObject,\n shimPeerConnection: chromeShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia'),\n attachMediaStream: chromeShim.attachMediaStream,\n reattachMediaStream: chromeShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/chrome/chrome_shim.js\n ** module id = 188\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\nvar logging = require('../utils.js').log;\n\n// Expose public methods.\nmodule.exports = function() {\n var constraintsToChrome_ = function(c) {\n if (typeof c !== 'object' || c.mandatory || c.optional) {\n return c;\n }\n var cc = {};\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n var r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]};\n if (r.exact !== undefined && typeof r.exact === 'number') {\n r.min = r.max = r.exact;\n }\n var oldname_ = function(prefix, name) {\n if (prefix) {\n return prefix + name.charAt(0).toUpperCase() + name.slice(1);\n }\n return (name === 'deviceId') ? 'sourceId' : name;\n };\n if (r.ideal !== undefined) {\n cc.optional = cc.optional || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[oldname_('min', key)] = r.ideal;\n cc.optional.push(oc);\n oc = {};\n oc[oldname_('max', key)] = r.ideal;\n cc.optional.push(oc);\n } else {\n oc[oldname_('', key)] = r.ideal;\n cc.optional.push(oc);\n }\n }\n if (r.exact !== undefined && typeof r.exact !== 'number') {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_('', key)] = r.exact;\n } else {\n ['min', 'max'].forEach(function(mix) {\n if (r[mix] !== undefined) {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_(mix, key)] = r[mix];\n }\n });\n }\n });\n if (c.advanced) {\n cc.optional = (cc.optional || []).concat(c.advanced);\n }\n return cc;\n };\n\n var shimConstraints_ = function(constraints, func) {\n constraints = JSON.parse(JSON.stringify(constraints));\n if (constraints && constraints.audio) {\n constraints.audio = constraintsToChrome_(constraints.audio);\n }\n if (constraints && typeof constraints.video === 'object') {\n // Shim facingMode for mobile, where it defaults to \"user\".\n var face = constraints.video.facingMode;\n face = face && ((typeof face === 'object') ? face : {ideal: face});\n\n if ((face && (face.exact === 'user' || face.exact === 'environment' ||\n face.ideal === 'user' || face.ideal === 'environment')) &&\n !(navigator.mediaDevices.getSupportedConstraints &&\n navigator.mediaDevices.getSupportedConstraints().facingMode)) {\n delete constraints.video.facingMode;\n if (face.exact === 'environment' || face.ideal === 'environment') {\n // Look for \"back\" in label, or use last cam (typically back cam).\n return navigator.mediaDevices.enumerateDevices()\n .then(function(devices) {\n devices = devices.filter(function(d) {\n return d.kind === 'videoinput';\n });\n var back = devices.find(function(d) {\n return d.label.toLowerCase().indexOf('back') !== -1;\n }) || (devices.length && devices[devices.length - 1]);\n if (back) {\n constraints.video.deviceId = face.exact ? {exact: back.deviceId} :\n {ideal: back.deviceId};\n }\n constraints.video = constraintsToChrome_(constraints.video);\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n });\n }\n }\n constraints.video = constraintsToChrome_(constraints.video);\n }\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n };\n\n var shimError_ = function(e) {\n return {\n name: {\n PermissionDeniedError: 'NotAllowedError',\n ConstraintNotSatisfiedError: 'OverconstrainedError'\n }[e.name] || e.name,\n message: e.message,\n constraint: e.constraintName,\n toString: function() {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n shimConstraints_(constraints, function(c) {\n navigator.webkitGetUserMedia(c, onSuccess, function(e) {\n onError(shimError_(e));\n });\n });\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n };\n\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {\n getUserMedia: getUserMediaPromise_,\n enumerateDevices: function() {\n return new Promise(function(resolve) {\n var kinds = {audio: 'audioinput', video: 'videoinput'};\n return MediaStreamTrack.getSources(function(devices) {\n resolve(devices.map(function(device) {\n return {label: device.label,\n kind: kinds[device.kind],\n deviceId: device.id,\n groupId: ''};\n }));\n });\n });\n }\n };\n }\n\n // A shim for getUserMedia method on the mediaDevices object.\n // TODO(KaptenJansson) remove once implemented in Chrome stable.\n if (!navigator.mediaDevices.getUserMedia) {\n navigator.mediaDevices.getUserMedia = function(constraints) {\n return getUserMediaPromise_(constraints);\n };\n } else {\n // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia\n // function which returns a Promise, it does not accept spec-style\n // constraints.\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(cs) {\n return shimConstraints_(cs, function(c) {\n return origGetUserMedia(c).catch(function(e) {\n return Promise.reject(shimError_(e));\n });\n });\n };\n }\n\n // Dummy devicechange event methods.\n // TODO(KaptenJansson) remove once implemented in Chrome stable.\n if (typeof navigator.mediaDevices.addEventListener === 'undefined') {\n navigator.mediaDevices.addEventListener = function() {\n logging('Dummy mediaDevices.addEventListener called.');\n };\n }\n if (typeof navigator.mediaDevices.removeEventListener === 'undefined') {\n navigator.mediaDevices.removeEventListener = function() {\n logging('Dummy mediaDevices.removeEventListener called.');\n };\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/chrome/getusermedia.js\n ** module id = 189\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar SDPUtils = require('sdp');\nvar logging = require('../utils').log;\n\nvar edgeShim = {\n shimPeerConnection: function() {\n if (window.RTCIceGatherer) {\n // ORTC defines an RTCIceCandidate object but no constructor.\n // Not implemented in Edge.\n if (!window.RTCIceCandidate) {\n window.RTCIceCandidate = function(args) {\n return args;\n };\n }\n // ORTC does not have a session description object but\n // other browsers (i.e. Chrome) that will support both PC and ORTC\n // in the future might have this defined already.\n if (!window.RTCSessionDescription) {\n window.RTCSessionDescription = function(args) {\n return args;\n };\n }\n }\n\n window.RTCPeerConnection = function(config) {\n var self = this;\n\n var _eventTarget = document.createDocumentFragment();\n ['addEventListener', 'removeEventListener', 'dispatchEvent']\n .forEach(function(method) {\n self[method] = _eventTarget[method].bind(_eventTarget);\n });\n\n this.onicecandidate = null;\n this.onaddstream = null;\n this.ontrack = null;\n this.onremovestream = null;\n this.onsignalingstatechange = null;\n this.oniceconnectionstatechange = null;\n this.onnegotiationneeded = null;\n this.ondatachannel = null;\n\n this.localStreams = [];\n this.remoteStreams = [];\n this.getLocalStreams = function() {\n return self.localStreams;\n };\n this.getRemoteStreams = function() {\n return self.remoteStreams;\n };\n\n this.localDescription = new RTCSessionDescription({\n type: '',\n sdp: ''\n });\n this.remoteDescription = new RTCSessionDescription({\n type: '',\n sdp: ''\n });\n this.signalingState = 'stable';\n this.iceConnectionState = 'new';\n this.iceGatheringState = 'new';\n\n this.iceOptions = {\n gatherPolicy: 'all',\n iceServers: []\n };\n if (config && config.iceTransportPolicy) {\n switch (config.iceTransportPolicy) {\n case 'all':\n case 'relay':\n this.iceOptions.gatherPolicy = config.iceTransportPolicy;\n break;\n case 'none':\n // FIXME: remove once implementation and spec have added this.\n throw new TypeError('iceTransportPolicy \"none\" not supported');\n default:\n // don't set iceTransportPolicy.\n break;\n }\n }\n if (config && config.iceServers) {\n // Edge does not like\n // 1) stun:\n // 2) turn: that does not have all of turn:host:port?transport=udp\n this.iceOptions.iceServers = config.iceServers.filter(function(server) {\n if (server && server.urls) {\n server.urls = server.urls.filter(function(url) {\n return url.indexOf('turn:') === 0 &&\n url.indexOf('transport=udp') !== -1;\n })[0];\n return !!server.urls;\n }\n return false;\n });\n }\n\n // per-track iceGathers, iceTransports, dtlsTransports, rtpSenders, ...\n // everything that is needed to describe a SDP m-line.\n this.transceivers = [];\n\n // since the iceGatherer is currently created in createOffer but we\n // must not emit candidates until after setLocalDescription we buffer\n // them in this array.\n this._localIceCandidatesBuffer = [];\n };\n\n window.RTCPeerConnection.prototype._emitBufferedCandidates = function() {\n var self = this;\n var sections = SDPUtils.splitSections(self.localDescription.sdp);\n // FIXME: need to apply ice candidates in a way which is async but\n // in-order\n this._localIceCandidatesBuffer.forEach(function(event) {\n var end = !event.candidate || Object.keys(event.candidate).length === 0;\n if (end) {\n for (var j = 1; j < sections.length; j++) {\n if (sections[j].indexOf('\\r\\na=end-of-candidates\\r\\n') === -1) {\n sections[j] += 'a=end-of-candidates\\r\\n';\n }\n }\n } else if (event.candidate.candidate.indexOf('typ endOfCandidates')\n === -1) {\n sections[event.candidate.sdpMLineIndex + 1] +=\n 'a=' + event.candidate.candidate + '\\r\\n';\n }\n self.localDescription.sdp = sections.join('');\n self.dispatchEvent(event);\n if (self.onicecandidate !== null) {\n self.onicecandidate(event);\n }\n if (!event.candidate && self.iceGatheringState !== 'complete') {\n var complete = self.transceivers.every(function(transceiver) {\n return transceiver.iceGatherer &&\n transceiver.iceGatherer.state === 'completed';\n });\n if (complete) {\n self.iceGatheringState = 'complete';\n }\n }\n });\n this._localIceCandidatesBuffer = [];\n };\n\n window.RTCPeerConnection.prototype.addStream = function(stream) {\n // Clone is necessary for local demos mostly, attaching directly\n // to two different senders does not work (build 10547).\n this.localStreams.push(stream.clone());\n this._maybeFireNegotiationNeeded();\n };\n\n window.RTCPeerConnection.prototype.removeStream = function(stream) {\n var idx = this.localStreams.indexOf(stream);\n if (idx > -1) {\n this.localStreams.splice(idx, 1);\n this._maybeFireNegotiationNeeded();\n }\n };\n\n window.RTCPeerConnection.prototype.getSenders = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpSender;\n })\n .map(function(transceiver) {\n return transceiver.rtpSender;\n });\n };\n\n window.RTCPeerConnection.prototype.getReceivers = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpReceiver;\n })\n .map(function(transceiver) {\n return transceiver.rtpReceiver;\n });\n };\n\n // Determines the intersection of local and remote capabilities.\n window.RTCPeerConnection.prototype._getCommonCapabilities =\n function(localCapabilities, remoteCapabilities) {\n var commonCapabilities = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: []\n };\n localCapabilities.codecs.forEach(function(lCodec) {\n for (var i = 0; i < remoteCapabilities.codecs.length; i++) {\n var rCodec = remoteCapabilities.codecs[i];\n if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() &&\n lCodec.clockRate === rCodec.clockRate &&\n lCodec.numChannels === rCodec.numChannels) {\n // push rCodec so we reply with offerer payload type\n commonCapabilities.codecs.push(rCodec);\n\n // FIXME: also need to determine intersection between\n // .rtcpFeedback and .parameters\n break;\n }\n }\n });\n\n localCapabilities.headerExtensions\n .forEach(function(lHeaderExtension) {\n for (var i = 0; i < remoteCapabilities.headerExtensions.length;\n i++) {\n var rHeaderExtension = remoteCapabilities.headerExtensions[i];\n if (lHeaderExtension.uri === rHeaderExtension.uri) {\n commonCapabilities.headerExtensions.push(rHeaderExtension);\n break;\n }\n }\n });\n\n // FIXME: fecMechanisms\n return commonCapabilities;\n };\n\n // Create ICE gatherer, ICE transport and DTLS transport.\n window.RTCPeerConnection.prototype._createIceAndDtlsTransports =\n function(mid, sdpMLineIndex) {\n var self = this;\n var iceGatherer = new RTCIceGatherer(self.iceOptions);\n var iceTransport = new RTCIceTransport(iceGatherer);\n iceGatherer.onlocalcandidate = function(evt) {\n var event = new Event('icecandidate');\n event.candidate = {sdpMid: mid, sdpMLineIndex: sdpMLineIndex};\n\n var cand = evt.candidate;\n var end = !cand || Object.keys(cand).length === 0;\n // Edge emits an empty object for RTCIceCandidateComplete‥\n if (end) {\n // polyfill since RTCIceGatherer.state is not implemented in\n // Edge 10547 yet.\n if (iceGatherer.state === undefined) {\n iceGatherer.state = 'completed';\n }\n\n // Emit a candidate with type endOfCandidates to make the samples\n // work. Edge requires addIceCandidate with this empty candidate\n // to start checking. The real solution is to signal\n // end-of-candidates to the other side when getting the null\n // candidate but some apps (like the samples) don't do that.\n event.candidate.candidate =\n 'candidate:1 1 udp 1 0.0.0.0 9 typ endOfCandidates';\n } else {\n // RTCIceCandidate doesn't have a component, needs to be added\n cand.component = iceTransport.component === 'RTCP' ? 2 : 1;\n event.candidate.candidate = SDPUtils.writeCandidate(cand);\n }\n\n var complete = self.transceivers.every(function(transceiver) {\n return transceiver.iceGatherer &&\n transceiver.iceGatherer.state === 'completed';\n });\n\n // Emit candidate if localDescription is set.\n // Also emits null candidate when all gatherers are complete.\n switch (self.iceGatheringState) {\n case 'new':\n self._localIceCandidatesBuffer.push(event);\n if (end && complete) {\n self._localIceCandidatesBuffer.push(\n new Event('icecandidate'));\n }\n break;\n case 'gathering':\n self._emitBufferedCandidates();\n self.dispatchEvent(event);\n if (self.onicecandidate !== null) {\n self.onicecandidate(event);\n }\n if (complete) {\n self.dispatchEvent(new Event('icecandidate'));\n if (self.onicecandidate !== null) {\n self.onicecandidate(new Event('icecandidate'));\n }\n self.iceGatheringState = 'complete';\n }\n break;\n case 'complete':\n // should not happen... currently!\n break;\n default: // no-op.\n break;\n }\n };\n iceTransport.onicestatechange = function() {\n self._updateConnectionState();\n };\n\n var dtlsTransport = new RTCDtlsTransport(iceTransport);\n dtlsTransport.ondtlsstatechange = function() {\n self._updateConnectionState();\n };\n dtlsTransport.onerror = function() {\n // onerror does not set state to failed by itself.\n dtlsTransport.state = 'failed';\n self._updateConnectionState();\n };\n\n return {\n iceGatherer: iceGatherer,\n iceTransport: iceTransport,\n dtlsTransport: dtlsTransport\n };\n };\n\n // Start the RTP Sender and Receiver for a transceiver.\n window.RTCPeerConnection.prototype._transceive = function(transceiver,\n send, recv) {\n var params = this._getCommonCapabilities(transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n if (send && transceiver.rtpSender) {\n params.encodings = transceiver.sendEncodingParameters;\n params.rtcp = {\n cname: SDPUtils.localCName\n };\n if (transceiver.recvEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.recvEncodingParameters[0].ssrc;\n }\n transceiver.rtpSender.send(params);\n }\n if (recv && transceiver.rtpReceiver) {\n params.encodings = transceiver.recvEncodingParameters;\n params.rtcp = {\n cname: transceiver.cname\n };\n if (transceiver.sendEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.sendEncodingParameters[0].ssrc;\n }\n transceiver.rtpReceiver.receive(params);\n }\n };\n\n window.RTCPeerConnection.prototype.setLocalDescription =\n function(description) {\n var self = this;\n var sections;\n var sessionpart;\n if (description.type === 'offer') {\n // FIXME: What was the purpose of this empty if statement?\n // if (!this._pendingOffer) {\n // } else {\n if (this._pendingOffer) {\n // VERY limited support for SDP munging. Limited to:\n // * changing the order of codecs\n sections = SDPUtils.splitSections(description.sdp);\n sessionpart = sections.shift();\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var caps = SDPUtils.parseRtpParameters(mediaSection);\n self._pendingOffer[sdpMLineIndex].localCapabilities = caps;\n });\n this.transceivers = this._pendingOffer;\n delete this._pendingOffer;\n }\n } else if (description.type === 'answer') {\n sections = SDPUtils.splitSections(self.remoteDescription.sdp);\n sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var transceiver = self.transceivers[sdpMLineIndex];\n var iceGatherer = transceiver.iceGatherer;\n var iceTransport = transceiver.iceTransport;\n var dtlsTransport = transceiver.dtlsTransport;\n var localCapabilities = transceiver.localCapabilities;\n var remoteCapabilities = transceiver.remoteCapabilities;\n var rejected = mediaSection.split('\\n', 1)[0]\n .split(' ', 2)[1] === '0';\n\n if (!rejected) {\n var remoteIceParameters = SDPUtils.getIceParameters(\n mediaSection, sessionpart);\n if (isIceLite) {\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:')\n .map(function(cand) {\n return SDPUtils.parseCandidate(cand);\n })\n .filter(function(cand) {\n return cand.component === '1';\n });\n // ice-lite only includes host candidates in the SDP so we can\n // use setRemoteCandidates (which implies an\n // RTCIceCandidateComplete)\n iceTransport.setRemoteCandidates(cands);\n }\n iceTransport.start(iceGatherer, remoteIceParameters,\n isIceLite ? 'controlling' : 'controlled');\n\n var remoteDtlsParameters = SDPUtils.getDtlsParameters(\n mediaSection, sessionpart);\n if (isIceLite) {\n remoteDtlsParameters.role = 'server';\n }\n dtlsTransport.start(remoteDtlsParameters);\n\n // Calculate intersection of capabilities.\n var params = self._getCommonCapabilities(localCapabilities,\n remoteCapabilities);\n\n // Start the RTCRtpSender. The RTCRtpReceiver for this\n // transceiver has already been started in setRemoteDescription.\n self._transceive(transceiver,\n params.codecs.length > 0,\n false);\n }\n });\n }\n\n this.localDescription = {\n type: description.type,\n sdp: description.sdp\n };\n switch (description.type) {\n case 'offer':\n this._updateSignalingState('have-local-offer');\n break;\n case 'answer':\n this._updateSignalingState('stable');\n break;\n default:\n throw new TypeError('unsupported type \"' + description.type +\n '\"');\n }\n\n // If a success callback was provided, emit ICE candidates after it\n // has been executed. Otherwise, emit callback after the Promise is\n // resolved.\n var hasCallback = arguments.length > 1 &&\n typeof arguments[1] === 'function';\n if (hasCallback) {\n var cb = arguments[1];\n window.setTimeout(function() {\n cb();\n if (self.iceGatheringState === 'new') {\n self.iceGatheringState = 'gathering';\n }\n self._emitBufferedCandidates();\n }, 0);\n }\n var p = Promise.resolve();\n p.then(function() {\n if (!hasCallback) {\n if (self.iceGatheringState === 'new') {\n self.iceGatheringState = 'gathering';\n }\n // Usually candidates will be emitted earlier.\n window.setTimeout(self._emitBufferedCandidates.bind(self), 500);\n }\n });\n return p;\n };\n\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function(description) {\n var self = this;\n var stream = new MediaStream();\n var receiverList = [];\n var sections = SDPUtils.splitSections(description.sdp);\n var sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].substr(2).split(' ');\n var kind = mline[0];\n var rejected = mline[1] === '0';\n var direction = SDPUtils.getDirection(mediaSection, sessionpart);\n\n var transceiver;\n var iceGatherer;\n var iceTransport;\n var dtlsTransport;\n var rtpSender;\n var rtpReceiver;\n var sendEncodingParameters;\n var recvEncodingParameters;\n var localCapabilities;\n\n var track;\n // FIXME: ensure the mediaSection has rtcp-mux set.\n var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection);\n var remoteIceParameters;\n var remoteDtlsParameters;\n if (!rejected) {\n remoteIceParameters = SDPUtils.getIceParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters.role = 'client';\n }\n recvEncodingParameters =\n SDPUtils.parseRtpEncodingParameters(mediaSection);\n\n var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:');\n if (mid.length) {\n mid = mid[0].substr(6);\n } else {\n mid = SDPUtils.generateIdentifier();\n }\n\n var cname;\n // Gets the first SSRC. Note that with RTX there might be multiple\n // SSRCs.\n var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(obj) {\n return obj.attribute === 'cname';\n })[0];\n if (remoteSsrc) {\n cname = remoteSsrc.value;\n }\n\n var isComplete = SDPUtils.matchPrefix(mediaSection,\n 'a=end-of-candidates').length > 0;\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:')\n .map(function(cand) {\n return SDPUtils.parseCandidate(cand);\n })\n .filter(function(cand) {\n return cand.component === '1';\n });\n if (description.type === 'offer' && !rejected) {\n var transports = self._createIceAndDtlsTransports(mid,\n sdpMLineIndex);\n if (isComplete) {\n transports.iceTransport.setRemoteCandidates(cands);\n }\n\n localCapabilities = RTCRtpReceiver.getCapabilities(kind);\n sendEncodingParameters = [{\n ssrc: (2 * sdpMLineIndex + 2) * 1001\n }];\n\n rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind);\n\n track = rtpReceiver.track;\n receiverList.push([track, rtpReceiver]);\n // FIXME: not correct when there are multiple streams but that is\n // not currently supported in this shim.\n stream.addTrack(track);\n\n // FIXME: look at direction.\n if (self.localStreams.length > 0 &&\n self.localStreams[0].getTracks().length >= sdpMLineIndex) {\n // FIXME: actually more complicated, needs to match types etc\n var localtrack = self.localStreams[0]\n .getTracks()[sdpMLineIndex];\n rtpSender = new RTCRtpSender(localtrack,\n transports.dtlsTransport);\n }\n\n self.transceivers[sdpMLineIndex] = {\n iceGatherer: transports.iceGatherer,\n iceTransport: transports.iceTransport,\n dtlsTransport: transports.dtlsTransport,\n localCapabilities: localCapabilities,\n remoteCapabilities: remoteCapabilities,\n rtpSender: rtpSender,\n rtpReceiver: rtpReceiver,\n kind: kind,\n mid: mid,\n cname: cname,\n sendEncodingParameters: sendEncodingParameters,\n recvEncodingParameters: recvEncodingParameters\n };\n // Start the RTCRtpReceiver now. The RTPSender is started in\n // setLocalDescription.\n self._transceive(self.transceivers[sdpMLineIndex],\n false,\n direction === 'sendrecv' || direction === 'sendonly');\n } else if (description.type === 'answer' && !rejected) {\n transceiver = self.transceivers[sdpMLineIndex];\n iceGatherer = transceiver.iceGatherer;\n iceTransport = transceiver.iceTransport;\n dtlsTransport = transceiver.dtlsTransport;\n rtpSender = transceiver.rtpSender;\n rtpReceiver = transceiver.rtpReceiver;\n sendEncodingParameters = transceiver.sendEncodingParameters;\n localCapabilities = transceiver.localCapabilities;\n\n self.transceivers[sdpMLineIndex].recvEncodingParameters =\n recvEncodingParameters;\n self.transceivers[sdpMLineIndex].remoteCapabilities =\n remoteCapabilities;\n self.transceivers[sdpMLineIndex].cname = cname;\n\n if (isIceLite || isComplete) {\n iceTransport.setRemoteCandidates(cands);\n }\n iceTransport.start(iceGatherer, remoteIceParameters,\n 'controlling');\n dtlsTransport.start(remoteDtlsParameters);\n\n self._transceive(transceiver,\n direction === 'sendrecv' || direction === 'recvonly',\n direction === 'sendrecv' || direction === 'sendonly');\n\n if (rtpReceiver &&\n (direction === 'sendrecv' || direction === 'sendonly')) {\n track = rtpReceiver.track;\n receiverList.push([track, rtpReceiver]);\n stream.addTrack(track);\n } else {\n // FIXME: actually the receiver should be created later.\n delete transceiver.rtpReceiver;\n }\n }\n });\n\n this.remoteDescription = {\n type: description.type,\n sdp: description.sdp\n };\n switch (description.type) {\n case 'offer':\n this._updateSignalingState('have-remote-offer');\n break;\n case 'answer':\n this._updateSignalingState('stable');\n break;\n default:\n throw new TypeError('unsupported type \"' + description.type +\n '\"');\n }\n if (stream.getTracks().length) {\n self.remoteStreams.push(stream);\n window.setTimeout(function() {\n var event = new Event('addstream');\n event.stream = stream;\n self.dispatchEvent(event);\n if (self.onaddstream !== null) {\n window.setTimeout(function() {\n self.onaddstream(event);\n }, 0);\n }\n\n receiverList.forEach(function(item) {\n var track = item[0];\n var receiver = item[1];\n var trackEvent = new Event('track');\n trackEvent.track = track;\n trackEvent.receiver = receiver;\n trackEvent.streams = [stream];\n self.dispatchEvent(event);\n if (self.ontrack !== null) {\n window.setTimeout(function() {\n self.ontrack(trackEvent);\n }, 0);\n }\n });\n }, 0);\n }\n if (arguments.length > 1 && typeof arguments[1] === 'function') {\n window.setTimeout(arguments[1], 0);\n }\n return Promise.resolve();\n };\n\n window.RTCPeerConnection.prototype.close = function() {\n this.transceivers.forEach(function(transceiver) {\n /* not yet\n if (transceiver.iceGatherer) {\n transceiver.iceGatherer.close();\n }\n */\n if (transceiver.iceTransport) {\n transceiver.iceTransport.stop();\n }\n if (transceiver.dtlsTransport) {\n transceiver.dtlsTransport.stop();\n }\n if (transceiver.rtpSender) {\n transceiver.rtpSender.stop();\n }\n if (transceiver.rtpReceiver) {\n transceiver.rtpReceiver.stop();\n }\n });\n // FIXME: clean up tracks, local streams, remote streams, etc\n this._updateSignalingState('closed');\n };\n\n // Update the signaling state.\n window.RTCPeerConnection.prototype._updateSignalingState =\n function(newState) {\n this.signalingState = newState;\n var event = new Event('signalingstatechange');\n this.dispatchEvent(event);\n if (this.onsignalingstatechange !== null) {\n this.onsignalingstatechange(event);\n }\n };\n\n // Determine whether to fire the negotiationneeded event.\n window.RTCPeerConnection.prototype._maybeFireNegotiationNeeded =\n function() {\n // Fire away (for now).\n var event = new Event('negotiationneeded');\n this.dispatchEvent(event);\n if (this.onnegotiationneeded !== null) {\n this.onnegotiationneeded(event);\n }\n };\n\n // Update the connection state.\n window.RTCPeerConnection.prototype._updateConnectionState = function() {\n var self = this;\n var newState;\n var states = {\n 'new': 0,\n closed: 0,\n connecting: 0,\n checking: 0,\n connected: 0,\n completed: 0,\n failed: 0\n };\n this.transceivers.forEach(function(transceiver) {\n states[transceiver.iceTransport.state]++;\n states[transceiver.dtlsTransport.state]++;\n });\n // ICETransport.completed and connected are the same for this purpose.\n states.connected += states.completed;\n\n newState = 'new';\n if (states.failed > 0) {\n newState = 'failed';\n } else if (states.connecting > 0 || states.checking > 0) {\n newState = 'connecting';\n } else if (states.disconnected > 0) {\n newState = 'disconnected';\n } else if (states.new > 0) {\n newState = 'new';\n } else if (states.connected > 0 || states.completed > 0) {\n newState = 'connected';\n }\n\n if (newState !== self.iceConnectionState) {\n self.iceConnectionState = newState;\n var event = new Event('iceconnectionstatechange');\n this.dispatchEvent(event);\n if (this.oniceconnectionstatechange !== null) {\n this.oniceconnectionstatechange(event);\n }\n }\n };\n\n window.RTCPeerConnection.prototype.createOffer = function() {\n var self = this;\n if (this._pendingOffer) {\n throw new Error('createOffer called while there is a pending offer.');\n }\n var offerOptions;\n if (arguments.length === 1 && typeof arguments[0] !== 'function') {\n offerOptions = arguments[0];\n } else if (arguments.length === 3) {\n offerOptions = arguments[2];\n }\n\n var tracks = [];\n var numAudioTracks = 0;\n var numVideoTracks = 0;\n // Default to sendrecv.\n if (this.localStreams.length) {\n numAudioTracks = this.localStreams[0].getAudioTracks().length;\n numVideoTracks = this.localStreams[0].getVideoTracks().length;\n }\n // Determine number of audio and video tracks we need to send/recv.\n if (offerOptions) {\n // Reject Chrome legacy constraints.\n if (offerOptions.mandatory || offerOptions.optional) {\n throw new TypeError(\n 'Legacy mandatory/optional constraints not supported.');\n }\n if (offerOptions.offerToReceiveAudio !== undefined) {\n numAudioTracks = offerOptions.offerToReceiveAudio;\n }\n if (offerOptions.offerToReceiveVideo !== undefined) {\n numVideoTracks = offerOptions.offerToReceiveVideo;\n }\n }\n if (this.localStreams.length) {\n // Push local streams.\n this.localStreams[0].getTracks().forEach(function(track) {\n tracks.push({\n kind: track.kind,\n track: track,\n wantReceive: track.kind === 'audio' ?\n numAudioTracks > 0 : numVideoTracks > 0\n });\n if (track.kind === 'audio') {\n numAudioTracks--;\n } else if (track.kind === 'video') {\n numVideoTracks--;\n }\n });\n }\n // Create M-lines for recvonly streams.\n while (numAudioTracks > 0 || numVideoTracks > 0) {\n if (numAudioTracks > 0) {\n tracks.push({\n kind: 'audio',\n wantReceive: true\n });\n numAudioTracks--;\n }\n if (numVideoTracks > 0) {\n tracks.push({\n kind: 'video',\n wantReceive: true\n });\n numVideoTracks--;\n }\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate();\n var transceivers = [];\n tracks.forEach(function(mline, sdpMLineIndex) {\n // For each track, create an ice gatherer, ice transport,\n // dtls transport, potentially rtpsender and rtpreceiver.\n var track = mline.track;\n var kind = mline.kind;\n var mid = SDPUtils.generateIdentifier();\n\n var transports = self._createIceAndDtlsTransports(mid, sdpMLineIndex);\n\n var localCapabilities = RTCRtpSender.getCapabilities(kind);\n var rtpSender;\n var rtpReceiver;\n\n // generate an ssrc now, to be used later in rtpSender.send\n var sendEncodingParameters = [{\n ssrc: (2 * sdpMLineIndex + 1) * 1001\n }];\n if (track) {\n rtpSender = new RTCRtpSender(track, transports.dtlsTransport);\n }\n\n if (mline.wantReceive) {\n rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind);\n }\n\n transceivers[sdpMLineIndex] = {\n iceGatherer: transports.iceGatherer,\n iceTransport: transports.iceTransport,\n dtlsTransport: transports.dtlsTransport,\n localCapabilities: localCapabilities,\n remoteCapabilities: null,\n rtpSender: rtpSender,\n rtpReceiver: rtpReceiver,\n kind: kind,\n mid: mid,\n sendEncodingParameters: sendEncodingParameters,\n recvEncodingParameters: null\n };\n var transceiver = transceivers[sdpMLineIndex];\n sdp += SDPUtils.writeMediaSection(transceiver,\n transceiver.localCapabilities, 'offer', self.localStreams[0]);\n });\n\n this._pendingOffer = transceivers;\n var desc = new RTCSessionDescription({\n type: 'offer',\n sdp: sdp\n });\n if (arguments.length && typeof arguments[0] === 'function') {\n window.setTimeout(arguments[0], 0, desc);\n }\n return Promise.resolve(desc);\n };\n\n window.RTCPeerConnection.prototype.createAnswer = function() {\n var self = this;\n\n var sdp = SDPUtils.writeSessionBoilerplate();\n this.transceivers.forEach(function(transceiver) {\n // Calculate intersection of capabilities.\n var commonCapabilities = self._getCommonCapabilities(\n transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n\n sdp += SDPUtils.writeMediaSection(transceiver, commonCapabilities,\n 'answer', self.localStreams[0]);\n });\n\n var desc = new RTCSessionDescription({\n type: 'answer',\n sdp: sdp\n });\n if (arguments.length && typeof arguments[0] === 'function') {\n window.setTimeout(arguments[0], 0, desc);\n }\n return Promise.resolve(desc);\n };\n\n window.RTCPeerConnection.prototype.addIceCandidate = function(candidate) {\n var mLineIndex = candidate.sdpMLineIndex;\n if (candidate.sdpMid) {\n for (var i = 0; i < this.transceivers.length; i++) {\n if (this.transceivers[i].mid === candidate.sdpMid) {\n mLineIndex = i;\n break;\n }\n }\n }\n var transceiver = this.transceivers[mLineIndex];\n if (transceiver) {\n var cand = Object.keys(candidate.candidate).length > 0 ?\n SDPUtils.parseCandidate(candidate.candidate) : {};\n // Ignore Chrome's invalid candidates since Edge does not like them.\n if (cand.protocol === 'tcp' && cand.port === 0) {\n return;\n }\n // Ignore RTCP candidates, we assume RTCP-MUX.\n if (cand.component !== '1') {\n return;\n }\n // A dirty hack to make samples work.\n if (cand.type === 'endOfCandidates') {\n cand = {};\n }\n transceiver.iceTransport.addRemoteCandidate(cand);\n\n // update the remoteDescription.\n var sections = SDPUtils.splitSections(this.remoteDescription.sdp);\n sections[mLineIndex + 1] += (cand.type ? candidate.candidate.trim()\n : 'a=end-of-candidates') + '\\r\\n';\n this.remoteDescription.sdp = sections.join('');\n }\n if (arguments.length > 1 && typeof arguments[1] === 'function') {\n window.setTimeout(arguments[1], 0);\n }\n return Promise.resolve();\n };\n\n window.RTCPeerConnection.prototype.getStats = function() {\n var promises = [];\n this.transceivers.forEach(function(transceiver) {\n ['rtpSender', 'rtpReceiver', 'iceGatherer', 'iceTransport',\n 'dtlsTransport'].forEach(function(method) {\n if (transceiver[method]) {\n promises.push(transceiver[method].getStats());\n }\n });\n });\n var cb = arguments.length > 1 && typeof arguments[1] === 'function' &&\n arguments[1];\n return new Promise(function(resolve) {\n // shim getStats with maplike support\n var results = new Map();\n Promise.all(promises).then(function(res) {\n res.forEach(function(result) {\n Object.keys(result).forEach(function(id) {\n results.set(id, result[id]);\n results[id] = result[id];\n });\n });\n if (cb) {\n window.setTimeout(cb, 0, results);\n }\n resolve(results);\n });\n });\n };\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n element.srcObject = stream;\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n to.srcObject = from.srcObject;\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimPeerConnection: edgeShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia'),\n attachMediaStream: edgeShim.attachMediaStream,\n reattachMediaStream: edgeShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/edge/edge_shim.js\n ** module id = 190\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\n// Expose public methods.\nmodule.exports = function() {\n var shimError_ = function(e) {\n return {\n name: {PermissionDeniedError: 'NotAllowedError'}[e.name] || e.name,\n message: e.message,\n constraint: e.constraint,\n toString: function() {\n return this.name;\n }\n };\n };\n\n // getUserMedia error shim.\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n return origGetUserMedia(c).catch(function(e) {\n return Promise.reject(shimError_(e));\n });\n };\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/edge/getusermedia.js\n ** module id = 191\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar logging = require('../utils').log;\nvar browserDetails = require('../utils').browserDetails;\n\nvar firefoxShim = {\n shimOnTrack: function() {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get: function() {\n return this._ontrack;\n },\n set: function(f) {\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n this.removeEventListener('addstream', this._ontrackpoly);\n }\n this.addEventListener('track', this._ontrack = f);\n this.addEventListener('addstream', this._ontrackpoly = function(e) {\n e.stream.getTracks().forEach(function(track) {\n var event = new Event('track');\n event.track = track;\n event.receiver = {track: track};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n }.bind(this));\n }.bind(this));\n }\n });\n }\n },\n\n shimSourceObject: function() {\n // Firefox has supported mozSrcObject since FF22, unprefixed in 42.\n if (typeof window === 'object') {\n if (window.HTMLMediaElement &&\n !('srcObject' in window.HTMLMediaElement.prototype)) {\n // Shim the srcObject property, once, when HTMLMediaElement is found.\n Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', {\n get: function() {\n return this.mozSrcObject;\n },\n set: function(stream) {\n this.mozSrcObject = stream;\n }\n });\n }\n }\n },\n\n shimPeerConnection: function() {\n if (typeof window !== 'object' || !(window.RTCPeerConnection ||\n window.mozRTCPeerConnection)) {\n return; // probably media.peerconnection.enabled=false in about:config\n }\n // The RTCPeerConnection object.\n if (!window.RTCPeerConnection) {\n window.RTCPeerConnection = function(pcConfig, pcConstraints) {\n if (browserDetails.version < 38) {\n // .urls is not supported in FF < 38.\n // create RTCIceServers with a single url.\n if (pcConfig && pcConfig.iceServers) {\n var newIceServers = [];\n for (var i = 0; i < pcConfig.iceServers.length; i++) {\n var server = pcConfig.iceServers[i];\n if (server.hasOwnProperty('urls')) {\n for (var j = 0; j < server.urls.length; j++) {\n var newServer = {\n url: server.urls[j]\n };\n if (server.urls[j].indexOf('turn') === 0) {\n newServer.username = server.username;\n newServer.credential = server.credential;\n }\n newIceServers.push(newServer);\n }\n } else {\n newIceServers.push(pcConfig.iceServers[i]);\n }\n }\n pcConfig.iceServers = newIceServers;\n }\n }\n return new mozRTCPeerConnection(pcConfig, pcConstraints);\n };\n window.RTCPeerConnection.prototype = mozRTCPeerConnection.prototype;\n\n // wrap static methods. Currently just generateCertificate.\n if (mozRTCPeerConnection.generateCertificate) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get: function() {\n return mozRTCPeerConnection.generateCertificate;\n }\n });\n }\n\n window.RTCSessionDescription = mozRTCSessionDescription;\n window.RTCIceCandidate = mozRTCIceCandidate;\n }\n\n // shim away need for obsolete RTCIceCandidate/RTCSessionDescription.\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n RTCPeerConnection.prototype[method] = function() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n RTCIceCandidate : RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n };\n });\n\n // shim getStats with maplike support\n var makeMapStats = function(stats) {\n var map = new Map();\n Object.keys(stats).forEach(function(key) {\n map.set(key, stats[key]);\n map[key] = stats[key];\n });\n return map;\n };\n\n var nativeGetStats = RTCPeerConnection.prototype.getStats;\n RTCPeerConnection.prototype.getStats = function(selector, onSucc, onErr) {\n return nativeGetStats.apply(this, [selector || null])\n .then(function(stats) {\n return makeMapStats(stats);\n })\n .then(onSucc, onErr);\n };\n },\n\n shimGetUserMedia: function() {\n // getUserMedia constraints shim.\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n var constraintsToFF37_ = function(c) {\n if (typeof c !== 'object' || c.require) {\n return c;\n }\n var require = [];\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' ||\n key === 'mediaSource') {\n return;\n }\n var r = c[key] = (typeof c[key] === 'object') ?\n c[key] : {ideal: c[key]};\n if (r.min !== undefined ||\n r.max !== undefined || r.exact !== undefined) {\n require.push(key);\n }\n if (r.exact !== undefined) {\n if (typeof r.exact === 'number') {\n r. min = r.max = r.exact;\n } else {\n c[key] = r.exact;\n }\n delete r.exact;\n }\n if (r.ideal !== undefined) {\n c.advanced = c.advanced || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[key] = {min: r.ideal, max: r.ideal};\n } else {\n oc[key] = r.ideal;\n }\n c.advanced.push(oc);\n delete r.ideal;\n if (!Object.keys(r).length) {\n delete c[key];\n }\n }\n });\n if (require.length) {\n c.require = require;\n }\n return c;\n };\n constraints = JSON.parse(JSON.stringify(constraints));\n if (browserDetails.version < 38) {\n logging('spec: ' + JSON.stringify(constraints));\n if (constraints.audio) {\n constraints.audio = constraintsToFF37_(constraints.audio);\n }\n if (constraints.video) {\n constraints.video = constraintsToFF37_(constraints.video);\n }\n logging('ff37: ' + JSON.stringify(constraints));\n }\n return navigator.mozGetUserMedia(constraints, onSuccess, onError);\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n };\n\n // Shim for mediaDevices on older versions.\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {getUserMedia: getUserMediaPromise_,\n addEventListener: function() { },\n removeEventListener: function() { }\n };\n }\n navigator.mediaDevices.enumerateDevices =\n navigator.mediaDevices.enumerateDevices || function() {\n return new Promise(function(resolve) {\n var infos = [\n {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''},\n {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''}\n ];\n resolve(infos);\n });\n };\n\n if (browserDetails.version < 41) {\n // Work around http://bugzil.la/1169665\n var orgEnumerateDevices =\n navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices);\n navigator.mediaDevices.enumerateDevices = function() {\n return orgEnumerateDevices().then(undefined, function(e) {\n if (e.name === 'NotFoundError') {\n return [];\n }\n throw e;\n });\n };\n }\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n element.srcObject = stream;\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n to.srcObject = from.srcObject;\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimOnTrack: firefoxShim.shimOnTrack,\n shimSourceObject: firefoxShim.shimSourceObject,\n shimPeerConnection: firefoxShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia'),\n attachMediaStream: firefoxShim.attachMediaStream,\n reattachMediaStream: firefoxShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/firefox/firefox_shim.js\n ** module id = 192\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar logging = require('../utils').log;\nvar browserDetails = require('../utils').browserDetails;\n\n// Expose public methods.\nmodule.exports = function() {\n var shimError_ = e => ({\n name: {\n SecurityError: 'NotAllowedError',\n PermissionDeniedError: 'NotAllowedError'\n }[e.name] || e.name,\n message: {\n 'The operation is insecure.': 'The request is not allowed by the user ' +\n 'agent or the platform in the current context.'\n }[e.message] || e.message,\n constraint: e.constraint,\n toString: function() {\n return this.name + (this.message && ': ') + this.message;\n }\n });\n\n\n // getUserMedia constraints shim.\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n var constraintsToFF37_ = function(c) {\n if (typeof c !== 'object' || c.require) {\n return c;\n }\n var require = [];\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n var r = c[key] = (typeof c[key] === 'object') ?\n c[key] : {ideal: c[key]};\n if (r.min !== undefined ||\n r.max !== undefined || r.exact !== undefined) {\n require.push(key);\n }\n if (r.exact !== undefined) {\n if (typeof r.exact === 'number') {\n r. min = r.max = r.exact;\n } else {\n c[key] = r.exact;\n }\n delete r.exact;\n }\n if (r.ideal !== undefined) {\n c.advanced = c.advanced || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[key] = {min: r.ideal, max: r.ideal};\n } else {\n oc[key] = r.ideal;\n }\n c.advanced.push(oc);\n delete r.ideal;\n if (!Object.keys(r).length) {\n delete c[key];\n }\n }\n });\n if (require.length) {\n c.require = require;\n }\n return c;\n };\n constraints = JSON.parse(JSON.stringify(constraints));\n if (browserDetails.version < 38) {\n logging('spec: ' + JSON.stringify(constraints));\n if (constraints.audio) {\n constraints.audio = constraintsToFF37_(constraints.audio);\n }\n if (constraints.video) {\n constraints.video = constraintsToFF37_(constraints.video);\n }\n logging('ff37: ' + JSON.stringify(constraints));\n }\n return navigator.mozGetUserMedia(constraints, onSuccess,\n e => onError(shimError_(e)));\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n };\n\n // Shim for mediaDevices on older versions.\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {getUserMedia: getUserMediaPromise_,\n addEventListener: function() { },\n removeEventListener: function() { }\n };\n }\n navigator.mediaDevices.enumerateDevices =\n navigator.mediaDevices.enumerateDevices || function() {\n return new Promise(function(resolve) {\n var infos = [\n {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''},\n {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''}\n ];\n resolve(infos);\n });\n };\n\n if (browserDetails.version < 41) {\n // Work around http://bugzil.la/1169665\n var orgEnumerateDevices =\n navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices);\n navigator.mediaDevices.enumerateDevices = function() {\n return orgEnumerateDevices().then(undefined, function(e) {\n if (e.name === 'NotFoundError') {\n return [];\n }\n throw e;\n });\n };\n }\n if (browserDetails.version < 49) {\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = c =>\n origGetUserMedia(c).catch(e => Promise.reject(shimError_(e)));\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/firefox/getusermedia.js\n ** module id = 193\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\nvar safariShim = {\n // TODO: DrAlex, should be here, double check against LayoutTests\n // shimOnTrack: function() { },\n\n // TODO: DrAlex\n // attachMediaStream: function(element, stream) { },\n // reattachMediaStream: function(to, from) { },\n\n // TODO: once the back-end for the mac port is done, add.\n // TODO: check for webkitGTK+\n // shimPeerConnection: function() { },\n\n shimGetUserMedia: function() {\n navigator.getUserMedia = navigator.webkitGetUserMedia;\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimGetUserMedia: safariShim.shimGetUserMedia\n // TODO\n // shimOnTrack: safariShim.shimOnTrack,\n // shimPeerConnection: safariShim.shimPeerConnection,\n // attachMediaStream: safariShim.attachMediaStream,\n // reattachMediaStream: safariShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/safari/safari_shim.js\n ** module id = 194\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/myModuleDefinition","webpack:///webpack/bootstrap 00f1b2bae2fa872bfa92","webpack:///./~/lodash/isArray.js","webpack:///./~/webrtc-adapter/src/js/utils.js","webpack:///./~/lodash/isObject.js","webpack:///./~/lodash/_root.js","webpack:///./~/lodash/isObjectLike.js","webpack:///./src/reader/ean_reader.js","webpack:///./~/lodash/_Map.js","webpack:///./src/common/image_debug.js","webpack:///./src/reader/barcode_reader.js","webpack:///./~/gl-vec2/clone.js","webpack:///./~/lodash/isArguments.js","webpack:///./~/lodash/isFunction.js","webpack:///./~/lodash/merge.js","webpack:///./src/common/array_helper.js","webpack:///./~/lodash/_Stack.js","webpack:///./~/lodash/_assocIndexOf.js","webpack:///./~/lodash/_getNative.js","webpack:///./~/lodash/_isHostObject.js","webpack:///./~/lodash/_isIndex.js","webpack:///./~/lodash/_isKeyable.js","webpack:///./~/lodash/_nativeCreate.js","webpack:///./~/lodash/eq.js","webpack:///./~/lodash/isArrayLike.js","webpack:///./~/lodash/isLength.js","webpack:///./~/lodash/keys.js","webpack:///./src/common/cv_utils.js","webpack:///./src/common/image_wrapper.js","webpack:///./~/lodash/_Symbol.js","webpack:///./~/lodash/_arrayReduce.js","webpack:///./~/lodash/_copyObject.js","webpack:///./~/lodash/_isKey.js","webpack:///./~/lodash/_isPrototype.js","webpack:///./~/lodash/isArrayLikeObject.js","webpack:///./~/lodash/isString.js","webpack:///./~/lodash/isTypedArray.js","webpack:///./~/lodash/keysIn.js","webpack:///./src/analytics/result_collector.js","webpack:///./src/config/config.js","webpack:///./src/locator/tracer.js","webpack:///./src/reader/code_39_reader.js","webpack:///./~/gl-vec2/dot.js","webpack:///./~/lodash/_Uint8Array.js","webpack:///./~/lodash/_arrayEach.js","webpack:///./~/lodash/_assignMergeValue.js","webpack:///./~/lodash/_assignValue.js","webpack:///./~/lodash/_assocDelete.js","webpack:///./~/lodash/_assocGet.js","webpack:///./~/lodash/_assocHas.js","webpack:///./~/lodash/_assocSet.js","webpack:///./~/lodash/_baseCastPath.js","webpack:///./~/lodash/_baseFor.js","webpack:///./~/lodash/_baseGet.js","webpack:///./~/lodash/_baseHas.js","webpack:///./~/lodash/_baseIsEqual.js","webpack:///./~/lodash/_baseProperty.js","webpack:///./~/lodash/_cloneArrayBuffer.js","webpack:///./~/lodash/_copyArray.js","webpack:///./~/lodash/_equalArrays.js","webpack:///./~/lodash/_getTag.js","webpack:///./~/lodash/_hashHas.js","webpack:///./~/lodash/_indexKeys.js","webpack:///./~/lodash/_mapToArray.js","webpack:///./~/lodash/_setToArray.js","webpack:///./~/lodash/get.js","webpack:///./~/lodash/pick.js","webpack:///./~/lodash/rest.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/quagga.js","webpack:///./src/common/cluster.js","webpack:///./src/common/events.js","webpack:///./src/common/subImage.js","webpack:///./src/common/typedefs.js","webpack:///./src/config/config.dev.js","webpack:///./src/decoder/barcode_decoder.js","webpack:///./src/decoder/bresenham.js","webpack:///./src/input/camera_access.js","webpack:///./src/input/frame_grabber.js","webpack:///./src/input/image_loader.js","webpack:///./src/input/input_stream.js","webpack:///./src/locator/barcode_locator.js","webpack:///./src/locator/rasterizer.js","webpack:///./src/locator/skeletonizer.js","webpack:///./src/reader/codabar_reader.js","webpack:///./src/reader/code_128_reader.js","webpack:///./src/reader/code_39_vin_reader.js","webpack:///./src/reader/ean_2_reader.js","webpack:///./src/reader/ean_5_reader.js","webpack:///./src/reader/ean_8_reader.js","webpack:///./src/reader/i2of5_reader.js","webpack:///./src/reader/upc_e_reader.js","webpack:///./src/reader/upc_reader.js","webpack:///./src/scanner.js","webpack:///./~/gl-mat2/copy.js","webpack:///./~/gl-mat2/create.js","webpack:///./~/gl-mat2/invert.js","webpack:///./~/gl-vec2/scale.js","webpack:///./~/gl-vec2/transformMat2.js","webpack:///./~/gl-vec3/clone.js","webpack:///./~/lodash/_Hash.js","webpack:///./~/lodash/_MapCache.js","webpack:///./~/lodash/_Reflect.js","webpack:///./~/lodash/_Set.js","webpack:///./~/lodash/_WeakMap.js","webpack:///./~/lodash/_addMapEntry.js","webpack:///./~/lodash/_addSetEntry.js","webpack:///./~/lodash/_apply.js","webpack:///./~/lodash/_arrayMap.js","webpack:///./~/lodash/_arrayPush.js","webpack:///./~/lodash/_arraySome.js","webpack:///./~/lodash/_baseAssign.js","webpack:///./~/lodash/_baseClone.js","webpack:///./~/lodash/_baseCreate.js","webpack:///./~/lodash/_baseFlatten.js","webpack:///./~/lodash/_baseForIn.js","webpack:///./~/lodash/_baseForOwn.js","webpack:///./~/lodash/_baseHasIn.js","webpack:///./~/lodash/_baseIsEqualDeep.js","webpack:///./~/lodash/_baseIsMatch.js","webpack:///./~/lodash/_baseIteratee.js","webpack:///./~/lodash/_baseKeys.js","webpack:///./~/lodash/_baseKeysIn.js","webpack:///./~/lodash/_baseMatches.js","webpack:///./~/lodash/_baseMatchesProperty.js","webpack:///./~/lodash/_baseMerge.js","webpack:///./~/lodash/_baseMergeDeep.js","webpack:///./~/lodash/_basePick.js","webpack:///./~/lodash/_basePickBy.js","webpack:///./~/lodash/_basePropertyDeep.js","webpack:///./~/lodash/_baseSlice.js","webpack:///./~/lodash/_baseTimes.js","webpack:///./~/lodash/_baseToPairs.js","webpack:///./~/lodash/_checkGlobal.js","webpack:///./~/lodash/_cloneBuffer.js","webpack:///./~/lodash/_cloneMap.js","webpack:///./~/lodash/_cloneRegExp.js","webpack:///./~/lodash/_cloneSet.js","webpack:///./~/lodash/_cloneSymbol.js","webpack:///./~/lodash/_cloneTypedArray.js","webpack:///./~/lodash/_copyObjectWith.js","webpack:///./~/lodash/_copySymbols.js","webpack:///./~/lodash/_createAssigner.js","webpack:///./~/lodash/_createBaseFor.js","webpack:///./~/lodash/_equalByTag.js","webpack:///./~/lodash/_equalObjects.js","webpack:///./~/lodash/_getLength.js","webpack:///./~/lodash/_getMatchData.js","webpack:///./~/lodash/_getSymbols.js","webpack:///./~/lodash/_hasPath.js","webpack:///./~/lodash/_hashDelete.js","webpack:///./~/lodash/_hashGet.js","webpack:///./~/lodash/_hashSet.js","webpack:///./~/lodash/_initCloneArray.js","webpack:///./~/lodash/_initCloneByTag.js","webpack:///./~/lodash/_initCloneObject.js","webpack:///./~/lodash/_isIterateeCall.js","webpack:///./~/lodash/_isStrictComparable.js","webpack:///./~/lodash/_iteratorToArray.js","webpack:///./~/lodash/_mapClear.js","webpack:///./~/lodash/_mapDelete.js","webpack:///./~/lodash/_mapGet.js","webpack:///./~/lodash/_mapHas.js","webpack:///./~/lodash/_mapSet.js","webpack:///./~/lodash/_parent.js","webpack:///./~/lodash/_stackClear.js","webpack:///./~/lodash/_stackDelete.js","webpack:///./~/lodash/_stackGet.js","webpack:///./~/lodash/_stackHas.js","webpack:///./~/lodash/_stackSet.js","webpack:///./~/lodash/_stringToPath.js","webpack:///./~/lodash/constant.js","webpack:///./~/lodash/hasIn.js","webpack:///./~/lodash/identity.js","webpack:///./~/lodash/isBuffer.js","webpack:///./~/lodash/isEmpty.js","webpack:///./~/lodash/isNative.js","webpack:///./~/lodash/isPlainObject.js","webpack:///./~/lodash/isSymbol.js","webpack:///./~/lodash/last.js","webpack:///./~/lodash/omitBy.js","webpack:///./~/lodash/property.js","webpack:///./~/lodash/toInteger.js","webpack:///./~/lodash/toNumber.js","webpack:///./~/lodash/toPairs.js","webpack:///./~/lodash/toPlainObject.js","webpack:///./~/lodash/toString.js","webpack:///./~/sdp/sdp.js","webpack:///./~/webrtc-adapter/src/js/adapter_core.js","webpack:///./~/webrtc-adapter/src/js/chrome/chrome_shim.js","webpack:///./~/webrtc-adapter/src/js/chrome/getusermedia.js","webpack:///./~/webrtc-adapter/src/js/edge/edge_shim.js","webpack:///./~/webrtc-adapter/src/js/edge/getusermedia.js","webpack:///./~/webrtc-adapter/src/js/firefox/firefox_shim.js","webpack:///./~/webrtc-adapter/src/js/firefox/getusermedia.js","webpack:///./~/webrtc-adapter/src/js/safari/safari_shim.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACRA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AAC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AAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;;AAEA;AACA;;AAEA;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;gtCCtDA;AACA;AACA,KAAM,OAAO;AACT,YAAO,oBAAQ,CAAR,CAAP;EADE;AAGN,KAAM,OAAO;AACT,YAAO,oBAAQ,EAAR,CAAP;EADE;;;;;;;AASC,UAAS,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAwB;AAC3B,SAAI,OAAO;AACP,YAAG,CAAH;AACA,YAAG,CAAH;AACA,iBAAQ,kBAAW;AACf,oBAAO,KAAK,KA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ACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1EA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACrDA;;AAEA,UAAS,QAAT,CAAkB,UAAlB,EAA8B,IAA9B,EAAoC;AAChC,SAAI,IAAJ,EAAU;AACN,gBAAO,KAAK,IAAL,CAAU,UAAU,IAAV,EAAgB;AAC7B,oBAAO,OAAO,IAAP,CAAY,IAAZ,EAAkB,KAAlB,CAAwB,UAAU,GAAV,EAAe;AAC1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AEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1BA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;;AAEA;;;;;;;AChBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;;AAEA;AACA;AACA;AACA;AACA,YAAW,YAAY;AACvB,cAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1DA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvBA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,qBAAqB;AAChC;AACA,cAAa,OAAO;AACpB;AACA;AACA,kBAAiB;AACjB;AACA;AACA,WAAU;AACV;AACA;AACA,6BAA4B;AAC5B,EAAC;;AAED;;;;;;;ACzBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB,EAAE;AACvC,sBAAqB,qBAAqB;AAC1C,IAAG;AACH;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC,IAAG;AACH;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC,IAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,UAAS,UAAT,CAAmB,MAAnB,EAA2B,QAA3B,EAAuD;SAAlB,oEAAc,kBAAI;;AACnD,SAAM,oBAAoB;AACtB,sBAAa;AACT,mBAAM,aAAN;AACA,uBAAU,KAAV;AACA,mBAAM,GAAN;AACA,kBAAK,QAAL;UAJJ;AAMA,uBAAc,IAAC,IAAmB,OAAO,KAAP,GAAgB,CAApC,GAAwC,CAAxC;MAPZ,CAD6C;AAUnD,cAAS,gFACL,MADK,EAEL,iBAFK,EAGL,EAAC,cAAc,OAAO,OAAO,YAAP,KAAwB,QAA/B,IAA2C,OAAO,YAAP,GAAsB,CAAtB,GAA0B,CAArE,GAAyE,CAAzE,EAHV,EAIL,EAAC,aAAa,iFAAO,+EAAK,OAAO,WAAP,EAAoB,CAAC,MAAD,EAAS,KAAT,CAAzB,CAAP,6EAAb,EAJI,EAKL,EAAC,aAAa,WAAb,EALI,CAAT,CAVmD;;AAiBnD,SAAM,UAAU,wEAAV,CAjB6C;AAkBnD,YAAO;AACH,qDAAiB,WAAW,IAAI;AAC5B,qBAAQ,SAAR,CAAkB,SAAlB,EAA6B,EAA7B,EAD4B;AAE5B,oBAAO,IAAP,CAF4B;UAD7B;AAKH,2DAAoB,WAAW,IAAI;AAC/B,qBAAQ,WAAR,CAAoB,SAApB,EAA+B,EAA/B,EAD+B;AAE/B,oBAAO,IAAP,CAF+B;UALhC;AASH,iCAAQ;AACJ,qBAAQ,IAAR,CAAa,MAAb,EAAqB,YAAM;AACvB,yBAAQ,KAAR,GADuB;cAAN,CAArB,CADI;AAIJ,oBAAO,IAAP,CAJI;UATL;AAeH,+BAAO;AACH,qBAAQ,IAAR,GADG;AAEH,oBAAO,IAAP,CAFG;UAfJ;AAmBH,yCAAY;AACR,oBAAO,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AACpC,yBAAQ,YAAR,CAAqB,MAArB,EAA6B,UAAC,MAAD,EAAY;AACrC,yBAAI,UAAU,OAAO,UAAP,IAAqB,OAAO,UAAP,CAAkB,IAAlB,EAAwB;AACvD,gCAAO,QAAQ,MAAR,CAAP,CADuD;sBAA3D;AAGA,4BAAO,OAAO,MAAP,CAAP,CAJqC;kBAAZ,CAA7B,CADoC;cAArB,CAAnB,CADQ;UAnBT;MAAP,CAlBmD;EAAvD;;AAkDA,UAAS,UAAT,CAAmB,MAAnB,EAA2B,MAA3B,EAAqD;SAAlB,oEAAc,kBAAI;;;;;AAIjD,SAAI,eAAe;AACf,eAAM,YAAN;AACA,sBAAa;AACT,oBAAO,GAAP;AACA,qBAAQ,GAAR;AACA,yBAAY,aAAZ;UAHJ;MAFA;;;;aAJ6C,IAepC,kBAAkB,OAAlB,EAA2B;;MAA/B,MAEF,IAAI,OAAO,MAAP,KAAkB,QAAlB,EAA4B;;UAAhC,MAEA,IAAI,QAAO,uDAAP,KAAkB,QAAlB,KACC,OAAO,OAAO,WAAP,KAAuB,WAA9B,IACD,OAAO,OAAO,IAAP,KAAgB,WAAvB,CAFA,EAEqC;AAC5C,+BAAc,MAAd,CAD4C;cAFzC,MAIA,IAAI,CAAC,MAAD,EAAS;;cAAb;AAGP,cAAS,gFAAM,EAAN,EAAU,MAAV,EAAkB,EAAC,aAAa,YAAb,EAAnB,EAA+C,EAAC,aAAa,WAAb,EAAhD,CAAT,CA1BiD;AA2BjD,aAAQ,GAAR,CAAY,MAAZ,EA3BiD;AA4BjD,SAAM,UAAU,wEAAV,CA5B2C;AA6BjD,YAAO;AACH,qDAAiB,WAAW,IAAI;AAC5B,qBAAQ,SAAR,CAAkB,SAAlB,EAA6B,EAA7B,EAD4B;AAE5B,oBAAO,IAAP,CAF4B;UAD7B;AAKH,2DAAoB,WAAW,IAAI;AAC/B,qBAAQ,WAAR,CAAoB,SAApB,EAA+B,EAA/B,EAD+B;AAE/B,oBAAO,IAAP,CAF+B;UALhC;AASH,iCAAQ;AACJ,qBAAQ,IAAR,CAAa,MAAb,EAAqB,UAAC,KAAD,EAAW;AAC5B,qBAAI,KAAJ,EAAW;AACP,6BAAQ,GAAR,CAAY,KAAZ,EADO;AAEP,2BAAM,KAAN,CAFO;kBAAX;AAIA,yBAAQ,KAAR,GAL4B;cAAX,CAArB,CADI;AAQJ,oBAAO,IAAP,CARI;UATL;AAmBH,+BAAO;AACH,qBAAQ,IAAR,GADG;AAEH,oBAAO,IAAP,CAFG;UAnBJ;MAAP,CA7BiD;EAArD;;AAuDA,KAAM,iBAAiB,wEAAjB;;AAEN,UAAS,SAAT,GAAyD;SAAtC,sEAAgB,kBAAsB;;;;SAAlB,mBAAkB;SAAb,+DAAS,kBAAI;;AACrD,SAAI,eAAe,gFAAM,EAAN,EAAU,aAAV,yBAA2B,OAAM,gBAAjC,CAAf,CADiD;AAErD,YAAO,UAAU,YAAV,CAAP,CAFqD;EAAzD;;AAKA,UAAS,SAAT,GAA2C;SAAxB,sEAAgB,sFAAQ;;AACvC,YAAO;AACH,uCAAU,KAAK,MAAM;AACjB,oBAAO,WAAU,aAAV,EAAyB,GAAzB,EAA8B,IAA9B,CAAP,CADiB;UADlB;AAIH,uCAAU,KAAK,aAAa;AACxB,oBAAO,WAAU,aAAV,EAAyB,GAAzB,EAA8B,WAA9B,CAAP,CADwB;UAJzB;AAOH,mCAAQ,MAAM;AACV,oBAAO,UAAU,aAAV,EAAyB,SAAzB,EAAoC,IAApC,CAAP,CADU;UAPX;AAUH,mCAAQ,MAAM;AACV,oBAAO,UAAU,aAAV,EAAyB,SAAzB,EAAoC,IAApC,CAAP,CADU;UAVX;AAaH,iCAAO,MAAM;AACT,oBAAO,UAAU,gFAAM,EAAN,EAAU,aAAV,EAAyB,IAAzB,CAAV,CAAP,CADS;UAbV;AAgBH,mEAAwB,iBAAiB;AACrC,4BAAe,uBAAf,CAAuC,eAAvC,EADqC;UAhBtC;AAmBH,yCAAY;AACR,oBAAO,eAAe,MAAf,CADC;UAnBT;;AAsBH,mGAtBG;AAuBH,+FAvBG;AAwBH,4GAxBG;AAyBH,kBAAS;AACL,2FADK;UAAT;MAzBJ,CADuC;EAA3C;AA+BA,mDAAe,WAAf,C;;;;;;ACxJA,KAAM,OAAO;AACT,YAAO,oBAAQ,CAAR,CAAP;AACA,UAAK,oBAAQ,EAAR,CAAL;EAFE;;;;;AAQN,6CAAe;AACX,aAAQ,gBAAS,KAAT,EAAgB,SAAhB,EAA2B;AAC/B,aAAI,SAAS,EAAT;aACA,SAAS;AACL,kBAAK,CAAL;AACA,kBAAK,KAAK,KAAL,CAAW,CAAC,CAAD,EAAI,CAAJ,CAAX,CAAL;UAFJ;aAIA,WAAW,EAAX,CAN2B;;AAQ/B,kBAAS,IAAT,GAAgB;AACZ,kBAAI,KAAJ,EADY;AAEZ,4BAFY;UAAhB;;AAKA,kBAAS,IAAT,CAAa,UAAb,EAAyB;AACrB,sBAAS,WAAW,EAAX,CAAT,GAA0B,UAA1B,CADqB;AAErB,oBAAO,IAAP,CAAY,UAAZ,EAFqB;UAAzB;;AAKA,kBAAS,YAAT,GAAwB;AACpB,iBAAI,CAAJ;iBAAO,MAAM,CAAN,CADa;AAEpB,kBAAM,IAAI,CAAJ,EAAO,IAAI,OAAO,MAAP,EAAe,GAAhC,EAAqC;AACjC,wBAAO,OAAO,CAAP,EAAU,GAAV,CAD0B;cAArC;AAGA,oBAAO,GAAP,GAAa,MAAM,OAAO,MAAP,CALC;AAMpB,oBAAO,GAAP,GAAa,KAAK,KAAL,CAAW,CAAC,KAAK,GAAL,CAAS,OAAO,GAAP,CAAV,EAAuB,KAAK,GAAL,CAAS,OAAO,GAAP,CAAhC,CAAX,CAAb,CANoB;UAAxB;;AASA,gBA3B+B;;AA6B/B,gBAAO;AACH,kBAAK,aAAS,UAAT,EAAqB;AACtB,qBAAI,CAAC,SAAS,WAAW,EAAX,CAAV,EAA0B;AAC1B,0BAAI,UAAJ,EAD0B;AAE1B,oCAF0B;kBAA9B;cADC;AAML,mBAAM,cAAS,UAAT,EAAqB;;AAEvB,qBAAI,aAAa,KAAK,GAAL,CAAS,KAAK,GAAL,CAAS,WAAW,KAAX,CAAiB,GAAjB,EAAsB,OAAO,GAAP,CAAxC,CAAb,CAFmB;AAGvB,qBAAI,aAAa,SAAb,EAAwB;AACxB,4BAAO,IAAP,CADwB;kBAA5B;AAGA,wBAAO,KAAP,CANuB;cAArB;AAQN,wBAAW,qBAAW;AAClB,wBAAO,MAAP,CADkB;cAAX;AAGX,wBAAW,qBAAW;AAClB,wBAAO,MAAP,CADkB;cAAX;UAlBf,CA7B+B;MAA3B;AAoDR,kBAAa,qBAAS,QAAT,EAAmB,EAAnB,EAAuB,QAAvB,EAAiC;AAC1C,gBAAO;AACH,kBAAK,SAAS,QAAT,CAAL;AACA,oBAAO,QAAP;AACA,iBAAI,EAAJ;UAHJ,CAD0C;MAAjC;EArDjB,C;;;;;;0DCRe,SAAS,oBAAT,GAAgC;AAC3C,SAAI,SAAS,EAAT,CADuC;;AAG3C,cAAS,QAAT,CAAkB,SAAlB,EAA6B;AACzB,aAAI,CAAC,OAAO,SAAP,CAAD,EAAoB;AACpB,oBAAO,SAAP,IAAoB;AAChB,8BAAa,EAAb;cADJ,CADoB;UAAxB;AAKA,gBAAO,OAAO,SAAP,CAAP,CANyB;MAA7B;;AASA,cAAS,WAAT,GAAsB;AAClB,kBAAS,EAAT,CADkB;MAAtB;;AAIA,cAAS,mBAAT,CAA6B,YAA7B,EAA2C,IAA3C,EAAiD;AAC7C,aAAI,aAAa,KAAb,EAAoB;AACpB,wBAAW,YAAW;AAClB,8BAAa,QAAb,CAAsB,IAAtB,EADkB;cAAX,EAER,CAFH,EADoB;UAAxB,MAIO;AACH,0BAAa,QAAb,CAAsB,IAAtB,EADG;UAJP;MADJ;;AAUA,cAAS,UAAT,CAAmB,KAAnB,EAA0B,QAA1B,EAAoC,KAApC,EAA2C;AACvC,aAAI,YAAJ,CADuC;;AAGvC,aAAK,OAAO,QAAP,KAAoB,UAApB,EAAgC;AACjC,4BAAe;AACX,2BAAU,QAAV;AACA,wBAAO,KAAP;cAFJ,CADiC;UAArC,MAKO;AACH,4BAAe,QAAf,CADG;AAEH,iBAAI,CAAC,aAAa,QAAb,EAAuB;AACxB,uBAAM,uCAAN,CADwB;cAA5B;UAPJ;;AAYA,kBAAS,KAAT,EAAgB,WAAhB,CAA4B,IAA5B,CAAiC,YAAjC,EAfuC;MAA3C;;AAkBA,YAAO;AACH,oBAAW,mBAAS,KAAT,EAAgB,QAAhB,EAA0B,KAA1B,EAAiC;AACxC,oBAAO,WAAU,KAAV,EAAiB,QAAjB,EAA2B,KAA3B,CAAP,CADwC;UAAjC;AAGX,kBAAS,iBAAS,SAAT,EAAoB,IAApB,EAA0B;AAC/B,iBAAI,QAAQ,SAAS,SAAT,CAAR;iBACA,cAAc,MAAM,WAAN;;;AAFa,wBAK/B,CAAY,MAAZ,CAAmB,UAAS,UAAT,EAAqB;AACpC,wBAAO,CAAC,CAAC,WAAW,IAAX,CAD2B;cAArB,CAAnB,CAEG,OAFH,CAEW,UAAC,UAAD,EAAgB;AACvB,qCAAoB,UAApB,EAAgC,IAAhC,EADuB;cAAhB,CAFX;;;AAL+B,kBAY/B,CAAM,WAAN,GAAoB,YAAY,MAAZ,CAAmB,UAAS,UAAT,EAAqB;AACxD,wBAAO,CAAC,WAAW,IAAX,CADgD;cAArB,CAAvC;;;AAZ+B,kBAiB/B,CAAM,WAAN,CAAkB,OAAlB,CAA0B,UAAC,UAAD,EAAgB;AACtC,qCAAoB,UAApB,EAAgC,IAAhC,EADsC;cAAhB,CAA1B,CAjB+B;UAA1B;AAqBT,eAAM,cAAS,KAAT,EAAgB,QAAhB,EAA0B,KAA1B,EAAiC;AACnC,wBAAU,KAAV,EAAiB;AACb,2BAAU,QAAV;AACA,wBAAO,KAAP;AACA,uBAAM,IAAN;cAHJ,EADmC;UAAjC;AAON,sBAAa,qBAAS,SAAT,EAAoB,QAApB,EAA8B;AACvC,iBAAI,KAAJ,CADuC;;AAGvC,iBAAI,SAAJ,EAAe;AACX,yBAAQ,SAAS,SAAT,CAAR,CADW;AAEX,qBAAI,SAAS,QAAT,EAAmB;AACnB,2BAAM,WAAN,GAAoB,MAAM,WAAN,CAAkB,MAAlB,CAAyB,UAAS,UAAT,EAAoB;AAC7D,gCAAO,WAAW,QAAX,KAAwB,QAAxB,CADsD;sBAApB,CAA7C,CADmB;kBAAvB,MAIO;AACH,2BAAM,WAAN,GAAoB,EAApB,CADG;kBAJP;cAFJ,MASO;AACH,+BADG;cATP;UAHS;MAhCjB,CA5C2C;EAAhC,C;;;;;;;;;;;;;;ACQf,UAAS,QAAT,CAAkB,IAAlB,EAAwB,IAAxB,EAA8B,CAA9B,EAAiC;AAC7B,SAAI,CAAC,CAAD,EAAI;AACJ,aAAI;AACA,mBAAM,IAAN;AACA,mBAAM,IAAN;UAFJ,CADI;MAAR;AAMA,UAAK,IAAL,GAAY,EAAE,IAAF,CAPiB;AAQ7B,UAAK,YAAL,GAAoB,EAAE,IAAF,CARS;AAS7B,UAAK,CAAL,GAAS,CAAT,CAT6B;;AAW7B,UAAK,IAAL,GAAY,IAAZ,CAX6B;AAY7B,UAAK,IAAL,GAAY,IAAZ,CAZ6B;EAAjC;;;;;;;AAoBA,UAAS,SAAT,CAAmB,IAAnB,GAA0B,UAAS,MAAT,EAAiB,KAAjB,EAAwB;AAC9C,SAAI,GAAJ,EACI,KADJ,EAEI,IAFJ,EAGI,OAHJ,EAII,CAJJ,EAKI,CALJ,EAMI,KANJ,CAD8C;;AAS9C,SAAI,CAAC,KAAD,EAAQ;AACR,iBAAQ,GAAR,CADQ;MAAZ;AAGA,WAAM,OAAO,UAAP,CAAkB,IAAlB,CAAN,CAZ8C;AAa9C,YAAO,KAAP,GAAe,KAAK,IAAL,CAAU,CAAV,CAb+B;AAc9C,YAAO,MAAP,GAAgB,KAAK,IAAL,CAAU,CAAV,CAd8B;AAe9C,aAAQ,IAAI,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,OAAO,KAAP,EAAc,OAAO,MAAP,CAA7C,CAf8C;AAgB9C,YAAO,MAAM,IAAN,CAhBuC;AAiB9C,eAAU,CAAV,CAjB8C;AAkB9C,UAAK,IAAI,CAAJ,EAAO,IAAI,KAAK,IAAL,CAAU,CAAV,EAAa,GAA7B,EAAkC;AAC9B,cAAK,IAAI,CAAJ,EAAO,IAAI,KAAK,IAAL,CAAU,CAAV,EAAa,GAA7B,EAAkC;AAC9B,qBAAQ,IAAI,KAAK,IAAL,CAAU,CAAV,GAAc,CAAlB,CADsB;AAE9B,uBAAU,KAAK,GAAL,CAAS,CAAT,EAAY,CAAZ,IAAiB,KAAjB,CAFoB;AAG9B,kBAAK,QAAQ,CAAR,GAAY,CAAZ,CAAL,GAAsB,OAAtB,CAH8B;AAI9B,kBAAK,QAAQ,CAAR,GAAY,CAAZ,CAAL,GAAsB,OAAtB,CAJ8B;AAK9B,kBAAK,QAAQ,CAAR,GAAY,CAAZ,CAAL,GAAsB,OAAtB,CAL8B;AAM9B,kBAAK,QAAQ,CAAR,GAAY,CAAZ,CAAL,GAAsB,GAAtB,CAN8B;UAAlC;MADJ;AAUA,WAAM,IAAN,GAAa,IAAb,CA5B8C;AA6B9C,SAAI,YAAJ,CAAiB,KAAjB,EAAwB,CAAxB,EAA2B,CAA3B,EA7B8C;EAAxB;;;;;;;;AAsC1B,UAAS,SAAT,CAAmB,GAAnB,GAAyB,UAAS,CAAT,EAAY,CAAZ,EAAe;AACpC,YAAO,KAAK,IAAL,CAAU,CAAC,KAAK,IAAL,CAAU,CAAV,GAAc,CAAd,CAAD,GAAoB,KAAK,YAAL,CAAkB,CAAlB,GAAsB,KAAK,IAAL,CAAU,CAAV,GAAc,CAAxD,CAAjB,CADoC;EAAf;;;;;;AAQzB,UAAS,SAAT,CAAmB,UAAnB,GAAgC,UAAS,KAAT,EAAgB;AAC5C,UAAK,YAAL,GAAoB,MAAM,IAAN,CADwB;AAE5C,UAAK,IAAL,GAAY,MAAM,IAAN,CAFgC;EAAhB;;;;;;;AAUhC,UAAS,SAAT,CAAmB,UAAnB,GAAgC,UAAS,IAAT,EAAe;AAC3C,UAAK,IAAL,GAAY,IAAZ,CAD2C;AAE3C,YAAO,IAAP,CAF2C;EAAf;;AAKhC,6CAAgB,QAAhB,C;;;;;;;;;;;ACpFA,KAAI,OAAO,MAAP,KAAkB,WAAlB,EAA+B;AAC/B,YAAO,gBAAP,GAA0B,YAAa;AACnC,gBAAO,OAAO,qBAAP,IACH,OAAO,2BAAP,IACA,OAAO,wBAAP,IACA,OAAO,sBAAP,IACA,OAAO,uBAAP,IACA,8CAA8C,QAA9C,EAAwD;AACpD,oBAAO,UAAP,CAAkB,QAAlB,EAA4B,OAAO,EAAP,CAA5B,CADoD;UAAxD,CAN+B;MAAZ,EAA3B,CAD+B;EAAnC;AAYA,MAAK,IAAL,GAAY,KAAK,IAAL,IAAa,UAAS,CAAT,EAAY,CAAZ,EAAe;AACpC,SAAI,KAAK,CAAC,KAAM,EAAN,GAAY,MAAb;SACL,KAAK,IAAI,MAAJ;SACL,KAAK,CAAC,KAAM,EAAN,GAAY,MAAb;SACL,KAAK,IAAI,MAAJ;;;AAJ2B,YAO5B,EAAC,GAAK,EAAL,IAAY,EAAE,GAAK,EAAL,GAAU,KAAK,EAAL,IAAY,EAAvB,KAA+B,CAAhC,CAAb,GAAkD,CAAlD,CAP4B;EAAf,C;;;;;;ACjBzB,YAAiB;AACb,kBAAa;AACT,eAAM,MAAN;AACA,eAAM,YAAN;AACA,sBAAa;AACT,oBAAO,GAAP;AACA,qBAAQ,GAAR;;AAEA,yBAAY,aAAZ,EAJJ;;;AAOA,eAAM;AACF,kBAAK,IAAL;AACA,oBAAO,IAAP;AACA,mBAAM,IAAN;AACA,qBAAQ,IAAR;UAJJ;AAMA,wBAAe,KAAf;AAhBS,MAAb;AAkBA,aAAQ,IAAR;AACA,mBAAc,CAAd;AACA,cAAS;AACL,kBAAS,CACL,iBADK,CAAT;AAGA,gBAAO;AACH,8BAAiB,KAAjB;AACA,4BAAe,KAAf;AACA,2BAAc,KAAd;AACA,0BAAa,KAAb;UAJJ;MAJJ;AAWA,cAAS;AACL,qBAAY,IAAZ;AACA,oBAAW,QAAX;AACA,gBAAO;AACH,yBAAY,KAAZ;AACA,0BAAa,KAAb;AACA,+BAAkB,KAAlB;AACA,2BAAc,KAAd;AACA,yBAAY,KAAZ;AACA,8BAAiB,KAAjB;AACA,uCAA0B,KAA1B;AACA,6BAAgB;AACZ,kCAAiB,KAAjB;AACA,qCAAoB,KAApB;AACA,yBAAQ,KAAR;cAHJ;UARJ;MAHJ;EAhCJ,C;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAM,UAAU;AACZ,sBAAiB,8EAAjB;AACA,iBAAY,yEAAZ;AACA,mBAAc,4EAAd;AACA,mBAAc,2EAAd;AACA,mBAAc,2EAAd;AACA,qBAAgB,6EAAhB;AACA,yBAAoB,iFAApB;AACA,qBAAgB,6EAAhB;AACA,iBAAY,yEAAZ;AACA,mBAAc,4EAAd;AACA,mBAAc,4EAAd;EAXE;AAaN,6CAAe;AACX,aAAQ,gBAAS,MAAT,EAAiB,iBAAjB,EAAoC;AACxC,aAAI,UAAU;AACN,kBAAK;AACD,4BAAW,IAAX;AACA,0BAAS,IAAT;AACA,0BAAS,IAAT;cAHJ;AAKA,kBAAK;AACD,4BAAW,IAAX;AACA,0BAAS,IAAT;AACA,0BAAS,IAAT;cAHJ;UANJ;aAYA,kBAAkB,EAAlB,CAboC;;AAexC,sBAfwC;AAgBxC,uBAhBwC;AAiBxC,sBAjBwC;;AAmBxC,kBAAS,UAAT,GAAsB;AAClB,iBAAI,QAAmB,OAAO,QAAP,KAAoB,WAApB,EAAiC;AACpD,qBAAI,SAAS,SAAS,aAAT,CAAuB,kBAAvB,CAAT,CADgD;AAEpD,yBAAQ,GAAR,CAAY,SAAZ,GAAwB,SAAS,aAAT,CAAuB,kBAAvB,CAAxB,CAFoD;AAGpD,qBAAI,CAAC,QAAQ,GAAR,CAAY,SAAZ,EAAuB;AACxB,6BAAQ,GAAR,CAAY,SAAZ,GAAwB,SAAS,aAAT,CAAuB,QAAvB,CAAxB,CADwB;AAExB,6BAAQ,GAAR,CAAY,SAAZ,CAAsB,SAAtB,GAAkC,WAAlC,CAFwB;AAGxB,yBAAI,MAAJ,EAAY;AACR,gCAAO,WAAP,CAAmB,QAAQ,GAAR,CAAY,SAAZ,CAAnB,CADQ;sBAAZ;kBAHJ;AAOA,yBAAQ,GAAR,CAAY,SAAZ,GAAwB,QAAQ,GAAR,CAAY,SAAZ,CAAsB,UAAtB,CAAiC,IAAjC,CAAxB,CAVoD;;AAYpD,yBAAQ,GAAR,CAAY,OAAZ,GAAsB,SAAS,aAAT,CAAuB,sBAAvB,CAAtB,CAZoD;AAapD,qBAAI,CAAC,QAAQ,GAAR,CAAY,OAAZ,EAAqB;AACtB,6BAAQ,GAAR,CAAY,OAAZ,GAAsB,SAAS,aAAT,CAAuB,QAAvB,CAAtB,CADsB;AAEtB,6BAAQ,GAAR,CAAY,OAAZ,CAAoB,SAApB,GAAgC,eAAhC,CAFsB;AAGtB,yBAAI,MAAJ,EAAY;AACR,gCAAO,WAAP,CAAmB,QAAQ,GAAR,CAAY,OAAZ,CAAnB,CADQ;sBAAZ;kBAHJ;AAOA,yBAAQ,GAAR,CAAY,OAAZ,GAAsB,QAAQ,GAAR,CAAY,OAAZ,CAAoB,UAApB,CAA+B,IAA/B,CAAtB,CApBoD;;AAsBpD,yBAAQ,GAAR,CAAY,OAAZ,GAAsB,SAAS,aAAT,CAAuB,sBAAvB,CAAtB,CAtBoD;AAuBpD,qBAAI,QAAQ,GAAR,CAAY,OAAZ,EAAqB;AACrB,6BAAQ,GAAR,CAAY,OAAZ,GAAsB,QAAQ,GAAR,CAAY,OAAZ,CAAoB,UAApB,CAA+B,IAA/B,CAAtB,CADqB;kBAAzB;cAvBJ;UADJ;;AA8BA,kBAAS,WAAT,GAAuB;AACnB,oBAAO,OAAP,CAAe,OAAf,CAAuB,UAAS,YAAT,EAAuB;AAC1C,qBAAI,MAAJ;qBACI,gBAAgB,EAAhB;qBACA,cAAc,EAAd,CAHsC;;AAK1C,qBAAI,QAAO,mEAAP,KAAwB,QAAxB,EAAkC;AAClC,8BAAS,aAAa,MAAb,CADyB;AAElC,qCAAgB,aAAa,MAAb,CAFkB;kBAAtC,MAGO,IAAI,OAAO,YAAP,KAAwB,QAAxB,EAAkC;AACzC,8BAAS,YAAT,CADyC;kBAAtC;AAGP,qBAAI,MAAiB;AACjB,6BAAQ,GAAR,CAAY,6BAAZ,EAA2C,MAA3C,EADiB;kBAArB;AAGA,qBAAI,cAAc,WAAd,EAA2B;AAC3B,mCAAc,cACT,WADS,CACG,GADH,CACO,UAAC,UAAD,EAAgB;AAC7B,gCAAO,IAAI,QAAQ,UAAR,CAAJ,EAAP,CAD6B;sBAAhB,CADrB,CAD2B;kBAA/B;AAMA,iCAAgB,IAAhB,CAAqB,IAAI,QAAQ,MAAR,CAAJ,CAAoB,aAApB,EAAmC,WAAnC,CAArB,EApB0C;cAAvB,CAAvB,CADmB;AAuBnB,iBAAI,MAAiB;AACjB,yBAAQ,GAAR,CAAY,yBAAyB,gBAChC,GADgC,CAC5B,UAAC,MAAD;4BAAY,KAAK,SAAL,CAAe,EAAC,QAAQ,OAAO,MAAP,EAAe,QAAQ,OAAO,MAAP,EAA/C;kBAAZ,CAD4B,CAEhC,IAFgC,CAE3B,IAF2B,CAAzB,CAAZ,CADiB;cAArB;UAvBJ;;AA8BA,kBAAS,UAAT,GAAsB;AAClB,iBAAI,QAAmB,OAAO,QAAP,KAAoB,WAApB,EAAiC;AACpD,qBAAI,CAAJ;qBACI,MAAM,CAAC;AACH,2BAAM,QAAQ,GAAR,CAAY,SAAZ;AACN,2BAAM,OAAO,KAAP,CAAa,aAAb;kBAFJ,EAGH;AACC,2BAAM,QAAQ,GAAR,CAAY,OAAZ;AACN,2BAAM,OAAO,KAAP,CAAa,WAAb;kBALJ,CAAN,CAFgD;;AAUpD,sBAAK,IAAI,CAAJ,EAAO,IAAI,IAAI,MAAJ,EAAY,GAA5B,EAAiC;AAC7B,yBAAI,IAAI,CAAJ,EAAO,IAAP,KAAgB,IAAhB,EAAsB;AACtB,6BAAI,CAAJ,EAAO,IAAP,CAAY,KAAZ,CAAkB,OAAlB,GAA4B,OAA5B,CADsB;sBAA1B,MAEO;AACH,6BAAI,CAAJ,EAAO,IAAP,CAAY,KAAZ,CAAkB,OAAlB,GAA4B,MAA5B,CADG;sBAFP;kBADJ;cAVJ;UADJ;;;;;;;AA/EwC,kBAyG/B,eAAT,CAAyB,IAAzB,EAA+B,KAA/B,EAAsC,GAAtC,EAA2C;AACvC,sBAAS,UAAT,CAAoB,MAApB,EAA4B;AACxB,qBAAI,YAAY;AACZ,wBAAG,SAAS,KAAK,GAAL,CAAS,KAAT,CAAT;AACH,wBAAG,SAAS,KAAK,GAAL,CAAS,KAAT,CAAT;kBAFH,CADoB;;AAMxB,sBAAK,CAAL,EAAQ,CAAR,IAAa,UAAU,CAAV,CANW;AAOxB,sBAAK,CAAL,EAAQ,CAAR,IAAa,UAAU,CAAV,CAPW;AAQxB,sBAAK,CAAL,EAAQ,CAAR,IAAa,UAAU,CAAV,CARW;AASxB,sBAAK,CAAL,EAAQ,CAAR,IAAa,UAAU,CAAV,CATW;cAA5B;;;AADuC,uBAcvC,CAAW,GAAX,EAduC;AAevC,oBAAO,MAAM,CAAN,KAAY,CAAC,kBAAkB,iBAAlB,CAAoC,KAAK,CAAL,CAApC,EAA6C,CAA7C,CAAD,IACR,CAAC,kBAAkB,iBAAlB,CAAoC,KAAK,CAAL,CAApC,EAA6C,CAA7C,CAAD,CADJ,EACuD;AAC1D,wBAAO,KAAK,IAAL,CAAU,MAAM,CAAN,CAAjB,CAD0D;AAE1D,4BAAW,CAAC,GAAD,CAAX,CAF0D;cAD9D;AAKA,oBAAO,IAAP,CApBuC;UAA3C;;AAuBA,kBAAS,OAAT,CAAiB,GAAjB,EAAsB;AAClB,oBAAO,CAAC;AACJ,oBAAG,CAAC,IAAI,CAAJ,EAAO,CAAP,IAAY,IAAI,CAAJ,EAAO,CAAP,CAAZ,CAAD,GAA0B,CAA1B,GAA8B,IAAI,CAAJ,EAAO,CAAP,CAA9B;AACH,oBAAG,CAAC,IAAI,CAAJ,EAAO,CAAP,IAAY,IAAI,CAAJ,EAAO,CAAP,CAAZ,CAAD,GAA0B,CAA1B,GAA8B,IAAI,CAAJ,EAAO,CAAP,CAA9B;cAFA,EAGJ;AACC,oBAAG,CAAC,IAAI,CAAJ,EAAO,CAAP,IAAY,IAAI,CAAJ,EAAO,CAAP,CAAZ,CAAD,GAA0B,CAA1B,GAA8B,IAAI,CAAJ,EAAO,CAAP,CAA9B;AACH,oBAAG,CAAC,IAAI,CAAJ,EAAO,CAAP,IAAY,IAAI,CAAJ,EAAO,CAAP,CAAZ,CAAD,GAA0B,CAA1B,GAA8B,IAAI,CAAJ,EAAO,CAAP,CAA9B;cALA,CAAP,CADkB;UAAtB;;AAUA,kBAAS,SAAT,CAAmB,IAAnB,EAAyB;AACrB,iBAAI,SAAS,IAAT;iBACA,CADJ;iBAEI,cAAc,kEAAU,cAAV,CAAyB,iBAAzB,EAA4C,KAAK,CAAL,CAA5C,EAAqD,KAAK,CAAL,CAArD,CAAd,CAHiB;;AAKrB,iBAAI,QAAmB,OAAO,KAAP,CAAa,aAAb,EAA4B;AAC/C,4FAAW,QAAX,CAAoB,IAApB,EAA0B,EAAC,GAAG,GAAH,EAAQ,GAAG,GAAH,EAAnC,EAA4C,QAAQ,GAAR,CAAY,OAAZ,EAAqB,EAAC,OAAO,KAAP,EAAc,WAAW,CAAX,EAAhF,EAD+C;AAE/C,mFAAU,KAAV,CAAgB,cAAhB,CAA+B,YAAY,IAAZ,EAAkB,QAAQ,GAAR,CAAY,SAAZ,CAAjD,CAF+C;cAAnD;;AAKA,+EAAU,YAAV,CAAuB,WAAvB,EAVqB;;AAYrB,iBAAI,QAAmB,OAAO,KAAP,CAAa,WAAb,EAA0B;AAC7C,mFAAU,KAAV,CAAgB,YAAhB,CAA6B,YAAY,IAAZ,EAAkB,QAAQ,GAAR,CAAY,OAAZ,CAA/C,CAD6C;cAAjD;;AAIA,kBAAM,IAAI,CAAJ,EAAO,IAAI,gBAAgB,MAAhB,IAA0B,WAAW,IAAX,EAAiB,GAA5D,EAAiE;AAC7D,0BAAS,gBAAgB,CAAhB,EAAmB,aAAnB,CAAiC,YAAY,IAAZ,CAA1C,CAD6D;cAAjE;AAGA,iBAAI,WAAW,IAAX,EAAgB;AAChB,wBAAO,IAAP,CADgB;cAApB;AAGA,oBAAO;AACH,6BAAY,MAAZ;AACA,8BAAa,WAAb;cAFJ,CAtBqB;UAAzB;;;;;;;;;AA1IwC,kBA6K/B,mBAAT,CAA6B,GAA7B,EAAkC,IAAlC,EAAwC,SAAxC,EAAmD;AAC/C,iBAAI,aAAa,KAAK,IAAL,CAAU,KAAK,GAAL,CAAS,IAAI,CAAJ,EAAO,CAAP,IAAY,IAAI,CAAJ,EAAO,CAAP,CAAZ,EAAuB,CAAhC,IAAqC,KAAK,GAAL,CAAU,IAAI,CAAJ,EAAO,CAAP,IAAY,IAAI,CAAJ,EAAO,CAAP,CAAZ,EAAwB,CAAlC,CAArC,CAAvB;iBACA,CADJ;iBAEI,SAAS,EAAT;iBACA,SAAS,IAAT;iBACA,GAJJ;iBAKI,SALJ;iBAMI,OAAO,KAAK,GAAL,CAAS,SAAT,CAAP;iBACA,OAAO,KAAK,GAAL,CAAS,SAAT,CAAP,CAR2C;;AAU/C,kBAAM,IAAI,CAAJ,EAAO,IAAI,MAAJ,IAAc,WAAW,IAAX,EAAiB,GAA5C,EAAiD;;AAE7C,uBAAM,aAAa,MAAb,GAAsB,CAAtB,IAA2B,IAAI,CAAJ,KAAU,CAAV,GAAc,CAAC,CAAD,GAAK,CAAnB,CAA3B,CAFuC;AAG7C,6BAAY;AACR,wBAAG,MAAM,IAAN;AACH,wBAAG,MAAM,IAAN;kBAFP,CAH6C;AAO7C,sBAAK,CAAL,EAAQ,CAAR,IAAa,UAAU,CAAV,CAPgC;AAQ7C,sBAAK,CAAL,EAAQ,CAAR,IAAa,UAAU,CAAV,CARgC;AAS7C,sBAAK,CAAL,EAAQ,CAAR,IAAa,UAAU,CAAV,CATgC;AAU7C,sBAAK,CAAL,EAAQ,CAAR,IAAa,UAAU,CAAV,CAVgC;;AAY7C,0BAAS,UAAU,IAAV,CAAT,CAZ6C;cAAjD;AAcA,oBAAO,MAAP,CAxB+C;UAAnD;;AA2BA,kBAAS,aAAT,CAAuB,IAAvB,EAA6B;AACzB,oBAAO,KAAK,IAAL,CACH,KAAK,GAAL,CAAS,KAAK,GAAL,CAAS,KAAK,CAAL,EAAQ,CAAR,GAAY,KAAK,CAAL,EAAQ,CAAR,CAA9B,EAA0C,CAA1C,IACA,KAAK,GAAL,CAAS,KAAK,GAAL,CAAS,KAAK,CAAL,EAAQ,CAAR,GAAY,KAAK,CAAL,EAAQ,CAAR,CAA9B,EAA0C,CAA1C,CADA,CADJ,CADyB;UAA7B;;;;;;;;AAxMwC,kBAoN/B,sBAAT,CAA+B,GAA/B,EAAoC;AAChC,iBAAI,IAAJ;iBACI,SADJ;iBAEI,MAAM,QAAQ,GAAR,CAAY,OAAZ;iBACN,MAHJ;iBAII,UAJJ,CADgC;;AAOhC,iBAAI,MAAiB;AACjB,qBAAI,OAAO,KAAP,CAAa,eAAb,IAAgC,GAAhC,EAAqC;AACrC,gGAAW,QAAX,CAAoB,GAApB,EAAyB,EAAC,GAAG,CAAH,EAAM,GAAG,CAAH,EAAhC,EAAuC,GAAvC,EAA4C,EAAC,OAAO,MAAP,EAAe,WAAW,CAAX,EAA5D,EADqC;kBAAzC;cADJ;;AAMA,oBAAO,QAAQ,GAAR,CAAP,CAbgC;AAchC,0BAAa,cAAc,IAAd,CAAb,CAdgC;AAehC,yBAAY,KAAK,KAAL,CAAW,KAAK,CAAL,EAAQ,CAAR,GAAY,KAAK,CAAL,EAAQ,CAAR,EAAW,KAAK,CAAL,EAAQ,CAAR,GAAY,KAAK,CAAL,EAAQ,CAAR,CAA1D,CAfgC;AAgBhC,oBAAO,gBAAgB,IAAhB,EAAsB,SAAtB,EAAiC,KAAK,KAAL,CAAW,aAAa,GAAb,CAA5C,CAAP,CAhBgC;AAiBhC,iBAAI,SAAS,IAAT,EAAc;AACd,wBAAO,IAAP,CADc;cAAlB;;AAIA,sBAAS,UAAU,IAAV,CAAT,CArBgC;AAsBhC,iBAAI,WAAW,IAAX,EAAiB;AACjB,0BAAS,oBAAoB,GAApB,EAAyB,IAAzB,EAA+B,SAA/B,CAAT,CADiB;cAArB;;AAIA,iBAAI,WAAW,IAAX,EAAiB;AACjB,wBAAO,IAAP,CADiB;cAArB;;AAIA,iBAAI,QAAmB,MAAnB,IAA6B,OAAO,KAAP,CAAa,YAAb,IAA6B,GAA1D,EAA+D;AAC/D,4FAAW,QAAX,CAAoB,IAApB,EAA0B,EAAC,GAAG,GAAH,EAAQ,GAAG,GAAH,EAAnC,EAA4C,GAA5C,EAAiD,EAAC,OAAO,KAAP,EAAc,WAAW,CAAX,EAAhE,EAD+D;cAAnE;;AAIA,oBAAO;AACH,6BAAY,OAAO,UAAP;AACZ,uBAAM,IAAN;AACA,wBAAO,SAAP;AACA,0BAAS,OAAO,WAAP,CAAmB,IAAnB;AACT,4BAAW,OAAO,WAAP,CAAmB,SAAnB;cALf,CAlCgC;UAApC;;AA2CA,gBAAO;AACH,oCAAuB,+BAAS,GAAT,EAAc;AACjC,wBAAO,uBAAsB,GAAtB,CAAP,CADiC;cAAd;AAGvB,sCAAyB,iCAAS,KAAT,EAAgB;AACrC,qBAAI,CAAJ;qBAAO,MAAP;qBACI,WAAW,EAAX;qBACA,WAAW,OAAO,QAAP,CAHsB;;AAKrC,sBAAM,IAAI,CAAJ,EAAO,IAAI,MAAM,MAAN,EAAc,GAA/B,EAAoC;AAChC,yBAAM,MAAM,MAAM,CAAN,CAAN,CAD0B;AAEhC,8BAAS,uBAAsB,GAAtB,KAA8B,EAA9B,CAFuB;AAGhC,4BAAO,GAAP,GAAa,GAAb,CAHgC;;AAKhC,yBAAI,QAAJ,EAAc;AACV,kCAAS,IAAT,CAAc,MAAd,EADU;sBAAd,MAEO,IAAI,OAAO,UAAP,EAAmB;AAC1B,gCAAO,MAAP,CAD0B;sBAAvB;kBAPX;;AAYA,qBAAI,QAAJ,EAAc;AACV,4BAAO;AACH,2CADG;sBAAP,CADU;kBAAd;cAjBqB;AAuBzB,yBAAY,oBAAS,OAAT,EAAkB;AAC1B,wBAAO,OAAP,GAAiB,OAAjB,CAD0B;AAE1B,iCAAgB,MAAhB,GAAyB,CAAzB,CAF0B;AAG1B,+BAH0B;cAAlB;UA3BhB,CA/PwC;MAApC;EADZ,C;;;;;;AC3BA,KAAI,YAAY,EAAZ;;AAEJ,KAAI,QAAQ;AACR,UAAK;AACD,aAAI,CAAJ;AACA,eAAM,CAAC,CAAD;MAFV;EADA;;;;;;;;;;AAeJ,WAAU,cAAV,GAA2B,UAAS,YAAT,EAAuB,EAAvB,EAA2B,EAA3B,EAA+B;AACtD,SAAI,KAAK,GAAG,CAAH,GAAO,CAAP;SACL,KAAK,GAAG,CAAH,GAAO,CAAP;SACL,KAAK,GAAG,CAAH,GAAO,CAAP;SACL,KAAK,GAAG,CAAH,GAAO,CAAP;SACL,QAAQ,KAAK,GAAL,CAAS,KAAK,EAAL,CAAT,GAAoB,KAAK,GAAL,CAAS,KAAK,EAAL,CAA7B;SACR,MALJ;SAMI,MANJ;SAOI,KAPJ;SAQI,KARJ;SASI,CATJ;SAUI,GAVJ;SAWI,CAXJ;SAYI,OAAO,EAAP;SACA,YAAY,aAAa,IAAb;SACZ,QAAQ,aAAa,IAAb,CAAkB,CAAlB;SACR,MAAM,CAAN;SACA,GAhBJ;SAiBI,MAAM,GAAN;SACA,MAAM,CAAN,CAnBkD;;AAqBtD,cAAS,IAAT,CAAc,CAAd,EAAiB,CAAjB,EAAoB;AAChB,eAAM,UAAU,IAAI,KAAJ,GAAY,CAAZ,CAAhB,CADgB;AAEhB,gBAAO,GAAP,CAFgB;AAGhB,eAAM,MAAM,GAAN,GAAY,GAAZ,GAAkB,GAAlB,CAHU;AAIhB,eAAM,MAAM,GAAN,GAAY,GAAZ,GAAkB,GAAlB,CAJU;AAKhB,cAAK,IAAL,CAAU,GAAV,EALgB;MAApB;;AAQA,SAAI,KAAJ,EAAW;AACP,eAAM,EAAN,CADO;AAEP,cAAK,EAAL,CAFO;AAGP,cAAK,GAAL,CAHO;;AAKP,eAAM,EAAN,CALO;AAMP,cAAK,EAAL,CANO;AAOP,cAAK,GAAL,CAPO;MAAX;AASA,SAAI,KAAK,EAAL,EAAS;AACT,eAAM,EAAN,CADS;AAET,cAAK,EAAL,CAFS;AAGT,cAAK,GAAL,CAHS;;AAKT,eAAM,EAAN,CALS;AAMT,cAAK,EAAL,CANS;AAOT,cAAK,GAAL,CAPS;MAAb;AASA,cAAS,KAAK,EAAL,CA/C6C;AAgDtD,cAAS,KAAK,GAAL,CAAS,KAAK,EAAL,CAAlB,CAhDsD;AAiDtD,aAAQ,MAAC,GAAS,CAAT,GAAc,CAAf,CAjD8C;AAkDtD,SAAI,EAAJ,CAlDsD;AAmDtD,aAAQ,KAAK,EAAL,GAAU,CAAV,GAAc,CAAC,CAAD,CAnDgC;AAoDtD,UAAM,IAAI,EAAJ,EAAQ,IAAI,EAAJ,EAAQ,GAAtB,EAA2B;AACvB,aAAI,KAAJ,EAAU;AACN,kBAAK,CAAL,EAAQ,CAAR,EADM;UAAV,MAEO;AACH,kBAAK,CAAL,EAAQ,CAAR,EADG;UAFP;AAKA,iBAAQ,QAAQ,MAAR,CANe;AAOvB,aAAI,QAAQ,CAAR,EAAW;AACX,iBAAI,IAAI,KAAJ,CADO;AAEX,qBAAQ,QAAQ,MAAR,CAFG;UAAf;MAPJ;;AAaA,YAAO;AACH,eAAM,IAAN;AACA,cAAK,GAAL;AACA,cAAK,GAAL;MAHJ,CAjEsD;EAA/B;;;;;;;AA6E3B,WAAU,YAAV,GAAyB,UAAS,MAAT,EAAiB;AACtC,SAAI,MAAM,OAAO,GAAP;SACN,MAAM,OAAO,GAAP;SACN,OAAO,OAAO,IAAP;SACP,KAHJ;SAII,MAJJ;SAKI,SAAS,MAAM,CAAC,MAAM,GAAN,CAAD,GAAc,CAAd;SACf,UAAU,EAAV;SACA,UAPJ;SAQI,GARJ;SASI,YAAY,CAAC,MAAM,GAAN,CAAD,GAAc,EAAd;SACZ,aAAa,CAAC,SAAD;SACb,CAXJ;SAYI,CAZJ;;;AADsC,eAgBtC,GAAa,KAAK,CAAL,IAAU,MAAV,GAAmB,MAAM,GAAN,CAAU,EAAV,GAAe,MAAM,GAAN,CAAU,IAAV,CAhBT;AAiBtC,aAAQ,IAAR,CAAa;AACT,cAAK,CAAL;AACA,cAAK,KAAK,CAAL,CAAL;MAFJ,EAjBsC;AAqBtC,UAAM,IAAI,CAAJ,EAAO,IAAI,KAAK,MAAL,GAAc,CAAd,EAAiB,GAAlC,EAAuC;AACnC,iBAAS,KAAK,IAAI,CAAJ,CAAL,GAAc,KAAK,CAAL,CAAd,CAD0B;AAEnC,kBAAU,KAAK,IAAI,CAAJ,CAAL,GAAc,KAAK,IAAI,CAAJ,CAAnB,CAFyB;AAGnC,aAAI,KAAC,GAAQ,MAAR,GAAkB,UAAnB,IAAiC,KAAK,IAAI,CAAJ,CAAL,GAAe,SAAS,GAAT,EAAe;AAC/D,mBAAM,MAAM,GAAN,CAAU,IAAV,CADyD;UAAnE,MAEO,IAAI,KAAC,GAAQ,MAAR,GAAkB,SAAnB,IAAgC,KAAK,IAAI,CAAJ,CAAL,GAAe,SAAS,GAAT,EAAe;AACrE,mBAAM,MAAM,GAAN,CAAU,EAAV,CAD+D;UAAlE,MAEA;AACH,mBAAM,UAAN,CADG;UAFA;;AAMP,aAAI,eAAe,GAAf,EAAoB;AACpB,qBAAQ,IAAR,CAAa;AACT,sBAAK,CAAL;AACA,sBAAK,KAAK,CAAL,CAAL;cAFJ,EADoB;AAKpB,0BAAa,GAAb,CALoB;UAAxB;MAXJ;AAmBA,aAAQ,IAAR,CAAa;AACT,cAAK,KAAK,MAAL;AACL,cAAK,KAAK,KAAK,MAAL,GAAc,CAAd,CAAV;MAFJ,EAxCsC;;AA6CtC,UAAM,IAAI,QAAQ,CAAR,EAAW,GAAX,EAAgB,IAAI,QAAQ,CAAR,EAAW,GAAX,EAAgB,GAA9C,EAAmD;AAC/C,cAAK,CAAL,IAAU,KAAK,CAAL,IAAU,MAAV,GAAmB,CAAnB,GAAuB,CAAvB,CADqC;MAAnD;;;AA7CsC,UAkDhC,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,GAAiB,CAAjB,EAAoB,GAArC,EAA0C;AACtC,aAAI,QAAQ,IAAI,CAAJ,CAAR,CAAe,GAAf,GAAqB,QAAQ,CAAR,EAAW,GAAX,EAAgB;AACrC,yBAAY,OAAC,CAAQ,CAAR,EAAW,GAAX,GAAiB,CAAE,QAAQ,IAAI,CAAJ,CAAR,CAAe,GAAf,GAAqB,QAAQ,CAAR,EAAW,GAAX,CAAtB,GAAwC,CAAxC,GAA6C,CAA9C,GAAmD,CAArE,CADyB;UAAzC,MAEO;AACH,yBAAY,OAAC,CAAQ,IAAI,CAAJ,CAAR,CAAe,GAAf,GAAsB,CAAC,QAAQ,CAAR,EAAW,GAAX,GAAiB,QAAQ,IAAI,CAAJ,CAAR,CAAe,GAAf,CAAlB,GAAwC,CAAxC,GAA8C,CAArE,CADT;UAFP;;AAMA,cAAM,IAAI,QAAQ,CAAR,EAAW,GAAX,EAAgB,IAAI,QAAQ,IAAI,CAAJ,CAAR,CAAe,GAAf,EAAoB,GAAlD,EAAuD;AACnD,kBAAK,CAAL,IAAU,KAAK,CAAL,IAAU,SAAV,GAAsB,CAAtB,GAA0B,CAA1B,CADyC;UAAvD;MAPJ;;AAYA,YAAO;AACH,eAAM,IAAN;AACA,oBAAW,SAAX;MAFJ,CA9DsC;EAAjB;;;;;AAuEzB,WAAU,KAAV,GAAkB;AACd,qBAAgB,wBAAS,IAAT,EAAe,MAAf,EAAuB;AACnC,aAAI,CAAJ;aACI,MAAM,OAAO,UAAP,CAAkB,IAAlB,CAAN,CAF+B;AAGnC,gBAAO,KAAP,GAAe,KAAK,MAAL,CAHoB;AAInC,gBAAO,MAAP,GAAgB,GAAhB,CAJmC;;AAMnC,aAAI,SAAJ,GANmC;AAOnC,aAAI,WAAJ,GAAkB,MAAlB,CAPmC;AAQnC,cAAM,IAAI,CAAJ,EAAO,IAAI,KAAK,MAAL,EAAa,GAA9B,EAAmC;AAC/B,iBAAI,MAAJ,CAAW,CAAX,EAAc,GAAd,EAD+B;AAE/B,iBAAI,MAAJ,CAAW,CAAX,EAAc,MAAM,KAAK,CAAL,CAAN,CAAd,CAF+B;UAAnC;AAIA,aAAI,MAAJ,GAZmC;AAanC,aAAI,SAAJ,GAbmC;MAAvB;;AAgBhB,mBAAc,sBAAS,IAAT,EAAe,MAAf,EAAuB;AACjC,aAAI,MAAM,OAAO,UAAP,CAAkB,IAAlB,CAAN;aAA+B,CAAnC,CADiC;;AAGjC,gBAAO,KAAP,GAAe,KAAK,MAAL,CAHkB;AAIjC,aAAI,SAAJ,GAAgB,OAAhB,CAJiC;AAKjC,cAAM,IAAI,CAAJ,EAAO,IAAI,KAAK,MAAL,EAAa,GAA9B,EAAmC;AAC/B,iBAAI,KAAK,CAAL,MAAY,CAAZ,EAAe;AACf,qBAAI,QAAJ,CAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,EAAsB,GAAtB,EADe;cAAnB;UADJ;MALU;EAjBlB;;AA8BA,6CAAe,SAAf,C;;;;;;;;;;;;;;;;ACjMA,KAAI,SAAJ;;AAEA,UAAS,YAAT,CAAsB,KAAtB,EAA6B;AACzB,YAAO,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AACpC,aAAI,WAAW,EAAX,CADgC;;AAGpC,kBAAS,UAAT,GAAsB;AAClB,iBAAI,WAAW,CAAX,EAAc;AACd,qBAAI,MAAM,UAAN,GAAmB,CAAnB,IAAwB,MAAM,WAAN,GAAoB,CAApB,EAAuB;AAC/C,yBAAI,MAAiB;AACjB,iCAAQ,GAAR,CAAY,MAAM,UAAN,GAAmB,OAAnB,GAA6B,MAAM,WAAN,GAAoB,IAAjD,CAAZ,CADiB;sBAArB;AAGA,+BAJ+C;kBAAnD,MAKO;AACH,4BAAO,UAAP,CAAkB,UAAlB,EAA8B,GAA9B,EADG;kBALP;cADJ,MASO;AACH,wBAAO,iDAAP,EADG;cATP;AAYA,wBAbkB;UAAtB;AAeA,sBAlBoC;MAArB,CAAnB,CADyB;EAA7B;;;;;;;;AA6BA,UAAS,UAAT,CAAoB,KAApB,EAA2B,WAA3B,EAAwC;AACpC,YAAO,UAAU,YAAV,CAAuB,YAAvB,CAAoC,WAApC,EACN,IADM,CACD,UAAC,MAAD,EAAY;AACd,gBAAO,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAa;AAC5B,yBAAY,MAAZ,CAD4B;AAE5B,mBAAM,YAAN,CAAmB,UAAnB,EAA+B,MAA/B,EAF4B;AAG5B,mBAAM,SAAN,GAAkB,MAAlB,CAH4B;AAI5B,mBAAM,gBAAN,CAAuB,gBAAvB,EAAyC,YAAM;AAC3C,uBAAM,IAAN,GAD2C;AAE3C,2BAF2C;cAAN,CAAzC,CAJ4B;UAAb,CAAnB,CADc;MAAZ,CADC,CAYN,IAZM,CAYD,aAAa,IAAb,CAAkB,IAAlB,EAAwB,KAAxB,CAZC,CAAP,CADoC;EAAxC;;AAgBA,UAAS,qBAAT,CAA+B,gBAA/B,EAAiD;AAC7C,SAAM,aAAa,+EAAK,gBAAL,EAAuB,CAAC,OAAD,EAAU,QAAV,EAAoB,YAApB,EAClC,aADkC,EACnB,UADmB,CAAvB,CAAb,CADuC;;AAI7C,SAAI,OAAO,iBAAiB,cAAjB,KAAoC,WAA3C,IACI,iBAAiB,cAAjB,GAAkC,CAAlC,EAAqC;AACzC,oBAAW,WAAX,GAAyB,iBAAiB,cAAjB,CADgB;AAEzC,iBAAQ,GAAR,CAAY,+EAAZ,EAFyC;MAD7C;AAKA,SAAI,OAAO,iBAAiB,MAAjB,KAA4B,WAAnC,EAAgD;AAChD,oBAAW,UAAX,GAAwB,iBAAiB,MAAjB,CADwB;AAEhD,iBAAQ,GAAR,CAAY,uEAAZ,EAFgD;MAApD;AAIA,YAAO,UAAP,CAb6C;EAAjD;;AAgBA,UAAS,iBAAT,CAA2B,MAA3B,EAAmC,WAAnC,EAAgD;AAC5C,SAAI,OAAO,YAAY,KAAZ,CAAkB,QAAlB,KAA+B,WAAtC,IAAqD,CAAC,MAAD,EAAQ;AAC7D,gBAAO,QAAQ,OAAR,CAAgB,WAAhB,CAAP,CAD6D;MAAjE;AAGA,SAAK,OAAO,gBAAP,KAA4B,WAA5B,IACG,OAAO,iBAAiB,UAAjB,KAAgC,WAAvC,EAAoD;AACxD,gBAAO,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAa;AAC5B,8BAAiB,UAAjB,CAA4B,UAAC,WAAD,EAAiB;AACzC,qBAAM,cAAc,YAAY,MAAZ,CAAmB,UAAC,UAAD;4BACnC,WAAW,IAAX,KAAoB,OAApB,IAA+B,WAAW,MAAX,KAAsB,MAAtB;kBADI,CAAnB,CAEjB,CAFiB,CAAd,CADmC;AAIzC,qBAAI,WAAJ,EAAiB;AACb,4BAAO,QAAQ,gFAAM,EAAN,EAAU,WAAV,EACX,EAAC,OAAO,EAAC,UAAU,YAAY,EAAZ,EAAlB,EADU,CAAR,CAAP,CADa;kBAAjB;AAIA,wBAAO,QAAQ,WAAR,CAAP,CARyC;cAAjB,CAA5B,CAD4B;UAAb,CAAnB,CADwD;MAD5D;AAeA,YAAO,QAAQ,OAAR,CAAgB,gFAAM,EAAN,EAAU,WAAV,EAAuB,EAAC,OAAO,EAAC,YAAY,MAAZ,EAAR,EAAxB,CAAhB,CAAP,CAnB4C;EAAhD;;AAsBA,UAAS,eAAT,CAAyB,gBAAzB,EAA2C;AACvC,SAAM,cAAc;AAChB,gBAAO,KAAP;AACA,gBAAO,sBAAsB,gBAAtB,CAAP;MAFE,CADiC;AAKvC,YAAO,kBAAkB,YAAY,KAAZ,CAAkB,UAAlB,EAA8B,WAAhD,CAAP,CALuC;EAA3C;;AAQA,6CAAe;AACX,cAAS,iBAAS,KAAT,EAAgB,gBAAhB,EAAkC;AACvC,gBAAO,gBAAgB,gBAAhB,EACF,IADE,CACG,WAAW,IAAX,CAAgB,IAAhB,EAAsB,KAAtB,CADH,CAAP,CADuC;MAAlC;AAIT,cAAS,mBAAW;AAChB,aAAI,SAAS,aAAa,UAAU,cAAV,EAAb,CADG;AAEhB,aAAI,UAAU,OAAO,MAAP,EAAe;AACzB,oBAAO,CAAP,EAAU,IAAV,GADyB;UAA7B;AAGA,qBAAY,IAAZ,CALgB;MAAX;EALb,C;;;;;;;AC/FA;;AAMA,UAAS,gBAAT,CAA0B,MAA1B,EAAkC,UAAlC,EAA8C;AAC1C,SAAI,OAAO,KAAP,KAAiB,WAAW,CAAX,EAAc;AAC/B,aAAI,MAAiB;AACjB,qBAAQ,GAAR,CAAY,2CAAZ,EADiB;UAArB;AAGA,gBAAO,KAAP,GAAe,WAAW,CAAX,CAJgB;MAAnC;AAMA,SAAI,OAAO,MAAP,KAAkB,WAAW,CAAX,EAAc;AAChC,aAAI,MAAiB;AACjB,qBAAQ,GAAR,CAAY,2CAAZ,EADiB;UAArB;AAGA,gBAAO,MAAP,GAAgB,WAAW,CAAX,CAJgB;MAApC;EAPJ;;AAeA,KAAI,eAAe,EAAf;;AAEJ,cAAa,MAAb,GAAsB,UAAS,WAAT,EAAsB,MAAtB,EAA8B;AAChD,SAAI,QAAQ,EAAR;SACA,gBAAgB,YAAY,SAAZ,EAAhB;SACA,cAAc,+EAAS,YAAY,YAAZ,EAAT,EAAqC,YAAY,aAAZ,EAArC,CAAd;SACA,cAAc,YAAY,aAAZ,EAAd;SACA,QAAQ,+EAAS,YAAY,QAAZ,EAAT,EAAiC,YAAY,SAAZ,EAAjC,CAAR;SACA,WAAW,YAAY,WAAZ,EAAX;SACA,MAAM,SAAS,CAAT;SACN,MAAM,SAAS,CAAT;SACN,OARJ;SASI,OAAO,IAAP;SACA,QAAQ,IAAR,CAX4C;;AAahD,eAAU,SAAS,MAAT,GAAkB,SAAS,aAAT,CAAuB,QAAvB,CAAlB,CAbsC;AAchD,aAAQ,KAAR,GAAgB,YAAY,CAAZ,CAdgC;AAehD,aAAQ,MAAR,GAAiB,YAAY,CAAZ,CAf+B;AAgBhD,YAAO,QAAQ,UAAR,CAAmB,IAAnB,CAAP,CAhBgD;AAiBhD,aAAQ,IAAI,UAAJ,CAAe,MAAM,CAAN,GAAU,MAAM,CAAN,CAAjC,CAjBgD;AAkBhD,SAAI,MAAiB;AACjB,iBAAQ,GAAR,CAAY,cAAZ,EAA4B,KAAK,SAAL,CAAe;AACvC,mBAAM,KAAN;AACA,uBAAU,QAAV;AACA,wBAAW,WAAX;AACA,yBAAY,WAAZ;UAJwB,CAA5B,EADiB;MAArB;;;;;AAlBgD,UA8BhD,CAAM,UAAN,GAAmB,UAAS,IAAT,EAAe;AAC9B,iBAAQ,IAAR,CAD8B;MAAf;;;;;AA9B6B,UAqChD,CAAM,OAAN,GAAgB,YAAW;AACvB,gBAAO,KAAP,CADuB;MAAX;;;;;;AArCgC,UA6ChD,CAAM,IAAN,GAAa,YAAW;AACpB,aAAI,eAAe,cAAc,UAAd;aACf,QAAQ,YAAY,QAAZ,EAAR;aACA,OAFJ,CADoB;AAIpB,aAAI,KAAJ,EAAW;AACP,8BAAiB,OAAjB,EAA0B,WAA1B,EADO;AAEP,kBAAK,SAAL,CAAe,KAAf,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,YAAY,CAAZ,EAAe,YAAY,CAAZ,CAA3C,CAFO;AAGP,uBAAU,KAAK,YAAL,CAAkB,GAAlB,EAAuB,GAAvB,EAA4B,MAAM,CAAN,EAAS,MAAM,CAAN,CAArC,CAA8C,IAA9C,CAHH;AAIP,iBAAI,YAAJ,EAAiB;AACb,gGAAgC,OAAhC,EAAyC,KAAzC,EAAgD,KAAhD,EADa;cAAjB,MAEO;AACH,gGAAY,OAAZ,EAAqB,KAArB,EAA4B,aAA5B,EADG;cAFP;AAKA,oBAAO,IAAP,CATO;UAAX,MAUO;AACH,oBAAO,KAAP,CADG;UAVP;MAJS,CA7CmC;;AAgEhD,WAAM,OAAN,GAAgB,YAAW;AACvB,gBAAO,KAAP,CADuB;MAAX,CAhEgC;;AAoEhD,YAAO,KAAP,CApEgD;EAA9B;;AAuEtB,6CAAe,YAAf,C;;;;;;AC9FA,KAAI,cAAc,EAAd;AACJ,aAAY,IAAZ,GAAmB,UAAS,SAAT,EAAoB,QAApB,EAA8B,MAA9B,EAAsC,IAAtC,EAA4C,QAA5C,EAAsD;AACrE,SAAI,qBAAqB,IAAI,KAAJ,CAAU,IAAV,CAArB;SACA,kBAAkB,IAAI,KAAJ,CAAU,mBAAmB,MAAnB,CAA5B;SACA,CAFJ;SAGI,GAHJ;SAII,GAJJ,CADqE;;AAOrE,SAAI,aAAa,KAAb,EAAoB;AACpB,4BAAmB,CAAnB,IAAwB,SAAxB,CADoB;MAAxB,MAEO;AACH,cAAM,IAAI,CAAJ,EAAO,IAAI,mBAAmB,MAAnB,EAA2B,GAA5C,EAAiD;AAC7C,mBAAO,SAAS,CAAT,CADsC;AAE7C,gCAAmB,CAAnB,IAAwB,YAAY,QAAZ,GAAuB,CAAC,OAAO,GAAP,CAAD,CAAa,KAAb,CAAmB,CAAC,CAAD,CAA1C,GAAgD,MAAhD,CAFqB;UAAjD;MAHJ;AAQA,qBAAgB,SAAhB,GAA4B,EAA5B,CAfqE;AAgBrE,qBAAgB,QAAhB,GAA2B,UAAS,KAAT,EAAgB;AACvC,yBAAgB,SAAhB,CAA0B,IAA1B,CAA+B,KAA/B,EADuC;MAAhB,CAhB0C;AAmBrE,qBAAgB,MAAhB,GAAyB,UAAS,SAAT,EAAoB;AACzC,aAAI,gBAAgB,gBAAgB,SAAhB,CADqB;AAEzC,cAAK,IAAI,IAAI,CAAJ,EAAO,IAAI,cAAc,MAAd,EAAsB,GAA1C,EAA+C;AAC3C,iBAAI,cAAc,CAAd,MAAqB,SAArB,EAAgC;AAChC,+BAAc,MAAd,CAAqB,CAArB,EAAwB,CAAxB,EADgC;AAEhC,sBAAK,IAAI,IAAI,CAAJ,EAAO,IAAI,mBAAmB,MAAnB,EAA2B,GAA/C,EAAoD;AAChD,yBAAI,UAAU,mBAAmB,CAAnB,EAAsB,MAAtB,CAA6B,mBAAmB,CAAnB,EAAsB,WAAtB,CAAkC,GAAlC,CAA7B,CAAV,CAD4C;AAEhD,yBAAI,UAAU,GAAV,CAAc,WAAd,CAA0B,OAA1B,MAAuC,CAAC,CAAD,EAAI;AAC3C,yCAAgB,CAAhB,IAAqB,SAArB,CAD2C;AAE3C,+BAF2C;sBAA/C;kBAFJ;AAOA,uBATgC;cAApC;UADJ;AAaA,aAAI,cAAc,MAAd,KAAyB,CAAzB,EAA4B;AAC5B,iBAAI,MAAiB;AACjB,yBAAQ,GAAR,CAAY,eAAZ,EADiB;cAArB;AAGA,sBAAS,KAAT,CAAe,IAAf,EAAqB,CAAC,eAAD,CAArB,EAJ4B;UAAhC;MAfqB,CAnB4C;;AA0CrE,UAAM,IAAI,CAAJ,EAAO,IAAI,mBAAmB,MAAnB,EAA2B,GAA5C,EAAiD;AAC7C,eAAM,IAAI,KAAJ,EAAN,CAD6C;AAE7C,yBAAgB,QAAhB,CAAyB,GAAzB,EAF6C;AAG7C,0BAAiB,GAAjB,EAAsB,eAAtB,EAH6C;AAI7C,aAAI,GAAJ,GAAU,mBAAmB,CAAnB,CAAV,CAJ6C;MAAjD;EA1Ce;;AAkDnB,UAAS,gBAAT,CAA0B,GAA1B,EAA+B,eAA/B,EAAgD;AAC5C,SAAI,MAAJ,GAAa,YAAW;AACpB,yBAAgB,MAAhB,CAAuB,IAAvB,EADoB;MAAX,CAD+B;EAAhD;;AAMA,6CAAgB,WAAhB,C;;;;;;;ACzDA;;AAEA,KAAI,cAAc,EAAd;AACJ,aAAY,iBAAZ,GAAgC,UAAS,KAAT,EAAgB;AAC5C,SAAI,OAAO,EAAP;SACA,UAAU,IAAV;SACA,cAAc,CAAC,WAAD,EAAc,OAAd,CAAd;SACA,iBAAiB,EAAjB;SACA,gBAJJ;SAKI,iBALJ;SAMI,YAAY,EAAC,GAAG,CAAH,EAAM,GAAG,CAAH,EAAnB;SACA,cAAc,EAAC,GAAG,CAAH,EAAM,GAAG,CAAH,EAArB,CARwC;;AAU5C,cAAS,QAAT,GAAoB;AAChB,aAAI,QAAQ,MAAM,UAAN;aACR,SAAS,MAAM,WAAN,CAFG;;AAIhB,4BACI,QAAQ,IAAR,GAAe,QAAQ,MAAR,GAAiB,CAAjB,GAAqB,QAAQ,IAAR,GAAe,KAAK,KAAL,CAAW,KAAC,GAAQ,MAAR,GAAkB,QAAQ,IAAR,CAAlE,GAAkF,KAAjG,CALY;AAMhB,6BACI,QAAQ,IAAR,GAAe,QAAQ,MAAR,GAAiB,CAAjB,GAAqB,KAAK,KAAL,CAAW,MAAC,GAAS,KAAT,GAAkB,QAAQ,IAAR,CAAnD,GAAmE,QAAQ,IAAR,GAAe,MAAjG,CAPY;;AAShB,qBAAY,CAAZ,GAAgB,gBAAhB,CATgB;AAUhB,qBAAY,CAAZ,GAAgB,iBAAhB,CAVgB;MAApB;;AAaA,UAAK,YAAL,GAAoB,YAAW;AAC3B,gBAAO,MAAM,UAAN,CADoB;MAAX,CAvBwB;;AA2B5C,UAAK,aAAL,GAAqB,YAAW;AAC5B,gBAAO,MAAM,WAAN,CADqB;MAAX,CA3BuB;;AA+B5C,UAAK,QAAL,GAAgB,YAAW;AACvB,gBAAO,gBAAP,CADuB;MAAX,CA/B4B;;AAmC5C,UAAK,SAAL,GAAiB,YAAW;AACxB,gBAAO,iBAAP,CADwB;MAAX,CAnC2B;;AAuC5C,UAAK,QAAL,GAAgB,UAAS,KAAT,EAAgB;AAC5B,4BAAmB,KAAnB,CAD4B;MAAhB,CAvC4B;;AA2C5C,UAAK,SAAL,GAAiB,UAAS,MAAT,EAAiB;AAC9B,6BAAoB,MAApB,CAD8B;MAAjB,CA3C2B;;AA+C5C,UAAK,cAAL,GAAsB,UAAS,MAAT,EAAiB;AACnC,mBAAU,MAAV,CADmC;AAEnC,eAAM,GAAN,GAAY,OAAQ,OAAO,GAAP,KAAe,WAAtB,GAAqC,OAAO,GAAP,GAAa,EAAnD,CAFuB;MAAjB,CA/CsB;;AAoD5C,UAAK,KAAL,GAAa,YAAW;AACpB,gBAAO,MAAM,KAAN,CADa;MAAX,CApD+B;;AAwD5C,UAAK,SAAL,GAAiB,YAAW;AACxB,gBAAO,OAAP,CADwB;MAAX,CAxD2B;;AA4D5C,UAAK,YAAL,GAAoB,UAAS,IAAT,EAAe,KAAf,EAAsB;AACtC,eAAM,YAAN,CAAmB,IAAnB,EAAyB,KAAzB,EADsC;MAAtB,CA5DwB;;AAgE5C,UAAK,KAAL,GAAa,YAAW;AACpB,eAAM,KAAN,GADoB;MAAX,CAhE+B;;AAoE5C,UAAK,IAAL,GAAY,YAAW;AACnB,eAAM,IAAN,GADmB;MAAX,CApEgC;;AAwE5C,UAAK,cAAL,GAAsB,UAAS,IAAT,EAAe;AACjC,aAAI,QAAQ,IAAR,KAAiB,YAAjB,EAA+B;AAC/B,mBAAM,WAAN,GAAoB,IAApB,CAD+B;UAAnC;MADkB,CAxEsB;;AA8E5C,UAAK,gBAAL,GAAwB,UAAS,KAAT,EAAgB,CAAhB,EAAmB,IAAnB,EAAyB;AAC7C,aAAI,YAAY,OAAZ,CAAoB,KAApB,MAA+B,CAAC,CAAD,EAAI;AACnC,iBAAI,CAAC,eAAe,KAAf,CAAD,EAAwB;AACxB,gCAAe,KAAf,IAAwB,EAAxB,CADwB;cAA5B;AAGA,4BAAe,KAAf,EAAsB,IAAtB,CAA2B,CAA3B,EAJmC;UAAvC,MAKO;AACH,mBAAM,gBAAN,CAAuB,KAAvB,EAA8B,CAA9B,EAAiC,IAAjC,EADG;UALP;MADoB,CA9EoB;;AAyF5C,UAAK,kBAAL,GAA0B,YAAW;AACjC,qBAAY,OAAZ,CAAoB,UAAS,SAAT,EAAoB;AACpC,iBAAI,WAAW,eAAe,SAAf,CAAX,CADgC;AAEpC,iBAAI,YAAY,SAAS,MAAT,GAAkB,CAAlB,EAAqB;AACjC,0BAAS,OAAT,CAAiB,UAAS,OAAT,EAAkB;AAC/B,2BAAM,mBAAN,CAA0B,SAA1B,EAAqC,OAArC,EAD+B;kBAAlB,CAAjB,CADiC;cAArC;UAFgB,CAApB,CADiC;MAAX,CAzFkB;;AAoG5C,UAAK,OAAL,GAAe,UAAS,SAAT,EAAoB,IAApB,EAA0B;AACrC,aAAI,CAAJ;aACI,WAAW,eAAe,SAAf,CAAX,CAFiC;;AAIrC,aAAI,cAAc,WAAd,EAA2B;AAC3B,wBAD2B;UAA/B;AAGA,aAAI,YAAY,SAAS,MAAT,GAAkB,CAAlB,EAAqB;AACjC,kBAAM,IAAI,CAAJ,EAAO,IAAI,SAAS,MAAT,EAAiB,GAAlC,EAAuC;AACnC,0BAAS,CAAT,EAAY,KAAZ,CAAkB,IAAlB,EAAwB,IAAxB,EADmC;cAAvC;UADJ;MAPW,CApG6B;;AAkH5C,UAAK,WAAL,GAAmB,UAAS,QAAT,EAAmB;AAClC,mBAAU,CAAV,GAAc,SAAS,CAAT,CADoB;AAElC,mBAAU,CAAV,GAAc,SAAS,CAAT,CAFoB;MAAnB,CAlHyB;;AAuH5C,UAAK,WAAL,GAAmB,YAAW;AAC1B,gBAAO,SAAP,CAD0B;MAAX,CAvHyB;;AA2H5C,UAAK,aAAL,GAAqB,UAAS,IAAT,EAAe;AAChC,qBAAY,CAAZ,GAAgB,KAAK,CAAL,CADgB;AAEhC,qBAAY,CAAZ,GAAgB,KAAK,CAAL,CAFgB;MAAf,CA3HuB;;AAgI5C,UAAK,aAAL,GAAqB,YAAW;AAC5B,gBAAO,WAAP,CAD4B;MAAX,CAhIuB;;AAoI5C,UAAK,QAAL,GAAgB,YAAW;AACvB,gBAAO,KAAP,CADuB;MAAX,CApI4B;;AAwI5C,YAAO,IAAP,CAxI4C;EAAhB;;AA2IhC,aAAY,gBAAZ,GAA+B,UAAS,KAAT,EAAgB;AAC3C,WAAM,YAAN,CAAmB,UAAnB,EAA+B,IAA/B,EAD2C;AAE3C,SAAI,OAAO,YAAY,iBAAZ,CAA8B,KAA9B,CAAP,CAFuC;;AAI3C,UAAK,KAAL,GAAa,YAAW;AACpB,gBAAO,KAAP,CADoB;MAAX,CAJ8B;;AAQ3C,YAAO,IAAP,CAR2C;EAAhB;;AAW/B,aAAY,iBAAZ,GAAgC,YAAW;AACvC,SAAI,OAAO,EAAP,CADmC;AAEvC,SAAI,UAAU,IAAV,CAFmC;;AAIvC,SAAI,QAAQ,CAAR;SACA,SAAS,CAAT;SACA,WAAW,CAAX;SACA,SAAS,IAAT;SACA,SAAS,KAAT;SACA,WAAW,IAAX;SACA,OAAO,CAAP;SACA,SAAS,CAAT;SACA,UAAU,IAAV;SACA,QAAQ,KAAR;SACA,eAVJ;SAWI,gBAXJ;SAYI,cAAc,CAAC,WAAD,EAAc,OAAd,CAAd;SACA,iBAAiB,EAAjB;SACA,YAAY,EAAC,GAAG,CAAH,EAAM,GAAG,CAAH,EAAnB;SACA,cAAc,EAAC,GAAG,CAAH,EAAM,GAAG,CAAH,EAArB,CAnBmC;;AAqBvC,cAAS,UAAT,GAAsB;AAClB,kBAAS,KAAT,CADkB;AAElB,8EAAY,IAAZ,CAAiB,OAAjB,EAA0B,UAAS,IAAT,EAAe;AACrC,wBAAW,IAAX,CADqC;AAErC,qBAAQ,KAAK,CAAL,EAAQ,KAAR,CAF6B;AAGrC,sBAAS,KAAK,CAAL,EAAQ,MAAR,CAH4B;AAIrC,+BACI,QAAQ,IAAR,GAAe,QAAQ,MAAR,GAAiB,CAAjB,GAAqB,QAAQ,IAAR,GAAe,KAAK,KAAL,CAAW,KAAC,GAAQ,MAAR,GAAkB,QAAQ,IAAR,CAAlE,GAAkF,KAAjG,CALiC;AAMrC,gCACI,QAAQ,IAAR,GAAe,QAAQ,MAAR,GAAiB,CAAjB,GAAqB,KAAK,KAAL,CAAW,MAAC,GAAS,KAAT,GAAkB,QAAQ,IAAR,CAAnD,GAAmE,QAAQ,IAAR,GAAe,MAAjG,CAPiC;AAQrC,yBAAY,CAAZ,GAAgB,eAAhB,CARqC;AASrC,yBAAY,CAAZ,GAAgB,gBAAhB,CATqC;AAUrC,sBAAS,IAAT,CAVqC;AAWrC,wBAAW,CAAX,CAXqC;AAYrC,wBAAW,YAAW;AAClB,8BAAa,WAAb,EAA0B,EAA1B,EADkB;cAAX,EAER,CAFH,EAZqC;UAAf,EAevB,MAfH,EAeW,IAfX,EAeiB,QAAQ,QAAR,CAfjB,CAFkB;MAAtB;;AAoBA,cAAS,YAAT,CAAsB,SAAtB,EAAiC,IAAjC,EAAuC;AACnC,aAAI,CAAJ;aACI,WAAW,eAAe,SAAf,CAAX,CAF+B;;AAInC,aAAI,YAAY,SAAS,MAAT,GAAkB,CAAlB,EAAqB;AACjC,kBAAM,IAAI,CAAJ,EAAO,IAAI,SAAS,MAAT,EAAiB,GAAlC,EAAuC;AACnC,0BAAS,CAAT,EAAY,KAAZ,CAAkB,IAAlB,EAAwB,IAAxB,EADmC;cAAvC;UADJ;MAJJ;;AAYA,UAAK,OAAL,GAAe,YAAf,CArDuC;;AAuDvC,UAAK,QAAL,GAAgB,YAAW;AACvB,gBAAO,eAAP,CADuB;MAAX,CAvDuB;;AA2DvC,UAAK,SAAL,GAAiB,YAAW;AACxB,gBAAO,gBAAP,CADwB;MAAX,CA3DsB;;AA+DvC,UAAK,QAAL,GAAgB,UAAS,QAAT,EAAmB;AAC/B,2BAAkB,QAAlB,CAD+B;MAAnB,CA/DuB;;AAmEvC,UAAK,SAAL,GAAiB,UAAS,SAAT,EAAoB;AACjC,4BAAmB,SAAnB,CADiC;MAApB,CAnEsB;;AAuEvC,UAAK,YAAL,GAAoB,YAAW;AAC3B,gBAAO,KAAP,CAD2B;MAAX,CAvEmB;;AA2EvC,UAAK,aAAL,GAAqB,YAAW;AAC5B,gBAAO,MAAP,CAD4B;MAAX,CA3EkB;;AA+EvC,UAAK,cAAL,GAAsB,UAAS,MAAT,EAAiB;AACnC,mBAAU,MAAV,CADmC;AAEnC,aAAI,OAAO,QAAP,KAAoB,KAApB,EAA2B;AAC3B,uBAAU,OAAO,GAAP,CADiB;AAE3B,oBAAO,CAAP,CAF2B;UAA/B,MAGO;AACH,uBAAU,OAAO,GAAP,CADP;AAEH,oBAAO,OAAO,MAAP,CAFJ;UAHP;AAOA,sBATmC;MAAjB,CA/EiB;;AA2FvC,UAAK,KAAL,GAAa,YAAW;AACpB,gBAAO,KAAP,CADoB;MAAX,CA3F0B;;AA+FvC,UAAK,YAAL,GAAoB,YAAW,EAAX,CA/FmB;;AAiGvC,UAAK,SAAL,GAAiB,YAAW;AACxB,gBAAO,OAAP,CADwB;MAAX,CAjGsB;;AAqGvC,UAAK,KAAL,GAAa,YAAW;AACpB,kBAAS,IAAT,CADoB;MAAX,CArG0B;;AAyGvC,UAAK,IAAL,GAAY,YAAW;AACnB,kBAAS,KAAT,CADmB;MAAX,CAzG2B;;AA6GvC,UAAK,cAAL,GAAsB,UAAS,IAAT,EAAe;AACjC,oBAAW,IAAX,CADiC;MAAf,CA7GiB;;AAiHvC,UAAK,gBAAL,GAAwB,UAAS,KAAT,EAAgB,CAAhB,EAAmB;AACvC,aAAI,YAAY,OAAZ,CAAoB,KAApB,MAA+B,CAAC,CAAD,EAAI;AACnC,iBAAI,CAAC,eAAe,KAAf,CAAD,EAAwB;AACxB,gCAAe,KAAf,IAAwB,EAAxB,CADwB;cAA5B;AAGA,4BAAe,KAAf,EAAsB,IAAtB,CAA2B,CAA3B,EAJmC;UAAvC;MADoB,CAjHe;;AA0HvC,UAAK,WAAL,GAAmB,UAAS,QAAT,EAAmB;AAClC,mBAAU,CAAV,GAAc,SAAS,CAAT,CADoB;AAElC,mBAAU,CAAV,GAAc,SAAS,CAAT,CAFoB;MAAnB,CA1HoB;;AA+HvC,UAAK,WAAL,GAAmB,YAAW;AAC1B,gBAAO,SAAP,CAD0B;MAAX,CA/HoB;;AAmIvC,UAAK,aAAL,GAAqB,UAAS,UAAT,EAAqB;AACtC,qBAAY,CAAZ,GAAgB,WAAW,CAAX,CADsB;AAEtC,qBAAY,CAAZ,GAAgB,WAAW,CAAX,CAFsB;MAArB,CAnIkB;;AAwIvC,UAAK,aAAL,GAAqB,YAAW;AAC5B,gBAAO,WAAP,CAD4B;MAAX,CAxIkB;;AA4IvC,UAAK,QAAL,GAAgB,YAAW;AACvB,aAAI,KAAJ,CADuB;;AAGvB,aAAI,CAAC,MAAD,EAAQ;AACR,oBAAO,IAAP,CADQ;UAAZ;AAGA,aAAI,CAAC,MAAD,EAAS;AACT,qBAAQ,SAAS,QAAT,CAAR,CADS;AAET,iBAAI,WAAY,OAAO,CAAP,EAAW;AACvB,4BADuB;cAA3B,MAEO;AACH,4BAAW,YAAW;AAClB,6BAAQ,IAAR,CADkB;AAElB,kCAAa,OAAb,EAAsB,EAAtB,EAFkB;kBAAX,EAGR,CAHH,EADG;cAFP;UAFJ;AAWA,gBAAO,KAAP,CAjBuB;MAAX,CA5IuB;;AAgKvC,YAAO,IAAP,CAhKuC;EAAX;;AAmKhC,6CAAe,WAAf,C;;;;;;;;;;;;;6GC5TA;AACA;AAUA;AACA;AACA;AACA;AACA;AACA,KAAM,OAAO;AACT,YAAO,oBAAQ,CAAR,CAAP;AACA,UAAK,oBAAQ,EAAR,CAAL;AACA,YAAO,oBAAQ,EAAR,CAAP;AACA,oBAAe,oBAAQ,EAAR,CAAf;EAJE;AAMN,KAAM,OAAO;AACT,WAAM,oBAAQ,EAAR,CAAN;AACA,aAAQ,oBAAQ,EAAR,CAAR;AACA,aAAQ,oBAAQ,EAAR,CAAR;EAHE;;AAMS,UAAS,aAAT,CAAuB,iBAAvB,EAA0C,MAA1C,EAAkD;AAC7D,SAAI,UAAU,MAAV;SACA,oBADJ;SAEI,iBAFJ;SAGI,gBAHJ;SAII,kBAJJ;SAKI,UALJ;SAMI,eANJ;SAOI,iBAPJ;SAQI,mBARJ;SASI,UATJ;SAUI,mBAAmB;AACf,cAAK;AACD,qBAAQ,IAAR;UADJ;AAGA,cAAK;AACD,qBAAQ,IAAR;UADJ;MAJJ;SAQA,cAAc,EAAC,GAAG,CAAH,EAAM,GAAG,CAAH,EAArB;SACA,qBAAqB,iBAArB;SACA,aApBJ,CAD6D;;AAuB7D,mBAvB6D;AAwB7D,kBAxB6D;;AA0B7D,cAAS,WAAT,GAAuB;AACnB,aAAI,iBAAJ,CADmB;;AAGnB,aAAI,QAAQ,UAAR,EAAoB;AACpB,oCAAuB,IAAI,4EAAJ,CAAiB;AACpC,oBAAG,mBAAmB,IAAnB,CAAwB,CAAxB,GAA4B,CAA5B,GAAgC,CAAhC;AACH,oBAAG,mBAAmB,IAAnB,CAAwB,CAAxB,GAA4B,CAA5B,GAAgC,CAAhC;cAFgB,CAAvB,CADoB;UAAxB,MAKO;AACH,oCAAuB,kBAAvB,CADG;UALP;;AASA,sBAAa,+EAAmB,QAAQ,SAAR,EAAmB,qBAAqB,IAArB,CAAnD,CAZmB;;AAcnB,qBAAY,CAAZ,GAAgB,qBAAqB,IAArB,CAA0B,CAA1B,GAA8B,WAAW,CAAX,GAAe,CAA7C,CAdG;AAenB,qBAAY,CAAZ,GAAgB,qBAAqB,IAArB,CAA0B,CAA1B,GAA8B,WAAW,CAAX,GAAe,CAA7C,CAfG;;AAiBnB,+BAAsB,IAAI,4EAAJ,CAAiB,qBAAqB,IAArB,EAA2B,SAA5C,EAAuD,UAAvD,EAAmE,KAAnE,CAAtB,CAjBmB;;AAmBnB,8BAAqB,IAAI,4EAAJ,CAAiB,UAAjB,EAA6B,SAA7B,EAAwC,KAAxC,EAA+C,IAA/C,CAArB,CAnBmB;;AAqBnB,6BAAoB,IAAI,WAAJ,CAAgB,KAAK,IAAL,CAApC,CArBmB;AAsBnB,4BAAmB,IAAI,4EAAJ,CAAiB,UAAjB,EACf,IAAI,UAAJ,CAAe,iBAAf,EAAkC,CAAlC,EAAqC,WAAW,CAAX,GAAe,WAAW,CAAX,CADrC,CAAnB,CAtBmB;AAwBnB,6BAAoB,IAAI,4EAAJ,CAAiB,UAAjB,EAChB,IAAI,UAAJ,CAAe,iBAAf,EAAkC,WAAW,CAAX,GAAe,WAAW,CAAX,GAAe,CAA9B,EAAiC,WAAW,CAAX,GAAe,WAAW,CAAX,CADlE,EAEhB,SAFgB,EAEL,IAFK,CAApB,CAxBmB;AA2BnB,yBAAgB,4EAAa,OAAQ,MAAP,KAAkB,WAAlB,GAAiC,MAAlC,GAA2C,OAAQ,IAAP,KAAgB,WAAhB,GAA+B,IAAhC,GAAuC,MAAvC,EAA+C;AACnH,mBAAM,WAAW,CAAX;UADM,EAEb,iBAFa,CAAhB,CA3BmB;;AA+BnB,6BAAoB,IAAI,4EAAJ,CAAiB;AACjC,gBAAG,oBAAC,CAAqB,IAArB,CAA0B,CAA1B,GAA8B,iBAAiB,IAAjB,CAAsB,CAAtB,GAA2B,CAA1D;AACH,gBAAG,oBAAC,CAAqB,IAArB,CAA0B,CAA1B,GAA8B,iBAAiB,IAAjB,CAAsB,CAAtB,GAA2B,CAA1D;UAFa,EAGjB,SAHiB,EAGN,KAHM,EAGC,IAHD,CAApB,CA/BmB;AAmCnB,sBAAa,IAAI,4EAAJ,CAAiB,kBAAkB,IAAlB,EAAwB,SAAzC,EAAoD,SAApD,EAA+D,IAA/D,CAAb,CAnCmB;AAoCnB,2BAAkB,IAAI,4EAAJ,CAAiB,kBAAkB,IAAlB,EAAwB,SAAzC,EAAoD,UAApD,EAAgE,IAAhE,CAAlB,CApCmB;MAAvB;;AAuCA,cAAS,UAAT,GAAsB;AAClB,aAAI,QAAQ,SAAR,IAAqB,OAAO,QAAP,KAAoB,WAApB,EAAiC;AACtD,oBADsD;UAA1D;AAGA,0BAAiB,GAAjB,CAAqB,MAArB,GAA8B,SAAS,aAAT,CAAuB,QAAvB,CAA9B,CAJkB;AAKlB,0BAAiB,GAAjB,CAAqB,MAArB,CAA4B,SAA5B,GAAwC,cAAxC,CALkB;AAMlB,aAAI,QAAmB,QAAQ,KAAR,CAAc,UAAd,KAA6B,IAA7B,EAAmC;AACtD,sBAAS,aAAT,CAAuB,QAAvB,EAAiC,WAAjC,CAA6C,iBAAiB,GAAjB,CAAqB,MAArB,CAA7C,CADsD;UAA1D;AAGA,0BAAiB,GAAjB,CAAqB,MAArB,GAA8B,iBAAiB,GAAjB,CAAqB,MAArB,CAA4B,UAA5B,CAAuC,IAAvC,CAA9B,CATkB;AAUlB,0BAAiB,GAAjB,CAAqB,MAArB,CAA4B,KAA5B,GAAoC,oBAAoB,IAApB,CAAyB,CAAzB,CAVlB;AAWlB,0BAAiB,GAAjB,CAAqB,MAArB,CAA4B,MAA5B,GAAqC,oBAAoB,IAApB,CAAyB,CAAzB,CAXnB;MAAtB;;;;;;AAjE6D,cAmFpD,cAAT,CAAwB,OAAxB,EAAiC;AAC7B,aAAI,OAAJ;aACI,CADJ;aAEI,CAFJ;aAGI,KAHJ;aAII,QAJJ;aAKI,OACA,oBAAoB,IAApB,CAAyB,CAAzB;aACA,OAAO,oBAAoB,IAApB,CAAyB,CAAzB;aACP,OAAO,CAAC,oBAAoB,IAApB,CAAyB,CAAzB;aACR,OAAO,CAAC,oBAAoB,IAApB,CAAyB,CAAzB;aACR,GAVJ;aAWI,KAXJ;;;AAD6B,gBAe7B,GAAU,CAAV,CAf6B;AAgB7B,cAAM,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,EAAgB,GAAjC,EAAsC;AAClC,qBAAQ,QAAQ,CAAR,CAAR,CADkC;AAElC,wBAAW,MAAM,GAAN,CAFuB;AAGlC,iBAAI,QAAmB,QAAQ,KAAR,CAAc,WAAd,EAA2B;AAC9C,4FAAW,QAAX,CAAoB,MAAM,GAAN,EAAW,iBAAiB,IAAjB,EAAuB,iBAAiB,GAAjB,CAAqB,MAArB,EAA6B,EAAC,OAAO,KAAP,EAApF,EAD8C;cAAlD;UAHJ;;AAQA,oBAAW,QAAQ,MAAR,CAxBkB;AAyB7B,mBAAU,CAAC,UAAU,GAAV,GAAgB,KAAK,EAAL,GAAU,EAA1B,CAAD,GAAiC,GAAjC,GAAuC,EAAvC,CAzBmB;AA0B7B,aAAI,UAAU,CAAV,EAAa;AACb,wBAAW,GAAX,CADa;UAAjB;;AAIA,mBAAU,CAAC,MAAM,OAAN,CAAD,GAAkB,KAAK,EAAL,GAAU,GAA5B,CA9BmB;AA+B7B,oBAAW,KAAK,IAAL,CAAU,KAAK,MAAL,EAAV,EAAyB,CAAC,KAAK,GAAL,CAAS,OAAT,CAAD,EAAoB,KAAK,GAAL,CAAS,OAAT,CAApB,EAAuC,CAAC,KAAK,GAAL,CAAS,OAAT,CAAD,EAAoB,KAAK,GAAL,CAAS,OAAT,CAA3D,CAAzB,CAAX;;;AA/B6B,cAkCvB,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,EAAgB,GAAjC,EAAsC;AAClC,qBAAQ,QAAQ,CAAR,CAAR,CADkC;AAElC,kBAAM,IAAI,CAAJ,EAAO,IAAI,CAAJ,EAAO,GAApB,EAAyB;AACrB,sBAAK,aAAL,CAAmB,MAAM,GAAN,CAAU,CAAV,CAAnB,EAAiC,MAAM,GAAN,CAAU,CAAV,CAAjC,EAA+C,QAA/C,EADqB;cAAzB;;AAIA,iBAAI,QAAmB,QAAQ,KAAR,CAAc,cAAd,CAA6B,eAA7B,EAA8C;AACjE,4FAAW,QAAX,CAAoB,MAAM,GAAN,EAAW,EAAC,GAAG,CAAH,EAAM,GAAG,CAAH,EAAtC,EAA6C,iBAAiB,GAAjB,CAAqB,MAArB,EAA6B,EAAC,OAAO,SAAP,EAAkB,WAAW,CAAX,EAA7F,EADiE;cAArE;UANJ;;;AAlC6B,cA8CvB,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,EAAgB,GAAjC,EAAsC;AAClC,qBAAQ,QAAQ,CAAR,CAAR,CADkC;AAElC,kBAAM,IAAI,CAAJ,EAAO,IAAI,CAAJ,EAAO,GAApB,EAAyB;AACrB,qBAAI,MAAM,GAAN,CAAU,CAAV,EAAa,CAAb,IAAkB,IAAlB,EAAwB;AACxB,4BAAO,MAAM,GAAN,CAAU,CAAV,EAAa,CAAb,CAAP,CADwB;kBAA5B;AAGA,qBAAI,MAAM,GAAN,CAAU,CAAV,EAAa,CAAb,IAAkB,IAAlB,EAAwB;AACxB,4BAAO,MAAM,GAAN,CAAU,CAAV,EAAa,CAAb,CAAP,CADwB;kBAA5B;AAGA,qBAAI,MAAM,GAAN,CAAU,CAAV,EAAa,CAAb,IAAkB,IAAlB,EAAwB;AACxB,4BAAO,MAAM,GAAN,CAAU,CAAV,EAAa,CAAb,CAAP,CADwB;kBAA5B;AAGA,qBAAI,MAAM,GAAN,CAAU,CAAV,EAAa,CAAb,IAAkB,IAAlB,EAAwB;AACxB,4BAAO,MAAM,GAAN,CAAU,CAAV,EAAa,CAAb,CAAP,CADwB;kBAA5B;cAVJ;UAFJ;;AAkBA,eAAM,CAAC,CAAC,IAAD,EAAO,IAAP,CAAD,EAAe,CAAC,IAAD,EAAO,IAAP,CAAf,EAA6B,CAAC,IAAD,EAAO,IAAP,CAA7B,EAA2C,CAAC,IAAD,EAAO,IAAP,CAA3C,CAAN,CAhE6B;;AAkE7B,aAAI,QAAmB,QAAQ,KAAR,CAAc,cAAd,CAA6B,kBAA7B,EAAiD;AACpE,wFAAW,QAAX,CAAoB,GAApB,EAAyB,EAAC,GAAG,CAAH,EAAM,GAAG,CAAH,EAAhC,EAAuC,iBAAiB,GAAjB,CAAqB,MAArB,EAA6B,EAAC,OAAO,SAAP,EAAkB,WAAW,CAAX,EAAvF,EADoE;UAAxE;;AAIA,iBAAQ,QAAQ,UAAR,GAAqB,CAArB,GAAyB,CAAzB;;AAtEqB,iBAwE7B,GAAW,KAAK,MAAL,CAAY,QAAZ,EAAsB,QAAtB,CAAX,CAxE6B;AAyE7B,cAAM,IAAI,CAAJ,EAAO,IAAI,CAAJ,EAAO,GAApB,EAAyB;AACrB,kBAAK,aAAL,CAAmB,IAAI,CAAJ,CAAnB,EAA2B,IAAI,CAAJ,CAA3B,EAAmC,QAAnC,EADqB;UAAzB;;AAIA,aAAI,QAAmB,QAAQ,KAAR,CAAc,cAAd,CAA6B,MAA7B,EAAqC;AACxD,wFAAW,QAAX,CAAoB,GAApB,EAAyB,EAAC,GAAG,CAAH,EAAM,GAAG,CAAH,EAAhC,EAAuC,iBAAiB,GAAjB,CAAqB,MAArB,EAA6B,EAAC,OAAO,SAAP,EAAkB,WAAW,CAAX,EAAvF,EADwD;UAA5D;;AAIA,cAAM,IAAI,CAAJ,EAAO,IAAI,CAAJ,EAAO,GAApB,EAAyB;AACrB,kBAAK,KAAL,CAAW,IAAI,CAAJ,CAAX,EAAmB,IAAI,CAAJ,CAAnB,EAA2B,KAA3B,EADqB;UAAzB;;AAIA,gBAAO,GAAP,CArF6B;MAAjC;;;;;AAnF6D,cA8KpD,aAAT,GAAyB;AACrB,wFAAc,oBAAd,EAAoC,mBAApC,EADqB;AAErB,6BAAoB,UAApB,GAFqB;AAGrB,aAAI,QAAmB,QAAQ,KAAR,CAAc,UAAd,EAA0B;AAC7C,iCAAoB,IAApB,CAAyB,iBAAiB,GAAjB,CAAqB,MAArB,EAA6B,GAAtD,EAD6C;UAAjD;MAHJ;;;;;;AA9K6D,cA0LpD,WAAT,GAAuB;AACnB,aAAI,CAAJ;aACI,CADJ;aAEI,CAFJ;aAGI,CAHJ;aAII,OAJJ;aAKI,eAAe,EAAf;aACA,UANJ;aAOI,YAPJ;aAQI,KARJ,CADmB;AAUnB,cAAK,IAAI,CAAJ,EAAO,IAAI,YAAY,CAAZ,EAAe,GAA/B,EAAoC;AAChC,kBAAK,IAAI,CAAJ,EAAO,IAAI,YAAY,CAAZ,EAAe,GAA/B,EAAoC;AAChC,qBAAI,iBAAiB,IAAjB,CAAsB,CAAtB,GAA0B,CAA1B,CAD4B;AAEhC,qBAAI,iBAAiB,IAAjB,CAAsB,CAAtB,GAA0B,CAA1B;;;AAF4B,4BAKhC,CAAY,CAAZ,EAAe,CAAf;;;AALgC,kCAQhC,CAAkB,UAAlB,GARgC;AAShC,6FAAY,IAAZ,CAAiB,mBAAmB,IAAnB,EAAyB,CAA1C,EATgC;AAUhC,8BAAa,mEAAW,MAAX,CAAkB,iBAAlB,EAAqC,kBAArC,CAAb,CAVgC;AAWhC,gCAAe,WAAW,SAAX,CAAqB,CAArB,CAAf,CAXgC;;AAahC,qBAAI,QAAmB,QAAQ,KAAR,CAAc,UAAd,EAA0B;AAC7C,wCAAmB,OAAnB,CAA2B,iBAAiB,GAAjB,CAAqB,MAArB,EAA6B,KAAK,KAAL,CAAW,MAAM,aAAa,KAAb,CAAzE,EACI,EAAC,GAAG,CAAH,EAAM,GAAG,CAAH,EADX,EAD6C;kBAAjD;;;AAbgC,wBAmBhC,GAAU,mBAAmB,OAAnB,CAA2B,aAAa,KAAb,CAArC;;;AAnBgC,6BAsBhC,GAAe,aAAa,MAAb,CAAoB,cAAc,OAAd,EAAuB,CAAC,CAAD,EAAI,CAAJ,CAAvB,EAA+B,CAA/B,EAAkC,CAAlC,CAApB,CAAf,CAtBgC;cAApC;UADJ;;AA2BA,aAAI,QAAmB,QAAQ,KAAR,CAAc,gBAAd,EAAgC;AACnD,kBAAM,IAAI,CAAJ,EAAO,IAAI,aAAa,MAAb,EAAqB,GAAtC,EAA2C;AACvC,yBAAQ,aAAa,CAAb,CAAR,CADuC;AAEvC,4FAAW,QAAX,CAAoB,MAAM,GAAN,EAAW,iBAAiB,IAAjB,EAAuB,iBAAiB,GAAjB,CAAqB,MAArB,EAClD,EAAC,OAAO,SAAP,EAAkB,WAAW,CAAX,EADvB,EAFuC;cAA3C;UADJ;;AAQA,gBAAO,YAAP,CA7CmB;MAAvB;;;;;;;AA1L6D,cA+OpD,yBAAT,CAAmC,QAAnC,EAA4C;AACxC,aAAI,CAAJ;aACI,GADJ;aAEI,YAAY,EAAZ;aACA,YAAY,EAAZ,CAJoC;;AAMxC,cAAM,IAAI,CAAJ,EAAO,IAAI,QAAJ,EAAc,GAA3B,EAAgC;AAC5B,uBAAU,IAAV,CAAe,CAAf,EAD4B;UAAhC;AAGA,eAAM,gBAAgB,IAAhB,CAAqB,MAArB,CATkC;AAUxC,gBAAO,KAAP,EAAc;AACV,iBAAI,gBAAgB,IAAhB,CAAqB,GAArB,IAA4B,CAA5B,EAA+B;AAC/B,2BAAU,gBAAgB,IAAhB,CAAqB,GAArB,IAA4B,CAA5B,CAAV,GAD+B;cAAnC;UADJ;;AAMA,qBAAY,UAAU,GAAV,CAAc,UAAS,GAAT,EAAc,GAAd,EAAmB;AACzC,oBAAO;AACH,sBAAK,GAAL;AACA,wBAAO,MAAM,CAAN;cAFX,CADyC;UAAnB,CAA1B,CAhBwC;;AAuBxC,mBAAU,IAAV,CAAe,UAAS,CAAT,EAAY,CAAZ,EAAe;AAC1B,oBAAO,EAAE,GAAF,GAAQ,EAAE,GAAF,CADW;UAAf,CAAf;;;AAvBwC,kBA4BxC,GAAY,UAAU,MAAV,CAAiB,UAAS,EAAT,EAAa;AACtC,oBAAO,GAAG,GAAH,IAAU,CAAV,CAD+B;UAAb,CAA7B,CA5BwC;;AAgCxC,gBAAO,SAAP,CAhCwC;MAA5C;;;;;AA/O6D,cAqRpD,SAAT,CAAmB,SAAnB,EAA8B,QAA9B,EAAwC;AACpC,aAAI,CAAJ;aACI,CADJ;aAEI,GAFJ;aAGI,UAAU,EAAV;aACA,KAJJ;aAKI,GALJ;aAMI,QAAQ,EAAR;aACA,MAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAN;aACA,MAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAN,CATgC;;AAWpC,cAAM,IAAI,CAAJ,EAAO,IAAI,UAAU,MAAV,EAAkB,GAAnC,EAAwC;AACpC,mBAAM,gBAAgB,IAAhB,CAAqB,MAArB,CAD8B;AAEpC,qBAAQ,MAAR,GAAiB,CAAjB,CAFoC;AAGpC,oBAAO,KAAP,EAAc;AACV,qBAAI,gBAAgB,IAAhB,CAAqB,GAArB,MAA8B,UAAU,CAAV,EAAa,KAAb,EAAoB;AAClD,6BAAQ,kBAAkB,IAAlB,CAAuB,GAAvB,CAAR,CADkD;AAElD,6BAAQ,IAAR,CAAa,KAAb,EAFkD;kBAAtD;cADJ;AAMA,mBAAM,eAAe,OAAf,CAAN,CAToC;AAUpC,iBAAI,GAAJ,EAAS;AACL,uBAAM,IAAN,CAAW,GAAX;;;AADK,qBAID,QAAmB,QAAQ,KAAR,CAAc,wBAAd,EAAwC;AAC3D,0BAAM,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,EAAgB,GAAjC,EAAsC;AAClC,iCAAQ,QAAQ,CAAR,CAAR,CADkC;AAElC,6BAAI,CAAJ,IAAS,SAAC,CAAU,CAAV,EAAa,KAAb,IAAsB,WAAW,CAAX,CAAtB,GAAuC,GAAxC,CAFyB;AAGlC,wGAAQ,GAAR,EAAa,GAAb,EAHkC;AAIlC,oGAAW,QAAX,CAAoB,MAAM,GAAN,EAAW,iBAAiB,IAAjB,EAAuB,iBAAiB,GAAjB,CAAqB,MAArB,EAClD,EAAC,OAAO,SAAS,IAAI,IAAJ,CAAS,GAAT,CAAT,GAAyB,GAAzB,EAA8B,WAAW,CAAX,EAD1C,EAJkC;sBAAtC;kBADJ;cAJJ;UAVJ;AAyBA,gBAAO,KAAP,CApCoC;MAAxC;;;;;;AArR6D,cAgUpD,cAAT,CAAwB,OAAxB,EAAiC;AAC7B,aAAI,WAAW,+EAAQ,OAAR,EAAiB,IAAjB,CAAX,CADyB;AAE7B,aAAI,aAAa,+EAAW,QAAX,EAAqB,CAArB,EAAwB,UAAS,CAAT,EAAY;AACjD,oBAAO,EAAE,SAAF,GAAc,MAAd,CAD0C;UAAZ,CAArC,CAFyB;AAK7B,aAAI,SAAS,EAAT;aAAa,SAAS,EAAT,CALY;AAM7B,aAAI,WAAW,MAAX,KAAsB,CAAtB,EAAyB;AACzB,sBAAS,WAAW,CAAX,EAAc,IAAd,CAAmB,SAAnB,EAAT,CADyB;AAEzB,kBAAK,IAAI,IAAI,CAAJ,EAAO,IAAI,OAAO,MAAP,EAAe,GAAnC,EAAwC;AACpC,wBAAO,IAAP,CAAY,OAAO,CAAP,EAAU,KAAV,CAAZ,CADoC;cAAxC;UAFJ;AAMA,gBAAO,MAAP,CAZ6B;MAAjC;;AAeA,cAAS,WAAT,CAAqB,CAArB,EAAwB,CAAxB,EAA2B;AACvB,6BAAoB,cAApB,CAAmC,gBAAnC,EAAqD,+EAAS,CAAT,EAAY,CAAZ,CAArD,EADuB;AAEvB,uBAAc,WAAd;;;AAFuB,aAKnB,QAAmB,QAAQ,KAAR,CAAc,YAAd,EAA4B;AAC/C,+BAAkB,OAAlB,CAA0B,iBAAiB,GAAjB,CAAqB,MAArB,EAA6B,GAAvD,EAA4D,+EAAS,CAAT,EAAY,CAAZ,CAA5D,EAD+C;UAAnD;MALJ;;;;;;;;;;AA/U6D,cAiWpD,aAAT,CAAuB,OAAvB,EAAgC,QAAhC,EAA0C,CAA1C,EAA6C,CAA7C,EAAgD;AAC5C,aAAI,CAAJ;aACI,GADJ;aAEI,kBAAkB,EAAlB;aACA,eAHJ;aAII,KAJJ;aAKI,eAAe,EAAf;aACA,qBAAqB,KAAK,IAAL,CAAU,WAAW,CAAX,GAAe,CAAf,CAA/B,CAPwC;;AAS5C,aAAI,QAAQ,MAAR,IAAkB,CAAlB,EAAqB;;AAErB,kBAAM,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,EAAgB,GAAjC,EAAsC;AAClC,qBAAI,QAAQ,CAAR,EAAW,GAAX,GAAiB,kBAAjB,EAAqC;AACrC,qCAAgB,IAAhB,CAAqB,QAAQ,CAAR,CAArB,EADqC;kBAAzC;cADJ;;;AAFqB,iBASjB,gBAAgB,MAAhB,IAA0B,CAA1B,EAA6B;AAC7B,mCAAkB,eAAe,eAAf,CAAlB,CAD6B;AAE7B,uBAAM,CAAN;;AAF6B,sBAIvB,IAAI,CAAJ,EAAO,IAAI,gBAAgB,MAAhB,EAAwB,GAAzC,EAA8C;AAC1C,4BAAO,gBAAgB,CAAhB,EAAmB,GAAnB,CADmC;kBAA9C;;;;AAJ6B,qBAUzB,gBAAgB,MAAhB,GAAyB,CAAzB,IACO,gBAAgB,MAAhB,IAA0B,eAAC,CAAgB,MAAhB,GAAyB,CAAzB,GAA8B,CAA/B,IAC1B,gBAAgB,MAAhB,GAAyB,QAAQ,MAAR,GAAiB,CAAjB,EAAoB;AACpD,4BAAO,gBAAgB,MAAhB,CAD6C;AAEpD,6BAAQ;AACJ,gCAAO,SAAS,CAAT,IAAc,YAAY,CAAZ,GAAgB,SAAS,CAAT,CAA9B;AACP,8BAAK;AACD,gCAAG,CAAH;AACA,gCAAG,CAAH;0BAFJ;AAIA,8BAAK,CACD,KAAK,KAAL,CAAW,CAAC,CAAD,EAAI,CAAJ,CAAX,CADC,EAED,KAAK,KAAL,CAAW,CAAC,IAAI,iBAAiB,IAAjB,CAAsB,CAAtB,EAAyB,CAA9B,CAAX,CAFC,EAGD,KAAK,KAAL,CAAW,CAAC,IAAI,iBAAiB,IAAjB,CAAsB,CAAtB,EAAyB,IAAI,iBAAiB,IAAjB,CAAsB,CAAtB,CAA7C,CAHC,EAID,KAAK,KAAL,CAAW,CAAC,CAAD,EAAI,IAAI,iBAAiB,IAAjB,CAAsB,CAAtB,CAAnB,CAJC,CAAL;AAMA,kCAAS,eAAT;AACA,8BAAK,GAAL;AACA,8BAAK,KAAK,KAAL,CAAW,CAAC,KAAK,GAAL,CAAS,GAAT,CAAD,EAAgB,KAAK,GAAL,CAAS,GAAT,CAAhB,CAAX,CAAL;sBAdJ,CAFoD;AAkBpD,kCAAa,IAAb,CAAkB,KAAlB,EAlBoD;kBAFxD;cAVJ;UATJ;AA2CA,gBAAO,YAAP,CApD4C;MAAhD;;;;;;AAjW6D,cA4ZpD,0BAAT,CAAoC,YAApC,EAAkD;AAC9C,aAAI,QAAQ,CAAR;aACA,YAAY,IAAZ;aACA,UAAU,CAAV;aACA,CAHJ;aAII,KAJJ;aAKI,MAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAN;aACA,MAAM,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAN,CAP0C;;AAS9C,kBAAS,eAAT,GAA2B;AACvB,iBAAI,CAAJ,CADuB;AAEvB,kBAAM,IAAI,CAAJ,EAAO,IAAI,gBAAgB,IAAhB,CAAqB,MAArB,EAA6B,GAA9C,EAAmD;AAC/C,qBAAI,gBAAgB,IAAhB,CAAqB,CAArB,MAA4B,CAA5B,IAAiC,WAAW,IAAX,CAAgB,CAAhB,MAAuB,CAAvB,EAA0B;AAC3D,4BAAO,CAAP,CAD2D;kBAA/D;cADJ;AAKA,oBAAO,gBAAgB,MAAhB,CAPgB;UAA3B;;AAUA,kBAAS,KAAT,CAAe,UAAf,EAA2B;AACvB,iBAAI,CAAJ;iBACI,CADJ;iBAEI,YAFJ;iBAGI,GAHJ;iBAII,GAJJ;iBAKI,UAAU;AACN,oBAAG,aAAa,gBAAgB,IAAhB,CAAqB,CAArB;AAChB,oBAAG,UAAC,GAAa,gBAAgB,IAAhB,CAAqB,CAArB,GAA0B,CAAxC;cAFP;iBAIA,UATJ,CADuB;;AAYvB,iBAAI,aAAa,gBAAgB,IAAhB,CAAqB,MAArB,EAA6B;AAC1C,gCAAe,kBAAkB,IAAlB,CAAuB,UAAvB,CAAf;;AAD0C,gCAG1C,CAAgB,IAAhB,CAAqB,UAArB,IAAmC,KAAnC,CAH0C;AAI1C,sBAAM,MAAM,CAAN,EAAS,MAAM,+DAAO,gBAAP,CAAwB,MAAxB,EAAgC,KAArD,EAA4D;AACxD,yBAAI,QAAQ,CAAR,GAAY,+DAAO,gBAAP,CAAwB,GAAxB,EAA6B,CAA7B,CAAZ,CADoD;AAExD,yBAAI,QAAQ,CAAR,GAAY,+DAAO,gBAAP,CAAwB,GAAxB,EAA6B,CAA7B,CAAZ,CAFoD;AAGxD,2BAAM,IAAI,gBAAgB,IAAhB,CAAqB,CAArB,GAAyB,CAA7B;;;AAHkD,yBAMpD,WAAW,IAAX,CAAgB,GAAhB,MAAyB,CAAzB,EAA4B;AAC5B,yCAAgB,IAAhB,CAAqB,GAArB,IAA4B,OAAO,SAAP,CADA;AAE5B,kCAF4B;sBAAhC;;AAKA,yBAAI,gBAAgB,IAAhB,CAAqB,GAArB,MAA8B,CAA9B,EAAiC;AACjC,sCAAa,KAAK,GAAL,CAAS,KAAK,GAAL,CAAS,kBAAkB,IAAlB,CAAuB,GAAvB,EAA4B,GAA5B,EAAiC,aAAa,GAAb,CAAnD,CAAb,CADiC;AAEjC,6BAAI,aAAa,SAAb,EAAwB;AACxB,mCAAM,GAAN,EADwB;0BAA5B;sBAFJ;kBAXJ;cAJJ;UAZJ;;;AAnB8C,oFAyD9C,CAAY,IAAZ,CAAiB,WAAW,IAAX,EAAiB,CAAlC,EAzD8C;AA0D9C,qFAAY,IAAZ,CAAiB,gBAAgB,IAAhB,EAAsB,CAAvC,EA1D8C;AA2D9C,qFAAY,IAAZ,CAAiB,kBAAkB,IAAlB,EAAwB,IAAzC,EA3D8C;;AA6D9C,cAAM,IAAI,CAAJ,EAAO,IAAI,aAAa,MAAb,EAAqB,GAAtC,EAA2C;AACvC,qBAAQ,aAAa,CAAb,CAAR,CADuC;AAEvC,+BAAkB,IAAlB,CAAuB,MAAM,KAAN,CAAvB,GAAsC,KAAtC,CAFuC;AAGvC,wBAAW,IAAX,CAAgB,MAAM,KAAN,CAAhB,GAA+B,CAA/B,CAHuC;UAA3C;;;AA7D8C,mBAoE9C,CAAW,UAAX,GApE8C;;AAsE9C,gBAAO,CAAE,UAAU,iBAAV,CAAF,GAAiC,gBAAgB,IAAhB,CAAqB,MAArB,EAA6B;AACjE,qBADiE;AAEjE,mBAAM,OAAN,EAFiE;UAArE;;;AAtE8C,aA4E1C,QAAmB,QAAQ,KAAR,CAAc,eAAd,EAA+B;AAClD,kBAAM,IAAI,CAAJ,EAAO,IAAI,gBAAgB,IAAhB,CAAqB,MAArB,EAA6B,GAA9C,EAAmD;AAC/C,qBAAI,gBAAgB,IAAhB,CAAqB,CAArB,IAA0B,CAA1B,IAA+B,gBAAgB,IAAhB,CAAqB,CAArB,KAA2B,KAA3B,EAAkC;AACjE,6BAAQ,kBAAkB,IAAlB,CAAuB,CAAvB,CAAR,CADiE;AAEjE,yBAAI,CAAJ,IAAS,eAAC,CAAgB,IAAhB,CAAqB,CAArB,KAA2B,QAAQ,CAAR,CAA3B,GAAyC,GAA1C,CAFwD;AAGjE,oGAAQ,GAAR,EAAa,GAAb,EAHiE;AAIjE,gGAAW,QAAX,CAAoB,MAAM,GAAN,EAAW,iBAAiB,IAAjB,EAAuB,iBAAiB,GAAjB,CAAqB,MAArB,EAClD,EAAC,OAAO,SAAS,IAAI,IAAJ,CAAS,GAAT,CAAT,GAAyB,GAAzB,EAA8B,WAAW,CAAX,EAD1C,EAJiE;kBAArE;cADJ;UADJ;;AAYA,gBAAO,KAAP,CAxF8C;MAAlD;;AA2FA,YAAO;AACH,iBAAQ,kBAAW;AACf,iBAAI,YAAJ,EACI,SADJ,EAEI,KAFJ,CADe;;AAKf,iBAAI,QAAQ,UAAR,EAAoB;AACpB,gGAAW,kBAAX,EAA+B,oBAA/B,EADoB;cAAxB;;AAIA,6BATe;AAUf,4BAAe,aAAf;;AAVe,iBAYX,aAAa,MAAb,GAAsB,YAAY,CAAZ,GAAgB,YAAY,CAAZ,GAAgB,IAAhC,EAAsC;AAC5D,wBAAO,IAAP,CAD4D;cAAhE;;;AAZe,iBAiBX,WAAW,2BAA2B,YAA3B,CAAX,CAjBW;AAkBf,iBAAI,WAAW,CAAX,EAAc;AACd,wBAAO,IAAP,CADc;cAAlB;;;AAlBe,sBAuBf,GAAY,0BAA0B,QAA1B,CAAZ,CAvBe;AAwBf,iBAAI,UAAU,MAAV,KAAqB,CAArB,EAAwB;AACxB,wBAAO,IAAP,CADwB;cAA5B;;AAIA,qBAAQ,UAAU,SAAV,EAAqB,QAArB,CAAR,CA5Be;AA6Bf,oBAAO,KAAP,CA7Be;UAAX;MADZ,CAvf6D;EAAlD;AAyhBR,UAAS,qBAAT,CAA+B,WAA/B,EAA4C,MAA5C,EAAoD;AACvD,SAAI,SAAJ;SACI,QAAQ,YAAY,QAAZ,EAAR;SACA,SAAS,YAAY,SAAZ,EAAT;SACA,aAAa,OAAO,UAAP,GAAoB,GAApB,GAA0B,CAA1B;SACb,IAJJ;SAKI,IALJ;;;AADuD,SASnD,YAAY,SAAZ,GAAwB,IAAxB,EAA8B;AAC9B,gBAAO,+EAAiB,KAAjB,EAAwB,MAAxB,EAAgC,YAAY,SAAZ,GAAwB,IAAxB,CAAvC,CAD8B;AAE9B,qBAAY,WAAZ,CAAwB,EAAC,GAAG,KAAK,EAAL,EAAS,GAAG,KAAK,EAAL,EAAxC,EAF8B;AAG9B,qBAAY,aAAZ,CAA0B,EAAC,GAAG,KAAH,EAAU,GAAG,MAAH,EAArC,EAH8B;AAI9B,iBAAQ,KAAK,EAAL,CAJsB;AAK9B,kBAAS,KAAK,EAAL,CALqB;MAAlC;;AAQA,YAAO;AACH,YAAG,KAAK,KAAL,CAAW,QAAQ,UAAR,CAAd;AACA,YAAG,KAAK,KAAL,CAAW,SAAS,UAAT,CAAd;MAFJ,CAjBuD;;AAsBvD,iBAAY,+EAAmB,OAAO,SAAP,EAAkB,IAArC,CAAZ,CAtBuD;AAuBvD,SAAI,MAAiB;AACjB,iBAAQ,GAAR,CAAY,iBAAiB,KAAK,SAAL,CAAe,SAAf,CAAjB,CAAZ,CADiB;MAArB;;AAIA,iBAAY,QAAZ,CAAqB,KAAK,KAAL,CAAW,KAAK,KAAL,CAAW,KAAK,CAAL,GAAS,UAAU,CAAV,CAApB,IAAoC,IAAI,UAAJ,CAApC,GAAsD,UAAU,CAAV,CAAtF,EA3BuD;AA4BvD,iBAAY,SAAZ,CAAsB,KAAK,KAAL,CAAW,KAAK,KAAL,CAAW,KAAK,CAAL,GAAS,UAAU,CAAV,CAApB,IAAoC,IAAI,UAAJ,CAApC,GAAsD,UAAU,CAAV,CAAvF,EA5BuD;;AA8BvD,SAAI,WAAC,CAAY,QAAZ,KAAyB,UAAU,CAAV,KAAiB,CAA3C,IAAgD,WAAC,CAAY,SAAZ,KAA0B,UAAU,CAAV,KAAiB,CAA5C,EAA+C;AAC/F,gBAAO,IAAP,CAD+F;MAAnG;;AAIA,WAAM,IAAI,KAAJ,CAAU,sEACZ,KADY,GACJ,gBADI,GACe,MADf,GAEZ,uBAFY,GAEc,UAAU,CAAV,CAF9B,CAlCuD;;;;;;;;;ACrjB3D;;;;;AAKA,KAAI,aAAa;AACb,sBAAiB,2BAAW;AACxB,gBAAO;AACH,kBAAK,IAAL;AACA,oBAAO,IAAP;AACA,0BAAa,IAAb;AACA,6BAAgB,IAAhB;AACA,uBAAU,IAAV;AACA,uBAAU,IAAV;UANJ,CADwB;MAAX;AAUjB,kBAAa;AACT,iBAAQ,CAAR;AACA,kBAAS,CAAT;AACA,sBAAa,CAAb;MAHJ;AAKA,UAAK;AACD,uBAAc,CAAC,KAAD;AACd,sBAAa,CAAC,KAAD;MAFjB;AAIA,aAAQ,gBAAS,YAAT,EAAuB,YAAvB,EAAqC;AACzC,aAAI,YAAY,aAAa,IAAb;aACZ,YAAY,aAAa,IAAb;aACZ,QAAQ,aAAa,IAAb,CAAkB,CAAlB;aACR,SAAS,aAAa,IAAb,CAAkB,CAAlB;aACT,SAAS,+DAAO,MAAP,CAAc,YAAd,EAA4B,YAA5B,CAAT,CALqC;;AAOzC,gBAAO;AACH,wBAAW,mBAAS,UAAT,EAAqB;AAC5B,qBAAI,KAAJ;qBACI,EADJ;qBAEI,EAFJ;qBAGI,UAHJ;qBAII,EAJJ;qBAKI,EALJ;qBAMI,WAAW,EAAX;qBACA,MAPJ;qBAQI,CARJ;qBASI,EATJ;qBAUI,EAVJ;qBAWI,GAXJ;qBAYI,iBAAiB,CAAjB;qBACA,CAbJ,CAD4B;;AAgB5B,sBAAM,IAAI,CAAJ,EAAO,IAAI,GAAJ,EAAS,GAAtB,EAA2B;AACvB,8BAAS,CAAT,IAAc,CAAd,CADuB;kBAA3B;;AAIA,0BAAS,CAAT,IAAc,UAAU,CAAV,CAAd,CApB4B;AAqB5B,sBAAK,IAAL,CArB4B;AAsB5B,sBAAM,KAAK,CAAL,EAAQ,KAAK,SAAS,CAAT,EAAY,IAA/B,EAAqC;AACjC,kCAAa,CAAb,CADiC;AAEjC,0BAAK,SAAS,CAAT,CAAL,CAFiC;AAGjC,0BAAM,KAAK,CAAL,EAAQ,KAAK,QAAQ,CAAR,EAAW,IAA9B,EAAoC;AAChC,+BAAM,KAAK,KAAL,GAAa,EAAb,CAD0B;AAEhC,6BAAI,UAAU,GAAV,MAAmB,CAAnB,EAAsB;AACtB,qCAAQ,UAAU,GAAV,CAAR,CADsB;AAEtB,iCAAI,UAAU,EAAV,EAAc;AACd,qCAAI,eAAe,CAAf,EAAkB;AAClB,0CAAK,iBAAiB,CAAjB,CADa;AAElB,8CAAS,EAAT,IAAe,KAAf,CAFkB;AAGlB,0CAAK,KAAL,CAHkB;AAIlB,8CAAS,OAAO,cAAP,CAAsB,EAAtB,EAA0B,EAA1B,EAA8B,EAA9B,EAAkC,KAAlC,EAAyC,WAAW,GAAX,CAAe,YAAf,CAAlD,CAJkB;AAKlB,yCAAI,WAAW,IAAX,EAAiB;AACjB,0DADiB;AAEjB,sDAAa,EAAb,CAFiB;AAGjB,6CAAI,WAAW,eAAX,EAAJ,CAHiB;AAIjB,2CAAE,GAAF,GAAQ,WAAW,WAAX,CAAuB,MAAvB,CAJS;AAKjB,2CAAE,KAAF,GAAU,UAAV,CALiB;AAMjB,2CAAE,WAAF,GAAgB,MAAhB,CANiB;AAOjB,2CAAE,QAAF,GAAa,EAAb,CAPiB;AAQjB,2CAAE,cAAF,GAAmB,IAAnB,CARiB;AASjB,6CAAI,OAAO,IAAP,EAAa;AACb,gDAAG,QAAH,GAAc,CAAd,CADa;0CAAjB;AAGA,8CAAK,CAAL,CAZiB;sCAArB;kCALJ,MAmBO;AACH,8CAAS,OACJ,cADI,CACW,EADX,EACe,EADf,EACmB,WAAW,GAAX,CAAe,WAAf,EAA4B,KAD/C,EACsD,UADtD,CAAT,CADG;AAGH,yCAAI,WAAW,IAAX,EAAiB;AACjB,6CAAI,WAAW,eAAX,EAAJ,CADiB;AAEjB,2CAAE,WAAF,GAAgB,MAAhB,CAFiB;AAGjB,2CAAE,cAAF,GAAmB,IAAnB,CAHiB;AAIjB,6CAAI,eAAe,CAAf,EAAkB;AAClB,+CAAE,GAAF,GAAQ,WAAW,WAAX,CAAuB,OAAvB,CADU;0CAAtB,MAEO;AACH,+CAAE,GAAF,GAAQ,WAAW,WAAX,CAAuB,MAAvB,CADL;0CAFP;AAKA,2CAAE,KAAF,GAAU,UAAV,CATiB;AAUjB,8CAAK,EAAL,CAViB;AAWjB,gDAAO,EAAC,KAAO,IAAP,IAAgB,GAAG,KAAH,KAAa,UAAb,EAAyB;AAC7C,kDAAK,GAAG,QAAH,CADwC;0CAAjD;AAGA,6CAAI,OAAO,IAAP,EAAa;AACb,+CAAE,QAAF,GAAa,GAAG,cAAH,CADA;AAEb,iDAAI,GAAG,cAAH,KAAsB,IAAtB,EAA4B;AAC5B,oDAAG,cAAH,CAAkB,QAAlB,GAA6B,CAA7B,CAD4B;8CAAhC;AAGA,gDAAG,cAAH,GAAoB,CAApB,CALa;0CAAjB;sCAdJ;kCAtBJ;8BADJ,MA8CO;AACH,2CAAU,GAAV,IAAiB,UAAjB,CADG;8BA9CP;0BAFJ,MAmDO,IAAI,UAAU,GAAV,MAAmB,WAAW,GAAX,CAAe,YAAf,IACnB,UAAU,GAAV,MAAmB,WAAW,GAAX,CAAe,WAAf,EAA4B;AACtD,0CAAa,CAAb,CADsD;AAEtD,iCAAI,UAAU,GAAV,MAAmB,WAAW,GAAX,CAAe,WAAf,EAA4B;AAC/C,sCAAK,UAAU,GAAV,CAAL,CAD+C;8BAAnD,MAEO;AACH,sCAAK,SAAS,CAAT,CAAL,CADG;8BAFP;0BAHG,MAQA;AACH,0CAAa,UAAU,GAAV,CAAb,CADG;AAEH,kCAAK,SAAS,UAAT,CAAL,CAFG;0BARA;sBArDX;kBAHJ;AAsEA,sBAAK,EAAL,CA5F4B;AA6F5B,wBAAO,OAAO,IAAP,EAAa;AAChB,wBAAG,KAAH,GAAW,UAAX,CADgB;AAEhB,0BAAK,GAAG,QAAH,CAFW;kBAApB;AAIA,wBAAO;AACH,yBAAI,EAAJ;AACA,4BAAO,cAAP;kBAFJ,CAjG4B;cAArB;AAsGX,oBAAO;AACH,8BAAa,qBAAS,MAAT,EAAiB,YAAjB,EAA+B;AACxC,yBAAI,MAAM,OAAO,UAAP,CAAkB,IAAlB,CAAN;yBACA,KAAK,YAAL;yBACA,EAFJ;yBAGI,CAHJ;yBAII,CAJJ,CADwC;;AAOxC,yBAAI,WAAJ,GAAkB,KAAlB,CAPwC;AAQxC,yBAAI,SAAJ,GAAgB,KAAhB,CARwC;AASxC,yBAAI,SAAJ,GAAgB,CAAhB,CATwC;;AAWxC,yBAAI,OAAO,IAAP,EAAa;AACb,8BAAK,GAAG,cAAH,CADQ;sBAAjB,MAEO;AACH,8BAAK,IAAL,CADG;sBAFP;;AAMA,4BAAO,OAAO,IAAP,EAAa;AAChB,6BAAI,OAAO,IAAP,EAAa;AACb,iCAAI,EAAJ,CADa;AAEb,kCAAK,GAAG,QAAH,CAFQ;0BAAjB,MAGO;AACH,iCAAI,EAAJ,CADG;AAEH,kCAAK,GAAG,QAAH,CAFF;AAGH,iCAAI,OAAO,IAAP,EAAa;AACb,sCAAK,GAAG,cAAH,CADQ;8BAAjB,MAEO;AACH,sCAAK,IAAL,CADG;8BAFP;0BANJ;;AAaA,iCAAQ,EAAE,GAAF;AACR,kCAAK,WAAW,WAAX,CAAuB,MAAvB;AACD,qCAAI,WAAJ,GAAkB,KAAlB,CADJ;AAEI,uCAFJ;AADA,kCAIK,WAAW,WAAX,CAAuB,OAAvB;AACD,qCAAI,WAAJ,GAAkB,MAAlB,CADJ;AAEI,uCAFJ;AAJA,kCAOK,WAAW,WAAX,CAAuB,WAAvB;AACD,qCAAI,WAAJ,GAAkB,OAAlB,CADJ;AAEI,uCAFJ;AAPA,0BAdgB;;AA0BhB,6BAAI,EAAE,WAAF,CA1BY;AA2BhB,6BAAI,SAAJ,GA3BgB;AA4BhB,6BAAI,MAAJ,CAAW,EAAE,CAAF,EAAK,EAAE,CAAF,CAAhB,CA5BgB;AA6BhB,4BAAG;AACC,iCAAI,EAAE,IAAF,CADL;AAEC,iCAAI,MAAJ,CAAW,EAAE,CAAF,EAAK,EAAE,CAAF,CAAhB,CAFD;0BAAH,QAGS,MAAM,EAAE,WAAF,EAhCC;AAiChB,6BAAI,MAAJ,GAjCgB;sBAApB;kBAjBS;cADjB;UAvGJ,CAPyC;MAArC;EApBR;;AA6LJ,6CAAe,UAAf,C;;;;;;;;AChMA,UAAS,YAAT,CAAsB,MAAtB,EAA8B,OAA9B,EAAuC,MAAvC,EAA+C;AAC3C,eAD2C;;AAG3C,SAAI,SAAS,IAAI,OAAO,UAAP,CAAkB,MAAtB,CAAT;SACA,OAAO,QAAQ,IAAR,GAAe,CAAf;SACP,OAAO,OAAO,IAAP,CAAY,IAAZ,CALgC;;AAO3C,cAAS,KAAT,CAAe,UAAf,EAA2B,WAA3B,EAAwC;AACpC,sBAAa,aAAa,CAAb,CADuB;AAEpC,uBAAc,cAAc,CAAd,CAFsB;;AAIpC,aAAI,IAAI,CAAJ;aACA,IAAI,CAAJ;aACA,MAAM,CAAN;aACA,UAAU,CAAV;aACA,UAAU,CAAV;aACA,UAAU,CAAV;aACA,UAAU,CAAV;aACA,SAAS,CAAT,CAXgC;;AAapC,cAAM,IAAI,CAAJ,EAAO,CAAC,IAAI,CAAJ,CAAD,IAAW,IAAC,GAAO,CAAP,GAAY,CAAb,CAAX,EAA4B,IAAI,CAAC,GAAI,CAAJ,GAAS,CAAV,EAAa;AACtD,sBAAS,MAAC,GAAS,IAAT,GAAiB,CAAlB,CAD6C;AAEtD,kBAAM,IAAI,CAAJ,EAAO,CAAC,IAAI,CAAJ,CAAD,IAAW,IAAC,GAAO,CAAP,GAAY,CAAb,CAAX,EAA4B,IAAI,CAAC,GAAI,CAAJ,GAAS,CAAV,EAAa;AACtD,2BAAU,MAAC,GAAS,IAAT,GAAiB,CAAlB,CAD4C;AAEtD,2BAAU,MAAC,GAAS,IAAT,GAAiB,CAAlB,CAF4C;AAGtD,2BAAU,CAAC,GAAI,CAAJ,GAAS,CAAV,CAH4C;AAItD,2BAAU,CAAC,GAAI,CAAJ,GAAS,CAAV,CAJ4C;AAKtD,uBAAM,CAAE,OAAO,UAAC,GAAa,OAAb,GAAuB,OAAvB,GAAkC,CAAnC,CAAP,GAA+C,CAA/C,CAAD,IACA,OAAO,UAAC,GAAa,OAAb,GAAuB,OAAvB,GAAkC,CAAnC,CAAP,GAA+C,CAA/C,CADA,IAEA,OAAO,UAAC,GAAa,MAAb,GAAsB,CAAtB,GAA2B,CAA5B,CAAP,GAAwC,CAAxC,CAFA,IAGA,OAAO,UAAC,GAAa,OAAb,GAAuB,OAAvB,GAAkC,CAAnC,CAAP,GAA+C,CAA/C,CAHA,IAIA,OAAO,UAAC,GAAa,OAAb,GAAuB,OAAvB,GAAkC,CAAnC,CAAP,GAA+C,CAA/C,CAJA,GAIqD,CAJtD,CALgD;AAUtD,qBAAI,CAAC,MAAM,CAAN,CAAD,KAAc,IAAI,CAAJ,CAAd,EAAsB;AACtB,4BAAO,WAAC,GAAc,MAAd,GAAuB,CAAvB,GAA4B,CAA7B,CAAP,GAAyC,CAAzC,CADsB;kBAA1B,MAEO;AACH,4BAAO,WAAC,GAAc,MAAd,GAAuB,CAAvB,GAA4B,CAA7B,CAAP,GAAyC,CAAzC,CADG;kBAFP;cAVJ;UAFJ;AAmBA,gBAhCoC;MAAxC;;AAmCA,cAAS,QAAT,CAAkB,SAAlB,EAA6B,SAA7B,EAAwC,WAAxC,EAAqD;AACjD,qBAAY,YAAY,CAAZ,CADqC;AAEjD,qBAAY,YAAY,CAAZ,CAFqC;AAGjD,uBAAc,cAAc,CAAd,CAHmC;;AAKjD,aAAI,SAAS,CAAT,CAL6C;;AAOjD,kBAAS,KAAK,IAAL,EAAW,IAAX,IAAmB,CAAnB,CAPwC;;AASjD,gBAAO,CAAC,SAAS,CAAT,CAAD,GAAe,CAAf,EAAkB;AACrB,sBAAS,MAAC,GAAS,CAAT,GAAc,CAAf,CADY;AAErB,oBAAO,WAAC,GAAc,MAAd,GAAwB,CAAzB,CAAP,GACI,CAAE,OAAO,SAAC,GAAY,MAAZ,GAAsB,CAAvB,CAAP,GAAmC,CAAnC,CAAD,IAA0C,OAAO,SAAC,GAAY,MAAZ,GAAsB,CAAvB,CAAP,GAAmC,CAAnC,CAA1C,GAAmF,CAApF,CAHiB;UAAzB;MATJ;;AAgBA,cAAS,SAAT,CAAmB,SAAnB,EAA8B,SAA9B,EAAyC,WAAzC,EAAsD;AAClD,qBAAY,YAAY,CAAZ,CADsC;AAElD,qBAAY,YAAY,CAAZ,CAFsC;AAGlD,uBAAc,cAAc,CAAd,CAHoC;;AAKlD,aAAI,SAAS,CAAT,CAL8C;;AAOlD,kBAAS,KAAK,IAAL,EAAW,IAAX,IAAmB,CAAnB,CAPyC;;AASlD,gBAAO,CAAC,SAAS,CAAT,CAAD,GAAe,CAAf,EAAkB;AACrB,sBAAS,MAAC,GAAS,CAAT,GAAc,CAAf,CADY;AAErB,oBAAO,WAAC,GAAc,MAAd,GAAwB,CAAzB,CAAP,GACI,MAAE,CAAO,SAAC,GAAY,MAAZ,GAAsB,CAAvB,CAAP,GAAmC,CAAnC,IAAyC,OAAO,SAAC,GAAY,MAAZ,GAAsB,CAAvB,CAAP,GAAmC,CAAnC,CAA1C,GAAmF,CAApF,CAHiB;UAAzB;MATJ;;AAgBA,cAAS,YAAT,CAAsB,QAAtB,EAAgC;AAC5B,oBAAW,WAAW,CAAX,CADiB;;AAG5B,aAAI,MAAM,CAAN;aACA,SAAS,CAAT,CAJwB;;AAM5B,kBAAS,KAAK,IAAL,EAAW,IAAX,IAAmB,CAAnB,CANmB;;AAQ5B,gBAAO,CAAC,SAAS,CAAT,CAAD,GAAe,CAAf,EAAkB;AACrB,sBAAS,MAAC,GAAS,CAAT,GAAc,CAAf,CADY;AAErB,mBAAM,CAAE,MAAM,CAAN,CAAD,IAAa,OAAO,QAAC,GAAW,MAAX,GAAqB,CAAtB,CAAP,GAAkC,CAAlC,CAAb,GAAqD,CAAtD,CAFe;UAAzB;;AAKA,gBAAQ,MAAM,CAAN,CAboB;MAAhC;;AAgBA,cAAS,IAAT,CAAc,QAAd,EAAwB,KAAxB,EAA+B;AAC3B,oBAAW,WAAW,CAAX,CADgB;AAE3B,iBAAQ,QAAQ,CAAR,CAFmB;;AAI3B,aAAI,SAAS,CAAT,CAJuB;;AAM3B,kBAAS,KAAK,IAAL,EAAW,IAAX,IAAmB,CAAnB,CANkB;;AAQ3B,gBAAO,CAAC,SAAS,CAAT,CAAD,GAAe,CAAf,EAAkB;AACrB,sBAAS,MAAC,GAAS,CAAT,GAAc,CAAf,CADY;AAErB,oBAAO,QAAC,GAAW,MAAX,GAAqB,CAAtB,CAAP,GAAkC,KAAlC,CAFqB;UAAzB;MARJ;;AAcA,cAAS,MAAT,CAAgB,UAAhB,EAA4B,WAA5B,EAAyC;AACrC,sBAAa,aAAa,CAAb,CADwB;AAErC,uBAAc,cAAc,CAAd,CAFuB;;AAIrC,aAAI,IAAI,CAAJ;aACA,IAAI,CAAJ;aACA,MAAM,CAAN;aACA,UAAU,CAAV;aACA,UAAU,CAAV;aACA,UAAU,CAAV;aACA,UAAU,CAAV;aACA,SAAS,CAAT,CAXiC;;AAarC,cAAM,IAAI,CAAJ,EAAO,CAAC,IAAI,CAAJ,CAAD,IAAW,IAAC,GAAO,CAAP,GAAY,CAAb,CAAX,EAA4B,IAAI,CAAC,GAAI,CAAJ,GAAS,CAAV,EAAa;AACtD,sBAAS,MAAC,GAAS,IAAT,GAAiB,CAAlB,CAD6C;AAEtD,kBAAM,IAAI,CAAJ,EAAO,CAAC,IAAI,CAAJ,CAAD,IAAW,IAAC,GAAO,CAAP,GAAY,CAAb,CAAX,EAA4B,IAAI,CAAC,GAAI,CAAJ,GAAS,CAAV,EAAa;AACtD,2BAAU,MAAC,GAAS,IAAT,GAAiB,CAAlB,CAD4C;AAEtD,2BAAU,MAAC,GAAS,IAAT,GAAiB,CAAlB,CAF4C;AAGtD,2BAAU,CAAC,GAAI,CAAJ,GAAS,CAAV,CAH4C;AAItD,2BAAU,CAAC,GAAI,CAAJ,GAAS,CAAV,CAJ4C;AAKtD,uBAAM,CAAE,OAAO,UAAC,GAAa,OAAb,GAAuB,OAAvB,GAAkC,CAAnC,CAAP,GAA+C,CAA/C,CAAD,IACA,OAAO,UAAC,GAAa,OAAb,GAAuB,OAAvB,GAAkC,CAAnC,CAAP,GAA+C,CAA/C,CADA,IAEA,OAAO,UAAC,GAAa,MAAb,GAAsB,CAAtB,GAA2B,CAA5B,CAAP,GAAwC,CAAxC,CAFA,IAGA,OAAO,UAAC,GAAa,OAAb,GAAuB,OAAvB,GAAkC,CAAnC,CAAP,GAA+C,CAA/C,CAHA,IAIA,OAAO,UAAC,GAAa,OAAb,GAAuB,OAAvB,GAAkC,CAAnC,CAAP,GAA+C,CAA/C,CAJA,GAIqD,CAJtD,CALgD;AAUtD,qBAAI,CAAC,MAAM,CAAN,CAAD,IAAa,IAAI,CAAJ,CAAb,EAAqB;AACrB,4BAAO,WAAC,GAAc,MAAd,GAAuB,CAAvB,GAA4B,CAA7B,CAAP,GAAyC,CAAzC,CADqB;kBAAzB,MAEO;AACH,4BAAO,WAAC,GAAc,MAAd,GAAuB,CAAvB,GAA4B,CAA7B,CAAP,GAAyC,CAAzC,CADG;kBAFP;cAVJ;UAFJ;AAmBA,gBAhCqC;MAAzC;;AAmCA,cAAS,MAAT,CAAgB,WAAhB,EAA6B,WAA7B,EAA0C;AACtC,uBAAc,cAAc,CAAd,CADwB;AAEtC,uBAAc,cAAc,CAAd,CAFwB;;AAItC,aAAI,SAAS,CAAT,CAJkC;;AAMtC,kBAAS,KAAK,IAAL,EAAW,IAAX,IAAmB,CAAnB,CAN6B;;AAQtC,gBAAO,CAAC,SAAS,CAAT,CAAD,GAAe,CAAf,EAAkB;AACrB,sBAAS,MAAC,GAAS,CAAT,GAAc,CAAf,CADY;AAErB,oBAAO,WAAC,GAAc,MAAd,GAAwB,CAAzB,CAAP,GAAsC,OAAO,WAAC,GAAc,MAAd,GAAwB,CAAzB,CAAP,GAAqC,CAArC,CAFjB;UAAzB;MARJ;;AAcA,cAAS,UAAT,CAAoB,QAApB,EAA8B;AAC1B,oBAAW,WAAW,CAAX,CADe;;AAG1B,aAAI,IAAI,CAAJ;aACA,IAAI,CAAJ,CAJsB;;AAM1B,cAAM,IAAI,CAAJ,EAAO,CAAC,IAAI,CAAJ,CAAD,IAAW,IAAC,GAAO,CAAP,GAAY,CAAb,CAAX,EAA4B,IAAI,CAAC,GAAI,CAAJ,GAAS,CAAV,EAAa;AACtD,oBAAO,QAAC,GAAW,CAAX,GAAgB,CAAjB,CAAP,GAA6B,CAA7B,CADsD;AAEtD,oBAAO,QAAC,GAAW,CAAX,GAAgB,CAAjB,CAAP,GAA6B,CAA7B,CAFsD;AAGtD,iBAAI,CAAE,GAAI,IAAJ,GAAY,CAAb,GAAkB,CAAnB,CAHkD;AAItD,oBAAO,QAAC,GAAW,CAAX,GAAgB,CAAjB,CAAP,GAA6B,CAA7B,CAJsD;AAKtD,iBAAI,CAAC,GAAI,CAAJ,GAAS,CAAV,CALkD;UAA1D;AAOA,cAAM,IAAI,CAAJ,EAAO,CAAC,IAAI,CAAJ,CAAD,IAAW,OAAO,CAAP,CAAX,EAAsB,IAAI,CAAC,GAAI,CAAJ,GAAS,CAAV,EAAa;AAChD,oBAAO,QAAC,GAAW,CAAX,GAAgB,CAAjB,CAAP,GAA6B,CAA7B,CADgD;AAEhD,iBAAI,CAAC,GAAI,CAAJ,GAAS,CAAV,CAF4C;UAApD;MAbJ;;AAmBA,cAAS,WAAT,GAAuB;AACnB,aAAI,cAAc,CAAd;aACA,iBAAiB,CAAjB;aACA,eAAe,CAAf;aACA,eAAe,CAAf;aACA,MAAM,CAAN;aACA,OAAO,CAAP,CANe;;AAQnB,0BAAiB,KAAK,IAAL,EAAW,IAAX,IAAmB,CAAnB,CARE;AASnB,wBAAe,cAAC,GAAiB,cAAjB,GAAmC,CAApC,CATI;AAUnB,wBAAe,YAAC,GAAe,cAAf,GAAiC,CAAlC;;;AAVI,aAanB,CAAK,YAAL,EAAmB,CAAnB,EAbmB;AAcnB,oBAAW,WAAX,EAdmB;;AAgBnB,YAAG;AACC,mBAAM,WAAN,EAAmB,cAAnB,EADD;AAEC,oBAAO,cAAP,EAAuB,YAAvB,EAFD;AAGC,sBAAS,WAAT,EAAsB,YAAtB,EAAoC,YAApC,EAHD;AAIC,uBAAU,YAAV,EAAwB,YAAxB,EAAsC,YAAtC,EAJD;AAKC,oBAAO,cAAP,EAAuB,WAAvB,EALD;AAMC,mBAAM,aAAa,WAAb,IAA4B,CAA5B,CANP;AAOC,oBAAQ,CAAC,MAAM,CAAN,CAAD,IAAa,CAAb,GAAiB,CAAjB,CAPT;UAAH,QAQS,CAAC,IAAD,EAxBU;MAAvB;AA0BA,YAAO;AACH,sBAAa,WAAb;MADJ,CAtM2C;EAA/C;;AA2MA,6CAAe,YAAf;;;;;;;;AC7MA;;AAEA,UAAS,aAAT,GAAyB;AACrB,4EAAc,IAAd,CAAmB,IAAnB,EADqB;AAErB,UAAK,SAAL,GAAiB,EAAjB,CAFqB;EAAzB;;AAKA,KAAI,aAAa;AACb,uBAAkB,EAAC,OAAO,sBAAP,EAAnB;AACA,eAAU,EAAC,OAAO,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,EAArB,EAAyB,EAAzB,EAA6B,EAA7B,EAAiC,EAAjC,EAAqC,EAArC,EAAyC,EAAzC,EAA6C,EAA7C,EAAiD,EAAjD,EAAqD,EAArD,EAAyD,EAAzD,EAA6D,EAA7D,EAAiE,EAAjE,EAAqE,EAArE,EAAyE,EAAzE,EAA6E,EAA7E,CAAP,EAAX;AACA,0BAAqB,EAAC,OAAO,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,EAAkD,KAAlD,EAAyD,KAAzD,EAAgE,KAAhE,EAAuE,KAAvE,EAA8E,KAA9E,EACzB,KADyB,EAClB,KADkB,EACX,KADW,EACJ,KADI,EACG,KADH,EACU,KADV,EACiB,KADjB,EACwB,KADxB,CAAP,EAAtB;AAEA,gBAAW,EAAC,OAAO,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,CAAP,EAAZ;AACA,wBAAmB,EAAC,OAAO,CAAP,EAApB;AACA,qBAAgB,EAAC,OAAO,GAAP,EAAjB;AACA,cAAS,EAAC,OAAO,GAAP,EAAV;AACA,aAAQ,EAAC,OAAO,SAAP,EAAkB,WAAW,KAAX,EAA3B;EATA;;AAYJ,eAAc,SAAd,GAA0B,OAAO,MAAP,CAAc,uEAAc,SAAd,EAAyB,UAAvC,CAA1B;AACA,eAAc,SAAd,CAAwB,WAAxB,GAAsC,aAAtC;;AAEA,eAAc,SAAd,CAAwB,OAAxB,GAAkC,YAAW;AACzC,SAAI,OAAO,IAAP;SACA,SAAS,EAAT;SACA,KAFJ;SAGI,WAHJ;SAII,OAJJ;SAKI,SALJ;SAMI,GANJ,CADyC;;AASzC,UAAK,SAAL,GAAiB,KAAK,aAAL,EAAjB,CATyC;AAUzC,aAAQ,KAAK,UAAL,EAAR,CAVyC;AAWzC,SAAI,CAAC,KAAD,EAAQ;AACR,gBAAO,IAAP,CADQ;MAAZ;AAGA,iBAAY,MAAM,YAAN,CAd6B;;AAgBzC,QAAG;AACC,mBAAU,KAAK,UAAL,CAAgB,SAAhB,CAAV,CADD;AAEC,aAAI,UAAU,CAAV,EAAa;AACb,oBAAO,IAAP,CADa;UAAjB;AAGA,uBAAc,KAAK,cAAL,CAAoB,OAApB,CAAd,CALD;AAMC,aAAI,cAAc,CAAd,EAAgB;AAChB,oBAAO,IAAP,CADgB;UAApB;AAGA,gBAAO,IAAP,CAAY,WAAZ,EATD;AAUC,sBAAa,CAAb,CAVD;AAWC,aAAI,OAAO,MAAP,GAAgB,CAAhB,IAAqB,KAAK,WAAL,CAAiB,OAAjB,CAArB,EAAgD;AAChD,mBADgD;UAApD;MAXJ,QAcS,YAAY,KAAK,SAAL,CAAe,MAAf;;;AA9BoB,SAiCrC,MAAC,CAAO,MAAP,GAAgB,CAAhB,GAAqB,KAAK,iBAAL,IAA0B,CAAC,KAAK,WAAL,CAAiB,OAAjB,CAAD,EAA4B;AAC5E,gBAAO,IAAP,CAD4E;MAAhF;;;AAjCyC,SAsCrC,CAAC,KAAK,iBAAL,CAAuB,MAAM,YAAN,EAAoB,YAAY,CAAZ,CAA5C,EAA2D;AAC3D,gBAAO,IAAP,CAD2D;MAA/D;;AAIA,SAAI,CAAC,KAAK,eAAL,CAAqB,MAArB,EAA6B,MAAM,YAAN,CAA9B,EAAkD;AAClD,gBAAO,IAAP,CADkD;MAAtD;;AAIA,iBAAY,YAAY,KAAK,SAAL,CAAe,MAAf,GAAwB,KAAK,SAAL,CAAe,MAAf,GAAwB,SAA5D,CA9C6B;AA+CzC,WAAM,MAAM,KAAN,GAAc,KAAK,YAAL,CAAkB,MAAM,YAAN,EAAoB,YAAY,CAAZ,CAApD,CA/CmC;;AAiDzC,YAAO;AACH,eAAM,OAAO,IAAP,CAAY,EAAZ,CAAN;AACA,gBAAO,MAAM,KAAN;AACP,cAAK,GAAL;AACA,oBAAW,KAAX;AACA,uBAAc,MAAd;MALJ,CAjDyC;EAAX;;AA0DlC,eAAc,SAAd,CAAwB,iBAAxB,GAA4C,UAAS,YAAT,EAAuB,UAAvB,EAAmC;AAC3E,SAAI,YAAC,GAAe,CAAf,IAAoB,CAApB,IACM,KAAK,SAAL,CAAe,eAAe,CAAf,CAAf,IAAqC,KAAK,uBAAL,CAA6B,YAA7B,IAA6C,GAA7C,EAAmD;AAC/F,aAAI,UAAC,GAAa,CAAb,IAAkB,KAAK,SAAL,CAAe,MAAf,IACZ,KAAK,SAAL,CAAe,aAAa,CAAb,CAAf,IAAmC,KAAK,uBAAL,CAA6B,UAA7B,IAA2C,GAA3C,EAAiD;AAC3F,oBAAO,IAAP,CAD2F;UAD/F;MAFJ;AAOA,YAAO,KAAP,CAR2E;EAAnC;;AAW5C,eAAc,SAAd,CAAwB,uBAAxB,GAAkD,UAAS,MAAT,EAAiB;AAC/D,SAAI,CAAJ;SACI,MAAM,CAAN,CAF2D;;AAI/D,UAAK,IAAI,MAAJ,EAAY,IAAI,SAAS,CAAT,EAAY,GAAjC,EAAsC;AAClC,gBAAO,KAAK,SAAL,CAAe,CAAf,CAAP,CADkC;MAAtC;;AAIA,YAAO,GAAP,CAR+D;EAAjB;;AAWlD,eAAc,SAAd,CAAwB,uBAAxB,GAAkD,UAAS,MAAT,EAAiB,YAAjB,EAA8B;AAC5E,SAAI,OAAO,IAAP;SACA,iBAAiB;AACb,gBAAO;AACH,qBAAQ,EAAE,MAAM,CAAN,EAAS,QAAQ,CAAR,EAAW,KAAK,CAAL,EAAQ,KAAK,OAAO,SAAP,EAA3C;AACA,mBAAM,EAAC,MAAM,CAAN,EAAS,QAAQ,CAAR,EAAW,KAAK,CAAL,EAAQ,KAAK,OAAO,SAAP,EAAxC;UAFJ;AAIA,cAAK;AACD,qBAAQ,EAAE,MAAM,CAAN,EAAS,QAAQ,CAAR,EAAW,KAAK,CAAL,EAAQ,KAAK,OAAO,SAAP,EAA3C;AACA,mBAAM,EAAE,MAAM,CAAN,EAAS,QAAQ,CAAR,EAAW,KAAK,CAAL,EAAQ,KAAK,OAAO,SAAP,EAAzC;UAFJ;MALJ;SAUA,IAXJ;SAYI,GAZJ;SAaI,CAbJ;SAcI,CAdJ;SAeI,MAAM,YAAN;SACA,OAhBJ,CAD4E;;AAmB5E,UAAK,IAAI,CAAJ,EAAO,IAAI,OAAO,MAAP,EAAe,GAA/B,EAAmC;AAC/B,mBAAU,KAAK,cAAL,CAAoB,OAAO,CAAP,CAApB,CAAV,CAD+B;AAE/B,cAAK,IAAI,CAAJ,EAAO,KAAK,CAAL,EAAQ,GAApB,EAAyB;AACrB,oBAAO,CAAC,IAAI,CAAJ,CAAD,KAAY,CAAZ,GAAgB,eAAe,GAAf,GAAqB,eAAe,KAAf,CADvB;AAErB,mBAAM,CAAC,UAAU,CAAV,CAAD,KAAkB,CAAlB,GAAsB,KAAK,IAAL,GAAY,KAAK,MAAL,CAFnB;AAGrB,iBAAI,IAAJ,IAAY,KAAK,SAAL,CAAe,MAAM,CAAN,CAA3B,CAHqB;AAIrB,iBAAI,MAAJ,GAJqB;AAKrB,yBAAY,CAAZ,CALqB;UAAzB;AAOA,gBAAO,CAAP,CAT+B;MAAnC;;AAYA,MAAC,OAAD,EAAU,KAAV,EAAiB,OAAjB,CAAyB,UAAS,GAAT,EAAc;AACnC,aAAI,UAAU,eAAe,GAAf,CAAV,CAD+B;AAEnC,iBAAQ,IAAR,CAAa,GAAb,GACI,KAAK,KAAL,CAAW,CAAC,QAAQ,MAAR,CAAe,IAAf,GAAsB,QAAQ,MAAR,CAAe,MAAf,GAAwB,QAAQ,IAAR,CAAa,IAAb,GAAoB,QAAQ,IAAR,CAAa,MAAb,CAAnE,GAA0F,CAA1F,CADf,CAFmC;AAInC,iBAAQ,MAAR,CAAe,GAAf,GAAqB,KAAK,IAAL,CAAU,QAAQ,IAAR,CAAa,GAAb,CAA/B,CAJmC;AAKnC,iBAAQ,IAAR,CAAa,GAAb,GAAmB,KAAK,IAAL,CAAU,CAAC,QAAQ,IAAR,CAAa,IAAb,GAAoB,KAAK,cAAL,GAAsB,KAAK,OAAL,CAA3C,GAA2D,QAAQ,IAAR,CAAa,MAAb,CAAxF,CALmC;MAAd,CAAzB,CA/B4E;;AAuC5E,YAAO,cAAP,CAvC4E;EAA9B;;AA0ClD,eAAc,SAAd,CAAwB,cAAxB,GAAyC,UAAS,IAAT,EAAe;AACpD,SAAI,OAAO,IAAP;SACA,WAAW,KAAK,UAAL,CAAgB,CAAhB,CAAX;SACA,CAFJ,CADoD;;AAKpD,UAAK,IAAI,CAAJ,EAAO,IAAI,KAAK,QAAL,CAAc,MAAd,EAAsB,GAAtC,EAA2C;AACvC,aAAI,KAAK,QAAL,CAAc,CAAd,MAAqB,QAArB,EAA8B;AAC9B,oBAAO,KAAK,mBAAL,CAAyB,CAAzB,CAAP,CAD8B;UAAlC;MADJ;AAKA,YAAO,GAAP,CAVoD;EAAf;;AAazC,eAAc,SAAd,CAAwB,eAAxB,GAA0C,UAAS,MAAT,EAAiB,YAAjB,EAA+B;AACrE,SAAI,OAAO,IAAP;SACA,aAAa,KAAK,uBAAL,CAA6B,MAA7B,EAAqC,YAArC,CAAb;SACA,CAFJ;SAGI,CAHJ;SAII,IAJJ;SAKI,GALJ;SAMI,IANJ;SAOI,MAAM,YAAN;SACA,OARJ,CADqE;;AAWrE,UAAK,IAAI,CAAJ,EAAO,IAAI,OAAO,MAAP,EAAe,GAA/B,EAAoC;AAChC,mBAAU,KAAK,cAAL,CAAoB,OAAO,CAAP,CAApB,CAAV,CADgC;AAEhC,cAAK,IAAI,CAAJ,EAAO,KAAK,CAAL,EAAQ,GAApB,EAAyB;AACrB,oBAAO,CAAC,IAAI,CAAJ,CAAD,KAAY,CAAZ,GAAgB,WAAW,GAAX,GAAiB,WAAW,KAAX,CADnB;AAErB,mBAAM,CAAC,UAAU,CAAV,CAAD,KAAkB,CAAlB,GAAsB,KAAK,IAAL,GAAY,KAAK,MAAL,CAFnB;AAGrB,oBAAO,KAAK,SAAL,CAAe,MAAM,CAAN,CAAtB,CAHqB;AAIrB,iBAAI,OAAO,IAAI,GAAJ,IAAW,OAAO,IAAI,GAAJ,EAAS;AAClC,wBAAO,KAAP,CADkC;cAAtC;AAGA,yBAAY,CAAZ,CAPqB;UAAzB;AASA,gBAAO,CAAP,CAXgC;MAApC;AAaA,YAAO,IAAP,CAxBqE;EAA/B;;AA2B1C,eAAc,SAAd,CAAwB,cAAxB,GAAyC,UAAS,OAAT,EAAkB;AACvD,SAAI,CAAJ;SACI,OAAO,IAAP,CAFmD;;AAIvD,UAAK,IAAI,CAAJ,EAAO,IAAI,KAAK,mBAAL,CAAyB,MAAzB,EAAiC,GAAjD,EAAsD;AAClD,aAAI,KAAK,mBAAL,CAAyB,CAAzB,MAAgC,OAAhC,EAAyC;AACzC,oBAAO,OAAO,YAAP,CAAoB,KAAK,QAAL,CAAc,CAAd,CAApB,CAAP,CADyC;UAA7C;MADJ;AAKA,YAAO,CAAC,CAAD,CATgD;EAAlB;;AAYzC,eAAc,SAAd,CAAwB,4BAAxB,GAAuD,UAAS,MAAT,EAAiB,GAAjB,EAAsB;AACzE,SAAI,CAAJ;SACI,MAAM,OAAO,SAAP;SACN,MAAM,CAAN;SACA,OAHJ,CADyE;;AAMzE,UAAK,IAAI,MAAJ,EAAY,IAAI,GAAJ,EAAS,KAAK,CAAL,EAAO;AAC7B,mBAAU,KAAK,SAAL,CAAe,CAAf,CAAV,CAD6B;AAE7B,aAAI,UAAU,GAAV,EAAe;AACf,mBAAM,OAAN,CADe;UAAnB;AAGA,aAAI,UAAU,GAAV,EAAe;AACf,mBAAM,OAAN,CADe;UAAnB;MALJ;;AAUA,YAAO,CAAE,MAAM,GAAN,CAAD,GAAc,GAAd,GAAqB,CAAtB,CAhBkE;EAAtB;;AAmBvD,eAAc,SAAd,CAAwB,UAAxB,GAAqC,UAAS,MAAT,EAAiB;AAClD,SAAI,cAAc,CAAd;SACA,MAAM,SAAS,WAAT;SACN,YAFJ;SAGI,cAHJ;SAII,UAAU,KAAM,cAAc,CAAd;SAChB,UAAU,CAAV;SACA,CANJ;SAOI,SAPJ,CADkD;;AAUlD,SAAI,MAAM,KAAK,SAAL,CAAe,MAAf,EAAuB;AAC7B,gBAAO,CAAC,CAAD,CADsB;MAAjC;;AAIA,oBAAe,KAAK,4BAAL,CAAkC,MAAlC,EAA0C,GAA1C,CAAf,CAdkD;AAelD,sBAAiB,KAAK,4BAAL,CAAkC,SAAS,CAAT,EAAY,GAA9C,CAAjB,CAfkD;;AAiBlD,UAAK,IAAI,CAAJ,EAAO,IAAI,WAAJ,EAAiB,GAA7B,EAAiC;AAC7B,qBAAY,CAAC,IAAI,CAAJ,CAAD,KAAY,CAAZ,GAAgB,YAAhB,GAA+B,cAA/B,CADiB;AAE7B,aAAI,KAAK,SAAL,CAAe,SAAS,CAAT,CAAf,GAA6B,SAA7B,EAAwC;AACxC,wBAAW,OAAX,CADwC;UAA5C;AAGA,qBAAY,CAAZ,CAL6B;MAAjC;;AAQA,YAAO,OAAP,CAzBkD;EAAjB;;AA4BrC,eAAc,SAAd,CAAwB,WAAxB,GAAsC,UAAS,OAAT,EAAkB;AACpD,SAAI,CAAJ,CADoD;;AAGpD,UAAK,IAAI,CAAJ,EAAO,IAAI,KAAK,SAAL,CAAe,MAAf,EAAuB,GAAvC,EAA4C;AACxC,aAAI,KAAK,SAAL,CAAe,CAAf,MAAsB,OAAtB,EAA+B;AAC/B,oBAAO,IAAP,CAD+B;UAAnC;MADJ;AAKA,YAAO,KAAP,CARoD;EAAlB;;AAWtC,eAAc,SAAd,CAAwB,YAAxB,GAAuC,UAAS,KAAT,EAAgB,GAAhB,EAAqB;AACxD,SAAI,CAAJ;SACI,MAAM,CAAN,CAFoD;;AAIxD,UAAK,IAAI,KAAJ,EAAW,IAAI,GAAJ,EAAS,GAAzB,EAA8B;AAC1B,gBAAO,KAAK,SAAL,CAAe,CAAf,CAAP,CAD0B;MAA9B;AAGA,YAAO,GAAP,CAPwD;EAArB;;AAUvC,eAAc,SAAd,CAAwB,UAAxB,GAAqC,YAAW;AAC5C,SAAI,OAAO,IAAP;SACA,CADJ;SAEI,OAFJ;SAGI,QAAQ,KAAK,UAAL,CAAgB,KAAK,IAAL,CAAxB;SACA,GAJJ,CAD4C;;AAO5C,UAAK,IAAI,CAAJ,EAAO,IAAI,KAAK,SAAL,CAAe,MAAf,EAAuB,GAAvC,EAA4C;AACxC,mBAAU,KAAK,UAAL,CAAgB,CAAhB,CAAV,CADwC;AAExC,aAAI,YAAY,CAAC,CAAD,IAAM,KAAK,WAAL,CAAiB,OAAjB,CAAlB,EAA6C;;AAE7C,sBAAS,KAAK,YAAL,CAAkB,CAAlB,EAAqB,CAArB,CAAT,CAF6C;AAG7C,mBAAM,QAAQ,KAAK,YAAL,CAAkB,CAAlB,EAAqB,IAAI,CAAJ,CAA7B,CAHuC;AAI7C,oBAAO;AACH,wBAAO,KAAP;AACA,sBAAK,GAAL;AACA,+BAAc,CAAd;AACA,6BAAY,IAAI,CAAJ;cAJhB,CAJ6C;UAAjD;MAFJ;EAPiC;;AAuBrC,6CAAe,aAAf,C;;;;;;;AC/RA;;AAEA,UAAS,aAAT,GAAyB;AACrB,4EAAc,IAAd,CAAmB,IAAnB,EADqB;EAAzB;;AAIA,KAAI,aAAa;AACb,iBAAY,EAAC,OAAO,EAAP,EAAb;AACA,aAAQ,EAAC,OAAO,EAAP,EAAT;AACA,aAAQ,EAAC,OAAO,GAAP,EAAT;AACA,aAAQ,EAAC,OAAO,GAAP,EAAT;AACA,mBAAc,EAAC,OAAO,GAAP,EAAf;AACA,mBAAc,EAAC,OAAO,GAAP,EAAf;AACA,mBAAc,EAAC,OAAO,GAAP,EAAf;AACA,gBAAW,EAAC,OAAO,GAAP,EAAZ;AACA,mBAAc,EAAC,OAAO,CAClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CADkB,EAElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAFkB,EAGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAHkB,EAIlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAJkB,EAKlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CALkB,EAMlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CANkB,EAOlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAPkB,EAQlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CARkB,EASlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CATkB,EAUlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAVkB,EAWlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAXkB,EAYlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAZkB,EAalB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAbkB,EAclB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAdkB,EAelB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAfkB,EAgBlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAhBkB,EAiBlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAjBkB,EAkBlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAlBkB,EAmBlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAnBkB,EAoBlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CApBkB,EAqBlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CArBkB,EAsBlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAtBkB,EAuBlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAvBkB,EAwBlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAxBkB,EAyBlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAzBkB,EA0BlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA1BkB,EA2BlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA3BkB,EA4BlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA5BkB,EA6BlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA7BkB,EA8BlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA9BkB,EA+BlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA/BkB,EAgClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAhCkB,EAiClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAjCkB,EAkClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAlCkB,EAmClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAnCkB,EAoClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CApCkB,EAqClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CArCkB,EAsClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAtCkB,EAuClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAvCkB,EAwClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAxCkB,EAyClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAzCkB,EA0ClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA1CkB,EA2ClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA3CkB,EA4ClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA5CkB,EA6ClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA7CkB,EA8ClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA9CkB,EA+ClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA/CkB,EAgDlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAhDkB,EAiDlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAjDkB,EAkDlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAlDkB,EAmDlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAnDkB,EAoDlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CApDkB,EAqDlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CArDkB,EAsDlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAtDkB,EAuDlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAvDkB,EAwDlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAxDkB,EAyDlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAzDkB,EA0DlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA1DkB,EA2DlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA3DkB,EA4DlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA5DkB,EA6DlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA7DkB,EA8DlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA9DkB,EA+DlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA/DkB,EAgElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAhEkB,EAiElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAjEkB,EAkElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAlEkB,EAmElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAnEkB,EAoElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CApEkB,EAqElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CArEkB,EAsElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAtEkB,EAuElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAvEkB,EAwElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAxEkB,EAyElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAzEkB,EA0ElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA1EkB,EA2ElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA3EkB,EA4ElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA5EkB,EA6ElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA7EkB,EA8ElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA9EkB,EA+ElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA/EkB,EAgFlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAhFkB,EAiFlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAjFkB,EAkFlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAlFkB,EAmFlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAnFkB,EAoFlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CApFkB,EAqFlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CArFkB,EAsFlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAtFkB,EAuFlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAvFkB,EAwFlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAxFkB,EAyFlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAzFkB,EA0FlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA1FkB,EA2FlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA3FkB,EA4FlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA5FkB,EA6FlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA7FkB,EA8FlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA9FkB,EA+FlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA/FkB,EAgGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAhGkB,EAiGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAjGkB,EAkGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAlGkB,EAmGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAnGkB,EAoGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CApGkB,EAqGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CArGkB,EAsGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAtGkB,EAuGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAvGkB,EAwGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAxGkB,EAyGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAzGkB,EA0GlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CA1GkB,EA2GlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmB,CAAnB,CA3GkB,CAAP,EAAf;AA6GA,wBAAmB,EAAC,OAAO,IAAP,EAApB;AACA,qBAAgB,EAAC,OAAO,IAAP,EAAjB;AACA,aAAQ,EAAC,OAAO,UAAP,EAAmB,WAAW,KAAX,EAA5B;AACA,qBAAgB,EAAC,OAAO,EAAC,KAAK,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAL,EAAgB,OAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAP,EAAxB,EAAjB;EAzHA;;AA4HJ,eAAc,SAAd,GAA0B,OAAO,MAAP,CAAc,uEAAc,SAAd,EAAyB,UAAvC,CAA1B;AACA,eAAc,SAAd,CAAwB,WAAxB,GAAsC,aAAtC;;AAEA,eAAc,SAAd,CAAwB,WAAxB,GAAsC,UAAS,KAAT,EAAgB,UAAhB,EAA4B;AAC9D,SAAI,UAAU,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAV;SACA,CADJ;SAEI,OAAO,IAAP;SACA,SAAS,KAAT;SACA,UAAU,CAAC,KAAK,IAAL,CAAU,MAAV,CAAD;SACV,aAAa,CAAb;SACA,YAAY;AACR,gBAAO,OAAO,SAAP;AACP,eAAM,CAAC,CAAD;AACN,gBAAO,KAAP;AACA,cAAK,KAAL;AACA,qBAAY;AACR,kBAAK,CAAL;AACA,oBAAO,CAAP;UAFJ;MALJ;SAUA,IAhBJ;SAiBI,KAjBJ,CAD8D;;AAoB9D,UAAM,IAAI,MAAJ,EAAY,IAAI,KAAK,IAAL,CAAU,MAAV,EAAkB,GAAxC,EAA6C;AACzC,aAAI,KAAK,IAAL,CAAU,CAAV,IAAe,OAAf,EAAwB;AACxB,qBAAQ,UAAR,IADwB;UAA5B,MAEO;AACH,iBAAI,eAAe,QAAQ,MAAR,GAAiB,CAAjB,EAAoB;AACnC,qBAAI,UAAJ,EAAgB;AACZ,0BAAK,QAAL,CAAc,OAAd,EAAuB,UAAvB,EADY;kBAAhB;AAGA,sBAAK,OAAO,CAAP,EAAU,OAAO,KAAK,YAAL,CAAkB,MAAlB,EAA0B,MAAhD,EAAwD;AACpD,6BAAQ,KAAK,aAAL,CAAmB,OAAnB,EAA4B,KAAK,YAAL,CAAkB,IAAlB,CAA5B,CAAR,CADoD;AAEpD,yBAAI,QAAQ,UAAU,KAAV,EAAiB;AACzB,mCAAU,IAAV,GAAiB,IAAjB,CADyB;AAEzB,mCAAU,KAAV,GAAkB,KAAlB,CAFyB;sBAA7B;kBAFJ;AAOA,2BAAU,GAAV,GAAgB,CAAhB,CAXmC;AAYnC,qBAAI,UAAU,IAAV,KAAmB,CAAC,CAAD,IAAM,UAAU,KAAV,GAAkB,KAAK,cAAL,EAAqB;AAChE,4BAAO,IAAP,CADgE;kBAApE;AAGA,qBAAI,KAAK,YAAL,CAAkB,UAAU,IAAV,CAAtB,EAAuC;AACnC,+BAAU,UAAV,CAAqB,GAArB,GAA2B,oBACvB,KAAK,YAAL,CAAkB,UAAU,IAAV,CADK,EACY,OADZ,EAEvB,KAAK,cAAL,CAAoB,GAApB,CAFJ,CADmC;AAInC,+BAAU,UAAV,CAAqB,KAArB,GAA6B,oBACzB,KAAK,YAAL,CAAkB,UAAU,IAAV,CADO,EACU,OADV,EAEzB,KAAK,cAAL,CAAoB,KAApB,CAFJ,CAJmC;kBAAvC;AAQA,wBAAO,SAAP,CAvBmC;cAAvC,MAwBO;AACH,8BADG;cAxBP;AA2BA,qBAAQ,UAAR,IAAsB,CAAtB,CA5BG;AA6BH,uBAAU,CAAC,OAAD,CA7BP;UAFP;MADJ;AAmCA,YAAO,IAAP,CAvD8D;EAA5B;;AA0DtC,eAAc,SAAd,CAAwB,QAAxB,GAAmC,UAAS,OAAT,EAAkB,UAAlB,EAA8B;AAC7D,UAAK,YAAL,CAAkB,OAAlB,EAA2B,WAAW,GAAX,EAAgB,KAAK,cAAL,CAAoB,GAApB,CAA3C,CAD6D;AAE7D,UAAK,YAAL,CAAkB,OAAlB,EAA2B,WAAW,KAAX,EAAkB,KAAK,cAAL,CAAoB,KAApB,CAA7C,CAF6D;EAA9B;;AAKnC,eAAc,SAAd,CAAwB,UAAxB,GAAqC,YAAW;AAC5C,SAAI,UAAU,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAV;SACA,CADJ;SAEI,OAAO,IAAP;SACA,SAAS,KAAK,QAAL,CAAc,KAAK,IAAL,CAAvB;SACA,UAAU,KAAV;SACA,aAAa,CAAb;SACA,YAAY;AACR,gBAAO,OAAO,SAAP;AACP,eAAM,CAAC,CAAD;AACN,gBAAO,CAAP;AACA,cAAK,CAAL;AACA,qBAAY;AACR,kBAAK,CAAL;AACA,oBAAO,CAAP;UAFJ;MALJ;SAUA,IAhBJ;SAiBI,KAjBJ;SAkBI,CAlBJ;SAmBI,GAnBJ,CAD4C;;AAsB5C,UAAM,IAAI,MAAJ,EAAY,IAAI,KAAK,IAAL,CAAU,MAAV,EAAkB,GAAxC,EAA6C;AACzC,aAAI,KAAK,IAAL,CAAU,CAAV,IAAe,OAAf,EAAwB;AACxB,qBAAQ,UAAR,IADwB;UAA5B,MAEO;AACH,iBAAI,eAAe,QAAQ,MAAR,GAAiB,CAAjB,EAAoB;AACnC,uBAAM,CAAN,CADmC;AAEnC,sBAAM,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,EAAgB,GAAjC,EAAsC;AAClC,4BAAO,QAAQ,CAAR,CAAP,CADkC;kBAAtC;AAGA,sBAAK,OAAO,KAAK,YAAL,EAAmB,QAAQ,KAAK,YAAL,EAAmB,MAA1D,EAAkE;AAC9D,6BAAQ,KAAK,aAAL,CAAmB,OAAnB,EAA4B,KAAK,YAAL,CAAkB,IAAlB,CAA5B,CAAR,CAD8D;AAE9D,yBAAI,QAAQ,UAAU,KAAV,EAAiB;AACzB,mCAAU,IAAV,GAAiB,IAAjB,CADyB;AAEzB,mCAAU,KAAV,GAAkB,KAAlB,CAFyB;sBAA7B;kBAFJ;AAOA,qBAAI,UAAU,KAAV,GAAkB,KAAK,cAAL,EAAqB;AACvC,+BAAU,KAAV,GAAkB,IAAI,GAAJ,CADqB;AAEvC,+BAAU,GAAV,GAAgB,CAAhB,CAFuC;AAGvC,+BAAU,UAAV,CAAqB,GAArB,GAA2B,oBACvB,KAAK,YAAL,CAAkB,UAAU,IAAV,CADK,EACY,OADZ,EAEvB,KAAK,cAAL,CAAoB,GAApB,CAFJ,CAHuC;AAMvC,+BAAU,UAAV,CAAqB,KAArB,GAA6B,oBACzB,KAAK,YAAL,CAAkB,UAAU,IAAV,CADO,EACU,OADV,EAEzB,KAAK,cAAL,CAAoB,KAApB,CAFJ,CANuC;AASvC,4BAAO,SAAP,CATuC;kBAA3C;;AAYA,sBAAM,IAAI,CAAJ,EAAO,IAAI,CAAJ,EAAO,GAApB,EAAyB;AACrB,6BAAQ,CAAR,IAAa,QAAQ,IAAI,CAAJ,CAArB,CADqB;kBAAzB;AAGA,yBAAQ,CAAR,IAAa,CAAb,CA3BmC;AA4BnC,yBAAQ,CAAR,IAAa,CAAb,CA5BmC;AA6BnC,8BA7BmC;cAAvC,MA8BO;AACH,8BADG;cA9BP;AAiCA,qBAAQ,UAAR,IAAsB,CAAtB,CAlCG;AAmCH,uBAAU,CAAC,OAAD,CAnCP;UAFP;MADJ;AAyCA,YAAO,IAAP,CA/D4C;EAAX;;AAkErC,eAAc,SAAd,CAAwB,OAAxB,GAAkC,YAAW;AACzC,SAAI,OAAO,IAAP;SACA,YAAY,KAAK,UAAL,EAAZ;SACA,OAAO,IAAP;SACA,OAAO,KAAP;SACA,SAAS,EAAT;SACA,aAAa,CAAb;SACA,WAAW,CAAX;SACA,OAPJ;SAQI,YAAY,EAAZ;SACA,eAAe,EAAf;SACA,YAAY,KAAZ;SACA,OAXJ;SAYI,sBAAsB,IAAtB,CAbqC;;AAezC,SAAI,cAAc,IAAd,EAAoB;AACpB,gBAAO,IAAP,CADoB;MAAxB;AAGA,YAAO;AACH,eAAM,UAAU,IAAV;AACN,gBAAO,UAAU,KAAV;AACP,cAAK,UAAU,GAAV;AACL,qBAAY;AACR,kBAAK,UAAU,UAAV,CAAqB,GAArB;AACL,oBAAO,UAAU,UAAV,CAAqB,KAArB;UAFX;MAJJ,CAlByC;AA2BzC,kBAAa,IAAb,CAAkB,IAAlB,EA3ByC;AA4BzC,gBAAW,KAAK,IAAL,CA5B8B;AA6BzC,aAAQ,KAAK,IAAL;AACR,cAAK,KAAK,YAAL;AACD,uBAAU,KAAK,MAAL,CADd;AAEI,mBAFJ;AADA,cAIK,KAAK,YAAL;AACD,uBAAU,KAAK,MAAL,CADd;AAEI,mBAFJ;AAJA,cAOK,KAAK,YAAL;AACD,uBAAU,KAAK,MAAL,CADd;AAEI,mBAFJ;AAPA;AAWI,oBAAO,IAAP,CADJ;AAVA,MA7ByC;;AA2CzC,YAAO,CAAC,IAAD,EAAO;AACV,mBAAU,SAAV,CADU;AAEV,qBAAY,KAAZ,CAFU;AAGV,gBAAO,KAAK,WAAL,CAAiB,KAAK,GAAL,EAAU,KAAK,UAAL,CAAlC,CAHU;AAIV,aAAI,SAAS,IAAT,EAAe;AACf,iBAAI,KAAK,IAAL,KAAc,KAAK,SAAL,EAAgB;AAC9B,uCAAsB,IAAtB,CAD8B;cAAlC;;AAIA,iBAAI,KAAK,IAAL,KAAc,KAAK,SAAL,EAAgB;AAC9B,2BAAU,IAAV,CAAe,KAAK,IAAL,CAAf,CAD8B;AAE9B,8BAF8B;AAG9B,6BAAY,aAAa,KAAK,IAAL,CAHK;cAAlC;AAKA,0BAAa,IAAb,CAAkB,IAAlB,EAVe;;AAYf,qBAAQ,OAAR;AACA,sBAAK,KAAK,MAAL;AACD,yBAAI,KAAK,IAAL,GAAY,EAAZ,EAAgB;AAChB,gCAAO,IAAP,CAAY,OAAO,YAAP,CAAoB,KAAK,KAAK,IAAL,CAArC,EADgB;sBAApB,MAEO,IAAI,KAAK,IAAL,GAAY,EAAZ,EAAgB;AACvB,gCAAO,IAAP,CAAY,OAAO,YAAP,CAAoB,KAAK,IAAL,GAAY,EAAZ,CAAhC,EADuB;sBAApB,MAEA;AACH,6BAAI,KAAK,IAAL,KAAc,KAAK,SAAL,EAAgB;AAC9B,mDAAsB,KAAtB,CAD8B;0BAAlC;AAGA,iCAAQ,KAAK,IAAL;AACR,kCAAK,KAAK,UAAL;AACD,6CAAY,IAAZ,CADJ;AAEI,2CAAU,KAAK,MAAL,CAFd;AAGI,uCAHJ;AADA,kCAKK,KAAK,MAAL;AACD,2CAAU,KAAK,MAAL,CADd;AAEI,uCAFJ;AALA,kCAQK,KAAK,MAAL;AACD,2CAAU,KAAK,MAAL,CADd;AAEI,uCAFJ;AARA,kCAWK,KAAK,SAAL;AACD,wCAAO,IAAP,CADJ;AAEI,uCAFJ;AAXA,0BAJG;sBAFA;AAsBP,2BAzBJ;AADA,sBA2BK,KAAK,MAAL;AACD,yBAAI,KAAK,IAAL,GAAY,EAAZ,EAAgB;AAChB,gCAAO,IAAP,CAAY,OAAO,YAAP,CAAoB,KAAK,KAAK,IAAL,CAArC,EADgB;sBAApB,MAEO;AACH,6BAAI,KAAK,IAAL,KAAc,KAAK,SAAL,EAAgB;AAC9B,mDAAsB,KAAtB,CAD8B;0BAAlC;AAGA,iCAAQ,KAAK,IAAL;AACR,kCAAK,KAAK,UAAL;AACD,6CAAY,IAAZ,CADJ;AAEI,2CAAU,KAAK,MAAL,CAFd;AAGI,uCAHJ;AADA,kCAKK,KAAK,MAAL;AACD,2CAAU,KAAK,MAAL,CADd;AAEI,uCAFJ;AALA,kCAQK,KAAK,MAAL;AACD,2CAAU,KAAK,MAAL,CADd;AAEI,uCAFJ;AARA,kCAWK,KAAK,SAAL;AACD,wCAAO,IAAP,CADJ;AAEI,uCAFJ;AAXA,0BAJG;sBAFP;AAsBA,2BAvBJ;AA3BA,sBAmDK,KAAK,MAAL;AACD,yBAAI,KAAK,IAAL,GAAY,GAAZ,EAAiB;AACjB,gCAAO,IAAP,CAAY,KAAK,IAAL,GAAY,EAAZ,GAAiB,MAAM,KAAK,IAAL,GAAY,KAAK,IAAL,CAA/C,CADiB;sBAArB,MAEO;AACH,6BAAI,KAAK,IAAL,KAAc,KAAK,SAAL,EAAgB;AAC9B,mDAAsB,KAAtB,CAD8B;0BAAlC;AAGA,iCAAQ,KAAK,IAAL;AACR,kCAAK,KAAK,MAAL;AACD,2CAAU,KAAK,MAAL,CADd;AAEI,uCAFJ;AADA,kCAIK,KAAK,MAAL;AACD,2CAAU,KAAK,MAAL,CADd;AAEI,uCAFJ;AAJA,kCAOK,KAAK,SAAL;AACD,wCAAO,IAAP,CADJ;AAEI,uCAFJ;AAPA,0BAJG;sBAFP;AAkBA,2BAnBJ;AAnDA,cAZe;UAAnB,MAoFO;AACH,oBAAO,IAAP,CADG;UApFP;AAuFA,aAAI,OAAJ,EAAa;AACT,uBAAU,YAAY,KAAK,MAAL,GAAc,KAAK,MAAL,GAAc,KAAK,MAAL,CADzC;UAAb;MA3FJ;;AAgGA,SAAI,SAAS,IAAT,EAAe;AACf,gBAAO,IAAP,CADe;MAAnB;;AAIA,UAAK,GAAL,GAAW,KAAK,UAAL,CAAgB,KAAK,IAAL,EAAW,KAAK,GAAL,CAAtC,CA/IyC;AAgJzC,SAAI,CAAC,KAAK,yBAAL,CAA+B,IAA/B,CAAD,EAAsC;AACtC,gBAAO,IAAP,CADsC;MAA1C;;AAIA,iBAAY,aAAa,UAAU,UAAU,MAAV,GAAmB,CAAnB,CAAvB,CApJ6B;AAqJzC,SAAI,WAAW,GAAX,KAAmB,UAAU,UAAU,MAAV,GAAmB,CAAnB,CAA7B,EAAoD;AACpD,gBAAO,IAAP,CADoD;MAAxD;;AAIA,SAAI,CAAC,OAAO,MAAP,EAAe;AAChB,gBAAO,IAAP,CADgB;MAApB;;;AAzJyC,SA8JrC,mBAAJ,EAAyB;AACrB,gBAAO,MAAP,CAAc,OAAO,MAAP,GAAgB,CAAhB,EAAmB,CAAjC,EADqB;MAAzB;;AAKA,YAAO;AACH,eAAM,OAAO,IAAP,CAAY,EAAZ,CAAN;AACA,gBAAO,UAAU,KAAV;AACP,cAAK,KAAK,GAAL;AACL,kBAAS,OAAT;AACA,oBAAW,SAAX;AACA,uBAAc,YAAd;AACA,kBAAS,IAAT;MAPJ,CAnKyC;EAAX;;AA+KlC,wEAAc,SAAd,CAAwB,yBAAxB,GAAoD,UAAS,OAAT,EAAkB;AAClE,SAAI,OAAO,IAAP;SACA,qBADJ,CADkE;;AAIlE,6BAAwB,QAAQ,GAAR,GAAe,CAAC,QAAQ,GAAR,GAAc,QAAQ,KAAR,CAAf,GAAgC,CAAhC,CAJ2B;AAKlE,SAAI,wBAAwB,KAAK,IAAL,CAAU,MAAV,EAAkB;AAC1C,aAAI,KAAK,WAAL,CAAiB,QAAQ,GAAR,EAAa,qBAA9B,EAAqD,CAArD,CAAJ,EAA6D;AACzD,oBAAO,OAAP,CADyD;UAA7D;MADJ;AAKA,YAAO,IAAP,CAVkE;EAAlB;;AAapD,UAAS,mBAAT,CAA6B,QAA7B,EAAuC,UAAvC,EAAmD,OAAnD,EAA4D;AACxD,SAAI,SAAS,QAAQ,MAAR;SACT,gBAAgB,CAAhB;SACA,cAAc,CAAd,CAHoD;;AAKxD,YAAM,QAAN,EAAgB;AACZ,wBAAe,SAAS,QAAQ,MAAR,CAAT,CAAf,CADY;AAEZ,0BAAiB,WAAW,QAAQ,MAAR,CAAX,CAAjB,CAFY;MAAhB;AAIA,YAAO,cAAY,aAAZ,CATiD;EAA5D;;AAYA,6CAAe,aAAf,C;;;;;;;AC9cA;;AAEA,UAAS,eAAT,GAA2B;AACvB,4EAAa,IAAb,CAAkB,IAAlB,EADuB;EAA3B;;AAIA,KAAI,WAAW;AACX,UAAK,QAAL;AACA,WAAM,cAAN;EAFA;;AAKJ,iBAAgB,SAAhB,GAA4B,OAAO,MAAP,CAAc,uEAAa,SAAb,CAA1C;AACA,iBAAgB,SAAhB,CAA0B,WAA1B,GAAwC,eAAxC;;;;AAIA,iBAAgB,SAAhB,CAA0B,OAA1B,GAAoC,YAAW;AAC3C,SAAI,SAAS,uEAAa,SAAb,CAAuB,OAAvB,CAA+B,KAA/B,CAAqC,IAArC,CAAT,CADuC;AAE3C,SAAI,CAAC,MAAD,EAAS;AACT,gBAAO,IAAP,CADS;MAAb;;AAIA,SAAI,OAAO,OAAO,IAAP,CANgC;;AAQ3C,SAAI,CAAC,IAAD,EAAO;AACP,gBAAO,IAAP,CADO;MAAX;;AAIA,YAAO,KAAK,OAAL,CAAa,SAAS,GAAT,EAAc,EAA3B,CAAP,CAZ2C;;AAc3C,SAAI,CAAC,KAAK,KAAL,CAAW,SAAS,IAAT,CAAZ,EAA4B;AAC5B,aAAI,MAAiB;AACjB,qBAAQ,GAAR,CAAY,2BAAZ,EAAyC,IAAzC,EADiB;UAArB;AAGA,gBAAO,IAAP,CAJ4B;MAAhC;;AAOA,SAAI,CAAC,KAAK,cAAL,CAAoB,IAApB,CAAD,EAA4B;AAC5B,gBAAO,IAAP,CAD4B;MAAhC;;AAIA,YAAO,IAAP,GAAc,IAAd,CAzB2C;AA0B3C,YAAO,MAAP,CA1B2C;EAAX;;AA6BpC,iBAAgB,SAAhB,CAA0B,cAA1B,GAA2C,UAAS,IAAT,EAAe;;AAEtD,YAAO,CAAC,CAAC,IAAD,CAF8C;EAAf;;AAK3C,6CAAe,eAAf,C;;;;;;;AClDA;;AAEA,UAAS,UAAT,GAAsB;AAClB,wEAAU,IAAV,CAAe,IAAf,EADkB;EAAtB;;AAIA,KAAI,aAAa;AACb,aAAQ,EAAC,OAAO,OAAP,EAAgB,WAAW,KAAX,EAAzB;EADA;;AAIJ,YAAW,SAAX,GAAuB,OAAO,MAAP,CAAc,mEAAU,SAAV,EAAqB,UAAnC,CAAvB;AACA,YAAW,SAAX,CAAqB,WAArB,GAAmC,UAAnC;;AAEA,YAAW,SAAX,CAAqB,MAArB,GAA8B,UAAS,GAAT,EAAc,KAAd,EAAqB;AAC/C,UAAK,IAAL,GAAY,GAAZ,CAD+C;AAE/C,SAAI,WAAW,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAX;SACA,gBAAgB,CAAhB;SACA,IAAI,CAAJ;SACA,SAAS,KAAT;SACA,MAAM,KAAK,IAAL,CAAU,MAAV;SACN,IALJ;SAMI,SAAS,EAAT;SACA,eAAe,EAAf,CAT2C;;AAW/C,UAAK,IAAI,CAAJ,EAAO,IAAI,CAAJ,IAAS,SAAS,GAAT,EAAc,GAAnC,EAAwC;AACpC,gBAAO,KAAK,WAAL,CAAiB,MAAjB,CAAP,CADoC;AAEpC,aAAI,CAAC,IAAD,EAAO;AACP,oBAAO,IAAP,CADO;UAAX;AAGA,sBAAa,IAAb,CAAkB,IAAlB,EALoC;AAMpC,gBAAO,IAAP,CAAY,KAAK,IAAL,GAAY,EAAZ,CAAZ,CANoC;AAOpC,aAAI,KAAK,IAAL,IAAa,KAAK,YAAL,EAAmB;AAChC,8BAAiB,KAAM,IAAI,CAAJ,CADS;UAApC;AAGA,aAAI,KAAK,CAAL,EAAQ;AACR,sBAAS,KAAK,QAAL,CAAc,KAAK,IAAL,EAAW,KAAK,GAAL,CAAlC,CADQ;AAER,sBAAS,KAAK,UAAL,CAAgB,KAAK,IAAL,EAAW,MAA3B,CAAT,CAFQ;UAAZ;MAVJ;;AAgBA,SAAI,OAAO,MAAP,IAAiB,CAAjB,IAAsB,QAAC,CAAS,OAAO,IAAP,CAAY,EAAZ,CAAT,IAA4B,CAA5B,KAAoC,aAArC,EAAoD;AAC1E,gBAAO,IAAP,CAD0E;MAA9E;AAGA,YAAO;AACH,eAAM,OAAO,IAAP,CAAY,EAAZ,CAAN;AACA,mCAFG;AAGH,cAAK,KAAK,GAAL;MAHT,CA9B+C;EAArB;;AAqC9B,6CAAe,UAAf,C;;;;;;;AClDA;;AAEA,UAAS,UAAT,GAAsB;AAClB,wEAAU,IAAV,CAAe,IAAf,EADkB;EAAtB;;AAIA,KAAI,aAAa;AACb,aAAQ,EAAC,OAAO,OAAP,EAAgB,WAAW,KAAX,EAAzB;EADA;;AAIJ,KAAM,wBAAwB,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,CAArB,EAAwB,CAAxB,EAA2B,EAA3B,EAA+B,CAA/B,EAAkC,CAAlC,CAAxB;;AAEN,YAAW,SAAX,GAAuB,OAAO,MAAP,CAAc,mEAAU,SAAV,EAAqB,UAAnC,CAAvB;AACA,YAAW,SAAX,CAAqB,WAArB,GAAmC,UAAnC;;AAEA,YAAW,SAAX,CAAqB,MAArB,GAA8B,UAAS,GAAT,EAAc,KAAd,EAAqB;AAC/C,UAAK,IAAL,GAAY,GAAZ,CAD+C;AAE/C,SAAI,WAAW,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAX;SACA,gBAAgB,CAAhB;SACA,IAAI,CAAJ;SACA,SAAS,KAAT;SACA,MAAM,KAAK,IAAL,CAAU,MAAV;SACN,IALJ;SAMI,SAAS,EAAT;SACA,eAAe,EAAf,CAT2C;;AAW/C,UAAK,IAAI,CAAJ,EAAO,IAAI,CAAJ,IAAS,SAAS,GAAT,EAAc,GAAnC,EAAwC;AACpC,gBAAO,KAAK,WAAL,CAAiB,MAAjB,CAAP,CADoC;AAEpC,aAAI,CAAC,IAAD,EAAO;AACP,oBAAO,IAAP,CADO;UAAX;AAGA,sBAAa,IAAb,CAAkB,IAAlB,EALoC;AAMpC,gBAAO,IAAP,CAAY,KAAK,IAAL,GAAY,EAAZ,CAAZ,CANoC;AAOpC,aAAI,KAAK,IAAL,IAAa,KAAK,YAAL,EAAmB;AAChC,8BAAiB,KAAM,IAAI,CAAJ,CADS;UAApC;AAGA,aAAI,KAAK,CAAL,EAAQ;AACR,sBAAS,KAAK,QAAL,CAAc,KAAK,IAAL,EAAW,KAAK,GAAL,CAAlC,CADQ;AAER,sBAAS,KAAK,UAAL,CAAgB,KAAK,IAAL,EAAW,MAA3B,CAAT,CAFQ;UAAZ;MAVJ;;AAgBA,SAAI,OAAO,MAAP,IAAiB,CAAjB,EAAoB;AACpB,gBAAO,IAAP,CADoB;MAAxB;;AAIA,SAAI,kBAAkB,MAAlB,MAA8B,oBAAoB,aAApB,CAA9B,EAAkE;AAClE,gBAAO,IAAP,CADkE;MAAtE;AAGA,YAAO;AACH,eAAM,OAAO,IAAP,CAAY,EAAZ,CAAN;AACA,mCAFG;AAGH,cAAK,KAAK,GAAL;MAHT,CAlC+C;EAArB;;AAyC9B,UAAS,mBAAT,CAA6B,aAA7B,EAA4C;AACxC,SAAI,CAAJ,CADwC;AAExC,UAAK,IAAI,CAAJ,EAAO,IAAI,EAAJ,EAAQ,GAApB,EAAyB;AACrB,aAAI,kBAAkB,sBAAsB,CAAtB,CAAlB,EAA4C;AAC5C,oBAAO,CAAP,CAD4C;UAAhD;MADJ;AAKA,YAAO,IAAP,CAPwC;EAA5C;;AAWA,UAAS,iBAAT,CAA2B,MAA3B,EAAmC;AAC/B,SAAI,SAAS,OAAO,MAAP;SACT,MAAM,CAAN;SACA,CAFJ,CAD+B;;AAK/B,UAAK,IAAI,SAAS,CAAT,EAAY,KAAK,CAAL,EAAQ,KAAK,CAAL,EAAQ;AACjC,gBAAO,OAAO,CAAP,CAAP,CADiC;MAArC;AAGA,YAAO,CAAP,CAR+B;AAS/B,UAAK,IAAI,SAAS,CAAT,EAAY,KAAK,CAAL,EAAQ,KAAK,CAAL,EAAQ;AACjC,gBAAO,OAAO,CAAP,CAAP,CADiC;MAArC;AAGA,YAAO,CAAP,CAZ+B;AAa/B,YAAO,MAAM,EAAN,CAbwB;EAAnC;;AAgBA,6CAAe,UAAf,C;;;;;;;ACnFA;;AAEA,UAAS,UAAT,CAAoB,IAApB,EAA0B,WAA1B,EAAuC;AACnC,wEAAU,IAAV,CAAe,IAAf,EAAqB,IAArB,EAA2B,WAA3B,EADmC;EAAvC;;AAIA,KAAI,aAAa;AACb,aAAQ,EAAC,OAAO,OAAP,EAAgB,WAAW,KAAX,EAAzB;EADA;;AAIJ,YAAW,SAAX,GAAuB,OAAO,MAAP,CAAc,mEAAU,SAAV,EAAqB,UAAnC,CAAvB;AACA,YAAW,SAAX,CAAqB,WAArB,GAAmC,UAAnC;;AAEA,YAAW,SAAX,CAAqB,cAArB,GAAsC,UAAS,IAAT,EAAe,MAAf,EAAuB,YAAvB,EAAqC;AACvE,SAAI,CAAJ;SACI,OAAO,IAAP,CAFmE;;AAIvE,UAAM,IAAI,CAAJ,EAAO,IAAI,CAAJ,EAAO,GAApB,EAAyB;AACrB,gBAAO,KAAK,WAAL,CAAiB,KAAK,GAAL,EAAU,KAAK,YAAL,CAAlC,CADqB;AAErB,aAAI,CAAC,IAAD,EAAO;AACP,oBAAO,IAAP,CADO;UAAX;AAGA,gBAAO,IAAP,CAAY,KAAK,IAAL,CAAZ,CALqB;AAMrB,sBAAa,IAAb,CAAkB,IAAlB,EANqB;MAAzB;;AASA,YAAO,KAAK,YAAL,CAAkB,KAAK,cAAL,EAAqB,KAAK,GAAL,EAAU,IAAjD,EAAuD,KAAvD,CAAP,CAbuE;AAcvE,SAAI,SAAS,IAAT,EAAe;AACf,gBAAO,IAAP,CADe;MAAnB;AAGA,kBAAa,IAAb,CAAkB,IAAlB,EAjBuE;;AAmBvE,UAAM,IAAI,CAAJ,EAAO,IAAI,CAAJ,EAAO,GAApB,EAAyB;AACrB,gBAAO,KAAK,WAAL,CAAiB,KAAK,GAAL,EAAU,KAAK,YAAL,CAAlC,CADqB;AAErB,aAAI,CAAC,IAAD,EAAO;AACP,oBAAO,IAAP,CADO;UAAX;AAGA,sBAAa,IAAb,CAAkB,IAAlB,EALqB;AAMrB,gBAAO,IAAP,CAAY,KAAK,IAAL,CAAZ,CANqB;MAAzB;;AASA,YAAO,IAAP,CA5BuE;EAArC;;AA+BtC,6CAAe,UAAf,C;;;;;;;;;;;AC5CA;;;AAGA,UAAS,WAAT,CAAqB,IAArB,EAA2B;AACvB,YAAO,gFAAM,iBAAN,EAAyB,IAAzB,CAAP,CADuB;AAEvB,4EAAc,IAAd,CAAmB,IAAnB,EAAyB,IAAzB,EAFuB;AAGvB,UAAK,aAAL,GAAqB,CAAC,CAAD,EAAI,CAAJ,CAArB,CAHuB;AAIvB,SAAI,KAAK,sBAAL,EAA6B;AAC7B,cAAK,iBAAL,GAAyB,IAAzB,CAD6B;AAE7B,cAAK,cAAL,GAAsB,IAAtB,CAF6B;MAAjC;EAJJ;;AAUA,UAAS,eAAT,GAA2B;AACvB,SAAI,SAAS,EAAT,CADmB;;AAGvB,YAAO,IAAP,CAAY,YAAY,WAAZ,CAAZ,CAAqC,OAArC,CAA6C,UAAS,GAAT,EAAc;AACvD,gBAAO,GAAP,IAAc,YAAY,WAAZ,CAAwB,GAAxB,EAA6B,OAA7B,CADyC;MAAd,CAA7C,CAHuB;AAMvB,YAAO,MAAP,CANuB;EAA3B;;AASA,KAAI,IAAI,CAAJ;KACA,IAAI,CAAJ;KACA,aAAa;AACT,oBAAe,EAAC,OAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAP,EAAhB;AACA,mBAAc,EAAC,OAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAP,EAAf;AACA,mBAAc,EAAC,OAAO,CAClB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CADkB,EAElB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAFkB,EAGlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAHkB,EAIlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAJkB,EAKlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CALkB,EAMlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CANkB,EAOlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAPkB,EAQlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CARkB,EASlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CATkB,EAUlB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAVkB,CAAP,EAAf;AAYA,wBAAmB,EAAC,OAAO,IAAP,EAAa,UAAU,IAAV,EAAjC;AACA,qBAAgB,EAAC,OAAO,IAAP,EAAa,UAAU,IAAV,EAA9B;AACA,4BAAuB,EAAC,OAAO,CAAP,EAAxB;AACA,aAAQ,EAAC,OAAO,OAAP,EAAT;EAlBJ;;AAqBJ,aAAY,SAAZ,GAAwB,OAAO,MAAP,CAAc,uEAAc,SAAd,EAAyB,UAAvC,CAAxB;AACA,aAAY,SAAZ,CAAsB,WAAtB,GAAoC,WAApC;;AAEA,aAAY,SAAZ,CAAsB,aAAtB,GAAsC,UAAS,OAAT,EAAkB,IAAlB,EAAwB;AAC1D,SAAI,KAAK,MAAL,CAAY,sBAAZ,EAAoC;AACpC,aAAI,CAAJ;aACI,aAAa,CAAC,CAAD,EAAI,CAAJ,CAAb;aACA,UAAU,CAAC,CAAD,EAAI,CAAJ,CAAV;aACA,aAAa,CAAC,CAAD,EAAI,CAAJ,CAAb;aACA,kBAAkB,KAAK,qBAAL;aAClB,yBAAyB,IAAI,eAAJ,CANO;;AAQpC,cAAK,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,EAAgB,GAAhC,EAAqC;AACjC,wBAAW,IAAI,CAAJ,CAAX,IAAqB,QAAQ,CAAR,CAArB,CADiC;AAEjC,qBAAQ,IAAI,CAAJ,CAAR,IAAkB,KAAK,CAAL,CAAlB,CAFiC;UAArC;AAIA,oBAAW,CAAX,IAAgB,QAAQ,CAAR,IAAa,WAAW,CAAX,CAAb,CAZoB;AAapC,oBAAW,CAAX,IAAgB,QAAQ,CAAR,IAAa,WAAW,CAAX,CAAb,CAboB;;AAepC,oBAAW,CAAX,IAAgB,KAAK,GAAL,CAAS,KAAK,GAAL,CAAS,WAAW,CAAX,CAAT,EAAwB,eAAxB,CAAT,EAAmD,sBAAnD,CAAhB,CAfoC;AAgBpC,oBAAW,CAAX,IAAgB,KAAK,GAAL,CAAS,KAAK,GAAL,CAAS,WAAW,CAAX,CAAT,EAAwB,eAAxB,CAAT,EAAmD,sBAAnD,CAAhB,CAhBoC;AAiBpC,cAAK,aAAL,GAAqB,UAArB,CAjBoC;AAkBpC,cAAK,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,EAAgB,GAAhC,EAAqC;AACjC,qBAAQ,CAAR,KAAc,KAAK,aAAL,CAAmB,IAAI,CAAJ,CAAjC,CADiC;UAArC;MAlBJ;AAsBA,YAAO,uEAAc,SAAd,CAAwB,aAAxB,CAAsC,IAAtC,CAA2C,IAA3C,EAAiD,OAAjD,EAA0D,IAA1D,CAAP,CAvB0D;EAAxB;;AA0BtC,aAAY,SAAZ,CAAsB,YAAtB,GAAqC,UAAS,OAAT,EAAkB,MAAlB,EAA0B,OAA1B,EAAmC,SAAnC,EAA8C;AAC/E,SAAI,UAAU,EAAV;SACA,OAAO,IAAP;SACA,CAFJ;SAGI,aAAa,CAAb;SACA,YAAY;AACR,gBAAO,OAAO,SAAP;AACP,eAAM,CAAC,CAAD;AACN,gBAAO,CAAP;AACA,cAAK,CAAL;MAJJ;SAMA,KAVJ;SAWI,CAXJ;SAYI,GAZJ;SAaI,UAbJ;SAcI,UAAU,KAAK,cAAL,CAfiE;;AAiB/E,eAAU,WAAW,KAAX,CAjBqE;AAkB/E,iBAAY,aAAa,KAAb,CAlBmE;;AAoB/E,SAAI,CAAC,MAAD,EAAS;AACT,kBAAS,KAAK,QAAL,CAAc,KAAK,IAAL,CAAvB,CADS;MAAb;;AAIA,UAAM,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,EAAgB,GAAjC,EAAsC;AAClC,iBAAQ,CAAR,IAAa,CAAb,CADkC;MAAtC;;AAIA,UAAM,IAAI,MAAJ,EAAY,IAAI,KAAK,IAAL,CAAU,MAAV,EAAkB,GAAxC,EAA6C;AACzC,aAAI,KAAK,IAAL,CAAU,CAAV,IAAe,OAAf,EAAwB;AACxB,qBAAQ,UAAR,IADwB;UAA5B,MAEO;AACH,iBAAI,eAAe,QAAQ,MAAR,GAAiB,CAAjB,EAAoB;AACnC,uBAAM,CAAN,CADmC;AAEnC,sBAAM,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,EAAgB,GAAjC,EAAsC;AAClC,4BAAO,QAAQ,CAAR,CAAP,CADkC;kBAAtC;AAGA,yBAAQ,KAAK,aAAL,CAAmB,OAAnB,EAA4B,OAA5B,CAAR,CALmC;AAMnC,qBAAI,QAAQ,OAAR,EAAiB;AACjB,+BAAU,KAAV,GAAkB,KAAlB,CADiB;AAEjB,+BAAU,KAAV,GAAkB,IAAI,GAAJ,CAFD;AAGjB,+BAAU,GAAV,GAAgB,CAAhB,CAHiB;AAIjB,4BAAO,SAAP,CAJiB;kBAArB;AAMA,qBAAI,SAAJ,EAAe;AACX,0BAAK,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,GAAiB,CAAjB,EAAoB,GAApC,EAAyC;AACrC,iCAAQ,CAAR,IAAa,QAAQ,IAAI,CAAJ,CAArB,CADqC;sBAAzC;AAGA,6BAAQ,QAAQ,MAAR,GAAiB,CAAjB,CAAR,GAA8B,CAA9B,CAJW;AAKX,6BAAQ,QAAQ,MAAR,GAAiB,CAAjB,CAAR,GAA8B,CAA9B,CALW;AAMX,kCANW;kBAAf,MAOO;AACH,4BAAO,IAAP,CADG;kBAPP;cAZJ,MAsBO;AACH,8BADG;cAtBP;AAyBA,qBAAQ,UAAR,IAAsB,CAAtB,CA1BG;AA2BH,uBAAU,CAAC,OAAD,CA3BP;UAFP;MADJ;AAiCA,YAAO,IAAP,CA7D+E;EAA9C;;AAgErC,aAAY,SAAZ,CAAsB,UAAtB,GAAmC,YAAW;AAC1C,SAAI,OAAO,IAAP;SACA,sBADJ;SAEI,SAAS,KAAK,QAAL,CAAc,KAAK,IAAL,CAAvB;SACA,SAHJ;SAII,iBAAiB,CAAjB,CALsC;;AAO1C,YAAO,CAAC,SAAD,EAAY;AACf,qBAAY,KAAK,YAAL,CAAkB,KAAK,aAAL,EAAoB,MAAtC,EAA8C,KAA9C,EAAqD,IAArD,CAAZ,CADe;AAEf,aAAI,CAAC,SAAD,EAAY;AACZ,oBAAO,IAAP,CADY;UAAhB;AAGA,0BAAiB,KAAK,KAAL,CAAW,CAAC,UAAU,GAAV,GAAgB,UAAU,KAAV,CAAjB,GAAoC,CAApC,CAA5B,CALe;AAMf,kCAAyB,UAAU,KAAV,GAAkB,iBAAiB,EAAjB,CAN5B;AAOf,aAAI,0BAA0B,CAA1B,EAA6B;AAC7B,iBAAI,KAAK,WAAL,CAAiB,sBAAjB,EAAyC,UAAU,KAAV,EAAiB,CAA1D,CAAJ,EAAkE;AAC9D,wBAAO,SAAP,CAD8D;cAAlE;UADJ;AAKA,kBAAS,UAAU,GAAV,CAZM;AAaf,qBAAY,IAAZ,CAbe;MAAnB;EAP+B;;AAwBnC,aAAY,SAAZ,CAAsB,yBAAtB,GAAkD,UAAS,OAAT,EAAkB;AAChE,SAAI,OAAO,IAAP;SACA,qBADJ,CADgE;;AAIhE,6BAAwB,QAAQ,GAAR,GAAe,CAAC,QAAQ,GAAR,GAAc,QAAQ,KAAR,CAAf,GAAgC,CAAhC,CAJyB;AAKhE,SAAI,wBAAwB,KAAK,IAAL,CAAU,MAAV,EAAkB;AAC1C,aAAI,KAAK,WAAL,CAAiB,QAAQ,GAAR,EAAa,qBAA9B,EAAqD,CAArD,CAAJ,EAA6D;AACzD,oBAAO,OAAP,CADyD;UAA7D;MADJ;AAKA,YAAO,IAAP,CAVgE;EAAlB;;AAalD,aAAY,SAAZ,CAAsB,QAAtB,GAAiC,YAAW;AACxC,SAAI,OAAO,IAAP;SACA,OADJ;SAEI,GAFJ,CADwC;;AAKxC,UAAK,IAAL,CAAU,OAAV,GALwC;AAMxC,eAAU,KAAK,YAAL,CAAkB,KAAK,YAAL,CAA5B,CANwC;AAOxC,UAAK,IAAL,CAAU,OAAV,GAPwC;;AASxC,SAAI,YAAY,IAAZ,EAAkB;AAClB,gBAAO,IAAP,CADkB;MAAtB;;;AATwC,QAcxC,GAAM,QAAQ,KAAR,CAdkC;AAexC,aAAQ,KAAR,GAAgB,KAAK,IAAL,CAAU,MAAV,GAAmB,QAAQ,GAAR,CAfK;AAgBxC,aAAQ,GAAR,GAAc,KAAK,IAAL,CAAU,MAAV,GAAmB,GAAnB,CAhB0B;;AAkBxC,YAAO,YAAY,IAAZ,GAAmB,KAAK,yBAAL,CAA+B,OAA/B,CAAnB,GAA6D,IAA7D,CAlBiC;EAAX;;AAqBjC,aAAY,SAAZ,CAAsB,WAAtB,GAAoC,UAAS,WAAT,EAAsB;AACtD,SAAI,CAAJ;SACI,IADJ;SAEI,QAAQ,EAAR;SACA,OAAO,IAAP,CAJkD;;AAMtD,UAAK,IAAI,CAAJ,EAAO,IAAI,YAAY,MAAZ,EAAoB,GAApC,EAAyC;AACrC,gBAAO,KAAK,WAAL,CAAiB,YAAY,CAAZ,CAAjB,CAAP,CADqC;AAErC,aAAI,CAAC,IAAD,EAAO;AACP,oBAAO,IAAP,CADO;UAAX;AAGA,eAAM,IAAN,CAAW,IAAX,EALqC;MAAzC;AAOA,YAAO,KAAP,CAbsD;EAAtB;;AAgBpC,aAAY,SAAZ,CAAsB,WAAtB,GAAoC,UAAS,OAAT,EAAkB;AAClD,SAAI,CAAJ;SACI,OAAO,IAAP;SACA,MAAM,CAAN;SACA,UAHJ;SAII,KAJJ;SAKI,UAAU,KAAK,cAAL;SACV,IANJ;SAOI,YAAY;AACR,gBAAO,OAAO,SAAP;AACP,eAAM,CAAC,CAAD;AACN,gBAAO,CAAP;AACA,cAAK,CAAL;MAJJ,CAR8C;;AAelD,UAAM,IAAI,CAAJ,EAAO,IAAI,QAAQ,MAAR,EAAgB,GAAjC,EAAsC;AAClC,gBAAO,QAAQ,CAAR,CAAP,CADkC;MAAtC;AAGA,UAAK,OAAO,CAAP,EAAU,OAAO,KAAK,YAAL,CAAkB,MAAlB,EAA0B,MAAhD,EAAwD;AACpD,iBAAQ,KAAK,aAAL,CAAmB,OAAnB,EAA4B,KAAK,YAAL,CAAkB,IAAlB,CAA5B,CAAR,CADoD;AAEpD,aAAI,QAAQ,UAAU,KAAV,EAAiB;AACzB,uBAAU,IAAV,GAAiB,IAAjB,CADyB;AAEzB,uBAAU,KAAV,GAAkB,KAAlB,CAFyB;UAA7B;MAFJ;AAOA,SAAI,UAAU,KAAV,GAAkB,OAAlB,EAA2B;AAC3B,gBAAO,SAAP,CAD2B;MAA/B;EAzBgC;;AA8BpC,aAAY,SAAZ,CAAsB,cAAtB,GAAuC,UAAS,QAAT,EAAmB,MAAnB,EAA2B,YAA3B,EAAyC;AAC5E,SAAI,CAAJ;SACI,OAAO,IAAP;SACA,MAAM,CAAN;SACA,gBAAgB,SAAS,MAAT;SAChB,cAAc,CAAC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAD,EAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CAAlB,CAAd;SACA,KALJ,CAD4E;;AAQ5E,YAAO,MAAM,aAAN,EAAqB;AACxB,cAAK,IAAI,CAAJ,EAAO,IAAI,CAAJ,EAAO,GAAnB,EAAwB;AACpB,yBAAY,CAAZ,EAAe,CAAf,IAAoB,SAAS,GAAT,IAAgB,KAAK,aAAL,CAAmB,CAAnB,CAAhB,CADA;AAEpB,yBAAY,CAAZ,EAAe,CAAf,IAAoB,SAAS,MAAM,CAAN,CAAT,GAAoB,KAAK,aAAL,CAAmB,CAAnB,CAApB,CAFA;AAGpB,oBAAO,CAAP,CAHoB;UAAxB;AAKA,iBAAQ,KAAK,WAAL,CAAiB,WAAjB,CAAR,CANwB;AAOxB,aAAI,CAAC,KAAD,EAAQ;AACR,oBAAO,IAAP,CADQ;UAAZ;AAGA,cAAK,IAAI,CAAJ,EAAO,IAAI,MAAM,MAAN,EAAc,GAA9B,EAAmC;AAC/B,oBAAO,IAAP,CAAY,MAAM,CAAN,EAAS,IAAT,GAAgB,EAAhB,CAAZ,CAD+B;AAE/B,0BAAa,IAAb,CAAkB,MAAM,CAAN,CAAlB,EAF+B;UAAnC;MAVJ;AAeA,YAAO,KAAP,CAvB4E;EAAzC;;AA0BvC,aAAY,SAAZ,CAAsB,oBAAtB,GAA6C,UAAS,QAAT,EAAmB;AAC5D,YAAQ,SAAS,MAAT,GAAkB,EAAlB,KAAyB,CAAzB,CADoD;EAAnB;;AAI7C,aAAY,SAAZ,CAAsB,OAAtB,GAAgC,YAAW;AACvC,SAAI,SAAJ;SACI,OADJ;SAEI,OAAO,IAAP;SACA,IAHJ;SAII,SAAS,EAAT;SACA,eAAe,EAAf;SACA,QANJ,CADuC;;AASvC,iBAAY,KAAK,UAAL,EAAZ,CATuC;AAUvC,SAAI,CAAC,SAAD,EAAY;AACZ,gBAAO,IAAP,CADY;MAAhB;AAGA,kBAAa,IAAb,CAAkB,SAAlB,EAbuC;;AAevC,eAAU,KAAK,QAAL,EAAV,CAfuC;AAgBvC,SAAI,CAAC,OAAD,EAAU;AACV,gBAAO,IAAP,CADU;MAAd;;AAIA,gBAAW,KAAK,aAAL,CAAmB,UAAU,GAAV,EAAe,QAAQ,KAAR,EAAe,KAAjD,CAAX,CApBuC;AAqBvC,SAAI,CAAC,KAAK,oBAAL,CAA0B,QAA1B,CAAD,EAAsC;AACtC,gBAAO,IAAP,CADsC;MAA1C;AAGA,YAAO,KAAK,cAAL,CAAoB,QAApB,EAA8B,MAA9B,EAAsC,YAAtC,CAAP,CAxBuC;AAyBvC,SAAI,CAAC,IAAD,EAAO;AACP,gBAAO,IAAP,CADO;MAAX;AAGA,SAAI,OAAO,MAAP,GAAgB,CAAhB,KAAsB,CAAtB,IACI,OAAO,MAAP,GAAgB,CAAhB,EAAmB;AACvB,gBAAO,IAAP,CADuB;MAD3B;;AAKA,kBAAa,IAAb,CAAkB,OAAlB,EAjCuC;AAkCvC,YAAO;AACH,eAAM,OAAO,IAAP,CAAY,EAAZ,CAAN;AACA,gBAAO,UAAU,KAAV;AACP,cAAK,QAAQ,GAAR;AACL,oBAAW,SAAX;AACA,uBAAc,YAAd;MALJ,CAlCuC;EAAX;;AA2ChC,aAAY,WAAZ,GAA0B;AACtB,6BAAwB;AACpB,iBAAQ,SAAR;AACA,oBAAW,KAAX;AACA,wBAAe,+CACf,0CADe;MAHnB;EADJ;;AASA,6CAAe,WAAf,C;;;;;;;ACpUA;;AAEA,UAAS,UAAT,CAAoB,IAApB,EAA0B,WAA1B,EAAuC;AACnC,wEAAU,IAAV,CAAe,IAAf,EAAqB,IAArB,EAA2B,WAA3B,EADmC;EAAvC;;AAIA,KAAI,aAAa;AACb,qBAAgB,EAAC,OAAO,CACpB,CAAE,EAAF,EAAM,EAAN,EAAU,EAAV,EAAc,EAAd,EAAkB,EAAlB,EAAsB,EAAtB,EAA0B,EAA1B,EAA8B,EAA9B,EAAkC,EAAlC,EAAsC,EAAtC,CADoB,EAEpB,CAAC,CAAD,EAAI,EAAJ,EAAQ,EAAR,EAAY,EAAZ,EAAgB,EAAhB,EAAoB,EAApB,EAAwB,EAAxB,EAA4B,EAA5B,EAAgC,EAAhC,EAAoC,EAApC,CAFoB,CAAP,EAAjB;AAGA,mBAAc,EAAE,OAAO,CAAC,IAAI,CAAJ,GAAQ,CAAR,EAAW,IAAI,CAAJ,GAAQ,CAAR,EAAW,IAAI,CAAJ,GAAQ,CAAR,EAAW,IAAI,CAAJ,GAAQ,CAAR,EAAW,IAAI,CAAJ,GAAQ,CAAR,EAAW,IAAI,CAAJ,GAAQ,CAAR,CAA/D,EAAhB;AACA,aAAQ,EAAC,OAAO,OAAP,EAAgB,WAAW,KAAX,EAAzB;EALA;;AAQJ,YAAW,SAAX,GAAuB,OAAO,MAAP,CAAc,mEAAU,SAAV,EAAqB,UAAnC,CAAvB;AACA,YAAW,SAAX,CAAqB,WAArB,GAAmC,UAAnC;;AAEA,YAAW,SAAX,CAAqB,cAArB,GAAsC,UAAS,IAAT,EAAe,MAAf,EAAuB,YAAvB,EAAqC;AACvE,SAAI,CAAJ;SACI,OAAO,IAAP;SACA,gBAAgB,GAAhB,CAHmE;;AAKvE,UAAM,IAAI,CAAJ,EAAO,IAAI,CAAJ,EAAO,GAApB,EAAyB;AACrB,gBAAO,KAAK,WAAL,CAAiB,KAAK,GAAL,CAAxB,CADqB;AAErB,aAAI,CAAC,IAAD,EAAO;AACP,oBAAO,IAAP,CADO;UAAX;AAGA,aAAI,KAAK,IAAL,IAAa,KAAK,YAAL,EAAmB;AAChC,kBAAK,IAAL,GAAY,KAAK,IAAL,GAAY,KAAK,YAAL,CADQ;AAEhC,8BAAiB,KAAM,IAAI,CAAJ,CAFS;UAApC;AAIA,gBAAO,IAAP,CAAY,KAAK,IAAL,CAAZ,CATqB;AAUrB,sBAAa,IAAb,CAAkB,IAAlB,EAVqB;MAAzB;AAYA,SAAI,CAAC,KAAK,gBAAL,CAAsB,aAAtB,EAAqC,MAArC,CAAD,EAA+C;AAC/C,gBAAO,IAAP,CAD+C;MAAnD;;AAIA,YAAO,IAAP,CArBuE;EAArC;;AAwBtC,YAAW,SAAX,CAAqB,gBAArB,GAAwC,UAAS,aAAT,EAAwB,MAAxB,EAAgC;AACpE,SAAI,CAAJ,EACI,QADJ,CADoE;;AAIpE,UAAK,WAAW,CAAX,EAAc,WAAW,KAAK,cAAL,CAAoB,MAApB,EAA4B,UAA1D,EAAqE;AACjE,cAAM,IAAI,CAAJ,EAAO,IAAI,KAAK,cAAL,CAAoB,QAApB,EAA8B,MAA9B,EAAsC,GAAvD,EAA4D;AACxD,iBAAI,kBAAkB,KAAK,cAAL,CAAoB,QAApB,EAA8B,CAA9B,CAAlB,EAAoD;AACpD,wBAAO,OAAP,CAAe,QAAf,EADoD;AAEpD,wBAAO,IAAP,CAAY,CAAZ,EAFoD;AAGpD,wBAAO,IAAP,CAHoD;cAAxD;UADJ;MADJ;AASA,YAAO,KAAP,CAboE;EAAhC;;AAgBxC,YAAW,SAAX,CAAqB,cAArB,GAAsC,UAAS,MAAT,EAAiB;AACnD,SAAI,OAAO,CAAC,OAAO,CAAP,CAAD,CAAP;SACA,YAAY,OAAO,OAAO,MAAP,GAAgB,CAAhB,CAAnB,CAF+C;;AAInD,SAAI,aAAa,CAAb,EAAgB;AAChB,gBAAO,KAAK,MAAL,CAAY,OAAO,KAAP,CAAa,CAAb,EAAgB,CAAhB,CAAZ,EACF,MADE,CACK,CAAC,SAAD,EAAY,CAAZ,EAAe,CAAf,EAAkB,CAAlB,EAAqB,CAArB,CADL,EAEF,MAFE,CAEK,OAAO,KAAP,CAAa,CAAb,EAAgB,CAAhB,CAFL,CAAP,CADgB;MAApB,MAIO,IAAI,cAAc,CAAd,EAAiB;AACxB,gBAAO,KAAK,MAAL,CAAY,OAAO,KAAP,CAAa,CAAb,EAAgB,CAAhB,CAAZ,EACF,MADE,CACK,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,CADL,EAEF,MAFE,CAEK,OAAO,KAAP,CAAa,CAAb,EAAgB,CAAhB,CAFL,CAAP,CADwB;MAArB,MAIA,IAAI,cAAc,CAAd,EAAiB;AACxB,gBAAO,KAAK,MAAL,CAAY,OAAO,KAAP,CAAa,CAAb,EAAgB,CAAhB,CAAZ,EACF,MADE,CACK,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,OAAO,CAAP,CAAhB,CADL,CAAP,CADwB;MAArB,MAGA;AACH,gBAAO,KAAK,MAAL,CAAY,OAAO,KAAP,CAAa,CAAb,EAAgB,CAAhB,CAAZ,EACF,MADE,CACK,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,SAAb,CADL,CAAP,CADG;MAHA;;AAQP,UAAK,IAAL,CAAU,OAAO,OAAO,MAAP,GAAgB,CAAhB,CAAjB,EApBmD;AAqBnD,YAAO,IAAP,CArBmD;EAAjB;;AAwBtC,YAAW,SAAX,CAAqB,SAArB,GAAiC,UAAS,MAAT,EAAiB;AAC9C,YAAO,mEAAU,SAAV,CAAoB,SAApB,CAA8B,IAA9B,CAAmC,IAAnC,EAAyC,KAAK,cAAL,CAAoB,MAApB,CAAzC,CAAP,CAD8C;EAAjB;;AAIjC,YAAW,SAAX,CAAqB,QAArB,GAAgC,UAAS,MAAT,EAAiB,OAAjB,EAA0B;AACtD,eAAU,IAAV,CADsD;AAEtD,YAAO,mEAAU,SAAV,CAAoB,QAApB,CAA6B,IAA7B,CAAkC,IAAlC,EAAwC,MAAxC,EAAgD,OAAhD,CAAP,CAFsD;EAA1B;;AAKhC,YAAW,SAAX,CAAqB,yBAArB,GAAiD,UAAS,OAAT,EAAkB;AAC/D,SAAI,OAAO,IAAP;SACA,qBADJ,CAD+D;;AAI/D,6BAAwB,QAAQ,GAAR,GAAe,CAAC,QAAQ,GAAR,GAAc,QAAQ,KAAR,CAAf,GAAgC,CAAhC,CAJwB;AAK/D,SAAI,wBAAwB,KAAK,IAAL,CAAU,MAAV,EAAkB;AAC1C,aAAI,KAAK,WAAL,CAAiB,QAAQ,GAAR,EAAa,qBAA9B,EAAqD,CAArD,CAAJ,EAA6D;AACzD,oBAAO,OAAP,CADyD;UAA7D;MADJ;EAL6C;;AAYjD,6CAAe,UAAf,C;;;;;;;ACtGA;;AAEA,UAAS,SAAT,CAAmB,IAAnB,EAAyB,WAAzB,EAAsC;AAClC,wEAAU,IAAV,CAAe,IAAf,EAAqB,IAArB,EAA2B,WAA3B,EADkC;EAAtC;;AAIA,KAAI,aAAa;AACb,aAAQ,EAAC,OAAO,OAAP,EAAgB,WAAW,KAAX,EAAzB;EADA;;AAIJ,WAAU,SAAV,GAAsB,OAAO,MAAP,CAAc,mEAAU,SAAV,EAAqB,UAAnC,CAAtB;AACA,WAAU,SAAV,CAAoB,WAApB,GAAkC,SAAlC;;AAEA,WAAU,SAAV,CAAoB,OAApB,GAA8B,YAAW;AACrC,SAAI,SAAS,mEAAU,SAAV,CAAoB,OAApB,CAA4B,IAA5B,CAAiC,IAAjC,CAAT,CADiC;;AAGrC,SAAI,UAAU,OAAO,IAAP,IAAe,OAAO,IAAP,CAAY,MAAZ,KAAuB,EAAvB,IAA6B,OAAO,IAAP,CAAY,MAAZ,CAAmB,CAAnB,MAA0B,GAA1B,EAA+B;AACrF,gBAAO,IAAP,GAAc,OAAO,IAAP,CAAY,SAAZ,CAAsB,CAAtB,CAAd,CADqF;AAErF,gBAAO,MAAP,CAFqF;MAAzF;AAIA,YAAO,IAAP,CAPqC;EAAX;;AAU9B,6CAAe,SAAf,C;;;;;;;;;;;;;;;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAM,OAAO;AACT,YAAO,oBAAQ,CAAR,CAAP;EADE;;AAKN,UAAS,aAAT,GAAyB;AACrB,SAAI,YAAJ;SACI,aADJ;SAEI,QAFJ;SAGI,mBAAmB;AACf,cAAK;AACD,oBAAO,IAAP;AACA,sBAAS,IAAT;UAFJ;AAIA,cAAK;AACD,oBAAO,IAAP;AACA,sBAAS,IAAT;UAFJ;MALJ;SAUA,kBAbJ;SAcI,QAdJ;SAeI,QAfJ;SAgBI,cAAc,EAAd;SACA,cAAc,IAAd;SACA,gBAlBJ;SAmBI,UAAU,EAAV;SACA,UAAU,8EAAV;SACA,QArBJ,CADqB;;AAwBrB,cAAS,cAAT,CAAwB,YAAxB,EAAsC;AAClC,qBAAY,YAAZ,EADkC;AAElC,oBAAW,gFAAe,MAAf,CAAsB,QAAQ,OAAR,EAAiB,kBAAvC,CAAX,CAFkC;MAAtC;;AAKA,cAAS,eAAT,CAAyB,EAAzB,EAA6B;AACzB,aAAI,KAAJ,CADyB;AAEzB,aAAI,QAAQ,WAAR,CAAoB,IAApB,KAA6B,aAA7B,EAA4C;AAC5C,qBAAQ,SAAS,aAAT,CAAuB,OAAvB,CAAR,CAD4C;AAE5C,4BAAe,oEAAY,iBAAZ,CAA8B,KAA9B,CAAf,CAF4C;UAAhD,MAGO,IAAI,QAAQ,WAAR,CAAoB,IAApB,KAA6B,aAA7B,EAA4C;AACnD,4BAAe,oEAAY,iBAAZ,EAAf,CADmD;UAAhD,MAEA,IAAI,QAAQ,WAAR,CAAoB,IAApB,KAA6B,YAA7B,EAA2C;AAClD,iBAAI,YAAY,aAAZ,CAD8C;AAElD,iBAAI,SAAJ,EAAe;AACX,yBAAQ,UAAU,aAAV,CAAwB,OAAxB,CAAR,CADW;AAEX,qBAAI,CAAC,KAAD,EAAQ;AACR,6BAAQ,SAAS,aAAT,CAAuB,OAAvB,CAAR,CADQ;AAER,+BAAU,WAAV,CAAsB,KAAtB,EAFQ;kBAAZ;cAFJ;AAOA,4BAAe,oEAAY,gBAAZ,CAA6B,KAA7B,CAAf,CATkD;AAUlD,yFAAa,OAAb,CAAqB,KAArB,EAA4B,QAAQ,WAAR,CAAoB,WAApB,CAA5B,CACC,IADD,CACM,YAAM;AACR,8BAAa,OAAb,CAAqB,WAArB,EADQ;cAAN,CADN,CAGG,KAHH,CAGS,UAAC,GAAD,EAAS;AACd,wBAAO,GAAG,GAAH,CAAP,CADc;cAAT,CAHT,CAVkD;UAA/C;;AAkBP,sBAAa,YAAb,CAA0B,SAA1B,EAAqC,MAArC,EAzByB;AA0BzB,sBAAa,cAAb,CAA4B,QAAQ,WAAR,CAA5B,CA1ByB;AA2BzB,sBAAa,gBAAb,CAA8B,WAA9B,EAA2C,UAAU,IAAV,CAAe,SAAf,EAA0B,EAA1B,CAA3C,EA3ByB;MAA7B;;AA8BA,cAAS,WAAT,GAAuB;AACnB,aAAI,SAAS,QAAQ,WAAR,CAAoB,MAApB;;AADM,aAGf,UAAU,OAAO,QAAP,IAAmB,OAAO,QAAP,KAAoB,CAApB,EAAuB;AACpD,oBAAO,MAAP,CADoD;UAAxD,MAEO;;AAEH,iBAAI,WAAW,OAAO,MAAP,KAAkB,QAAlB,GAA6B,MAA7B,GAAsC,uBAAtC,CAFZ;AAGH,oBAAO,SAAS,aAAT,CAAuB,QAAvB,CAAP,CAHG;UAFP;MAHJ;;AAYA,cAAS,SAAT,CAAmB,EAAnB,EAAuB;AACnB,gGAAsB,YAAtB,EAAoC,QAAQ,OAAR,CAApC,CADmB;AAEnB,oBAAW,OAAX,EAFmB;AAGnB,yBAAgB,sEAAa,MAAb,CAAoB,YAApB,EAAkC,iBAAiB,GAAjB,CAAqB,KAArB,CAAlD,CAHmB;;AAKnB,0BAAiB,QAAQ,YAAR,EAAsB,YAAW;AAC9C,iBAAI,QAAQ,YAAR,KAAyB,CAAzB,EAA4B;AAC5B,kCAD4B;cAAhC;AAGA,mBAAM,EAAN,EAJ8C;UAAX,CAAvC,CALmB;MAAvB;;AAaA,cAAS,KAAT,CAAe,EAAf,EAAkB;AACd,sBAAa,IAAb,GADc;AAEd,cAFc;MAAlB;;AAKA,cAAS,UAAT,GAAsB;AAClB,aAAI,OAAO,QAAP,KAAoB,WAApB,EAAiC;AACjC,iBAAI,YAAY,aAAZ,CAD6B;AAEjC,8BAAiB,GAAjB,CAAqB,KAArB,GAA6B,SAAS,aAAT,CAAuB,kBAAvB,CAA7B,CAFiC;AAGjC,iBAAI,CAAC,iBAAiB,GAAjB,CAAqB,KAArB,EAA4B;AAC7B,kCAAiB,GAAjB,CAAqB,KAArB,GAA6B,SAAS,aAAT,CAAuB,QAAvB,CAA7B,CAD6B;AAE7B,kCAAiB,GAAjB,CAAqB,KAArB,CAA2B,SAA3B,GAAuC,WAAvC,CAF6B;AAG7B,qBAAI,aAAa,QAAQ,WAAR,CAAoB,IAApB,KAA6B,aAA7B,EAA4C;AACzD,+BAAU,WAAV,CAAsB,iBAAiB,GAAjB,CAAqB,KAArB,CAAtB,CADyD;kBAA7D;cAHJ;AAOA,8BAAiB,GAAjB,CAAqB,KAArB,GAA6B,iBAAiB,GAAjB,CAAqB,KAArB,CAA2B,UAA3B,CAAsC,IAAtC,CAA7B,CAViC;AAWjC,8BAAiB,GAAjB,CAAqB,KAArB,CAA2B,KAA3B,GAAmC,aAAa,aAAb,GAA6B,CAA7B,CAXF;AAYjC,8BAAiB,GAAjB,CAAqB,KAArB,CAA2B,MAA3B,GAAoC,aAAa,aAAb,GAA6B,CAA7B,CAZH;;AAcjC,8BAAiB,GAAjB,CAAqB,OAArB,GAA+B,SAAS,aAAT,CAAuB,sBAAvB,CAA/B,CAdiC;AAejC,iBAAI,CAAC,iBAAiB,GAAjB,CAAqB,OAArB,EAA8B;AAC/B,kCAAiB,GAAjB,CAAqB,OAArB,GAA+B,SAAS,aAAT,CAAuB,QAAvB,CAA/B,CAD+B;AAE/B,kCAAiB,GAAjB,CAAqB,OAArB,CAA6B,SAA7B,GAAyC,eAAzC,CAF+B;AAG/B,qBAAI,SAAJ,EAAe;AACX,+BAAU,WAAV,CAAsB,iBAAiB,GAAjB,CAAqB,OAArB,CAAtB,CADW;kBAAf;cAHJ;AAOA,8BAAiB,GAAjB,CAAqB,OAArB,GAA+B,iBAAiB,GAAjB,CAAqB,OAArB,CAA6B,UAA7B,CAAwC,IAAxC,CAA/B,CAtBiC;AAuBjC,8BAAiB,GAAjB,CAAqB,OAArB,CAA6B,KAA7B,GAAqC,aAAa,aAAb,GAA6B,CAA7B,CAvBJ;AAwBjC,8BAAiB,GAAjB,CAAqB,OAArB,CAA6B,MAA7B,GAAsC,aAAa,aAAb,GAA6B,CAA7B,CAxBL;UAArC;MADJ;;AA6BA,cAAS,WAAT,CAAqB,YAArB,EAAmC;AAC/B,aAAI,YAAJ,EAAkB;AACd,kCAAqB,YAArB,CADc;UAAlB,MAEO;AACH,kCAAqB,IAAI,4EAAJ,CAAiB;AAClC,oBAAG,aAAa,QAAb,EAAH;AACA,oBAAG,aAAa,SAAb,EAAH;cAFiB,CAArB,CADG;UAFP;;AASA,aAAI,MAAiB;AACjB,qBAAQ,GAAR,CAAY,mBAAmB,IAAnB,CAAZ,CADiB;UAArB;AAGA,oBAAW,CACP,KAAK,KAAL,CAAW,CAAC,CAAD,EAAI,CAAJ,CAAX,CADO,EAEP,KAAK,KAAL,CAAW,CAAC,CAAD,EAAI,mBAAmB,IAAnB,CAAwB,CAAxB,CAAf,CAFO,EAGP,KAAK,KAAL,CAAW,CAAC,mBAAmB,IAAnB,CAAwB,CAAxB,EAA2B,mBAAmB,IAAnB,CAAwB,CAAxB,CAAvC,CAHO,EAIP,KAAK,KAAL,CAAW,CAAC,mBAAmB,IAAnB,CAAwB,CAAxB,EAA2B,CAA5B,CAAX,CAJO,CAAX,CAb+B;AAmB/B,oBAAW,uFAAc,kBAAd,EAAkC,QAAQ,OAAR,CAA7C,CAnB+B;MAAnC;;AAsBA,cAAS,gBAAT,GAA4B;AACxB,aAAI,QAAQ,MAAR,EAAgB;AAChB,oBAAO,SAAS,MAAT,EAAP,CADgB;UAApB,MAEO;AACH,oBAAO,CAAC,CACJ,KAAK,KAAL,CAAW,SAAS,CAAT,CAAX,CADI,EAEJ,KAAK,KAAL,CAAW,SAAS,CAAT,CAAX,CAFI,EAGJ,KAAK,KAAL,CAAW,SAAS,CAAT,CAAX,CAHI,EAIJ,KAAK,KAAL,CAAW,SAAS,CAAT,CAAX,CAJI,CAAD,CAAP,CADG;UAFP;MADJ;;AAYA,cAAS,eAAT,CAAyB,MAAzB,EAAiC;AAC7B,aAAI,WAAW,aAAa,WAAb,EAAX;aACA,UAAU,SAAS,CAAT;aACV,UAAU,SAAS,CAAT;aACV,CAHJ,CAD6B;;AAM7B,aAAI,YAAY,CAAZ,IAAiB,YAAY,CAAZ,EAAe;AAChC,oBADgC;UAApC;;AAIA,aAAI,OAAO,QAAP,EAAiB;AACjB,kBAAK,IAAI,CAAJ,EAAO,IAAI,OAAO,QAAP,CAAgB,MAAhB,EAAwB,GAAxC,EAA6C;AACzC,iCAAgB,OAAO,QAAP,CAAgB,CAAhB,CAAhB,EADyC;cAA7C;UADJ;;AAMA,aAAI,OAAO,IAAP,IAAe,OAAO,IAAP,CAAY,MAAZ,KAAuB,CAAvB,EAA0B;AACzC,sBAAS,OAAO,IAAP,CAAT,CADyC;UAA7C;;AAIA,aAAI,OAAO,GAAP,EAAY;AACZ,qBAAQ,OAAO,GAAP,CAAR,CADY;UAAhB;;AAIA,aAAI,OAAO,KAAP,IAAgB,OAAO,KAAP,CAAa,MAAb,GAAsB,CAAtB,EAAyB;AACzC,kBAAK,IAAI,CAAJ,EAAO,IAAI,OAAO,KAAP,CAAa,MAAb,EAAqB,GAArC,EAA0C;AACtC,yBAAQ,OAAO,KAAP,CAAa,CAAb,CAAR,EADsC;cAA1C;UADJ;;AAMA,kBAAS,OAAT,CAAiB,GAAjB,EAAsB;AAClB,iBAAI,SAAS,IAAI,MAAJ,CADK;;AAGlB,oBAAO,QAAP,EAAiB;AACb,qBAAI,MAAJ,EAAY,CAAZ,KAAkB,OAAlB,CADa;AAEb,qBAAI,MAAJ,EAAY,CAAZ,KAAkB,OAAlB,CAFa;cAAjB;UAHJ;;AASA,kBAAS,QAAT,CAAkB,IAAlB,EAAwB;AACpB,kBAAK,CAAL,EAAQ,CAAR,IAAa,OAAb,CADoB;AAEpB,kBAAK,CAAL,EAAQ,CAAR,IAAa,OAAb,CAFoB;AAGpB,kBAAK,CAAL,EAAQ,CAAR,IAAa,OAAb,CAHoB;AAIpB,kBAAK,CAAL,EAAQ,CAAR,IAAa,OAAb,CAJoB;UAAxB;MAvCJ;;AA+CA,cAAS,SAAT,CAAoB,MAApB,EAA4B,SAA5B,EAAuC;AACnC,aAAI,CAAC,SAAD,IAAc,CAAC,gBAAD,EAAmB;AACjC,oBADiC;UAArC;;AAIA,aAAI,OAAO,QAAP,EAAiB;AACjB,oBAAO,QAAP,CAAgB,MAAhB,CAAuB;wBAAW,QAAQ,UAAR;cAAX,CAAvB,CACK,OADL,CACa;wBAAW,UAAU,OAAV,EAAmB,SAAnB;cAAX,CADb,CADiB;UAArB,MAGO,IAAI,OAAO,UAAP,EAAmB;AAC1B,8BAAiB,SAAjB,CAA2B,SAA3B,EAAsC,aAAa,aAAb,EAAtC,EAAoE,OAAO,UAAP,CAApE,CAD0B;UAAvB;MARX;;AAaA,cAAS,aAAT,CAAwB,MAAxB,EAAgC;AAC5B,gBAAO,WAAW,OAAO,QAAP,GAChB,OAAO,QAAP,CAAgB,IAAhB,CAAqB;oBAAW,QAAQ,UAAR;UAAX,CADL,GAEhB,OAAO,UAAP,CAFK,CADqB;MAAhC;;AAMA,cAAS,aAAT,CAAuB,MAAvB,EAA+B,SAA/B,EAA0C;AACtC,aAAI,kBAAkB,MAAlB,CADkC;;AAGtC,aAAI,UAAU,WAAV,EAAuB;AACvB,6BAAgB,MAAhB,EADuB;AAEvB,uBAAU,MAAV,EAAkB,SAAlB,EAFuB;AAGvB,+BAAkB,OAAO,QAAP,IAAmB,MAAnB,CAHK;UAA3B;;AAMA,iBAAQ,OAAR,CAAgB,WAAhB,EAA6B,eAA7B,EATsC;AAUtC,aAAI,cAAc,MAAd,CAAJ,EAA2B;AACvB,qBAAQ,OAAR,CAAgB,UAAhB,EAA4B,eAA5B,EADuB;UAA3B;MAVJ;;AAeA,cAAS,eAAT,GAA2B;AACvB,aAAI,MAAJ,EACI,KADJ,CADuB;;AAIvB,iBAAQ,kBAAR,CAJuB;AAKvB,aAAI,KAAJ,EAAW;AACP,sBAAS,SAAS,uBAAT,CAAiC,KAAjC,CAAT,CADO;AAEP,sBAAS,UAAU,EAAV,CAFF;AAGP,oBAAO,KAAP,GAAe,KAAf,CAHO;AAIP,2BAAc,MAAd,EAAsB,mBAAmB,IAAnB,CAAtB,CAJO;UAAX,MAKO;AACH,6BADG;UALP;MALJ;;AAeA,cAAS,MAAT,GAAkB;AACd,aAAI,eAAJ,CADc;;AAGd,aAAI,WAAJ,EAAiB;AACb,iBAAI,YAAY,MAAZ,GAAqB,CAArB,EAAwB;AACxB,mCAAkB,YAAY,MAAZ,CAAmB,UAAS,YAAT,EAAuB;AACxD,4BAAO,CAAC,aAAa,IAAb,CADgD;kBAAvB,CAAnB,CAEf,CAFe,CAAlB,CADwB;AAIxB,qBAAI,eAAJ,EAAqB;AACjB,mCAAc,UAAd,CAAyB,gBAAgB,SAAhB,CAAzB,CADiB;kBAArB,MAEO;AACH;AADG,kBAFP;cAJJ,MASO;AACH,mCAAc,UAAd,CAAyB,mBAAmB,IAAnB,CAAzB,CADG;kBATP;AAYA,iBAAI,cAAc,IAAd,EAAJ,EAA0B;AACtB,qBAAI,eAAJ,EAAqB;AACjB,qCAAgB,IAAhB,GAAuB,IAAvB,CADiB;AAEjB,qCAAgB,MAAhB,CAAuB,WAAvB,CAAmC;AAC/B,8BAAK,SAAL;AACA,oCAAW,gBAAgB,SAAhB;sBAFf,EAGG,CAAC,gBAAgB,SAAhB,CAA0B,MAA1B,CAHJ,EAFiB;kBAArB,MAMO;AACH,uCADG;kBANP;cADJ;UAbJ,MAwBO;AACH,+BADG;UAxBP;MAHJ;;AAgCA,cAAS,qBAAT,GAAiC;AAC7B,aAAI,OAAO,IAAP;aACA,QAAQ,QAAQ,QAAQ,SAAR,IAAqB,EAArB,CAAR,CAFiB;;AAI7B,oBAAW,KAAX,CAJ6B;AAK7B,UAAC,SAAS,KAAT,CAAe,SAAf,EAA0B;AACvB,oBAAO,QAAQ,SAAR,CADgB;AAEvB,iBAAI,CAAC,QAAD,EAAW;AACX,qBAAI,aAAa,IAAb,EAAmB;AACnB,6BAAQ,KAAR,CADmB;AAEnB,8BAFmB;kBAAvB;AAIA,wBAAO,gBAAP,CAAwB,KAAxB,EALW;cAAf;UAFH,EASC,YAAY,GAAZ,EATD,CAAD,CAL6B;MAAjC;;AAiBA,cAAS,MAAT,GAAiB;AACb,aAAI,eAAe,QAAQ,WAAR,CAAoB,IAApB,KAA6B,YAA7B,EAA2C;AAC1D,qCAD0D;UAA9D,MAEO;AACH,sBADG;UAFP;MADJ;;AAQA,cAAS,UAAT,CAAoB,EAApB,EAAwB;AACpB,aAAI,OAAJ;aACI,eAAe;AACX,qBAAQ,SAAR;AACA,wBAAW,IAAI,UAAJ,CAAe,aAAa,QAAb,KAA0B,aAAa,SAAb,EAA1B,CAA1B;AACA,mBAAM,IAAN;UAHJ,CAFgB;;AAQpB,mBAAU,oBAAV,CARoB;AASpB,sBAAa,MAAb,GAAsB,IAAI,MAAJ,CAAW,OAAX,CAAtB,CAToB;;AAWpB,sBAAa,MAAb,CAAoB,SAApB,GAAgC,UAAS,CAAT,EAAY;AACxC,iBAAI,EAAE,IAAF,CAAO,KAAP,KAAiB,aAAjB,EAAgC;AAChC,qBAAI,eAAJ,CAAoB,OAApB,EADgC;AAEhC,8BAAa,IAAb,GAAoB,KAApB,CAFgC;AAGhC,8BAAa,SAAb,GAAyB,IAAI,UAAJ,CAAe,EAAE,IAAF,CAAO,SAAP,CAAxC,CAHgC;AAIhC,qBAAI,MAAiB;AACjB,6BAAQ,GAAR,CAAY,oBAAZ,EADiB;kBAArB;AAGA,wBAAO,GAAG,YAAH,CAAP,CAPgC;cAApC,MAQO,IAAI,EAAE,IAAF,CAAO,KAAP,KAAiB,WAAjB,EAA8B;AACrC,8BAAa,SAAb,GAAyB,IAAI,UAAJ,CAAe,EAAE,IAAF,CAAO,SAAP,CAAxC,CADqC;AAErC,8BAAa,IAAb,GAAoB,KAApB,CAFqC;AAGrC,+BAAc,EAAE,IAAF,CAAO,MAAP,EAAe,aAAa,SAAb,CAA7B,CAHqC;cAAlC,MAIA,IAAI,EAAE,IAAF,CAAO,KAAP,KAAiB,OAAjB,EAA0B;AACjC,qBAAI,MAAiB;AACjB,6BAAQ,GAAR,CAAY,mBAAmB,EAAE,IAAF,CAAO,OAAP,CAA/B,CADiB;kBAArB;cADG;UAbqB,CAXZ;;AA+BpB,sBAAa,MAAb,CAAoB,WAApB,CAAgC;AAC5B,kBAAK,MAAL;AACA,mBAAM,EAAC,GAAG,aAAa,QAAb,EAAH,EAA4B,GAAG,aAAa,SAAb,EAAH,EAAnC;AACA,wBAAW,aAAa,SAAb;AACX,qBAAQ,gBAAgB,OAAhB,CAAR;UAJJ,EAKG,CAAC,aAAa,SAAb,CAAuB,MAAvB,CALJ,EA/BoB;MAAxB;;AAuCA,cAAS,eAAT,CAAyB,MAAzB,EAAiC;AAC7B,6BACO;AACH,uCACO,OAAO,WAAP;AACH,yBAAQ,IAAR;eAFJ;WAFJ,CAD6B;MAAjC;;AAUA,cAAS,eAAT,CAAyB,OAAzB,EAAkC;;AAE9B,aAAI,OAAJ,EAAa;AACT,iBAAI,SAAS,UAAU,OAAV,CADJ;AAET,iBAAI,CAAC,MAAD,EAAS;AACT,sBAAK,WAAL,CAAiB,EAAC,SAAS,OAAT,EAAkB,SAAS,6BAAT,EAApC,EADS;AAET,wBAFS;cAAb;UAFJ;AAOA,aAAI,YAAJ;aACI,UAAU,OAAO,OAAP,CAAe,aAAf,EAAV,CAV0B;;AAY9B,cAAK,SAAL,GAAiB,UAAS,CAAT,EAAY;AACzB,iBAAI,EAAE,IAAF,CAAO,GAAP,KAAe,MAAf,EAAuB;AACvB,qBAAI,SAAS,EAAE,IAAF,CAAO,MAAP,CADU;AAEvB,wBAAO,YAAP,GAAsB,CAAtB,CAFuB;AAGvB,gCAAe,IAAI,OAAO,YAAP,CAAoB;AACnC,wBAAG,EAAE,IAAF,CAAO,IAAP,CAAY,CAAZ;AACH,wBAAG,EAAE,IAAF,CAAO,IAAP,CAAY,CAAZ;kBAFQ,EAGZ,IAAI,UAAJ,CAAe,EAAE,IAAF,CAAO,SAAP,CAHH,CAAf,CAHuB;AAOvB,yBAAQ,IAAR,CAAa,MAAb,EAAqB,KAArB,EAA4B,YAA5B,EAPuB;AAQvB,yBAAQ,SAAR,CAAkB,WAAlB,EAA+B,WAA/B,EARuB;cAA3B,MASO,IAAI,EAAE,IAAF,CAAO,GAAP,KAAe,SAAf,EAA0B;AACjC,8BAAa,IAAb,GAAoB,IAAI,UAAJ,CAAe,EAAE,IAAF,CAAO,SAAP,CAAnC,CADiC;AAEjC,yBAAQ,KAAR,GAFiC;cAA9B;UAVM,CAZa;;AA4B9B,kBAAS,WAAT,CAAqB,MAArB,EAA6B;AACzB,kBAAK,WAAL,CAAiB;AACb,0BAAS,WAAT;AACA,4BAAW,aAAa,IAAb;AACX,yBAAQ,MAAR;cAHJ,EAIG,CAAC,aAAa,IAAb,CAAkB,MAAlB,CAJJ,EADyB;UAA7B;;AAQA,kBAAS,KAAT,GAAiB;;AACb,kBAAK,WAAL,CAAiB,EAAC,SAAS,aAAT,EAAwB,WAAW,aAAa,IAAb,EAArD,EAAyE,CAAC,aAAa,IAAb,CAAkB,MAAlB,CAA1E,EADa;UAAjB;;;AApC8B,MAAlC;;AA2CA,cAAS,kBAAT,GAA8B;AAC1B,aAAI,IAAJ,EACI,aADJ;;;AAD0B,aAKtB,OAAO,iBAAP,KAA6B,WAA7B,EAA0C;AAC1C,6BAAgB,iBAAhB;AAD0C,UAA9C;;;AAL0B,aAU1B,GAAO,IAAI,IAAJ,CAAS,CAAC,MAAM,gBAAgB,QAAhB,EAAN,GAAmC,IAAnC,GAA0C,aAA1C,GAA0D,IAA1D,CAAV,EACH,EAAC,MAAM,iBAAN,EADE,CAAP,CAV0B;;AAa1B,gBAAO,OAAO,GAAP,CAAW,eAAX,CAA2B,IAA3B,CAAP,CAb0B;MAA9B;;AAgBA,cAAS,UAAT,CAAoB,OAApB,EAA6B;AACzB,aAAI,QAAJ,EAAc;AACV,sBAAS,UAAT,CAAoB,OAApB,EADU;UAAd,MAEO,IAAI,eAAe,YAAY,MAAZ,GAAqB,CAArB,EAAwB;AAC9C,yBAAY,OAAZ,CAAoB,UAAS,YAAT,EAAuB;AACvC,8BAAa,MAAb,CAAoB,WAApB,CAAgC,EAAC,KAAK,YAAL,EAAmB,SAAS,OAAT,EAApD,EADuC;cAAvB,CAApB,CAD8C;UAA3C;MAHX;;AAUA,cAAS,gBAAT,CAA0B,QAA1B,EAAoC,EAApC,EAAwC;AACpC,aAAM,aAAa,WAAW,YAAY,MAAZ,CADM;AAEpC,aAAI,eAAe,CAAf,EAAkB;AAClB,oBAAO,MAAM,IAAN,CADW;UAAtB;AAGA,aAAI,aAAa,CAAb,EAAgB;AAChB,iBAAM,qBAAqB,YAAY,KAAZ,CAAkB,UAAlB,CAArB,CADU;AAEhB,gCAAmB,OAAnB,CAA2B,UAAS,YAAT,EAAuB;AAC9C,8BAAa,MAAb,CAAoB,SAApB,GAD8C;AAE9C,qBAAI,MAAiB;AACjB,6BAAQ,GAAR,CAAY,oBAAZ,EADiB;kBAArB;cAFuB,CAA3B,CAFgB;AAQhB,2BAAc,YAAY,KAAZ,CAAkB,CAAlB,EAAqB,UAArB,CAAd,CARgB;AAShB,oBAAO,MAAM,IAAN,CATS;UAApB,MAUO;iBAKM,oBAAT,SAAS,iBAAT,CAA2B,YAA3B,EAAyC;AACrC,6BAAY,IAAZ,CAAiB,YAAjB,EADqC;AAErC,qBAAI,YAAY,MAAZ,IAAsB,QAAtB,EAA+B;AAC/B,2BAAM,IAAN,CAD+B;kBAAnC;cAFJ,CALG;;AACH,kBAAK,IAAI,IAAI,CAAJ,EAAO,IAAI,UAAJ,EAAgB,GAAhC,EAAqC;AACjC,4BAAW,iBAAX,EADiC;cAArC;UAXJ;MALJ;;AA6BA,YAAO;AACH,eAAM,cAAS,MAAT,EAAiB,EAAjB,EAAqB,YAArB,EAAmC;AACrC,uBAAU,gFAAM,EAAN,EAAU,qEAAV,EAAkB,MAAlB,CAAV,CADqC;;AAGrC,iBAAI,YAAJ,EAAkB;AACd,+BAAc,KAAd,CADc;AAEd,gCAAe,YAAf,EAFc;AAGd,wBAAO,IAAP,CAHc;cAAlB,MAIO;AACH,iCAAgB,EAAhB,EADG;cAJP;UAHE;AAWN,gBAAO,iBAAW;AACd,sBADc;UAAX;AAGP,eAAM,gBAAW;AACb,wBAAW,IAAX,CADa;AAEb,8BAAiB,CAAjB,EAFa;AAGb,iBAAI,QAAQ,WAAR,CAAoB,IAApB,KAA6B,YAA7B,EAA2C;AAC3C,6FAAa,OAAb,GAD2C;AAE3C,8BAAa,kBAAb,GAF2C;cAA/C;UAHE;AAQN,gBAAO,iBAAW;AACd,wBAAW,IAAX,CADc;UAAX;AAGP,uCAAU,WAAW,UAAU;AAC3B,qBAAQ,SAAR,CAAkB,SAAlB,EAA6B,QAA7B,EAD2B;UA1B5B;AA6BH,2CAAY,WAAW,UAAU;AAC7B,qBAAQ,WAAR,CAAoB,SAApB,EAA+B,QAA/B,EAD6B;UA7B9B;;AAgCH,kCAAyB,iCAAS,eAAT,EAA0B;AAC/C,iBAAI,mBAAmB,OAAO,gBAAgB,SAAhB,KAA8B,UAArC,EAAiD;AACpE,oCAAmB,eAAnB,CADoE;cAAxE;UADqB;AAKzB,uBAAc,sBAAS,MAAT,EAAiB,cAAjB,EAAiC;;;AAC3C,kBAAK,IAAL,CAAU,MAAV,EAAkB,YAAM;AACpB,yBAAQ,IAAR,CAAa,WAAb,EAA0B,UAAC,MAAD,EAAY;AAClC,2BAAK,IAAL,GADkC;AAElC,oCAAe,IAAf,CAAoB,IAApB,EAA0B,MAA1B,EAFkC;kBAAZ,EAGvB,IAHH,EADoB;AAKpB,0BALoB;cAAN,CAAlB,CAD2C;UAAjC;AASd,iBAAQ,gBAAR;MA9CJ,CApcqB;EAAzB;;AAsfA,6CAAe,aAAf,C;;;;;;ACtgBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;;AAEA;AACA;AACA;AACA;AACA,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC1BA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,YAAW,OAAO;AAClB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACdA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;AChBA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACdA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;;AAEA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;;AAEA;AACA;;AAEA;;;;;;;ACLA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACNA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACNA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,EAAE;AACb,YAAW,KAAK;AAChB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;AClIA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtCA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7EA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5DA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjFA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG,IAAI;AACP;;AAEA;;;;;;;ACrBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACpBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;;;;;;;ACXA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,OAAO,WAAW;AAC7B,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA,yBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO,WAAW;AAC7B,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACpCA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACxBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjFA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;;;;;;;ACdA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvCA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;ACzEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;;;;;;;ACXA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA,2BAA0B,gBAAgB,gBAAgB,SAAS,GAAG,GAAG;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrDA;AACA;AACA;;AAEA;AACA,qCAAoC;;AAEpC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpDA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClBA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,uBAAuB;AAClC,cAAa,OAAO;AACpB;AACA;AACA,kBAAiB;AACjB;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;AC7BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA,OAAM,OAAO,OAAO,SAAS,EAAE,EAAE;AACjC,OAAM,OAAO,OAAO,SAAS,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3CA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1DA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,WAAU;AACV;AACA,cAAa,SAAS;AACtB,WAAU;AACV;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7CA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAoB;AACpB,2BAA0B;AAC1B;AACA;AACA;AACA,0DAAyD;AACzD,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,kDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,kBAAkB,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC1eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;AC1FD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D,YAAY;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,0DAAyD,qBAAqB;AAC9E,0DAAyD;AACzD;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,sCAAsC;AACjE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;;AAEf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA,gBAAe;AACf,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sDAAqD;AACrD,UAAS;AACT,QAAO;AACP;AACA;AACA,0BAAyB,8BAA8B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACz+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,yCAAyC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,gCAAgC;AAC3D;AACA;AACA,gCAA+B,wBAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,iCAAgC;AAChC,uCAAsC,EAAE;AACxC,0CAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,gEAAgE;AAC/E,gBAAe;AACf;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,+BAA8B;AAC9B,qCAAoC,EAAE;AACtC,wCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,gEAAgE;AAC7E,cAAa;AACb;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;;;;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,EAAE;;AAEhC;AACA,oDAAmD,EAAE;AACrD,+CAA8C,EAAE;;AAEhD;AACA;AACA,sCAAqC,EAAE;;AAEvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"quagga.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(factory.toString()).default;\n\telse if(typeof exports === 'object')\n\t\texports[\"Quagga\"] = factory(factory.toString()).default;\n\telse\n\t\troot[\"Quagga\"] = factory(factory.toString()).default;\n})(this, function(__factorySource__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/myModuleDefinition\n **/"," \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].e;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\te: {},\n \t\t\ti: moduleId,\n \t\t\tl: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.e, module, module.e, __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.e;\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// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 194);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 00f1b2bae2fa872bfa92\n **/","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArray.js\n ** module id = 0\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar logDisabled_ = true;\n\n// Utility methods.\nvar utils = {\n disableLog: function(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n logDisabled_ = bool;\n return (bool) ? 'adapter.js logging disabled' :\n 'adapter.js logging enabled';\n },\n\n log: function() {\n if (typeof window === 'object') {\n if (logDisabled_) {\n return;\n }\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\n console.log.apply(console, arguments);\n }\n }\n },\n\n /**\n * Extract browser version out of the provided user agent string.\n *\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\n extractVersion: function(uastring, expr, pos) {\n var match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n },\n\n /**\n * Browser detector.\n *\n * @return {object} result containing browser, version and minVersion\n * properties.\n */\n detectBrowser: function() {\n // Returned result object.\n var result = {};\n result.browser = null;\n result.version = null;\n result.minVersion = null;\n\n // Fail early if it's not a browser\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a browser.';\n return result;\n }\n\n // Firefox.\n if (navigator.mozGetUserMedia) {\n result.browser = 'firefox';\n result.version = this.extractVersion(navigator.userAgent,\n /Firefox\\/([0-9]+)\\./, 1);\n result.minVersion = 31;\n\n // all webkit-based browsers\n } else if (navigator.webkitGetUserMedia) {\n // Chrome, Chromium, Webview, Opera, all use the chrome shim for now\n if (window.webkitRTCPeerConnection) {\n result.browser = 'chrome';\n result.version = this.extractVersion(navigator.userAgent,\n /Chrom(e|ium)\\/([0-9]+)\\./, 2);\n result.minVersion = 38;\n\n // Safari or unknown webkit-based\n // for the time being Safari has support for MediaStreams but not webRTC\n } else {\n // Safari UA substrings of interest for reference:\n // - webkit version: AppleWebKit/602.1.25 (also used in Op,Cr)\n // - safari UI version: Version/9.0.3 (unique to Safari)\n // - safari UI webkit version: Safari/601.4.4 (also used in Op,Cr)\n //\n // if the webkit version and safari UI webkit versions are equals,\n // ... this is a stable version.\n //\n // only the internal webkit version is important today to know if\n // media streams are supported\n //\n if (navigator.userAgent.match(/Version\\/(\\d+).(\\d+)/)) {\n result.browser = 'safari';\n result.version = this.extractVersion(navigator.userAgent,\n /AppleWebKit\\/([0-9]+)\\./, 1);\n result.minVersion = 602;\n\n // unknown webkit-based browser\n } else {\n result.browser = 'Unsupported webkit-based browser ' +\n 'with GUM support but no WebRTC support.';\n return result;\n }\n }\n\n // Edge.\n } else if (navigator.mediaDevices &&\n navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)) {\n result.browser = 'edge';\n result.version = this.extractVersion(navigator.userAgent,\n /Edge\\/(\\d+).(\\d+)$/, 2);\n result.minVersion = 10547;\n\n // Default fallthrough: not supported.\n } else {\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n // Warn if version is less than minVersion.\n if (result.version < result.minVersion) {\n utils.log('Browser: ' + result.browser + ' Version: ' + result.version +\n ' < minimum supported version: ' + result.minVersion +\n '\\n some things might not work!');\n }\n\n return result;\n }\n};\n\n// Export.\nmodule.exports = {\n log: utils.log,\n disableLog: utils.disableLog,\n browserDetails: utils.detectBrowser(),\n extractVersion: utils.extractVersion\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/utils.js\n ** module id = 1\n ** module chunks = 0\n **/","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isObject.js\n ** module id = 2\n ** module chunks = 0\n **/","var checkGlobal = require('./_checkGlobal');\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\nmodule.exports = root;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_root.js\n ** module id = 3\n ** module chunks = 0\n **/","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isObjectLike.js\n ** module id = 4\n ** module chunks = 0\n **/","import BarcodeReader from './barcode_reader';\r\nimport {merge} from 'lodash';\r\n\r\nfunction EANReader(opts, supplements) {\r\n opts = merge(getDefaulConfig(), opts);\r\n BarcodeReader.call(this, opts, supplements);\r\n}\r\n\r\nfunction getDefaulConfig() {\r\n var config = {};\r\n\r\n Object.keys(EANReader.CONFIG_KEYS).forEach(function(key) {\r\n config[key] = EANReader.CONFIG_KEYS[key].default;\r\n });\r\n return config;\r\n}\r\n\r\nvar properties = {\r\n CODE_L_START: {value: 0},\r\n CODE_G_START: {value: 10},\r\n START_PATTERN: {value: [1, 1, 1]},\r\n STOP_PATTERN: {value: [1, 1, 1]},\r\n MIDDLE_PATTERN: {value: [1, 1, 1, 1, 1]},\r\n EXTENSION_START_PATTERN: {value: [1, 1, 2]},\r\n CODE_PATTERN: {value: [\r\n [3, 2, 1, 1],\r\n [2, 2, 2, 1],\r\n [2, 1, 2, 2],\r\n [1, 4, 1, 1],\r\n [1, 1, 3, 2],\r\n [1, 2, 3, 1],\r\n [1, 1, 1, 4],\r\n [1, 3, 1, 2],\r\n [1, 2, 1, 3],\r\n [3, 1, 1, 2],\r\n [1, 1, 2, 3],\r\n [1, 2, 2, 2],\r\n [2, 2, 1, 2],\r\n [1, 1, 4, 1],\r\n [2, 3, 1, 1],\r\n [1, 3, 2, 1],\r\n [4, 1, 1, 1],\r\n [2, 1, 3, 1],\r\n [3, 1, 2, 1],\r\n [2, 1, 1, 3]\r\n ]},\r\n CODE_FREQUENCY: {value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26]},\r\n SINGLE_CODE_ERROR: {value: 0.70},\r\n AVG_CODE_ERROR: {value: 0.48},\r\n FORMAT: {value: \"ean_13\", writeable: false}\r\n};\r\n\r\nEANReader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nEANReader.prototype.constructor = EANReader;\r\n\r\nEANReader.prototype._decodeCode = function(start, coderange) {\r\n var counter = [0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = start,\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: start,\r\n end: start\r\n },\r\n code,\r\n error;\r\n\r\n if (!coderange) {\r\n coderange = self.CODE_PATTERN.length;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n for (code = 0; code < coderange; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n bestMatch.end = i;\r\n if (bestMatch.error > self.AVG_CODE_ERROR) {\r\n return null;\r\n }\r\n return bestMatch;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findPattern = function(pattern, offset, isWhite, tryHarder, epsilon) {\r\n var counter = [],\r\n self = this,\r\n i,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n },\r\n error,\r\n j,\r\n sum;\r\n\r\n if (!offset) {\r\n offset = self._nextSet(self._row);\r\n }\r\n\r\n if (isWhite === undefined) {\r\n isWhite = false;\r\n }\r\n\r\n if (tryHarder === undefined) {\r\n tryHarder = true;\r\n }\r\n\r\n if ( epsilon === undefined) {\r\n epsilon = self.AVG_CODE_ERROR;\r\n }\r\n\r\n for ( i = 0; i < pattern.length; i++) {\r\n counter[i] = 0;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n error = self._matchPattern(counter, pattern);\r\n\r\n if (error < epsilon) {\r\n bestMatch.error = error;\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n return bestMatch;\r\n }\r\n if (tryHarder) {\r\n for ( j = 0; j < counter.length - 2; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[counter.length - 2] = 0;\r\n counter[counter.length - 1] = 0;\r\n counterPos--;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findStart = function() {\r\n var self = this,\r\n leadingWhitespaceStart,\r\n offset = self._nextSet(self._row),\r\n startInfo;\r\n\r\n while (!startInfo) {\r\n startInfo = self._findPattern(self.START_PATTERN, offset);\r\n if (!startInfo) {\r\n return null;\r\n }\r\n leadingWhitespaceStart = startInfo.start - (startInfo.end - startInfo.start);\r\n if (leadingWhitespaceStart >= 0) {\r\n if (self._matchRange(leadingWhitespaceStart, startInfo.start, 0)) {\r\n return startInfo;\r\n }\r\n }\r\n offset = startInfo.end;\r\n startInfo = null;\r\n }\r\n};\r\n\r\nEANReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + (endInfo.end - endInfo.start);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findEnd = function(offset, isWhite) {\r\n var self = this,\r\n endInfo = self._findPattern(self.STOP_PATTERN, offset, isWhite, false);\r\n\r\n return endInfo !== null ? self._verifyTrailingWhitespace(endInfo) : null;\r\n};\r\n\r\nEANReader.prototype._calculateFirstDigit = function(codeFrequency) {\r\n var i,\r\n self = this;\r\n\r\n for ( i = 0; i < self.CODE_FREQUENCY.length; i++) {\r\n if (codeFrequency === self.CODE_FREQUENCY[i]) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n codeFrequency = 0x0,\r\n firstDigit;\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end);\r\n if (!code) {\r\n return null;\r\n }\r\n if (code.code >= self.CODE_G_START) {\r\n code.code = code.code - self.CODE_G_START;\r\n codeFrequency |= 1 << (5 - i);\r\n } else {\r\n codeFrequency |= 0 << (5 - i);\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n\r\n firstDigit = self._calculateFirstDigit(codeFrequency);\r\n if (firstDigit === null) {\r\n return null;\r\n }\r\n result.unshift(firstDigit);\r\n\r\n code = self._findPattern(self.MIDDLE_PATTERN, code.end, true, false);\r\n if (code === null) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code);\r\n }\r\n\r\n return code;\r\n};\r\n\r\nEANReader.prototype._decode = function() {\r\n var startInfo,\r\n self = this,\r\n code,\r\n result = [],\r\n decodedCodes = [],\r\n resultInfo = {};\r\n\r\n startInfo = self._findStart();\r\n if (!startInfo) {\r\n return null;\r\n }\r\n code = {\r\n code: startInfo.code,\r\n start: startInfo.start,\r\n end: startInfo.end\r\n };\r\n decodedCodes.push(code);\r\n code = self._decodePayload(code, result, decodedCodes);\r\n if (!code) {\r\n return null;\r\n }\r\n code = self._findEnd(code.end, false);\r\n if (!code){\r\n return null;\r\n }\r\n\r\n decodedCodes.push(code);\r\n\r\n // Checksum\r\n if (!self._checksum(result)) {\r\n return null;\r\n }\r\n\r\n if (this.supplements.length > 0) {\r\n let ext = this._decodeExtensions(code.end);\r\n if (!ext) {\r\n return null;\r\n }\r\n let lastCode = ext.decodedCodes[ext.decodedCodes.length-1],\r\n endInfo = {\r\n start: lastCode.start + (((lastCode.end - lastCode.start) / 2) | 0),\r\n end: lastCode.end\r\n };\r\n if(!self._verifyTrailingWhitespace(endInfo)) {\r\n return null;\r\n }\r\n resultInfo = {\r\n supplement: ext,\r\n code: result.join(\"\") + ext.code\r\n }\r\n }\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: code.end,\r\n codeset: \"\",\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes,\r\n ...resultInfo\r\n };\r\n};\r\n\r\nEANReader.prototype._decodeExtensions = function(offset) {\r\n var i,\r\n start = this._nextSet(this._row, offset),\r\n startInfo = this._findPattern(this.EXTENSION_START_PATTERN, start, false, false),\r\n result;\r\n\r\n if (startInfo === null) {\r\n return null;\r\n }\r\n\r\n for (i = 0; i < this.supplements.length; i++) {\r\n result = this.supplements[i].decode(this._row, startInfo.end);\r\n if (result !== null) {\r\n return {\r\n code: result.code,\r\n start,\r\n startInfo,\r\n end: result.end,\r\n codeset: \"\",\r\n decodedCodes: result.decodedCodes\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._checksum = function(result) {\r\n var sum = 0, i;\r\n\r\n for ( i = result.length - 2; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n for ( i = result.length - 1; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n return sum % 10 === 0;\r\n};\r\n\r\nEANReader.CONFIG_KEYS = {\r\n supplements: {\r\n 'type': 'arrayOf(string)',\r\n 'default': [],\r\n 'description': 'Allowed extensions to be decoded (2 and/or 5)'\r\n }\r\n};\r\n\r\nexport default (EANReader);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_reader.js\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Map.js\n ** module id = 6\n ** module chunks = 0\n **/","export default {\r\n drawRect: function(pos, size, ctx, style){\r\n ctx.strokeStyle = style.color;\r\n ctx.fillStyle = style.color;\r\n ctx.lineWidth = 1;\r\n ctx.beginPath();\r\n ctx.strokeRect(pos.x, pos.y, size.x, size.y);\r\n },\r\n drawPath: function(path, def, ctx, style) {\r\n ctx.strokeStyle = style.color;\r\n ctx.fillStyle = style.color;\r\n ctx.lineWidth = style.lineWidth;\r\n ctx.beginPath();\r\n ctx.moveTo(path[0][def.x], path[0][def.y]);\r\n for (var j = 1; j < path.length; j++) {\r\n ctx.lineTo(path[j][def.x], path[j][def.y]);\r\n }\r\n ctx.closePath();\r\n ctx.stroke();\r\n },\r\n drawImage: function(imageData, size, ctx) {\r\n var canvasData = ctx.getImageData(0, 0, size.x, size.y),\r\n data = canvasData.data,\r\n imageDataPos = imageData.length,\r\n canvasDataPos = data.length,\r\n value;\r\n\r\n if (canvasDataPos / imageDataPos !== 4) {\r\n return false;\r\n }\r\n while (imageDataPos--){\r\n value = imageData[imageDataPos];\r\n data[--canvasDataPos] = 255;\r\n data[--canvasDataPos] = value;\r\n data[--canvasDataPos] = value;\r\n data[--canvasDataPos] = value;\r\n }\r\n ctx.putImageData(canvasData, 0, 0);\r\n return true;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/image_debug.js\n **/","function BarcodeReader(config, supplements) {\r\n this._row = [];\r\n this.config = config || {};\r\n this.supplements = supplements;\r\n return this;\r\n}\r\n\r\nBarcodeReader.prototype._nextUnset = function(line, start) {\r\n var i;\r\n\r\n if (start === undefined) {\r\n start = 0;\r\n }\r\n for (i = start; i < line.length; i++) {\r\n if (!line[i]) {\r\n return i;\r\n }\r\n }\r\n return line.length;\r\n};\r\n\r\nBarcodeReader.prototype._matchPattern = function(counter, code, maxSingleError) {\r\n var i,\r\n error = 0,\r\n singleError = 0,\r\n sum = 0,\r\n modulo = 0,\r\n barWidth,\r\n count,\r\n scaled;\r\n\r\n maxSingleError = maxSingleError || this.SINGLE_CODE_ERROR || 1;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n sum += counter[i];\r\n modulo += code[i];\r\n }\r\n if (sum < modulo) {\r\n return Number.MAX_VALUE;\r\n }\r\n barWidth = sum / modulo;\r\n maxSingleError *= barWidth;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n count = counter[i];\r\n scaled = code[i] * barWidth;\r\n singleError = Math.abs(count - scaled) / scaled;\r\n if (singleError > maxSingleError) {\r\n return Number.MAX_VALUE;\r\n }\r\n error += singleError;\r\n }\r\n return error / modulo;\r\n};\r\n\r\nBarcodeReader.prototype._nextSet = function(line, offset) {\r\n var i;\r\n\r\n offset = offset || 0;\r\n for (i = offset; i < line.length; i++) {\r\n if (line[i]) {\r\n return i;\r\n }\r\n }\r\n return line.length;\r\n};\r\n\r\nBarcodeReader.prototype._correctBars = function(counter, correction, indices) {\r\n var length = indices.length,\r\n tmp = 0;\r\n while(length--) {\r\n tmp = counter[indices[length]] * (1 - ((1 - correction) / 2));\r\n if (tmp > 1) {\r\n counter[indices[length]] = tmp;\r\n }\r\n }\r\n}\r\n\r\nBarcodeReader.prototype._matchTrace = function(cmpCounter, epsilon) {\r\n var counter = [],\r\n i,\r\n self = this,\r\n offset = self._nextSet(self._row),\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0\r\n },\r\n error;\r\n\r\n if (cmpCounter) {\r\n for ( i = 0; i < cmpCounter.length; i++) {\r\n counter.push(0);\r\n }\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n error = self._matchPattern(counter, cmpCounter);\r\n\r\n if (error < epsilon) {\r\n bestMatch.start = i - offset;\r\n bestMatch.end = i;\r\n bestMatch.counter = counter;\r\n return bestMatch;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n } else {\r\n counter.push(0);\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n counterPos++;\r\n counter.push(0);\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n }\r\n\r\n // if cmpCounter was not given\r\n bestMatch.start = offset;\r\n bestMatch.end = self._row.length - 1;\r\n bestMatch.counter = counter;\r\n return bestMatch;\r\n};\r\n\r\nBarcodeReader.prototype.decodePattern = function(pattern) {\r\n var self = this,\r\n result;\r\n\r\n self._row = pattern;\r\n result = self._decode();\r\n if (result === null) {\r\n self._row.reverse();\r\n result = self._decode();\r\n if (result) {\r\n result.direction = BarcodeReader.DIRECTION.REVERSE;\r\n result.start = self._row.length - result.start;\r\n result.end = self._row.length - result.end;\r\n }\r\n } else {\r\n result.direction = BarcodeReader.DIRECTION.FORWARD;\r\n }\r\n if (result) {\r\n result.format = self.FORMAT;\r\n }\r\n return result;\r\n};\r\n\r\nBarcodeReader.prototype._matchRange = function(start, end, value) {\r\n var i;\r\n\r\n start = start < 0 ? 0 : start;\r\n for (i = start; i < end; i++) {\r\n if (this._row[i] !== value) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nBarcodeReader.prototype._fillCounters = function(offset, end, isWhite) {\r\n var self = this,\r\n counterPos = 0,\r\n i,\r\n counters = [];\r\n\r\n isWhite = (typeof isWhite !== 'undefined') ? isWhite : true;\r\n offset = (typeof offset !== 'undefined') ? offset : self._nextUnset(self._row);\r\n end = end || self._row.length;\r\n\r\n counters[counterPos] = 0;\r\n for (i = offset; i < end; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counters[counterPos]++;\r\n } else {\r\n counterPos++;\r\n counters[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return counters;\r\n};\r\n\r\nObject.defineProperty(BarcodeReader.prototype, \"FORMAT\", {\r\n value: 'unknown',\r\n writeable: false\r\n});\r\n\r\nBarcodeReader.DIRECTION = {\r\n FORWARD: 1,\r\n REVERSE: -1\r\n};\r\n\r\nBarcodeReader.Exception = {\r\n StartNotFoundException: \"Start-Info was not found!\",\r\n CodeNotFoundException: \"Code could not be found!\",\r\n PatternNotFoundException: \"Pattern could not be found!\"\r\n};\r\n\r\nBarcodeReader.CONFIG_KEYS = {};\r\n\r\nexport default BarcodeReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/barcode_reader.js\n **/","module.exports = clone\n\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {vec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\nfunction clone(a) {\n var out = new Float32Array(2)\n out[0] = a[0]\n out[1] = a[1]\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/clone.js\n ** module id = 9\n ** module chunks = 0\n **/","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\nmodule.exports = isArguments;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArguments.js\n ** module id = 10\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isFunction.js\n ** module id = 11\n ** module chunks = 0\n **/","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable properties of source objects into the destination\n * object. Source properties that resolve to `undefined` are skipped if a\n * destination value exists. Array and plain object properties are merged\n * recursively.Other objects and value types are overridden by assignment.\n * Source objects are applied from left to right. Subsequent sources\n * overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/merge.js\n ** module id = 12\n ** module chunks = 0\n **/","export default {\r\n init: function(arr, val) {\r\n var l = arr.length;\r\n while (l--) {\r\n arr[l] = val;\r\n }\r\n },\r\n\r\n /**\r\n * Shuffles the content of an array\r\n * @return {Array} the array itself shuffled\r\n */\r\n shuffle: function(arr) {\r\n var i = arr.length - 1, j, x;\r\n for (i; i >= 0; i--) {\r\n j = Math.floor(Math.random() * i);\r\n x = arr[i];\r\n arr[i] = arr[j];\r\n arr[j] = x;\r\n }\r\n return arr;\r\n },\r\n\r\n toPointList: function(arr) {\r\n var i, j, row = [], rows = [];\r\n for ( i = 0; i < arr.length; i++) {\r\n row = [];\r\n for ( j = 0; j < arr[i].length; j++) {\r\n row[j] = arr[i][j];\r\n }\r\n rows[i] = \"[\" + row.join(\",\") + \"]\";\r\n }\r\n return \"[\" + rows.join(\",\\r\\n\") + \"]\";\r\n },\r\n\r\n /**\r\n * returns the elements which's score is bigger than the threshold\r\n * @return {Array} the reduced array\r\n */\r\n threshold: function(arr, threshold, scoreFunc) {\r\n var i, queue = [];\r\n for ( i = 0; i < arr.length; i++) {\r\n if (scoreFunc.apply(arr, [arr[i]]) >= threshold) {\r\n queue.push(arr[i]);\r\n }\r\n }\r\n return queue;\r\n },\r\n\r\n maxIndex: function(arr) {\r\n var i, max = 0;\r\n for ( i = 0; i < arr.length; i++) {\r\n if (arr[i] > arr[max]) {\r\n max = i;\r\n }\r\n }\r\n return max;\r\n },\r\n\r\n max: function(arr) {\r\n var i, max = 0;\r\n for ( i = 0; i < arr.length; i++) {\r\n if (arr[i] > max) {\r\n max = arr[i];\r\n }\r\n }\r\n return max;\r\n },\r\n\r\n sum: function(arr) {\r\n var length = arr.length,\r\n sum = 0;\r\n\r\n while (length--) {\r\n sum += arr[length];\r\n }\r\n return sum;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/array_helper.js\n **/","var stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction Stack(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = values[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add functions to the `Stack` cache.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Stack.js\n ** module id = 14\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/**\n * Gets the index at which the first occurrence of `key` is found in `array`\n * of key-value pairs.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocIndexOf.js\n ** module id = 15\n ** module chunks = 0\n **/","var isNative = require('./isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getNative.js\n ** module id = 16\n ** module chunks = 0\n **/","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\nmodule.exports = isHostObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isHostObject.js\n ** module id = 17\n ** module chunks = 0\n **/","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isIndex.js\n ** module id = 18\n ** module chunks = 0\n **/","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return type == 'number' || type == 'boolean' ||\n (type == 'string' && value != '__proto__') || value == null;\n}\n\nmodule.exports = isKeyable;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isKeyable.js\n ** module id = 19\n ** module chunks = 0\n **/","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_nativeCreate.js\n ** module id = 20\n ** module chunks = 0\n **/","/**\n * Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/eq.js\n ** module id = 21\n ** module chunks = 0\n **/","var getLength = require('./_getLength'),\n isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArrayLike.js\n ** module id = 22\n ** module chunks = 0\n **/","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isLength.js\n ** module id = 23\n ** module chunks = 0\n **/","var baseHas = require('./_baseHas'),\n baseKeys = require('./_baseKeys'),\n indexKeys = require('./_indexKeys'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n var isProto = isPrototype(object);\n if (!(isProto || isArrayLike(object))) {\n return baseKeys(object);\n }\n var indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n for (var key in object) {\n if (baseHas(object, key) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(isProto && key == 'constructor')) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/keys.js\n ** module id = 24\n ** module chunks = 0\n **/","import Cluster2 from './cluster';\r\nimport ArrayHelper from './array_helper';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone')\r\n};\r\nconst vec3 = {\r\n clone: require('gl-vec3/clone')\r\n};\r\n\r\n/**\r\n * @param x x-coordinate\r\n * @param y y-coordinate\r\n * @return ImageReference {x,y} Coordinate\r\n */\r\nexport function imageRef(x, y) {\r\n var that = {\r\n x: x,\r\n y: y,\r\n toVec2: function() {\r\n return vec2.clone([this.x, this.y]);\r\n },\r\n toVec3: function() {\r\n return vec3.clone([this.x, this.y, 1]);\r\n },\r\n round: function() {\r\n this.x = this.x > 0.0 ? Math.floor(this.x + 0.5) : Math.floor(this.x - 0.5);\r\n this.y = this.y > 0.0 ? Math.floor(this.y + 0.5) : Math.floor(this.y - 0.5);\r\n return this;\r\n }\r\n };\r\n return that;\r\n};\r\n\r\n/**\r\n * Computes an integral image of a given grayscale image.\r\n * @param imageDataContainer {ImageDataContainer} the image to be integrated\r\n */\r\nexport function computeIntegralImage2(imageWrapper, integralWrapper) {\r\n var imageData = imageWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0, posA = 0, posB = 0, posC = 0, posD = 0, x, y;\r\n\r\n // sum up first column\r\n posB = width;\r\n sum = 0;\r\n for ( y = 1; y < height; y++) {\r\n sum += imageData[posA];\r\n integralImageData[posB] += sum;\r\n posA += width;\r\n posB += width;\r\n }\r\n\r\n posA = 0;\r\n posB = 1;\r\n sum = 0;\r\n for ( x = 1; x < width; x++) {\r\n sum += imageData[posA];\r\n integralImageData[posB] += sum;\r\n posA++;\r\n posB++;\r\n }\r\n\r\n for ( y = 1; y < height; y++) {\r\n posA = y * width + 1;\r\n posB = (y - 1) * width + 1;\r\n posC = y * width;\r\n posD = (y - 1) * width;\r\n for ( x = 1; x < width; x++) {\r\n integralImageData[posA] +=\r\n imageData[posA] + integralImageData[posB] + integralImageData[posC] - integralImageData[posD];\r\n posA++;\r\n posB++;\r\n posC++;\r\n posD++;\r\n }\r\n }\r\n};\r\n\r\nexport function computeIntegralImage(imageWrapper, integralWrapper) {\r\n var imageData = imageWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0;\r\n\r\n // sum up first row\r\n for (var i = 0; i < width; i++) {\r\n sum += imageData[i];\r\n integralImageData[i] = sum;\r\n }\r\n\r\n for (var v = 1; v < height; v++) {\r\n sum = 0;\r\n for (var u = 0; u < width; u++) {\r\n sum += imageData[v * width + u];\r\n integralImageData[((v) * width) + u] = sum + integralImageData[(v - 1) * width + u];\r\n }\r\n }\r\n};\r\n\r\nexport function thresholdImage(imageWrapper, threshold, targetWrapper) {\r\n if (!targetWrapper) {\r\n targetWrapper = imageWrapper;\r\n }\r\n var imageData = imageWrapper.data, length = imageData.length, targetData = targetWrapper.data;\r\n\r\n while (length--) {\r\n targetData[length] = imageData[length] < threshold ? 1 : 0;\r\n }\r\n};\r\n\r\nexport function computeHistogram(imageWrapper, bitsPerPixel) {\r\n if (!bitsPerPixel) {\r\n bitsPerPixel = 8;\r\n }\r\n var imageData = imageWrapper.data,\r\n length = imageData.length,\r\n bitShift = 8 - bitsPerPixel,\r\n bucketCnt = 1 << bitsPerPixel,\r\n hist = new Int32Array(bucketCnt);\r\n\r\n while (length--) {\r\n hist[imageData[length] >> bitShift]++;\r\n }\r\n return hist;\r\n};\r\n\r\nexport function sharpenLine(line) {\r\n var i,\r\n length = line.length,\r\n left = line[0],\r\n center = line[1],\r\n right;\r\n\r\n for (i = 1; i < length - 1; i++) {\r\n right = line[i + 1];\r\n // -1 4 -1 kernel\r\n line[i - 1] = (((center * 2) - left - right)) & 255;\r\n left = center;\r\n center = right;\r\n }\r\n return line;\r\n};\r\n\r\nexport function determineOtsuThreshold(imageWrapper, bitsPerPixel) {\r\n if (!bitsPerPixel) {\r\n bitsPerPixel = 8;\r\n }\r\n var hist,\r\n threshold,\r\n bitShift = 8 - bitsPerPixel;\r\n\r\n function px(init, end) {\r\n var sum = 0, i;\r\n for ( i = init; i <= end; i++) {\r\n sum += hist[i];\r\n }\r\n return sum;\r\n }\r\n\r\n function mx(init, end) {\r\n var i, sum = 0;\r\n\r\n for ( i = init; i <= end; i++) {\r\n sum += i * hist[i];\r\n }\r\n\r\n return sum;\r\n }\r\n\r\n function determineThreshold() {\r\n var vet = [0], p1, p2, p12, k, m1, m2, m12,\r\n max = (1 << bitsPerPixel) - 1;\r\n\r\n hist = computeHistogram(imageWrapper, bitsPerPixel);\r\n for ( k = 1; k < max; k++) {\r\n p1 = px(0, k);\r\n p2 = px(k + 1, max);\r\n p12 = p1 * p2;\r\n if (p12 === 0) {\r\n p12 = 1;\r\n }\r\n m1 = mx(0, k) * p2;\r\n m2 = mx(k + 1, max) * p1;\r\n m12 = m1 - m2;\r\n vet[k] = m12 * m12 / p12;\r\n }\r\n return ArrayHelper.maxIndex(vet);\r\n }\r\n\r\n threshold = determineThreshold();\r\n return threshold << bitShift;\r\n};\r\n\r\nexport function otsuThreshold(imageWrapper, targetWrapper) {\r\n var threshold = determineOtsuThreshold(imageWrapper);\r\n\r\n thresholdImage(imageWrapper, threshold, targetWrapper);\r\n return threshold;\r\n};\r\n\r\n// local thresholding\r\nexport function computeBinaryImage(imageWrapper, integralWrapper, targetWrapper) {\r\n computeIntegralImage(imageWrapper, integralWrapper);\r\n\r\n if (!targetWrapper) {\r\n targetWrapper = imageWrapper;\r\n }\r\n var imageData = imageWrapper.data;\r\n var targetData = targetWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0, v, u, kernel = 3, A, B, C, D, avg, size = (kernel * 2 + 1) * (kernel * 2 + 1);\r\n\r\n // clear out top & bottom-border\r\n for ( v = 0; v <= kernel; v++) {\r\n for ( u = 0; u < width; u++) {\r\n targetData[((v) * width) + u] = 0;\r\n targetData[(((height - 1) - v) * width) + u] = 0;\r\n }\r\n }\r\n\r\n // clear out left & right border\r\n for ( v = kernel; v < height - kernel; v++) {\r\n for ( u = 0; u <= kernel; u++) {\r\n targetData[((v) * width) + u] = 0;\r\n targetData[((v) * width) + (width - 1 - u)] = 0;\r\n }\r\n }\r\n\r\n for ( v = kernel + 1; v < height - kernel - 1; v++) {\r\n for ( u = kernel + 1; u < width - kernel; u++) {\r\n A = integralImageData[(v - kernel - 1) * width + (u - kernel - 1)];\r\n B = integralImageData[(v - kernel - 1) * width + (u + kernel)];\r\n C = integralImageData[(v + kernel) * width + (u - kernel - 1)];\r\n D = integralImageData[(v + kernel) * width + (u + kernel)];\r\n sum = D - C - B + A;\r\n avg = sum / (size);\r\n targetData[v * width + u] = imageData[v * width + u] > (avg + 5) ? 0 : 1;\r\n }\r\n }\r\n};\r\n\r\nexport function cluster(points, threshold, property) {\r\n var i, k, cluster, point, clusters = [];\r\n\r\n if (!property) {\r\n property = \"rad\";\r\n }\r\n\r\n function addToCluster(newPoint) {\r\n var found = false;\r\n for ( k = 0; k < clusters.length; k++) {\r\n cluster = clusters[k];\r\n if (cluster.fits(newPoint)) {\r\n cluster.add(newPoint);\r\n found = true;\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n // iterate over each cloud\r\n for ( i = 0; i < points.length; i++) {\r\n point = Cluster2.createPoint(points[i], i, property);\r\n if (!addToCluster(point)) {\r\n clusters.push(Cluster2.create(point, threshold));\r\n }\r\n }\r\n return clusters;\r\n};\r\n\r\nexport const Tracer = {\r\n trace: function(points, vec) {\r\n var iteration, maxIterations = 10, top = [], result = [], centerPos = 0, currentPos = 0;\r\n\r\n function trace(idx, forward) {\r\n var from, to, toIdx, predictedPos, thresholdX = 1, thresholdY = Math.abs(vec[1] / 10), found = false;\r\n\r\n function match(pos, predicted) {\r\n if (pos.x > (predicted.x - thresholdX)\r\n && pos.x < (predicted.x + thresholdX)\r\n && pos.y > (predicted.y - thresholdY)\r\n && pos.y < (predicted.y + thresholdY)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // check if the next index is within the vec specifications\r\n // if not, check as long as the threshold is met\r\n\r\n from = points[idx];\r\n if (forward) {\r\n predictedPos = {\r\n x: from.x + vec[0],\r\n y: from.y + vec[1]\r\n };\r\n } else {\r\n predictedPos = {\r\n x: from.x - vec[0],\r\n y: from.y - vec[1]\r\n };\r\n }\r\n\r\n toIdx = forward ? idx + 1 : idx - 1;\r\n to = points[toIdx];\r\n while (to && ( found = match(to, predictedPos)) !== true && (Math.abs(to.y - from.y) < vec[1])) {\r\n toIdx = forward ? toIdx + 1 : toIdx - 1;\r\n to = points[toIdx];\r\n }\r\n\r\n return found ? toIdx : null;\r\n }\r\n\r\n for ( iteration = 0; iteration < maxIterations; iteration++) {\r\n // randomly select point to start with\r\n centerPos = Math.floor(Math.random() * points.length);\r\n\r\n // trace forward\r\n top = [];\r\n currentPos = centerPos;\r\n top.push(points[currentPos]);\r\n while (( currentPos = trace(currentPos, true)) !== null) {\r\n top.push(points[currentPos]);\r\n }\r\n if (centerPos > 0) {\r\n currentPos = centerPos;\r\n while (( currentPos = trace(currentPos, false)) !== null) {\r\n top.push(points[currentPos]);\r\n }\r\n }\r\n\r\n if (top.length > result.length) {\r\n result = top;\r\n }\r\n }\r\n return result;\r\n }\r\n};\r\n\r\nexport const DILATE = 1;\r\nexport const ERODE = 2;\r\n\r\nexport function dilate(inImageWrapper, outImageWrapper) {\r\n var v,\r\n u,\r\n inImageData = inImageWrapper.data,\r\n outImageData = outImageWrapper.data,\r\n height = inImageWrapper.size.y,\r\n width = inImageWrapper.size.x,\r\n sum,\r\n yStart1,\r\n yStart2,\r\n xStart1,\r\n xStart2;\r\n\r\n for ( v = 1; v < height - 1; v++) {\r\n for ( u = 1; u < width - 1; u++) {\r\n yStart1 = v - 1;\r\n yStart2 = v + 1;\r\n xStart1 = u - 1;\r\n xStart2 = u + 1;\r\n sum = inImageData[yStart1 * width + xStart1] + inImageData[yStart1 * width + xStart2] +\r\n inImageData[v * width + u] +\r\n inImageData[yStart2 * width + xStart1] + inImageData[yStart2 * width + xStart2];\r\n outImageData[v * width + u] = sum > 0 ? 1 : 0;\r\n }\r\n }\r\n};\r\n\r\nexport function erode(inImageWrapper, outImageWrapper) {\r\n var v,\r\n u,\r\n inImageData = inImageWrapper.data,\r\n outImageData = outImageWrapper.data,\r\n height = inImageWrapper.size.y,\r\n width = inImageWrapper.size.x,\r\n sum,\r\n yStart1,\r\n yStart2,\r\n xStart1,\r\n xStart2;\r\n\r\n for ( v = 1; v < height - 1; v++) {\r\n for ( u = 1; u < width - 1; u++) {\r\n yStart1 = v - 1;\r\n yStart2 = v + 1;\r\n xStart1 = u - 1;\r\n xStart2 = u + 1;\r\n sum = inImageData[yStart1 * width + xStart1] + inImageData[yStart1 * width + xStart2] +\r\n inImageData[v * width + u] +\r\n inImageData[yStart2 * width + xStart1] + inImageData[yStart2 * width + xStart2];\r\n outImageData[v * width + u] = sum === 5 ? 1 : 0;\r\n }\r\n }\r\n};\r\n\r\nexport function subtract(aImageWrapper, bImageWrapper, resultImageWrapper) {\r\n if (!resultImageWrapper) {\r\n resultImageWrapper = aImageWrapper;\r\n }\r\n var length = aImageWrapper.data.length,\r\n aImageData = aImageWrapper.data,\r\n bImageData = bImageWrapper.data,\r\n cImageData = resultImageWrapper.data;\r\n\r\n while (length--) {\r\n cImageData[length] = aImageData[length] - bImageData[length];\r\n }\r\n};\r\n\r\nexport function bitwiseOr(aImageWrapper, bImageWrapper, resultImageWrapper) {\r\n if (!resultImageWrapper) {\r\n resultImageWrapper = aImageWrapper;\r\n }\r\n var length = aImageWrapper.data.length,\r\n aImageData = aImageWrapper.data,\r\n bImageData = bImageWrapper.data,\r\n cImageData = resultImageWrapper.data;\r\n\r\n while (length--) {\r\n cImageData[length] = aImageData[length] || bImageData[length];\r\n }\r\n};\r\n\r\nexport function countNonZero(imageWrapper) {\r\n var length = imageWrapper.data.length, data = imageWrapper.data, sum = 0;\r\n\r\n while (length--) {\r\n sum += data[length];\r\n }\r\n return sum;\r\n};\r\n\r\nexport function topGeneric(list, top, scoreFunc) {\r\n var i, minIdx = 0, min = 0, queue = [], score, hit, pos;\r\n\r\n for ( i = 0; i < top; i++) {\r\n queue[i] = {\r\n score: 0,\r\n item: null\r\n };\r\n }\r\n\r\n for ( i = 0; i < list.length; i++) {\r\n score = scoreFunc.apply(this, [list[i]]);\r\n if (score > min) {\r\n hit = queue[minIdx];\r\n hit.score = score;\r\n hit.item = list[i];\r\n min = Number.MAX_VALUE;\r\n for ( pos = 0; pos < top; pos++) {\r\n if (queue[pos].score < min) {\r\n min = queue[pos].score;\r\n minIdx = pos;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return queue;\r\n};\r\n\r\nexport function grayArrayFromImage(htmlImage, offsetX, ctx, array) {\r\n ctx.drawImage(htmlImage, offsetX, 0, htmlImage.width, htmlImage.height);\r\n var ctxData = ctx.getImageData(offsetX, 0, htmlImage.width, htmlImage.height).data;\r\n computeGray(ctxData, array);\r\n};\r\n\r\nexport function grayArrayFromContext(ctx, size, offset, array) {\r\n var ctxData = ctx.getImageData(offset.x, offset.y, size.x, size.y).data;\r\n computeGray(ctxData, array);\r\n};\r\n\r\nexport function grayAndHalfSampleFromCanvasData(canvasData, size, outArray) {\r\n var topRowIdx = 0;\r\n var bottomRowIdx = size.x;\r\n var endIdx = Math.floor(canvasData.length / 4);\r\n var outWidth = size.x / 2;\r\n var outImgIdx = 0;\r\n var inWidth = size.x;\r\n var i;\r\n\r\n while (bottomRowIdx < endIdx) {\r\n for ( i = 0; i < outWidth; i++) {\r\n outArray[outImgIdx] = Math.floor((\r\n (0.299 * canvasData[topRowIdx * 4 + 0] +\r\n 0.587 * canvasData[topRowIdx * 4 + 1] +\r\n 0.114 * canvasData[topRowIdx * 4 + 2]) +\r\n (0.299 * canvasData[(topRowIdx + 1) * 4 + 0] +\r\n 0.587 * canvasData[(topRowIdx + 1) * 4 + 1] +\r\n 0.114 * canvasData[(topRowIdx + 1) * 4 + 2]) +\r\n (0.299 * canvasData[(bottomRowIdx) * 4 + 0] +\r\n 0.587 * canvasData[(bottomRowIdx) * 4 + 1] +\r\n 0.114 * canvasData[(bottomRowIdx) * 4 + 2]) +\r\n (0.299 * canvasData[(bottomRowIdx + 1) * 4 + 0] +\r\n 0.587 * canvasData[(bottomRowIdx + 1) * 4 + 1] +\r\n 0.114 * canvasData[(bottomRowIdx + 1) * 4 + 2])) / 4);\r\n outImgIdx++;\r\n topRowIdx = topRowIdx + 2;\r\n bottomRowIdx = bottomRowIdx + 2;\r\n }\r\n topRowIdx = topRowIdx + inWidth;\r\n bottomRowIdx = bottomRowIdx + inWidth;\r\n }\r\n};\r\n\r\nexport function computeGray(imageData, outArray, config) {\r\n var l = (imageData.length / 4) | 0,\r\n i,\r\n singleChannel = config && config.singleChannel === true;\r\n\r\n if (singleChannel) {\r\n for (i = 0; i < l; i++) {\r\n outArray[i] = imageData[i * 4 + 0];\r\n }\r\n } else {\r\n for (i = 0; i < l; i++) {\r\n outArray[i] = Math.floor(\r\n 0.299 * imageData[i * 4 + 0] + 0.587 * imageData[i * 4 + 1] + 0.114 * imageData[i * 4 + 2]);\r\n }\r\n }\r\n};\r\n\r\nexport function loadImageArray(src, callback, canvas) {\r\n if (!canvas) {\r\n canvas = document.createElement('canvas');\r\n }\r\n var img = new Image();\r\n img.callback = callback;\r\n img.onload = function() {\r\n canvas.width = this.width;\r\n canvas.height = this.height;\r\n var ctx = canvas.getContext('2d');\r\n ctx.drawImage(this, 0, 0);\r\n var array = new Uint8Array(this.width * this.height);\r\n ctx.drawImage(this, 0, 0);\r\n var data = ctx.getImageData(0, 0, this.width, this.height).data;\r\n computeGray(data, array);\r\n this.callback(array, {\r\n x: this.width,\r\n y: this.height\r\n }, this);\r\n };\r\n img.src = src;\r\n};\r\n\r\n/**\r\n * @param inImg {ImageWrapper} input image to be sampled\r\n * @param outImg {ImageWrapper} to be stored in\r\n */\r\nexport function halfSample(inImgWrapper, outImgWrapper) {\r\n var inImg = inImgWrapper.data;\r\n var inWidth = inImgWrapper.size.x;\r\n var outImg = outImgWrapper.data;\r\n var topRowIdx = 0;\r\n var bottomRowIdx = inWidth;\r\n var endIdx = inImg.length;\r\n var outWidth = inWidth / 2;\r\n var outImgIdx = 0;\r\n while (bottomRowIdx < endIdx) {\r\n for (var i = 0; i < outWidth; i++) {\r\n outImg[outImgIdx] = Math.floor(\r\n (inImg[topRowIdx] + inImg[topRowIdx + 1] + inImg[bottomRowIdx] + inImg[bottomRowIdx + 1]) / 4);\r\n outImgIdx++;\r\n topRowIdx = topRowIdx + 2;\r\n bottomRowIdx = bottomRowIdx + 2;\r\n }\r\n topRowIdx = topRowIdx + inWidth;\r\n bottomRowIdx = bottomRowIdx + inWidth;\r\n }\r\n};\r\n\r\nexport function hsv2rgb(hsv, rgb) {\r\n var h = hsv[0],\r\n s = hsv[1],\r\n v = hsv[2],\r\n c = v * s,\r\n x = c * (1 - Math.abs((h / 60) % 2 - 1)),\r\n m = v - c,\r\n r = 0,\r\n g = 0,\r\n b = 0;\r\n\r\n rgb = rgb || [0, 0, 0];\r\n\r\n if (h < 60) {\r\n r = c;\r\n g = x;\r\n } else if (h < 120) {\r\n r = x;\r\n g = c;\r\n } else if (h < 180) {\r\n g = c;\r\n b = x;\r\n } else if (h < 240) {\r\n g = x;\r\n b = c;\r\n } else if (h < 300) {\r\n r = x;\r\n b = c;\r\n } else if (h < 360) {\r\n r = c;\r\n b = x;\r\n }\r\n rgb[0] = ((r + m) * 255) | 0;\r\n rgb[1] = ((g + m) * 255) | 0;\r\n rgb[2] = ((b + m) * 255) | 0;\r\n return rgb;\r\n};\r\n\r\nexport function _computeDivisors(n) {\r\n var largeDivisors = [],\r\n divisors = [],\r\n i;\r\n\r\n for (i = 1; i < Math.sqrt(n) + 1; i++) {\r\n if (n % i === 0) {\r\n divisors.push(i);\r\n if (i !== n / i) {\r\n largeDivisors.unshift(Math.floor(n / i));\r\n }\r\n }\r\n }\r\n return divisors.concat(largeDivisors);\r\n};\r\n\r\nfunction _computeIntersection(arr1, arr2) {\r\n var i = 0,\r\n j = 0,\r\n result = [];\r\n\r\n while (i < arr1.length && j < arr2.length) {\r\n if (arr1[i] === arr2[j]) {\r\n result.push(arr1[i]);\r\n i++;\r\n j++;\r\n } else if (arr1[i] > arr2[j]) {\r\n j++;\r\n } else {\r\n i++;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nexport function calculatePatchSize(patchSize, imgSize) {\r\n var divisorsX = _computeDivisors(imgSize.x),\r\n divisorsY = _computeDivisors(imgSize.y),\r\n wideSide = Math.max(imgSize.x, imgSize.y),\r\n common = _computeIntersection(divisorsX, divisorsY),\r\n nrOfPatchesList = [8, 10, 15, 20, 32, 60, 80],\r\n nrOfPatchesMap = {\r\n \"x-small\": 5,\r\n \"small\": 4,\r\n \"medium\": 3,\r\n \"large\": 2,\r\n \"x-large\": 1\r\n },\r\n nrOfPatchesIdx = nrOfPatchesMap[patchSize] || nrOfPatchesMap.medium,\r\n nrOfPatches = nrOfPatchesList[nrOfPatchesIdx],\r\n desiredPatchSize = Math.floor(wideSide / nrOfPatches),\r\n optimalPatchSize;\r\n\r\n function findPatchSizeForDivisors(divisors) {\r\n var i = 0,\r\n found = divisors[Math.floor(divisors.length / 2)];\r\n\r\n while (i < (divisors.length - 1) && divisors[i] < desiredPatchSize) {\r\n i++;\r\n }\r\n if (i > 0) {\r\n if (Math.abs(divisors[i] - desiredPatchSize) > Math.abs(divisors[i - 1] - desiredPatchSize)) {\r\n found = divisors[i - 1];\r\n } else {\r\n found = divisors[i];\r\n }\r\n }\r\n if (desiredPatchSize / found < nrOfPatchesList[nrOfPatchesIdx + 1] / nrOfPatchesList[nrOfPatchesIdx] &&\r\n desiredPatchSize / found > nrOfPatchesList[nrOfPatchesIdx - 1] / nrOfPatchesList[nrOfPatchesIdx] ) {\r\n return {x: found, y: found};\r\n }\r\n return null;\r\n }\r\n\r\n optimalPatchSize = findPatchSizeForDivisors(common);\r\n if (!optimalPatchSize) {\r\n optimalPatchSize = findPatchSizeForDivisors(_computeDivisors(wideSide));\r\n if (!optimalPatchSize) {\r\n optimalPatchSize = findPatchSizeForDivisors((_computeDivisors(desiredPatchSize * nrOfPatches)));\r\n }\r\n }\r\n return optimalPatchSize;\r\n};\r\n\r\nexport function _parseCSSDimensionValues(value) {\r\n var dimension = {\r\n value: parseFloat(value),\r\n unit: value.indexOf(\"%\") === value.length - 1 ? \"%\" : \"%\"\r\n };\r\n\r\n return dimension;\r\n};\r\n\r\nexport const _dimensionsConverters = {\r\n top: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.height * (dimension.value / 100));\r\n }\r\n },\r\n right: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.width - (context.width * (dimension.value / 100)));\r\n }\r\n },\r\n bottom: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.height - (context.height * (dimension.value / 100)));\r\n }\r\n },\r\n left: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.width * (dimension.value / 100));\r\n }\r\n }\r\n};\r\n\r\nexport function computeImageArea(inputWidth, inputHeight, area) {\r\n var context = {width: inputWidth, height: inputHeight};\r\n\r\n var parsedArea = Object.keys(area).reduce(function(result, key) {\r\n var value = area[key],\r\n parsed = _parseCSSDimensionValues(value),\r\n calculated = _dimensionsConverters[key](parsed, context);\r\n\r\n result[key] = calculated;\r\n return result;\r\n }, {});\r\n\r\n return {\r\n sx: parsedArea.left,\r\n sy: parsedArea.top,\r\n sw: parsedArea.right - parsedArea.left,\r\n sh: parsedArea.bottom - parsedArea.top\r\n };\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/cv_utils.js\n **/","import SubImage from './subImage';\r\nimport {hsv2rgb} from '../common/cv_utils';\r\nimport ArrayHelper from '../common/array_helper';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n};\r\n\r\n/**\r\n * Represents a basic image combining the data and size.\r\n * In addition, some methods for manipulation are contained.\r\n * @param size {x,y} The size of the image in pixel\r\n * @param data {Array} If given, a flat array containing the pixel data\r\n * @param ArrayType {Type} If given, the desired DataType of the Array (may be typed/non-typed)\r\n * @param initialize {Boolean} Indicating if the array should be initialized on creation.\r\n * @returns {ImageWrapper}\r\n */\r\nfunction ImageWrapper(size, data, ArrayType, initialize) {\r\n if (!data) {\r\n if (ArrayType) {\r\n this.data = new ArrayType(size.x * size.y);\r\n if (ArrayType === Array && initialize) {\r\n ArrayHelper.init(this.data, 0);\r\n }\r\n } else {\r\n this.data = new Uint8Array(size.x * size.y);\r\n if (Uint8Array === Array && initialize) {\r\n ArrayHelper.init(this.data, 0);\r\n }\r\n }\r\n } else {\r\n this.data = data;\r\n }\r\n this.size = size;\r\n}\r\n\r\n/**\r\n * tests if a position is within the image with a given offset\r\n * @param imgRef {x, y} The location to test\r\n * @param border Number the padding value in pixel\r\n * @returns {Boolean} true if location inside the image's border, false otherwise\r\n * @see cvd/image.h\r\n */\r\nImageWrapper.prototype.inImageWithBorder = function(imgRef, border) {\r\n return (imgRef.x >= border)\r\n && (imgRef.y >= border)\r\n && (imgRef.x < (this.size.x - border))\r\n && (imgRef.y < (this.size.y - border));\r\n};\r\n\r\n/**\r\n * Performs bilinear sampling\r\n * @param inImg Image to extract sample from\r\n * @param x the x-coordinate\r\n * @param y the y-coordinate\r\n * @returns the sampled value\r\n * @see cvd/vision.h\r\n */\r\nImageWrapper.sample = function(inImg, x, y) {\r\n var lx = Math.floor(x);\r\n var ly = Math.floor(y);\r\n var w = inImg.size.x;\r\n var base = ly * inImg.size.x + lx;\r\n var a = inImg.data[base + 0];\r\n var b = inImg.data[base + 1];\r\n var c = inImg.data[base + w];\r\n var d = inImg.data[base + w + 1];\r\n var e = a - b;\r\n x -= lx;\r\n y -= ly;\r\n\r\n var result = Math.floor(x * (y * (e - c + d) - e) + y * (c - a) + a);\r\n return result;\r\n};\r\n\r\n/**\r\n * Initializes a given array. Sets each element to zero.\r\n * @param array {Array} The array to initialize\r\n */\r\nImageWrapper.clearArray = function(array) {\r\n var l = array.length;\r\n while (l--) {\r\n array[l] = 0;\r\n }\r\n};\r\n\r\n/**\r\n * Creates a {SubImage} from the current image ({this}).\r\n * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner)\r\n * @param size {ImageRef} The size of the resulting image\r\n * @returns {SubImage} A shared part of the original image\r\n */\r\nImageWrapper.prototype.subImage = function(from, size) {\r\n return new SubImage(from, size, this);\r\n};\r\n\r\n/**\r\n * Creates an {ImageWrapper) and copies the needed underlying image-data area\r\n * @param imageWrapper {ImageWrapper} The target {ImageWrapper} where the data should be copied\r\n * @param from {ImageRef} The location where to copy from (top-left location)\r\n */\r\nImageWrapper.prototype.subImageAsCopy = function(imageWrapper, from) {\r\n var sizeY = imageWrapper.size.y, sizeX = imageWrapper.size.x;\r\n var x, y;\r\n for ( x = 0; x < sizeX; x++) {\r\n for ( y = 0; y < sizeY; y++) {\r\n imageWrapper.data[y * sizeX + x] = this.data[(from.y + y) * this.size.x + from.x + x];\r\n }\r\n }\r\n};\r\n\r\nImageWrapper.prototype.copyTo = function(imageWrapper) {\r\n var length = this.data.length, srcData = this.data, dstData = imageWrapper.data;\r\n\r\n while (length--) {\r\n dstData[length] = srcData[length];\r\n }\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nImageWrapper.prototype.get = function(x, y) {\r\n return this.data[y * this.size.x + x];\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nImageWrapper.prototype.getSafe = function(x, y) {\r\n var i;\r\n\r\n if (!this.indexMapping) {\r\n this.indexMapping = {\r\n x: [],\r\n y: []\r\n };\r\n for (i = 0; i < this.size.x; i++) {\r\n this.indexMapping.x[i] = i;\r\n this.indexMapping.x[i + this.size.x] = i;\r\n }\r\n for (i = 0; i < this.size.y; i++) {\r\n this.indexMapping.y[i] = i;\r\n this.indexMapping.y[i + this.size.y] = i;\r\n }\r\n }\r\n return this.data[(this.indexMapping.y[y + this.size.y]) * this.size.x + this.indexMapping.x[x + this.size.x]];\r\n};\r\n\r\n/**\r\n * Sets a given pixel position in the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @param value {Number} The grayscale value to set\r\n * @returns {ImageWrapper} The Image itself (for possible chaining)\r\n */\r\nImageWrapper.prototype.set = function(x, y, value) {\r\n this.data[y * this.size.x + x] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets the border of the image (1 pixel) to zero\r\n */\r\nImageWrapper.prototype.zeroBorder = function() {\r\n var i, width = this.size.x, height = this.size.y, data = this.data;\r\n for ( i = 0; i < width; i++) {\r\n data[i] = data[(height - 1) * width + i] = 0;\r\n }\r\n for ( i = 1; i < height - 1; i++) {\r\n data[i * width] = data[i * width + (width - 1)] = 0;\r\n }\r\n};\r\n\r\n/**\r\n * Inverts a binary image in place\r\n */\r\nImageWrapper.prototype.invert = function() {\r\n var data = this.data, length = data.length;\r\n\r\n while (length--) {\r\n data[length] = data[length] ? 0 : 1;\r\n }\r\n};\r\n\r\nImageWrapper.prototype.convolve = function(kernel) {\r\n var x, y, kx, ky, kSize = (kernel.length / 2) | 0, accu = 0;\r\n for ( y = 0; y < this.size.y; y++) {\r\n for ( x = 0; x < this.size.x; x++) {\r\n accu = 0;\r\n for ( ky = -kSize; ky <= kSize; ky++) {\r\n for ( kx = -kSize; kx <= kSize; kx++) {\r\n accu += kernel[ky + kSize][kx + kSize] * this.getSafe(x + kx, y + ky);\r\n }\r\n }\r\n this.data[y * this.size.x + x] = accu;\r\n }\r\n }\r\n};\r\n\r\nImageWrapper.prototype.moments = function(labelcount) {\r\n var data = this.data,\r\n x,\r\n y,\r\n height = this.size.y,\r\n width = this.size.x,\r\n val,\r\n ysq,\r\n labelsum = [],\r\n i,\r\n label,\r\n mu11,\r\n mu02,\r\n mu20,\r\n x_,\r\n y_,\r\n tmp,\r\n result = [],\r\n PI = Math.PI,\r\n PI_4 = PI / 4;\r\n\r\n if (labelcount <= 0) {\r\n return result;\r\n }\r\n\r\n for ( i = 0; i < labelcount; i++) {\r\n labelsum[i] = {\r\n m00: 0,\r\n m01: 0,\r\n m10: 0,\r\n m11: 0,\r\n m02: 0,\r\n m20: 0,\r\n theta: 0,\r\n rad: 0\r\n };\r\n }\r\n\r\n for ( y = 0; y < height; y++) {\r\n ysq = y * y;\r\n for ( x = 0; x < width; x++) {\r\n val = data[y * width + x];\r\n if (val > 0) {\r\n label = labelsum[val - 1];\r\n label.m00 += 1;\r\n label.m01 += y;\r\n label.m10 += x;\r\n label.m11 += x * y;\r\n label.m02 += ysq;\r\n label.m20 += x * x;\r\n }\r\n }\r\n }\r\n\r\n for ( i = 0; i < labelcount; i++) {\r\n label = labelsum[i];\r\n if (!isNaN(label.m00) && label.m00 !== 0) {\r\n x_ = label.m10 / label.m00;\r\n y_ = label.m01 / label.m00;\r\n mu11 = label.m11 / label.m00 - x_ * y_;\r\n mu02 = label.m02 / label.m00 - y_ * y_;\r\n mu20 = label.m20 / label.m00 - x_ * x_;\r\n tmp = (mu02 - mu20) / (2 * mu11);\r\n tmp = 0.5 * Math.atan(tmp) + (mu11 >= 0 ? PI_4 : -PI_4 ) + PI;\r\n label.theta = (tmp * 180 / PI + 90) % 180 - 90;\r\n if (label.theta < 0) {\r\n label.theta += 180;\r\n }\r\n label.rad = tmp > PI ? tmp - PI : tmp;\r\n label.vec = vec2.clone([Math.cos(tmp), Math.sin(tmp)]);\r\n result.push(label);\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Displays the {ImageWrapper} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nImageWrapper.prototype.show = function(canvas, scale) {\r\n var ctx,\r\n frame,\r\n data,\r\n current,\r\n pixel,\r\n x,\r\n y;\r\n\r\n if (!scale) {\r\n scale = 1.0;\r\n }\r\n ctx = canvas.getContext('2d');\r\n canvas.width = this.size.x;\r\n canvas.height = this.size.y;\r\n frame = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n data = frame.data;\r\n current = 0;\r\n for (y = 0; y < this.size.y; y++) {\r\n for (x = 0; x < this.size.x; x++) {\r\n pixel = y * this.size.x + x;\r\n current = this.get(x, y) * scale;\r\n data[pixel * 4 + 0] = current;\r\n data[pixel * 4 + 1] = current;\r\n data[pixel * 4 + 2] = current;\r\n data[pixel * 4 + 3] = 255;\r\n }\r\n }\r\n //frame.data = data;\r\n ctx.putImageData(frame, 0, 0);\r\n};\r\n\r\n/**\r\n * Displays the {SubImage} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nImageWrapper.prototype.overlay = function(canvas, scale, from) {\r\n if (!scale || scale < 0 || scale > 360) {\r\n scale = 360;\r\n }\r\n var hsv = [0, 1, 1];\r\n var rgb = [0, 0, 0];\r\n var whiteRgb = [255, 255, 255];\r\n var blackRgb = [0, 0, 0];\r\n var result = [];\r\n var ctx = canvas.getContext('2d');\r\n var frame = ctx.getImageData(from.x, from.y, this.size.x, this.size.y);\r\n var data = frame.data;\r\n var length = this.data.length;\r\n while (length--) {\r\n hsv[0] = this.data[length] * scale;\r\n result = hsv[0] <= 0 ? whiteRgb : hsv[0] >= 360 ? blackRgb : hsv2rgb(hsv, rgb);\r\n data[length * 4 + 0] = result[0];\r\n data[length * 4 + 1] = result[1];\r\n data[length * 4 + 2] = result[2];\r\n data[length * 4 + 3] = 255;\r\n }\r\n ctx.putImageData(frame, from.x, from.y);\r\n};\r\n\r\nexport default ImageWrapper;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/image_wrapper.js\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Symbol.js\n ** module id = 27\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayReduce.js\n ** module id = 28\n ** module chunks = 0\n **/","var copyObjectWith = require('./_copyObjectWith');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object) {\n return copyObjectWith(source, props, object);\n}\n\nmodule.exports = copyObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyObject.js\n ** module id = 29\n ** module chunks = 0\n **/","var isArray = require('./isArray');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (typeof value == 'number') {\n return true;\n }\n return !isArray(value) &&\n (reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object)));\n}\n\nmodule.exports = isKey;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isKey.js\n ** module id = 30\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isPrototype.js\n ** module id = 31\n ** module chunks = 0\n **/","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object, else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArrayLikeObject.js\n ** module id = 32\n ** module chunks = 0\n **/","var isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isString.js\n ** module id = 33\n ** module chunks = 0\n **/","var isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isTypedArray.js\n ** module id = 34\n ** module chunks = 0\n **/","var baseKeysIn = require('./_baseKeysIn'),\n indexKeys = require('./_indexKeys'),\n isIndex = require('./_isIndex'),\n isPrototype = require('./_isPrototype');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n var index = -1,\n isProto = isPrototype(object),\n props = baseKeysIn(object),\n propsLength = props.length,\n indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n while (++index < propsLength) {\n var key = props[index];\n if (!(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/keysIn.js\n ** module id = 35\n ** module chunks = 0\n **/","import ImageDebug from '../common/image_debug';\r\n\r\nfunction contains(codeResult, list) {\r\n if (list) {\r\n return list.some(function (item) {\r\n return Object.keys(item).every(function (key) {\r\n return item[key] === codeResult[key];\r\n });\r\n });\r\n }\r\n return false;\r\n}\r\n\r\nfunction passesFilter(codeResult, filter) {\r\n if (typeof filter === 'function') {\r\n return filter(codeResult);\r\n }\r\n return true;\r\n}\r\n\r\nexport default {\r\n create: function(config) {\r\n var canvas = document.createElement(\"canvas\"),\r\n ctx = canvas.getContext(\"2d\"),\r\n results = [],\r\n capacity = config.capacity || 20,\r\n capture = config.capture === true;\r\n\r\n function matchesConstraints(codeResult) {\r\n return capacity\r\n && codeResult\r\n && !contains(codeResult, config.blacklist)\r\n && passesFilter(codeResult, config.filter);\r\n }\r\n\r\n return {\r\n addResult: function(data, imageSize, codeResult) {\r\n var result = {};\r\n\r\n if (matchesConstraints(codeResult)) {\r\n capacity--;\r\n result.codeResult = codeResult;\r\n if (capture) {\r\n canvas.width = imageSize.x;\r\n canvas.height = imageSize.y;\r\n ImageDebug.drawImage(data, imageSize, ctx);\r\n result.frame = canvas.toDataURL();\r\n }\r\n results.push(result);\r\n }\r\n },\r\n getResults: function() {\r\n return results;\r\n }\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/analytics/result_collector.js\n **/","let config;\r\n\r\nif (ENV.development){\r\n config = require('./config.dev.js');\r\n} else if (ENV.node) {\r\n config = require('./config.node.js');\r\n} else {\r\n config = require('./config.prod.js');\r\n}\r\n\r\nexport default config;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/config/config.js\n **/","/**\r\n * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization\r\n */\r\nvar Tracer = {\r\n searchDirections: [[0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [-1, -1], [-1, 0], [-1, 1]],\r\n create: function(imageWrapper, labelWrapper) {\r\n var imageData = imageWrapper.data,\r\n labelData = labelWrapper.data,\r\n searchDirections = this.searchDirections,\r\n width = imageWrapper.size.x,\r\n pos;\r\n\r\n function trace(current, color, label, edgelabel) {\r\n var i,\r\n y,\r\n x;\r\n\r\n for ( i = 0; i < 7; i++) {\r\n y = current.cy + searchDirections[current.dir][0];\r\n x = current.cx + searchDirections[current.dir][1];\r\n pos = y * width + x;\r\n if ((imageData[pos] === color) && ((labelData[pos] === 0) || (labelData[pos] === label))) {\r\n labelData[pos] = label;\r\n current.cy = y;\r\n current.cx = x;\r\n return true;\r\n } else {\r\n if (labelData[pos] === 0) {\r\n labelData[pos] = edgelabel;\r\n }\r\n current.dir = (current.dir + 1) % 8;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function vertex2D(x, y, dir) {\r\n return {\r\n dir: dir,\r\n x: x,\r\n y: y,\r\n next: null,\r\n prev: null\r\n };\r\n }\r\n\r\n function contourTracing(sy, sx, label, color, edgelabel) {\r\n var Fv = null,\r\n Cv,\r\n P,\r\n ldir,\r\n current = {\r\n cx: sx,\r\n cy: sy,\r\n dir: 0\r\n };\r\n\r\n if (trace(current, color, label, edgelabel)) {\r\n Fv = vertex2D(sx, sy, current.dir);\r\n Cv = Fv;\r\n ldir = current.dir;\r\n P = vertex2D(current.cx, current.cy, 0);\r\n P.prev = Cv;\r\n Cv.next = P;\r\n P.next = null;\r\n Cv = P;\r\n do {\r\n current.dir = (current.dir + 6) % 8;\r\n trace(current, color, label, edgelabel);\r\n if (ldir !== current.dir) {\r\n Cv.dir = current.dir;\r\n P = vertex2D(current.cx, current.cy, 0);\r\n P.prev = Cv;\r\n Cv.next = P;\r\n P.next = null;\r\n Cv = P;\r\n } else {\r\n Cv.dir = ldir;\r\n Cv.x = current.cx;\r\n Cv.y = current.cy;\r\n }\r\n ldir = current.dir;\r\n } while (current.cx !== sx || current.cy !== sy);\r\n Fv.prev = Cv.prev;\r\n Cv.prev.next = Fv;\r\n }\r\n return Fv;\r\n }\r\n\r\n return {\r\n trace: function(current, color, label, edgelabel) {\r\n return trace(current, color, label, edgelabel);\r\n },\r\n contourTracing: function(sy, sx, label, color, edgelabel) {\r\n return contourTracing(sy, sx, label, color, edgelabel);\r\n }\r\n };\r\n }\r\n};\r\n\r\nexport default (Tracer);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/tracer.js\n **/","import BarcodeReader from './barcode_reader';\r\nimport ArrayHelper from '../common/array_helper';\r\n\r\nfunction Code39Reader() {\r\n BarcodeReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n ALPHABETH_STRING: {value: \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%\"},\r\n ALPHABET: {value: [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,\r\n 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 45, 46, 32, 42, 36, 47, 43, 37]},\r\n CHARACTER_ENCODINGS: {value: [0x034, 0x121, 0x061, 0x160, 0x031, 0x130, 0x070, 0x025, 0x124, 0x064, 0x109, 0x049,\r\n 0x148, 0x019, 0x118, 0x058, 0x00D, 0x10C, 0x04C, 0x01C, 0x103, 0x043, 0x142, 0x013, 0x112, 0x052, 0x007, 0x106,\r\n 0x046, 0x016, 0x181, 0x0C1, 0x1C0, 0x091, 0x190, 0x0D0, 0x085, 0x184, 0x0C4, 0x094, 0x0A8, 0x0A2, 0x08A, 0x02A\r\n ]},\r\n ASTERISK: {value: 0x094},\r\n FORMAT: {value: \"code_39\", writeable: false}\r\n};\r\n\r\nCode39Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCode39Reader.prototype.constructor = Code39Reader;\r\n\r\nCode39Reader.prototype._toCounters = function(start, counter) {\r\n var self = this,\r\n numCounters = counter.length,\r\n end = self._row.length,\r\n isWhite = !self._row[start],\r\n i,\r\n counterPos = 0;\r\n\r\n ArrayHelper.init(counter, 0);\r\n\r\n for ( i = start; i < end; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n counterPos++;\r\n if (counterPos === numCounters) {\r\n break;\r\n } else {\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n }\r\n\r\n return counter;\r\n};\r\n\r\nCode39Reader.prototype._decode = function() {\r\n var self = this,\r\n counters = [0, 0, 0, 0, 0, 0, 0, 0, 0],\r\n result = [],\r\n start = self._findStart(),\r\n decodedChar,\r\n lastStart,\r\n pattern,\r\n nextStart;\r\n\r\n if (!start) {\r\n return null;\r\n }\r\n nextStart = self._nextSet(self._row, start.end);\r\n\r\n do {\r\n counters = self._toCounters(nextStart, counters);\r\n pattern = self._toPattern(counters);\r\n if (pattern < 0) {\r\n return null;\r\n }\r\n decodedChar = self._patternToChar(pattern);\r\n if (decodedChar < 0){\r\n return null;\r\n }\r\n result.push(decodedChar);\r\n lastStart = nextStart;\r\n nextStart += ArrayHelper.sum(counters);\r\n nextStart = self._nextSet(self._row, nextStart);\r\n } while (decodedChar !== '*');\r\n result.pop();\r\n\r\n if (!result.length) {\r\n return null;\r\n }\r\n\r\n if (!self._verifyTrailingWhitespace(lastStart, nextStart, counters)) {\r\n return null;\r\n }\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: start.start,\r\n end: nextStart,\r\n startInfo: start,\r\n decodedCodes: result\r\n };\r\n};\r\n\r\nCode39Reader.prototype._verifyTrailingWhitespace = function(lastStart, nextStart, counters) {\r\n var trailingWhitespaceEnd,\r\n patternSize = ArrayHelper.sum(counters);\r\n\r\n trailingWhitespaceEnd = nextStart - lastStart - patternSize;\r\n if ((trailingWhitespaceEnd * 3) >= patternSize) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nCode39Reader.prototype._patternToChar = function(pattern) {\r\n var i,\r\n self = this;\r\n\r\n for (i = 0; i < self.CHARACTER_ENCODINGS.length; i++) {\r\n if (self.CHARACTER_ENCODINGS[i] === pattern) {\r\n return String.fromCharCode(self.ALPHABET[i]);\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCode39Reader.prototype._findNextWidth = function(counters, current) {\r\n var i,\r\n minWidth = Number.MAX_VALUE;\r\n\r\n for (i = 0; i < counters.length; i++) {\r\n if (counters[i] < minWidth && counters[i] > current) {\r\n minWidth = counters[i];\r\n }\r\n }\r\n\r\n return minWidth;\r\n};\r\n\r\nCode39Reader.prototype._toPattern = function(counters) {\r\n var numCounters = counters.length,\r\n maxNarrowWidth = 0,\r\n numWideBars = numCounters,\r\n wideBarWidth = 0,\r\n self = this,\r\n pattern,\r\n i;\r\n\r\n while (numWideBars > 3) {\r\n maxNarrowWidth = self._findNextWidth(counters, maxNarrowWidth);\r\n numWideBars = 0;\r\n pattern = 0;\r\n for (i = 0; i < numCounters; i++) {\r\n if (counters[i] > maxNarrowWidth) {\r\n pattern |= 1 << (numCounters - 1 - i);\r\n numWideBars++;\r\n wideBarWidth += counters[i];\r\n }\r\n }\r\n\r\n if (numWideBars === 3) {\r\n for (i = 0; i < numCounters && numWideBars > 0; i++) {\r\n if (counters[i] > maxNarrowWidth) {\r\n numWideBars--;\r\n if ((counters[i] * 2) >= wideBarWidth) {\r\n return -1;\r\n }\r\n }\r\n }\r\n return pattern;\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCode39Reader.prototype._findStart = function() {\r\n var self = this,\r\n offset = self._nextSet(self._row),\r\n patternStart = offset,\r\n counter = [0, 0, 0, 0, 0, 0, 0, 0, 0],\r\n counterPos = 0,\r\n isWhite = false,\r\n i,\r\n j,\r\n whiteSpaceMustStart;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n // find start pattern\r\n if (self._toPattern(counter) === self.ASTERISK) {\r\n whiteSpaceMustStart = Math.floor(Math.max(0, patternStart - ((i - patternStart) / 4)));\r\n if (self._matchRange(whiteSpaceMustStart, patternStart, 0)) {\r\n return {\r\n start: patternStart,\r\n end: i\r\n };\r\n }\r\n }\r\n\r\n patternStart += counter[0] + counter[1];\r\n for ( j = 0; j < 7; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[7] = 0;\r\n counter[8] = 0;\r\n counterPos--;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport default Code39Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_39_reader.js\n **/","module.exports = dot\n\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1]\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/dot.js\n ** module id = 40\n ** module chunks = 0\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Uint8Array.js\n ** module id = 41\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayEach.js\n ** module id = 42\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (typeof key == 'number' && value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\nmodule.exports = assignMergeValue;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assignMergeValue.js\n ** module id = 43\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\nmodule.exports = assignValue;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assignValue.js\n ** module id = 44\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the associative array.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction assocDelete(array, key) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = array.length - 1;\n if (index == lastIndex) {\n array.pop();\n } else {\n splice.call(array, index, 1);\n }\n return true;\n}\n\nmodule.exports = assocDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocDelete.js\n ** module id = 45\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the associative array value for `key`.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction assocGet(array, key) {\n var index = assocIndexOf(array, key);\n return index < 0 ? undefined : array[index][1];\n}\n\nmodule.exports = assocGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocGet.js\n ** module id = 46\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if an associative array value for `key` exists.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction assocHas(array, key) {\n return assocIndexOf(array, key) > -1;\n}\n\nmodule.exports = assocHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocHas.js\n ** module id = 47\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the associative array `key` to `value`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n */\nfunction assocSet(array, key, value) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n array.push([key, value]);\n } else {\n array[index][1] = value;\n }\n}\n\nmodule.exports = assocSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocSet.js\n ** module id = 48\n ** module chunks = 0\n **/","var isArray = require('./isArray'),\n stringToPath = require('./_stringToPath');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction baseCastPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\nmodule.exports = baseCastPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseCastPath.js\n ** module id = 49\n ** module chunks = 0\n **/","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseFor.js\n ** module id = 50\n ** module chunks = 0\n **/","var baseCastPath = require('./_baseCastPath'),\n isKey = require('./_isKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path + ''] : baseCastPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[path[index++]];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseGet.js\n ** module id = 51\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n // that are composed entirely of index properties, return `false` for\n // `hasOwnProperty` checks of them.\n return hasOwnProperty.call(object, key) ||\n (typeof object == 'object' && key in object && getPrototypeOf(object) === null);\n}\n\nmodule.exports = baseHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseHas.js\n ** module id = 52\n ** module chunks = 0\n **/","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObject = require('./isObject'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsEqual.js\n ** module id = 53\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseProperty.js\n ** module id = 54\n ** module chunks = 0\n **/","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneArrayBuffer.js\n ** module id = 55\n ** module chunks = 0\n **/","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyArray.js\n ** module id = 56\n ** module chunks = 0\n **/","var arraySome = require('./_arraySome');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var index = -1,\n isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n isUnordered = bitmask & UNORDERED_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(array, other);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (isUnordered) {\n if (!arraySome(other, function(othValue) {\n return arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack);\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n return result;\n}\n\nmodule.exports = equalArrays;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalArrays.js\n ** module id = 57\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect maps, sets, and weakmaps. */\nvar mapCtorString = Map ? funcToString.call(Map) : '',\n setCtorString = Set ? funcToString.call(Set) : '',\n weakMapCtorString = WeakMap ? funcToString.call(WeakMap) : '';\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction getTag(value) {\n return objectToString.call(value);\n}\n\n// Fallback for IE 11 providing `toStringTag` values for maps, sets, and weakmaps.\nif ((Map && getTag(new Map) != mapTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : null,\n ctorString = typeof Ctor == 'function' ? funcToString.call(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case mapCtorString: return mapTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getTag.js\n ** module id = 58\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @param {Object} hash The hash to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(hash, key) {\n return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key);\n}\n\nmodule.exports = hashHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashHas.js\n ** module id = 59\n ** module chunks = 0\n **/","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isLength = require('./isLength'),\n isString = require('./isString');\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\nmodule.exports = indexKeys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_indexKeys.js\n ** module id = 60\n ** module chunks = 0\n **/","/**\n * Converts `map` to an array.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapToArray.js\n ** module id = 61\n ** module chunks = 0\n **/","/**\n * Converts `set` to an array.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_setToArray.js\n ** module id = 62\n ** module chunks = 0\n **/","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined` the `defaultValue` is used in its place.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/get.js\n ** module id = 63\n ** module chunks = 0\n **/","var baseFlatten = require('./_baseFlatten'),\n basePick = require('./_basePick'),\n rest = require('./rest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property names to pick, specified\n * individually or in arrays.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = rest(function(object, props) {\n return object == null ? {} : basePick(object, baseFlatten(props, 1));\n});\n\nmodule.exports = pick;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/pick.js\n ** module id = 64\n ** module chunks = 0\n **/","var apply = require('./_apply'),\n toInteger = require('./toInteger');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : toInteger(start), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, array);\n case 1: return func.call(this, args[0], array);\n case 2: return func.call(this, args[0], args[1], array);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = rest;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/rest.js\n ** module id = 65\n ** module chunks = 0\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tObject.defineProperty(module, \"exports\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.e; },\r\n\t\t\tset: function(v) { return module.e = v; }\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.l; }\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.i; }\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/buildin/module.js\n ** module id = 66\n ** module chunks = 0\n **/","import './common/typedefs';\r\nimport 'webrtc-adapter';\r\nimport createScanner from './scanner';\r\nimport ImageWrapper from './common/image_wrapper';\r\nimport ImageDebug from './common/image_debug';\r\nimport ResultCollector from './analytics/result_collector';\r\nimport Config from './config/config';\r\nimport {merge, pick, omitBy, isEmpty} from 'lodash';\r\n\r\nfunction fromImage(config, imageSrc, inputConfig = {}) {\r\n const staticImageConfig = {\r\n inputStream: {\r\n type: \"ImageStream\",\r\n sequence: false,\r\n size: 800,\r\n src: imageSrc\r\n },\r\n numOfWorkers: (ENV.development && config.debug) ? 0 : 1\r\n };\r\n config = merge(\r\n config,\r\n staticImageConfig,\r\n {numOfWorkers: typeof config.numOfWorkers === 'number' && config.numOfWorkers > 0 ? 1 : 0},\r\n {inputStream: omitBy(pick(config.inputStream, ['size', 'src']), isEmpty)},\r\n {inputStream: inputConfig});\r\n\r\n const scanner = createScanner();\r\n return {\r\n addEventListener(eventType, cb) {\r\n scanner.subscribe(eventType, cb);\r\n return this;\r\n },\r\n removeEventListener(eventType, cb) {\r\n scanner.unsubscribe(eventType, cb);\r\n return this;\r\n },\r\n start() {\r\n scanner.init(config, () => {\r\n scanner.start();\r\n });\r\n return this;\r\n },\r\n stop() {\r\n scanner.stop();\r\n return this;\r\n },\r\n toPromise() {\r\n return new Promise((resolve, reject) => {\r\n scanner.decodeSingle(config, (result) => {\r\n if (result && result.codeResult && result.codeResult.code) {\r\n return resolve(result);\r\n }\r\n return reject(result);\r\n });\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction fromVideo(config, source, inputConfig = {}) {\r\n // remember last instance\r\n // check if anything but the imagesrc has changed\r\n //\r\n let sourceConfig = {\r\n type: \"LiveStream\",\r\n constraints: {\r\n width: 640,\r\n height: 480,\r\n facingMode: \"environment\"\r\n }\r\n };\r\n\r\n /*if (source instanceof MediaStream) {\r\n // stream\r\n } else*/ if (source instanceof Element) {\r\n // video element\r\n } else if (typeof source === 'string') {\r\n // video source\r\n } else if (typeof source === 'object'\r\n && (typeof source.constraints !== 'undefined'\r\n || typeof source.area !== 'undefined')) {\r\n inputConfig = source;\r\n } else if (!source) {\r\n // LiveStream\r\n }\r\n config = merge({}, config, {inputStream: sourceConfig}, {inputStream: inputConfig});\r\n console.log(config);\r\n const scanner = createScanner();\r\n return {\r\n addEventListener(eventType, cb) {\r\n scanner.subscribe(eventType, cb);\r\n return this;\r\n },\r\n removeEventListener(eventType, cb) {\r\n scanner.unsubscribe(eventType, cb);\r\n return this;\r\n },\r\n start() {\r\n scanner.init(config, (error) => {\r\n if (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n scanner.start();\r\n });\r\n return this;\r\n },\r\n stop() {\r\n scanner.stop();\r\n return this;\r\n }\r\n };\r\n}\r\n\r\nconst defaultScanner = createScanner();\r\n\r\nfunction setConfig(configuration = {}, key, config = {}) {\r\n var mergedConfig = merge({}, configuration, {[key]: config});\r\n return createApi(mergedConfig);\r\n}\r\n\r\nfunction createApi(configuration = Config) {\r\n return {\r\n fromImage(src, conf) {\r\n return fromImage(configuration, src, conf);\r\n },\r\n fromVideo(src, inputConfig) {\r\n return fromVideo(configuration, src, inputConfig);\r\n },\r\n decoder(conf) {\r\n return setConfig(configuration, \"decoder\", conf);\r\n },\r\n locator(conf) {\r\n return setConfig(configuration, \"locator\", conf);\r\n },\r\n config(conf) {\r\n return createApi(merge({}, configuration, conf));\r\n },\r\n registerResultCollector(resultCollector) {\r\n defaultScanner.registerResultCollector(resultCollector);\r\n },\r\n getCanvas() {\r\n return defaultScanner.canvas;\r\n },\r\n ImageWrapper,\r\n ImageDebug,\r\n ResultCollector,\r\n _worker: {\r\n createScanner\r\n }\r\n };\r\n}\r\nexport default createApi();\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/quagga.js\n **/","const vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n dot: require('gl-vec2/dot')\r\n};\r\n\r\n/**\r\n * Creates a cluster for grouping similar orientations of datapoints\r\n */\r\nexport default {\r\n create: function(point, threshold) {\r\n var points = [],\r\n center = {\r\n rad: 0,\r\n vec: vec2.clone([0, 0])\r\n },\r\n pointMap = {};\r\n\r\n function init() {\r\n add(point);\r\n updateCenter();\r\n }\r\n\r\n function add(pointToAdd) {\r\n pointMap[pointToAdd.id] = pointToAdd;\r\n points.push(pointToAdd);\r\n }\r\n\r\n function updateCenter() {\r\n var i, sum = 0;\r\n for ( i = 0; i < points.length; i++) {\r\n sum += points[i].rad;\r\n }\r\n center.rad = sum / points.length;\r\n center.vec = vec2.clone([Math.cos(center.rad), Math.sin(center.rad)]);\r\n }\r\n\r\n init();\r\n\r\n return {\r\n add: function(pointToAdd) {\r\n if (!pointMap[pointToAdd.id]) {\r\n add(pointToAdd);\r\n updateCenter();\r\n }\r\n },\r\n fits: function(otherPoint) {\r\n // check cosine similarity to center-angle\r\n var similarity = Math.abs(vec2.dot(otherPoint.point.vec, center.vec));\r\n if (similarity > threshold) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n getPoints: function() {\r\n return points;\r\n },\r\n getCenter: function() {\r\n return center;\r\n }\r\n };\r\n },\r\n createPoint: function(newPoint, id, property) {\r\n return {\r\n rad: newPoint[property],\r\n point: newPoint,\r\n id: id\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/cluster.js\n **/","export default function createEventedElement() {\r\n var events = {};\r\n\r\n function getEvent(eventName) {\r\n if (!events[eventName]) {\r\n events[eventName] = {\r\n subscribers: []\r\n };\r\n }\r\n return events[eventName];\r\n }\r\n\r\n function clearEvents(){\r\n events = {};\r\n }\r\n\r\n function publishSubscription(subscription, data) {\r\n if (subscription.async) {\r\n setTimeout(function() {\r\n subscription.callback(data);\r\n }, 4);\r\n } else {\r\n subscription.callback(data);\r\n }\r\n }\r\n\r\n function subscribe(event, callback, async) {\r\n var subscription;\r\n\r\n if ( typeof callback === \"function\") {\r\n subscription = {\r\n callback: callback,\r\n async: async\r\n };\r\n } else {\r\n subscription = callback;\r\n if (!subscription.callback) {\r\n throw \"Callback was not specified on options\";\r\n }\r\n }\r\n\r\n getEvent(event).subscribers.push(subscription);\r\n }\r\n\r\n return {\r\n subscribe: function(event, callback, async) {\r\n return subscribe(event, callback, async);\r\n },\r\n publish: function(eventName, data) {\r\n var event = getEvent(eventName),\r\n subscribers = event.subscribers;\r\n\r\n // Publish one-time subscriptions\r\n subscribers.filter(function(subscriber) {\r\n return !!subscriber.once;\r\n }).forEach((subscriber) => {\r\n publishSubscription(subscriber, data);\r\n });\r\n\r\n // remove them from the subscriber\r\n event.subscribers = subscribers.filter(function(subscriber) {\r\n return !subscriber.once;\r\n });\r\n\r\n // publish the rest\r\n event.subscribers.forEach((subscriber) => {\r\n publishSubscription(subscriber, data);\r\n });\r\n },\r\n once: function(event, callback, async) {\r\n subscribe(event, {\r\n callback: callback,\r\n async: async,\r\n once: true\r\n });\r\n },\r\n unsubscribe: function(eventName, callback) {\r\n var event;\r\n\r\n if (eventName) {\r\n event = getEvent(eventName);\r\n if (event && callback) {\r\n event.subscribers = event.subscribers.filter(function(subscriber){\r\n return subscriber.callback !== callback;\r\n });\r\n } else {\r\n event.subscribers = [];\r\n }\r\n } else {\r\n clearEvents();\r\n }\r\n }\r\n };\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/events.js\n **/","/**\r\n * Construct representing a part of another {ImageWrapper}. Shares data\r\n * between the parent and the child.\r\n * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner)\r\n * @param size {ImageRef} The size of the resulting image\r\n * @param I {ImageWrapper} The {ImageWrapper} to share from\r\n * @returns {SubImage} A shared part of the original image\r\n */\r\nfunction SubImage(from, size, I) {\r\n if (!I) {\r\n I = {\r\n data: null,\r\n size: size\r\n };\r\n }\r\n this.data = I.data;\r\n this.originalSize = I.size;\r\n this.I = I;\r\n\r\n this.from = from;\r\n this.size = size;\r\n}\r\n\r\n/**\r\n * Displays the {SubImage} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nSubImage.prototype.show = function(canvas, scale) {\r\n var ctx,\r\n frame,\r\n data,\r\n current,\r\n y,\r\n x,\r\n pixel;\r\n\r\n if (!scale) {\r\n scale = 1.0;\r\n }\r\n ctx = canvas.getContext('2d');\r\n canvas.width = this.size.x;\r\n canvas.height = this.size.y;\r\n frame = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n data = frame.data;\r\n current = 0;\r\n for (y = 0; y < this.size.y; y++) {\r\n for (x = 0; x < this.size.x; x++) {\r\n pixel = y * this.size.x + x;\r\n current = this.get(x, y) * scale;\r\n data[pixel * 4 + 0] = current;\r\n data[pixel * 4 + 1] = current;\r\n data[pixel * 4 + 2] = current;\r\n data[pixel * 4 + 3] = 255;\r\n }\r\n }\r\n frame.data = data;\r\n ctx.putImageData(frame, 0, 0);\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the {SubImage}\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nSubImage.prototype.get = function(x, y) {\r\n return this.data[(this.from.y + y) * this.originalSize.x + this.from.x + x];\r\n};\r\n\r\n/**\r\n * Updates the underlying data from a given {ImageWrapper}\r\n * @param image {ImageWrapper} The updated image\r\n */\r\nSubImage.prototype.updateData = function(image) {\r\n this.originalSize = image.size;\r\n this.data = image.data;\r\n};\r\n\r\n/**\r\n * Updates the position of the shared area\r\n * @param from {x,y} The new location\r\n * @returns {SubImage} returns {this} for possible chaining\r\n */\r\nSubImage.prototype.updateFrom = function(from) {\r\n this.from = from;\r\n return this;\r\n};\r\n\r\nexport default (SubImage);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/subImage.js\n **/","/*\r\n * typedefs.js\r\n * Normalizes browser-specific prefixes\r\n */\r\n\r\nif (typeof window !== 'undefined') {\r\n window.requestAnimFrame = (function () {\r\n return window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n window.msRequestAnimationFrame ||\r\n function (/* function FrameRequestCallback */ callback) {\r\n window.setTimeout(callback, 1000 / 60);\r\n };\r\n })();\r\n}\r\nMath.imul = Math.imul || function(a, b) {\r\n var ah = (a >>> 16) & 0xffff,\r\n al = a & 0xffff,\r\n bh = (b >>> 16) & 0xffff,\r\n bl = b & 0xffff;\r\n // the shift by 0 fixes the sign on the high part\r\n // the final |0 converts the unsigned value into a signed value\r\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/typedefs.js\n **/","module.exports = {\r\n inputStream: {\r\n name: \"Live\",\r\n type: \"LiveStream\",\r\n constraints: {\r\n width: 640,\r\n height: 480,\r\n // aspectRatio: 640/480, // optional\r\n facingMode: \"environment\", // or user\r\n // deviceId: \"38745983457387598375983759834\"\r\n },\r\n area: {\r\n top: \"0%\",\r\n right: \"0%\",\r\n left: \"0%\",\r\n bottom: \"0%\"\r\n },\r\n singleChannel: false // true: only the red color-channel is read\r\n },\r\n locate: true,\r\n numOfWorkers: 2,\r\n decoder: {\r\n readers: [\r\n 'code_128_reader'\r\n ],\r\n debug: {\r\n drawBoundingBox: false,\r\n showFrequency: false,\r\n drawScanline: false,\r\n showPattern: false\r\n }\r\n },\r\n locator: {\r\n halfSample: true,\r\n patchSize: \"medium\", // x-small, small, medium, large, x-large\r\n debug: {\r\n showCanvas: false,\r\n showPatches: false,\r\n showFoundPatches: false,\r\n showSkeleton: false,\r\n showLabels: false,\r\n showPatchLabels: false,\r\n showRemainingPatchLabels: false,\r\n boxFromPatches: {\r\n showTransformed: false,\r\n showTransformedBox: false,\r\n showBB: false\r\n }\r\n }\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/config/config.dev.js\n **/","import Bresenham from './bresenham';\r\nimport ImageDebug from '../common/image_debug';\r\nimport Code128Reader from '../reader/code_128_reader';\r\nimport EANReader from '../reader/ean_reader';\r\nimport Code39Reader from '../reader/code_39_reader';\r\nimport Code39VINReader from '../reader/code_39_vin_reader';\r\nimport CodabarReader from '../reader/codabar_reader';\r\nimport UPCReader from '../reader/upc_reader';\r\nimport EAN8Reader from '../reader/ean_8_reader';\r\nimport EAN2Reader from '../reader/ean_2_reader';\r\nimport EAN5Reader from '../reader/ean_5_reader';\r\nimport UPCEReader from '../reader/upc_e_reader';\r\nimport I2of5Reader from '../reader/i2of5_reader';\r\n\r\nconst READERS = {\r\n code_128_reader: Code128Reader,\r\n ean_reader: EANReader,\r\n ean_5_reader: EAN5Reader,\r\n ean_2_reader: EAN2Reader,\r\n ean_8_reader: EAN8Reader,\r\n code_39_reader: Code39Reader,\r\n code_39_vin_reader: Code39VINReader,\r\n codabar_reader: CodabarReader,\r\n upc_reader: UPCReader,\r\n upc_e_reader: UPCEReader,\r\n i2of5_reader: I2of5Reader\r\n};\r\nexport default {\r\n create: function(config, inputImageWrapper) {\r\n var _canvas = {\r\n ctx: {\r\n frequency: null,\r\n pattern: null,\r\n overlay: null\r\n },\r\n dom: {\r\n frequency: null,\r\n pattern: null,\r\n overlay: null\r\n }\r\n },\r\n _barcodeReaders = [];\r\n\r\n initCanvas();\r\n initReaders();\r\n initConfig();\r\n\r\n function initCanvas() {\r\n if (ENV.development && typeof document !== 'undefined') {\r\n var $debug = document.querySelector(\"#debug.detection\");\r\n _canvas.dom.frequency = document.querySelector(\"canvas.frequency\");\r\n if (!_canvas.dom.frequency) {\r\n _canvas.dom.frequency = document.createElement(\"canvas\");\r\n _canvas.dom.frequency.className = \"frequency\";\r\n if ($debug) {\r\n $debug.appendChild(_canvas.dom.frequency);\r\n }\r\n }\r\n _canvas.ctx.frequency = _canvas.dom.frequency.getContext(\"2d\");\r\n\r\n _canvas.dom.pattern = document.querySelector(\"canvas.patternBuffer\");\r\n if (!_canvas.dom.pattern) {\r\n _canvas.dom.pattern = document.createElement(\"canvas\");\r\n _canvas.dom.pattern.className = \"patternBuffer\";\r\n if ($debug) {\r\n $debug.appendChild(_canvas.dom.pattern);\r\n }\r\n }\r\n _canvas.ctx.pattern = _canvas.dom.pattern.getContext(\"2d\");\r\n\r\n _canvas.dom.overlay = document.querySelector(\"canvas.drawingBuffer\");\r\n if (_canvas.dom.overlay) {\r\n _canvas.ctx.overlay = _canvas.dom.overlay.getContext(\"2d\");\r\n }\r\n }\r\n }\r\n\r\n function initReaders() {\r\n config.readers.forEach(function(readerConfig) {\r\n var reader,\r\n configuration = {},\r\n supplements = [];\r\n\r\n if (typeof readerConfig === 'object') {\r\n reader = readerConfig.format;\r\n configuration = readerConfig.config;\r\n } else if (typeof readerConfig === 'string') {\r\n reader = readerConfig;\r\n }\r\n if (ENV.development) {\r\n console.log(\"Before registering reader: \", reader);\r\n }\r\n if (configuration.supplements) {\r\n supplements = configuration\r\n .supplements.map((supplement) => {\r\n return new READERS[supplement]();\r\n });\r\n }\r\n _barcodeReaders.push(new READERS[reader](configuration, supplements));\r\n });\r\n if (ENV.development) {\r\n console.log(\"Registered Readers: \" + _barcodeReaders\r\n .map((reader) => JSON.stringify({format: reader.FORMAT, config: reader.config}))\r\n .join(', '));\r\n }\r\n }\r\n\r\n function initConfig() {\r\n if (ENV.development && typeof document !== 'undefined') {\r\n var i,\r\n vis = [{\r\n node: _canvas.dom.frequency,\r\n prop: config.debug.showFrequency\r\n }, {\r\n node: _canvas.dom.pattern,\r\n prop: config.debug.showPattern\r\n }];\r\n\r\n for (i = 0; i < vis.length; i++) {\r\n if (vis[i].prop === true) {\r\n vis[i].node.style.display = \"block\";\r\n } else {\r\n vis[i].node.style.display = \"none\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * extend the line on both ends\r\n * @param {Array} line\r\n * @param {Number} angle\r\n */\r\n function getExtendedLine(line, angle, ext) {\r\n function extendLine(amount) {\r\n var extension = {\r\n y: amount * Math.sin(angle),\r\n x: amount * Math.cos(angle)\r\n };\r\n\r\n line[0].y -= extension.y;\r\n line[0].x -= extension.x;\r\n line[1].y += extension.y;\r\n line[1].x += extension.x;\r\n }\r\n\r\n // check if inside image\r\n extendLine(ext);\r\n while (ext > 1 && (!inputImageWrapper.inImageWithBorder(line[0], 0)\r\n || !inputImageWrapper.inImageWithBorder(line[1], 0))) {\r\n ext -= Math.ceil(ext / 2);\r\n extendLine(-ext);\r\n }\r\n return line;\r\n }\r\n\r\n function getLine(box) {\r\n return [{\r\n x: (box[1][0] - box[0][0]) / 2 + box[0][0],\r\n y: (box[1][1] - box[0][1]) / 2 + box[0][1]\r\n }, {\r\n x: (box[3][0] - box[2][0]) / 2 + box[2][0],\r\n y: (box[3][1] - box[2][1]) / 2 + box[2][1]\r\n }];\r\n }\r\n\r\n function tryDecode(line) {\r\n var result = null,\r\n i,\r\n barcodeLine = Bresenham.getBarcodeLine(inputImageWrapper, line[0], line[1]);\r\n\r\n if (ENV.development && config.debug.showFrequency) {\r\n ImageDebug.drawPath(line, {x: 'x', y: 'y'}, _canvas.ctx.overlay, {color: 'red', lineWidth: 3});\r\n Bresenham.debug.printFrequency(barcodeLine.line, _canvas.dom.frequency);\r\n }\r\n\r\n Bresenham.toBinaryLine(barcodeLine);\r\n\r\n if (ENV.development && config.debug.showPattern) {\r\n Bresenham.debug.printPattern(barcodeLine.line, _canvas.dom.pattern);\r\n }\r\n\r\n for ( i = 0; i < _barcodeReaders.length && result === null; i++) {\r\n result = _barcodeReaders[i].decodePattern(barcodeLine.line);\r\n }\r\n if (result === null){\r\n return null;\r\n }\r\n return {\r\n codeResult: result,\r\n barcodeLine: barcodeLine\r\n };\r\n }\r\n\r\n /**\r\n * This method slices the given area apart and tries to detect a barcode-pattern\r\n * for each slice. It returns the decoded barcode, or null if nothing was found\r\n * @param {Array} box\r\n * @param {Array} line\r\n * @param {Number} lineAngle\r\n */\r\n function tryDecodeBruteForce(box, line, lineAngle) {\r\n var sideLength = Math.sqrt(Math.pow(box[1][0] - box[0][0], 2) + Math.pow((box[1][1] - box[0][1]), 2)),\r\n i,\r\n slices = 16,\r\n result = null,\r\n dir,\r\n extension,\r\n xdir = Math.sin(lineAngle),\r\n ydir = Math.cos(lineAngle);\r\n\r\n for ( i = 1; i < slices && result === null; i++) {\r\n // move line perpendicular to angle\r\n dir = sideLength / slices * i * (i % 2 === 0 ? -1 : 1);\r\n extension = {\r\n y: dir * xdir,\r\n x: dir * ydir\r\n };\r\n line[0].y += extension.x;\r\n line[0].x -= extension.y;\r\n line[1].y += extension.x;\r\n line[1].x -= extension.y;\r\n\r\n result = tryDecode(line);\r\n }\r\n return result;\r\n }\r\n\r\n function getLineLength(line) {\r\n return Math.sqrt(\r\n Math.pow(Math.abs(line[1].y - line[0].y), 2) +\r\n Math.pow(Math.abs(line[1].x - line[0].x), 2));\r\n }\r\n\r\n /**\r\n * With the help of the configured readers (Code128 or EAN) this function tries to detect a\r\n * valid barcode pattern within the given area.\r\n * @param {Object} box The area to search in\r\n * @returns {Object} the result {codeResult, line, angle, pattern, threshold}\r\n */\r\n function decodeFromBoundingBox(box) {\r\n var line,\r\n lineAngle,\r\n ctx = _canvas.ctx.overlay,\r\n result,\r\n lineLength;\r\n\r\n if (ENV.development) {\r\n if (config.debug.drawBoundingBox && ctx) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, ctx, {color: \"blue\", lineWidth: 2});\r\n }\r\n }\r\n\r\n line = getLine(box);\r\n lineLength = getLineLength(line);\r\n lineAngle = Math.atan2(line[1].y - line[0].y, line[1].x - line[0].x);\r\n line = getExtendedLine(line, lineAngle, Math.floor(lineLength * 0.1));\r\n if (line === null){\r\n return null;\r\n }\r\n\r\n result = tryDecode(line);\r\n if (result === null) {\r\n result = tryDecodeBruteForce(box, line, lineAngle);\r\n }\r\n\r\n if (result === null) {\r\n return null;\r\n }\r\n\r\n if (ENV.development && result && config.debug.drawScanline && ctx) {\r\n ImageDebug.drawPath(line, {x: 'x', y: 'y'}, ctx, {color: 'red', lineWidth: 3});\r\n }\r\n\r\n return {\r\n codeResult: result.codeResult,\r\n line: line,\r\n angle: lineAngle,\r\n pattern: result.barcodeLine.line,\r\n threshold: result.barcodeLine.threshold\r\n };\r\n }\r\n\r\n return {\r\n decodeFromBoundingBox: function(box) {\r\n return decodeFromBoundingBox(box);\r\n },\r\n decodeFromBoundingBoxes: function(boxes) {\r\n var i, result,\r\n barcodes = [],\r\n multiple = config.multiple;\r\n\r\n for ( i = 0; i < boxes.length; i++) {\r\n const box = boxes[i];\r\n result = decodeFromBoundingBox(box) || {};\r\n result.box = box;\r\n\r\n if (multiple) {\r\n barcodes.push(result);\r\n } else if (result.codeResult) {\r\n return result;\r\n }\r\n }\r\n\r\n if (multiple) {\r\n return {\r\n barcodes\r\n };\r\n }\r\n },\r\n setReaders: function(readers) {\r\n config.readers = readers;\r\n _barcodeReaders.length = 0;\r\n initReaders();\r\n }\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/decoder/barcode_decoder.js\n **/","var Bresenham = {};\r\n\r\nvar Slope = {\r\n DIR: {\r\n UP: 1,\r\n DOWN: -1\r\n }\r\n};\r\n/**\r\n * Scans a line of the given image from point p1 to p2 and returns a result object containing\r\n * gray-scale values (0-255) of the underlying pixels in addition to the min\r\n * and max values.\r\n * @param {Object} imageWrapper\r\n * @param {Object} p1 The start point {x,y}\r\n * @param {Object} p2 The end point {x,y}\r\n * @returns {line, min, max}\r\n */\r\nBresenham.getBarcodeLine = function(imageWrapper, p1, p2) {\r\n var x0 = p1.x | 0,\r\n y0 = p1.y | 0,\r\n x1 = p2.x | 0,\r\n y1 = p2.y | 0,\r\n steep = Math.abs(y1 - y0) > Math.abs(x1 - x0),\r\n deltax,\r\n deltay,\r\n error,\r\n ystep,\r\n y,\r\n tmp,\r\n x,\r\n line = [],\r\n imageData = imageWrapper.data,\r\n width = imageWrapper.size.x,\r\n sum = 0,\r\n val,\r\n min = 255,\r\n max = 0;\r\n\r\n function read(a, b) {\r\n val = imageData[b * width + a];\r\n sum += val;\r\n min = val < min ? val : min;\r\n max = val > max ? val : max;\r\n line.push(val);\r\n }\r\n\r\n if (steep) {\r\n tmp = x0;\r\n x0 = y0;\r\n y0 = tmp;\r\n\r\n tmp = x1;\r\n x1 = y1;\r\n y1 = tmp;\r\n }\r\n if (x0 > x1) {\r\n tmp = x0;\r\n x0 = x1;\r\n x1 = tmp;\r\n\r\n tmp = y0;\r\n y0 = y1;\r\n y1 = tmp;\r\n }\r\n deltax = x1 - x0;\r\n deltay = Math.abs(y1 - y0);\r\n error = (deltax / 2) | 0;\r\n y = y0;\r\n ystep = y0 < y1 ? 1 : -1;\r\n for ( x = x0; x < x1; x++) {\r\n if (steep){\r\n read(y, x);\r\n } else {\r\n read(x, y);\r\n }\r\n error = error - deltay;\r\n if (error < 0) {\r\n y = y + ystep;\r\n error = error + deltax;\r\n }\r\n }\r\n\r\n return {\r\n line: line,\r\n min: min,\r\n max: max\r\n };\r\n};\r\n\r\n/**\r\n * Converts the result from getBarcodeLine into a binary representation\r\n * also considering the frequency and slope of the signal for more robust results\r\n * @param {Object} result {line, min, max}\r\n */\r\nBresenham.toBinaryLine = function(result) {\r\n var min = result.min,\r\n max = result.max,\r\n line = result.line,\r\n slope,\r\n slope2,\r\n center = min + (max - min) / 2,\r\n extrema = [],\r\n currentDir,\r\n dir,\r\n threshold = (max - min) / 12,\r\n rThreshold = -threshold,\r\n i,\r\n j;\r\n\r\n // 1. find extrema\r\n currentDir = line[0] > center ? Slope.DIR.UP : Slope.DIR.DOWN;\r\n extrema.push({\r\n pos: 0,\r\n val: line[0]\r\n });\r\n for ( i = 0; i < line.length - 2; i++) {\r\n slope = (line[i + 1] - line[i]);\r\n slope2 = (line[i + 2] - line[i + 1]);\r\n if ((slope + slope2) < rThreshold && line[i + 1] < (center * 1.5)) {\r\n dir = Slope.DIR.DOWN;\r\n } else if ((slope + slope2) > threshold && line[i + 1] > (center * 0.5)) {\r\n dir = Slope.DIR.UP;\r\n } else {\r\n dir = currentDir;\r\n }\r\n\r\n if (currentDir !== dir) {\r\n extrema.push({\r\n pos: i,\r\n val: line[i]\r\n });\r\n currentDir = dir;\r\n }\r\n }\r\n extrema.push({\r\n pos: line.length,\r\n val: line[line.length - 1]\r\n });\r\n\r\n for ( j = extrema[0].pos; j < extrema[1].pos; j++) {\r\n line[j] = line[j] > center ? 0 : 1;\r\n }\r\n\r\n // iterate over extrema and convert to binary based on avg between minmax\r\n for ( i = 1; i < extrema.length - 1; i++) {\r\n if (extrema[i + 1].val > extrema[i].val) {\r\n threshold = (extrema[i].val + ((extrema[i + 1].val - extrema[i].val) / 3) * 2) | 0;\r\n } else {\r\n threshold = (extrema[i + 1].val + ((extrema[i].val - extrema[i + 1].val) / 3)) | 0;\r\n }\r\n\r\n for ( j = extrema[i].pos; j < extrema[i + 1].pos; j++) {\r\n line[j] = line[j] > threshold ? 0 : 1;\r\n }\r\n }\r\n\r\n return {\r\n line: line,\r\n threshold: threshold\r\n };\r\n};\r\n\r\n/**\r\n * Used for development only\r\n */\r\nBresenham.debug = {\r\n printFrequency: function(line, canvas) {\r\n var i,\r\n ctx = canvas.getContext(\"2d\");\r\n canvas.width = line.length;\r\n canvas.height = 256;\r\n\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"blue\";\r\n for ( i = 0; i < line.length; i++) {\r\n ctx.moveTo(i, 255);\r\n ctx.lineTo(i, 255 - line[i]);\r\n }\r\n ctx.stroke();\r\n ctx.closePath();\r\n },\r\n\r\n printPattern: function(line, canvas) {\r\n var ctx = canvas.getContext(\"2d\"), i;\r\n\r\n canvas.width = line.length;\r\n ctx.fillColor = \"black\";\r\n for ( i = 0; i < line.length; i++) {\r\n if (line[i] === 1) {\r\n ctx.fillRect(i, 0, 1, 100);\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default Bresenham;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/decoder/bresenham.js\n **/","import {merge, pick} from 'lodash';\r\n\r\nvar streamRef;\r\n\r\nfunction waitForVideo(video) {\r\n return new Promise((resolve, reject) => {\r\n let attempts = 10;\r\n\r\n function checkVideo() {\r\n if (attempts > 0) {\r\n if (video.videoWidth > 0 && video.videoHeight > 0) {\r\n if (ENV.development) {\r\n console.log(video.videoWidth + \"px x \" + video.videoHeight + \"px\");\r\n }\r\n resolve();\r\n } else {\r\n window.setTimeout(checkVideo, 500);\r\n }\r\n } else {\r\n reject('Unable to play video stream. Is webcam working?');\r\n }\r\n attempts--;\r\n }\r\n checkVideo();\r\n });\r\n}\r\n\r\n/**\r\n * Tries to attach the camera-stream to a given video-element\r\n * and calls the callback function when the content is ready\r\n * @param {Object} constraints\r\n * @param {Object} video\r\n */\r\nfunction initCamera(video, constraints) {\r\n return navigator.mediaDevices.getUserMedia(constraints)\r\n .then((stream) => {\r\n return new Promise((resolve) => {\r\n streamRef = stream;\r\n video.setAttribute(\"autoplay\", 'true');\r\n video.srcObject = stream;\r\n video.addEventListener('loadedmetadata', () => {\r\n video.play();\r\n resolve();\r\n });\r\n });\r\n })\r\n .then(waitForVideo.bind(null, video));\r\n}\r\n\r\nfunction deprecatedConstraints(videoConstraints) {\r\n const normalized = pick(videoConstraints, [\"width\", \"height\", \"facingMode\",\r\n \"aspectRatio\", \"deviceId\"]);\r\n\r\n if (typeof videoConstraints.minAspectRatio !== 'undefined' &&\r\n videoConstraints.minAspectRatio > 0) {\r\n normalized.aspectRatio = videoConstraints.minAspectRatio;\r\n console.log(\"WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead\");\r\n }\r\n if (typeof videoConstraints.facing !== 'undefined') {\r\n normalized.facingMode = videoConstraints.facing;\r\n console.log(\"WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'\");\r\n }\r\n return normalized;\r\n}\r\n\r\nfunction applyCameraFacing(facing, constraints) {\r\n if (typeof constraints.video.deviceId !== 'undefined' || !facing){\r\n return Promise.resolve(constraints);\r\n }\r\n if ( typeof MediaStreamTrack !== 'undefined' &&\r\n typeof MediaStreamTrack.getSources !== 'undefined') {\r\n return new Promise((resolve) => {\r\n MediaStreamTrack.getSources((sourceInfos) => {\r\n const videoSource = sourceInfos.filter((sourceInfo) => (\r\n sourceInfo.kind === \"video\" && sourceInfo.facing === facing\r\n ))[0];\r\n if (videoSource) {\r\n return resolve(merge({}, constraints,\r\n {video: {deviceId: videoSource.id}}));\r\n }\r\n return resolve(constraints);\r\n });\r\n });\r\n }\r\n return Promise.resolve(merge({}, constraints, {video: {facingMode: facing}}));\r\n}\r\n\r\nfunction pickConstraints(videoConstraints) {\r\n const constraints = {\r\n audio: false,\r\n video: deprecatedConstraints(videoConstraints)\r\n };\r\n return applyCameraFacing(constraints.video.facingMode, constraints);\r\n}\r\n\r\nexport default {\r\n request: function(video, videoConstraints) {\r\n return pickConstraints(videoConstraints)\r\n .then(initCamera.bind(null, video));\r\n },\r\n release: function() {\r\n var tracks = streamRef && streamRef.getVideoTracks();\r\n if (tracks && tracks.length) {\r\n tracks[0].stop();\r\n }\r\n streamRef = null;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/input/camera_access.js\n **/","import {\r\n imageRef,\r\n grayAndHalfSampleFromCanvasData,\r\n computeGray\r\n} from '../common/cv_utils';\r\n\r\nfunction adjustCanvasSize(canvas, targetSize) {\r\n if (canvas.width !== targetSize.x) {\r\n if (ENV.development) {\r\n console.log(\"WARNING: canvas-size needs to be adjusted\");\r\n }\r\n canvas.width = targetSize.x;\r\n }\r\n if (canvas.height !== targetSize.y) {\r\n if (ENV.development) {\r\n console.log(\"WARNING: canvas-size needs to be adjusted\");\r\n }\r\n canvas.height = targetSize.y;\r\n }\r\n}\r\n\r\nvar FrameGrabber = {};\r\n\r\nFrameGrabber.create = function(inputStream, canvas) {\r\n var _that = {},\r\n _streamConfig = inputStream.getConfig(),\r\n _video_size = imageRef(inputStream.getRealWidth(), inputStream.getRealHeight()),\r\n _canvasSize = inputStream.getCanvasSize(),\r\n _size = imageRef(inputStream.getWidth(), inputStream.getHeight()),\r\n topRight = inputStream.getTopRight(),\r\n _sx = topRight.x,\r\n _sy = topRight.y,\r\n _canvas,\r\n _ctx = null,\r\n _data = null;\r\n\r\n _canvas = canvas ? canvas : document.createElement(\"canvas\");\r\n _canvas.width = _canvasSize.x;\r\n _canvas.height = _canvasSize.y;\r\n _ctx = _canvas.getContext(\"2d\");\r\n _data = new Uint8Array(_size.x * _size.y);\r\n if (ENV.development) {\r\n console.log(\"FrameGrabber\", JSON.stringify({\r\n size: _size,\r\n topRight: topRight,\r\n videoSize: _video_size,\r\n canvasSize: _canvasSize\r\n }));\r\n }\r\n\r\n /**\r\n * Uses the given array as frame-buffer\r\n */\r\n _that.attachData = function(data) {\r\n _data = data;\r\n };\r\n\r\n /**\r\n * Returns the used frame-buffer\r\n */\r\n _that.getData = function() {\r\n return _data;\r\n };\r\n\r\n /**\r\n * Fetches a frame from the input-stream and puts into the frame-buffer.\r\n * The image-data is converted to gray-scale and then half-sampled if configured.\r\n */\r\n _that.grab = function() {\r\n var doHalfSample = _streamConfig.halfSample,\r\n frame = inputStream.getFrame(),\r\n ctxData;\r\n if (frame) {\r\n adjustCanvasSize(_canvas, _canvasSize);\r\n _ctx.drawImage(frame, 0, 0, _canvasSize.x, _canvasSize.y);\r\n ctxData = _ctx.getImageData(_sx, _sy, _size.x, _size.y).data;\r\n if (doHalfSample){\r\n grayAndHalfSampleFromCanvasData(ctxData, _size, _data);\r\n } else {\r\n computeGray(ctxData, _data, _streamConfig);\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n _that.getSize = function() {\r\n return _size;\r\n };\r\n\r\n return _that;\r\n};\r\n\r\nexport default FrameGrabber;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/input/frame_grabber.js\n **/","var ImageLoader = {};\r\nImageLoader.load = function(directory, callback, offset, size, sequence) {\r\n var htmlImagesSrcArray = new Array(size),\r\n htmlImagesArray = new Array(htmlImagesSrcArray.length),\r\n i,\r\n img,\r\n num;\r\n\r\n if (sequence === false) {\r\n htmlImagesSrcArray[0] = directory;\r\n } else {\r\n for ( i = 0; i < htmlImagesSrcArray.length; i++) {\r\n num = (offset + i);\r\n htmlImagesSrcArray[i] = directory + \"image-\" + (\"00\" + num).slice(-3) + \".jpg\";\r\n }\r\n }\r\n htmlImagesArray.notLoaded = [];\r\n htmlImagesArray.addImage = function(image) {\r\n htmlImagesArray.notLoaded.push(image);\r\n };\r\n htmlImagesArray.loaded = function(loadedImg) {\r\n var notloadedImgs = htmlImagesArray.notLoaded;\r\n for (var x = 0; x < notloadedImgs.length; x++) {\r\n if (notloadedImgs[x] === loadedImg) {\r\n notloadedImgs.splice(x, 1);\r\n for (var y = 0; y < htmlImagesSrcArray.length; y++) {\r\n var imgName = htmlImagesSrcArray[y].substr(htmlImagesSrcArray[y].lastIndexOf(\"/\"));\r\n if (loadedImg.src.lastIndexOf(imgName) !== -1) {\r\n htmlImagesArray[y] = loadedImg;\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n if (notloadedImgs.length === 0) {\r\n if (ENV.development) {\r\n console.log(\"Images loaded\");\r\n }\r\n callback.apply(null, [htmlImagesArray]);\r\n }\r\n };\r\n\r\n for ( i = 0; i < htmlImagesSrcArray.length; i++) {\r\n img = new Image();\r\n htmlImagesArray.addImage(img);\r\n addOnloadHandler(img, htmlImagesArray);\r\n img.src = htmlImagesSrcArray[i];\r\n }\r\n};\r\n\r\nfunction addOnloadHandler(img, htmlImagesArray) {\r\n img.onload = function() {\r\n htmlImagesArray.loaded(this);\r\n };\r\n}\r\n\r\nexport default (ImageLoader);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/input/image_loader.js\n **/","import ImageLoader from './image_loader';\r\n\r\nvar InputStream = {};\r\nInputStream.createVideoStream = function(video) {\r\n var that = {},\r\n _config = null,\r\n _eventNames = ['canrecord', 'ended'],\r\n _eventHandlers = {},\r\n _calculatedWidth,\r\n _calculatedHeight,\r\n _topRight = {x: 0, y: 0},\r\n _canvasSize = {x: 0, y: 0};\r\n\r\n function initSize() {\r\n var width = video.videoWidth,\r\n height = video.videoHeight;\r\n\r\n _calculatedWidth =\r\n _config.size ? width / height > 1 ? _config.size : Math.floor((width / height) * _config.size) : width;\r\n _calculatedHeight =\r\n _config.size ? width / height > 1 ? Math.floor((height / width) * _config.size) : _config.size : height;\r\n\r\n _canvasSize.x = _calculatedWidth;\r\n _canvasSize.y = _calculatedHeight;\r\n }\r\n\r\n that.getRealWidth = function() {\r\n return video.videoWidth;\r\n };\r\n\r\n that.getRealHeight = function() {\r\n return video.videoHeight;\r\n };\r\n\r\n that.getWidth = function() {\r\n return _calculatedWidth;\r\n };\r\n\r\n that.getHeight = function() {\r\n return _calculatedHeight;\r\n };\r\n\r\n that.setWidth = function(width) {\r\n _calculatedWidth = width;\r\n };\r\n\r\n that.setHeight = function(height) {\r\n _calculatedHeight = height;\r\n };\r\n\r\n that.setInputStream = function(config) {\r\n _config = config;\r\n video.src = (typeof config.src !== 'undefined') ? config.src : '';\r\n };\r\n\r\n that.ended = function() {\r\n return video.ended;\r\n };\r\n\r\n that.getConfig = function() {\r\n return _config;\r\n };\r\n\r\n that.setAttribute = function(name, value) {\r\n video.setAttribute(name, value);\r\n };\r\n\r\n that.pause = function() {\r\n video.pause();\r\n };\r\n\r\n that.play = function() {\r\n video.play();\r\n };\r\n\r\n that.setCurrentTime = function(time) {\r\n if (_config.type !== \"LiveStream\") {\r\n video.currentTime = time;\r\n }\r\n };\r\n\r\n that.addEventListener = function(event, f, bool) {\r\n if (_eventNames.indexOf(event) !== -1) {\r\n if (!_eventHandlers[event]) {\r\n _eventHandlers[event] = [];\r\n }\r\n _eventHandlers[event].push(f);\r\n } else {\r\n video.addEventListener(event, f, bool);\r\n }\r\n };\r\n\r\n that.clearEventHandlers = function() {\r\n _eventNames.forEach(function(eventName) {\r\n var handlers = _eventHandlers[eventName];\r\n if (handlers && handlers.length > 0) {\r\n handlers.forEach(function(handler) {\r\n video.removeEventListener(eventName, handler);\r\n });\r\n }\r\n });\r\n };\r\n\r\n that.trigger = function(eventName, args) {\r\n var j,\r\n handlers = _eventHandlers[eventName];\r\n\r\n if (eventName === 'canrecord') {\r\n initSize();\r\n }\r\n if (handlers && handlers.length > 0) {\r\n for ( j = 0; j < handlers.length; j++) {\r\n handlers[j].apply(that, args);\r\n }\r\n }\r\n };\r\n\r\n that.setTopRight = function(topRight) {\r\n _topRight.x = topRight.x;\r\n _topRight.y = topRight.y;\r\n };\r\n\r\n that.getTopRight = function() {\r\n return _topRight;\r\n };\r\n\r\n that.setCanvasSize = function(size) {\r\n _canvasSize.x = size.x;\r\n _canvasSize.y = size.y;\r\n };\r\n\r\n that.getCanvasSize = function() {\r\n return _canvasSize;\r\n };\r\n\r\n that.getFrame = function() {\r\n return video;\r\n };\r\n\r\n return that;\r\n};\r\n\r\nInputStream.createLiveStream = function(video) {\r\n video.setAttribute(\"autoplay\", true);\r\n var that = InputStream.createVideoStream(video);\r\n\r\n that.ended = function() {\r\n return false;\r\n };\r\n\r\n return that;\r\n};\r\n\r\nInputStream.createImageStream = function() {\r\n var that = {};\r\n var _config = null;\r\n\r\n var width = 0,\r\n height = 0,\r\n frameIdx = 0,\r\n paused = true,\r\n loaded = false,\r\n imgArray = null,\r\n size = 0,\r\n offset = 1,\r\n baseUrl = null,\r\n ended = false,\r\n calculatedWidth,\r\n calculatedHeight,\r\n _eventNames = ['canrecord', 'ended'],\r\n _eventHandlers = {},\r\n _topRight = {x: 0, y: 0},\r\n _canvasSize = {x: 0, y: 0};\r\n\r\n function loadImages() {\r\n loaded = false;\r\n ImageLoader.load(baseUrl, function(imgs) {\r\n imgArray = imgs;\r\n width = imgs[0].width;\r\n height = imgs[0].height;\r\n calculatedWidth =\r\n _config.size ? width / height > 1 ? _config.size : Math.floor((width / height) * _config.size) : width;\r\n calculatedHeight =\r\n _config.size ? width / height > 1 ? Math.floor((height / width) * _config.size) : _config.size : height;\r\n _canvasSize.x = calculatedWidth;\r\n _canvasSize.y = calculatedHeight;\r\n loaded = true;\r\n frameIdx = 0;\r\n setTimeout(function() {\r\n publishEvent(\"canrecord\", []);\r\n }, 0);\r\n }, offset, size, _config.sequence);\r\n }\r\n\r\n function publishEvent(eventName, args) {\r\n var j,\r\n handlers = _eventHandlers[eventName];\r\n\r\n if (handlers && handlers.length > 0) {\r\n for ( j = 0; j < handlers.length; j++) {\r\n handlers[j].apply(that, args);\r\n }\r\n }\r\n }\r\n\r\n\r\n that.trigger = publishEvent;\r\n\r\n that.getWidth = function() {\r\n return calculatedWidth;\r\n };\r\n\r\n that.getHeight = function() {\r\n return calculatedHeight;\r\n };\r\n\r\n that.setWidth = function(newWidth) {\r\n calculatedWidth = newWidth;\r\n };\r\n\r\n that.setHeight = function(newHeight) {\r\n calculatedHeight = newHeight;\r\n };\r\n\r\n that.getRealWidth = function() {\r\n return width;\r\n };\r\n\r\n that.getRealHeight = function() {\r\n return height;\r\n };\r\n\r\n that.setInputStream = function(stream) {\r\n _config = stream;\r\n if (stream.sequence === false) {\r\n baseUrl = stream.src;\r\n size = 1;\r\n } else {\r\n baseUrl = stream.src;\r\n size = stream.length;\r\n }\r\n loadImages();\r\n };\r\n\r\n that.ended = function() {\r\n return ended;\r\n };\r\n\r\n that.setAttribute = function() {};\r\n\r\n that.getConfig = function() {\r\n return _config;\r\n };\r\n\r\n that.pause = function() {\r\n paused = true;\r\n };\r\n\r\n that.play = function() {\r\n paused = false;\r\n };\r\n\r\n that.setCurrentTime = function(time) {\r\n frameIdx = time;\r\n };\r\n\r\n that.addEventListener = function(event, f) {\r\n if (_eventNames.indexOf(event) !== -1) {\r\n if (!_eventHandlers[event]) {\r\n _eventHandlers[event] = [];\r\n }\r\n _eventHandlers[event].push(f);\r\n }\r\n };\r\n\r\n that.setTopRight = function(topRight) {\r\n _topRight.x = topRight.x;\r\n _topRight.y = topRight.y;\r\n };\r\n\r\n that.getTopRight = function() {\r\n return _topRight;\r\n };\r\n\r\n that.setCanvasSize = function(canvasSize) {\r\n _canvasSize.x = canvasSize.x;\r\n _canvasSize.y = canvasSize.y;\r\n };\r\n\r\n that.getCanvasSize = function() {\r\n return _canvasSize;\r\n };\r\n\r\n that.getFrame = function() {\r\n var frame;\r\n\r\n if (!loaded){\r\n return null;\r\n }\r\n if (!paused) {\r\n frame = imgArray[frameIdx];\r\n if (frameIdx < (size - 1)) {\r\n frameIdx++;\r\n } else {\r\n setTimeout(function() {\r\n ended = true;\r\n publishEvent(\"ended\", []);\r\n }, 0);\r\n }\r\n }\r\n return frame;\r\n };\r\n\r\n return that;\r\n};\r\n\r\nexport default InputStream;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/input/input_stream.js\n **/","import ImageWrapper from '../common/image_wrapper';\r\nimport {\r\n calculatePatchSize,\r\n otsuThreshold,\r\n hsv2rgb,\r\n cluster,\r\n topGeneric,\r\n imageRef,\r\n halfSample,\r\n computeImageArea\r\n} from '../common/cv_utils';\r\nimport ArrayHelper from '../common/array_helper';\r\nimport ImageDebug from '../common/image_debug';\r\nimport Rasterizer from './rasterizer';\r\nimport Tracer from './tracer';\r\nimport skeletonizer from './skeletonizer';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n dot: require('gl-vec2/dot'),\r\n scale: require('gl-vec2/scale'),\r\n transformMat2: require('gl-vec2/transformMat2')\r\n};\r\nconst mat2 = {\r\n copy: require('gl-mat2/copy'),\r\n create: require('gl-mat2/create'),\r\n invert: require('gl-mat2/invert')\r\n};\r\n\r\nexport default function createLocator(inputImageWrapper, config) {\r\n var _config = config,\r\n _currentImageWrapper,\r\n _skelImageWrapper,\r\n _subImageWrapper,\r\n _labelImageWrapper,\r\n _patchGrid,\r\n _patchLabelGrid,\r\n _imageToPatchGrid,\r\n _binaryImageWrapper,\r\n _patchSize,\r\n _canvasContainer = {\r\n ctx: {\r\n binary: null\r\n },\r\n dom: {\r\n binary: null\r\n }\r\n },\r\n _numPatches = {x: 0, y: 0},\r\n _inputImageWrapper = inputImageWrapper,\r\n _skeletonizer;\r\n\r\n initBuffers();\r\n initCanvas();\r\n\r\n function initBuffers() {\r\n var skeletonImageData;\r\n\r\n if (_config.halfSample) {\r\n _currentImageWrapper = new ImageWrapper({\r\n x: _inputImageWrapper.size.x / 2 | 0,\r\n y: _inputImageWrapper.size.y / 2 | 0\r\n });\r\n } else {\r\n _currentImageWrapper = _inputImageWrapper;\r\n }\r\n\r\n _patchSize = calculatePatchSize(_config.patchSize, _currentImageWrapper.size);\r\n\r\n _numPatches.x = _currentImageWrapper.size.x / _patchSize.x | 0;\r\n _numPatches.y = _currentImageWrapper.size.y / _patchSize.y | 0;\r\n\r\n _binaryImageWrapper = new ImageWrapper(_currentImageWrapper.size, undefined, Uint8Array, false);\r\n\r\n _labelImageWrapper = new ImageWrapper(_patchSize, undefined, Array, true);\r\n\r\n skeletonImageData = new ArrayBuffer(64 * 1024);\r\n _subImageWrapper = new ImageWrapper(_patchSize,\r\n new Uint8Array(skeletonImageData, 0, _patchSize.x * _patchSize.y));\r\n _skelImageWrapper = new ImageWrapper(_patchSize,\r\n new Uint8Array(skeletonImageData, _patchSize.x * _patchSize.y * 3, _patchSize.x * _patchSize.y),\r\n undefined, true);\r\n _skeletonizer = skeletonizer((typeof window !== 'undefined') ? window : (typeof self !== 'undefined') ? self : global, {\r\n size: _patchSize.x\r\n }, skeletonImageData);\r\n\r\n _imageToPatchGrid = new ImageWrapper({\r\n x: (_currentImageWrapper.size.x / _subImageWrapper.size.x) | 0,\r\n y: (_currentImageWrapper.size.y / _subImageWrapper.size.y) | 0\r\n }, undefined, Array, true);\r\n _patchGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, undefined, true);\r\n _patchLabelGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, Int32Array, true);\r\n }\r\n\r\n function initCanvas() {\r\n if (_config.useWorker || typeof document === 'undefined') {\r\n return;\r\n }\r\n _canvasContainer.dom.binary = document.createElement(\"canvas\");\r\n _canvasContainer.dom.binary.className = \"binaryBuffer\";\r\n if (ENV.development && _config.debug.showCanvas === true) {\r\n document.querySelector(\"#debug\").appendChild(_canvasContainer.dom.binary);\r\n }\r\n _canvasContainer.ctx.binary = _canvasContainer.dom.binary.getContext(\"2d\");\r\n _canvasContainer.dom.binary.width = _binaryImageWrapper.size.x;\r\n _canvasContainer.dom.binary.height = _binaryImageWrapper.size.y;\r\n }\r\n\r\n /**\r\n * Creates a bounding box which encloses all the given patches\r\n * @returns {Array} The minimal bounding box\r\n */\r\n function boxFromPatches(patches) {\r\n var overAvg,\r\n i,\r\n j,\r\n patch,\r\n transMat,\r\n minx =\r\n _binaryImageWrapper.size.x,\r\n miny = _binaryImageWrapper.size.y,\r\n maxx = -_binaryImageWrapper.size.x,\r\n maxy = -_binaryImageWrapper.size.y,\r\n box,\r\n scale;\r\n\r\n // draw all patches which are to be taken into consideration\r\n overAvg = 0;\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n overAvg += patch.rad;\r\n if (ENV.development && _config.debug.showPatches) {\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: \"red\"});\r\n }\r\n }\r\n\r\n overAvg /= patches.length;\r\n overAvg = (overAvg * 180 / Math.PI + 90) % 180 - 90;\r\n if (overAvg < 0) {\r\n overAvg += 180;\r\n }\r\n\r\n overAvg = (180 - overAvg) * Math.PI / 180;\r\n transMat = mat2.copy(mat2.create(), [Math.cos(overAvg), Math.sin(overAvg), -Math.sin(overAvg), Math.cos(overAvg)]);\r\n\r\n // iterate over patches and rotate by angle\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n for ( j = 0; j < 4; j++) {\r\n vec2.transformMat2(patch.box[j], patch.box[j], transMat);\r\n }\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showTransformed) {\r\n ImageDebug.drawPath(patch.box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#99ff00', lineWidth: 2});\r\n }\r\n }\r\n\r\n // find bounding box\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n for ( j = 0; j < 4; j++) {\r\n if (patch.box[j][0] < minx) {\r\n minx = patch.box[j][0];\r\n }\r\n if (patch.box[j][0] > maxx) {\r\n maxx = patch.box[j][0];\r\n }\r\n if (patch.box[j][1] < miny) {\r\n miny = patch.box[j][1];\r\n }\r\n if (patch.box[j][1] > maxy) {\r\n maxy = patch.box[j][1];\r\n }\r\n }\r\n }\r\n\r\n box = [[minx, miny], [maxx, miny], [maxx, maxy], [minx, maxy]];\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showTransformedBox) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2});\r\n }\r\n\r\n scale = _config.halfSample ? 2 : 1;\r\n // reverse rotation;\r\n transMat = mat2.invert(transMat, transMat);\r\n for ( j = 0; j < 4; j++) {\r\n vec2.transformMat2(box[j], box[j], transMat);\r\n }\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showBB) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2});\r\n }\r\n\r\n for ( j = 0; j < 4; j++) {\r\n vec2.scale(box[j], box[j], scale);\r\n }\r\n\r\n return box;\r\n }\r\n\r\n /**\r\n * Creates a binary image of the current image\r\n */\r\n function binarizeImage() {\r\n otsuThreshold(_currentImageWrapper, _binaryImageWrapper);\r\n _binaryImageWrapper.zeroBorder();\r\n if (ENV.development && _config.debug.showCanvas) {\r\n _binaryImageWrapper.show(_canvasContainer.dom.binary, 255);\r\n }\r\n }\r\n\r\n /**\r\n * Iterate over the entire image\r\n * extract patches\r\n */\r\n function findPatches() {\r\n var i,\r\n j,\r\n x,\r\n y,\r\n moments,\r\n patchesFound = [],\r\n rasterizer,\r\n rasterResult,\r\n patch;\r\n for (i = 0; i < _numPatches.x; i++) {\r\n for (j = 0; j < _numPatches.y; j++) {\r\n x = _subImageWrapper.size.x * i;\r\n y = _subImageWrapper.size.y * j;\r\n\r\n // seperate parts\r\n skeletonize(x, y);\r\n\r\n // Rasterize, find individual bars\r\n _skelImageWrapper.zeroBorder();\r\n ArrayHelper.init(_labelImageWrapper.data, 0);\r\n rasterizer = Rasterizer.create(_skelImageWrapper, _labelImageWrapper);\r\n rasterResult = rasterizer.rasterize(0);\r\n\r\n if (ENV.development && _config.debug.showLabels) {\r\n _labelImageWrapper.overlay(_canvasContainer.dom.binary, Math.floor(360 / rasterResult.count),\r\n {x: x, y: y});\r\n }\r\n\r\n // calculate moments from the skeletonized patch\r\n moments = _labelImageWrapper.moments(rasterResult.count);\r\n\r\n // extract eligible patches\r\n patchesFound = patchesFound.concat(describePatch(moments, [i, j], x, y));\r\n }\r\n }\r\n\r\n if (ENV.development && _config.debug.showFoundPatches) {\r\n for ( i = 0; i < patchesFound.length; i++) {\r\n patch = patchesFound[i];\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"#99ff00\", lineWidth: 2});\r\n }\r\n }\r\n\r\n return patchesFound;\r\n }\r\n\r\n /**\r\n * Finds those connected areas which contain at least 6 patches\r\n * and returns them ordered DESC by the number of contained patches\r\n * @param {Number} maxLabel\r\n */\r\n function findBiggestConnectedAreas(maxLabel){\r\n var i,\r\n sum,\r\n labelHist = [],\r\n topLabels = [];\r\n\r\n for ( i = 0; i < maxLabel; i++) {\r\n labelHist.push(0);\r\n }\r\n sum = _patchLabelGrid.data.length;\r\n while (sum--) {\r\n if (_patchLabelGrid.data[sum] > 0) {\r\n labelHist[_patchLabelGrid.data[sum] - 1]++;\r\n }\r\n }\r\n\r\n labelHist = labelHist.map(function(val, idx) {\r\n return {\r\n val: val,\r\n label: idx + 1\r\n };\r\n });\r\n\r\n labelHist.sort(function(a, b) {\r\n return b.val - a.val;\r\n });\r\n\r\n // extract top areas with at least 6 patches present\r\n topLabels = labelHist.filter(function(el) {\r\n return el.val >= 5;\r\n });\r\n\r\n return topLabels;\r\n }\r\n\r\n /**\r\n *\r\n */\r\n function findBoxes(topLabels, maxLabel) {\r\n var i,\r\n j,\r\n sum,\r\n patches = [],\r\n patch,\r\n box,\r\n boxes = [],\r\n hsv = [0, 1, 1],\r\n rgb = [0, 0, 0];\r\n\r\n for ( i = 0; i < topLabels.length; i++) {\r\n sum = _patchLabelGrid.data.length;\r\n patches.length = 0;\r\n while (sum--) {\r\n if (_patchLabelGrid.data[sum] === topLabels[i].label) {\r\n patch = _imageToPatchGrid.data[sum];\r\n patches.push(patch);\r\n }\r\n }\r\n box = boxFromPatches(patches);\r\n if (box) {\r\n boxes.push(box);\r\n\r\n // draw patch-labels if requested\r\n if (ENV.development && _config.debug.showRemainingPatchLabels) {\r\n for ( j = 0; j < patches.length; j++) {\r\n patch = patches[j];\r\n hsv[0] = (topLabels[i].label / (maxLabel + 1)) * 360;\r\n hsv2rgb(hsv, rgb);\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"rgb(\" + rgb.join(\",\") + \")\", lineWidth: 2});\r\n }\r\n }\r\n }\r\n }\r\n return boxes;\r\n }\r\n\r\n /**\r\n * Find similar moments (via cluster)\r\n * @param {Object} moments\r\n */\r\n function similarMoments(moments) {\r\n var clusters = cluster(moments, 0.90);\r\n var topCluster = topGeneric(clusters, 1, function(e) {\r\n return e.getPoints().length;\r\n });\r\n var points = [], result = [];\r\n if (topCluster.length === 1) {\r\n points = topCluster[0].item.getPoints();\r\n for (var i = 0; i < points.length; i++) {\r\n result.push(points[i].point);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function skeletonize(x, y) {\r\n _binaryImageWrapper.subImageAsCopy(_subImageWrapper, imageRef(x, y));\r\n _skeletonizer.skeletonize();\r\n\r\n // Show skeleton if requested\r\n if (ENV.development && _config.debug.showSkeleton) {\r\n _skelImageWrapper.overlay(_canvasContainer.dom.binary, 360, imageRef(x, y));\r\n }\r\n }\r\n\r\n /**\r\n * Extracts and describes those patches which seem to contain a barcode pattern\r\n * @param {Array} moments\r\n * @param {Object} patchPos,\r\n * @param {Number} x\r\n * @param {Number} y\r\n * @returns {Array} list of patches\r\n */\r\n function describePatch(moments, patchPos, x, y) {\r\n var k,\r\n avg,\r\n eligibleMoments = [],\r\n matchingMoments,\r\n patch,\r\n patchesFound = [],\r\n minComponentWeight = Math.ceil(_patchSize.x / 3);\r\n\r\n if (moments.length >= 2) {\r\n // only collect moments which's area covers at least minComponentWeight pixels.\r\n for ( k = 0; k < moments.length; k++) {\r\n if (moments[k].m00 > minComponentWeight) {\r\n eligibleMoments.push(moments[k]);\r\n }\r\n }\r\n\r\n // if at least 2 moments are found which have at least minComponentWeights covered\r\n if (eligibleMoments.length >= 2) {\r\n matchingMoments = similarMoments(eligibleMoments);\r\n avg = 0;\r\n // determine the similarity of the moments\r\n for ( k = 0; k < matchingMoments.length; k++) {\r\n avg += matchingMoments[k].rad;\r\n }\r\n\r\n // Only two of the moments are allowed not to fit into the equation\r\n // add the patch to the set\r\n if (matchingMoments.length > 1\r\n && matchingMoments.length >= (eligibleMoments.length / 4) * 3\r\n && matchingMoments.length > moments.length / 4) {\r\n avg /= matchingMoments.length;\r\n patch = {\r\n index: patchPos[1] * _numPatches.x + patchPos[0],\r\n pos: {\r\n x: x,\r\n y: y\r\n },\r\n box: [\r\n vec2.clone([x, y]),\r\n vec2.clone([x + _subImageWrapper.size.x, y]),\r\n vec2.clone([x + _subImageWrapper.size.x, y + _subImageWrapper.size.y]),\r\n vec2.clone([x, y + _subImageWrapper.size.y])\r\n ],\r\n moments: matchingMoments,\r\n rad: avg,\r\n vec: vec2.clone([Math.cos(avg), Math.sin(avg)])\r\n };\r\n patchesFound.push(patch);\r\n }\r\n }\r\n }\r\n return patchesFound;\r\n }\r\n\r\n /**\r\n * finds patches which are connected and share the same orientation\r\n * @param {Object} patchesFound\r\n */\r\n function rasterizeAngularSimilarity(patchesFound) {\r\n var label = 0,\r\n threshold = 0.95,\r\n currIdx = 0,\r\n j,\r\n patch,\r\n hsv = [0, 1, 1],\r\n rgb = [0, 0, 0];\r\n\r\n function notYetProcessed() {\r\n var i;\r\n for ( i = 0; i < _patchLabelGrid.data.length; i++) {\r\n if (_patchLabelGrid.data[i] === 0 && _patchGrid.data[i] === 1) {\r\n return i;\r\n }\r\n }\r\n return _patchLabelGrid.length;\r\n }\r\n\r\n function trace(currentIdx) {\r\n var x,\r\n y,\r\n currentPatch,\r\n idx,\r\n dir,\r\n current = {\r\n x: currentIdx % _patchLabelGrid.size.x,\r\n y: (currentIdx / _patchLabelGrid.size.x) | 0\r\n },\r\n similarity;\r\n\r\n if (currentIdx < _patchLabelGrid.data.length) {\r\n currentPatch = _imageToPatchGrid.data[currentIdx];\r\n // assign label\r\n _patchLabelGrid.data[currentIdx] = label;\r\n for ( dir = 0; dir < Tracer.searchDirections.length; dir++) {\r\n y = current.y + Tracer.searchDirections[dir][0];\r\n x = current.x + Tracer.searchDirections[dir][1];\r\n idx = y * _patchLabelGrid.size.x + x;\r\n\r\n // continue if patch empty\r\n if (_patchGrid.data[idx] === 0) {\r\n _patchLabelGrid.data[idx] = Number.MAX_VALUE;\r\n continue;\r\n }\r\n\r\n if (_patchLabelGrid.data[idx] === 0) {\r\n similarity = Math.abs(vec2.dot(_imageToPatchGrid.data[idx].vec, currentPatch.vec));\r\n if (similarity > threshold) {\r\n trace(idx);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // prepare for finding the right patches\r\n ArrayHelper.init(_patchGrid.data, 0);\r\n ArrayHelper.init(_patchLabelGrid.data, 0);\r\n ArrayHelper.init(_imageToPatchGrid.data, null);\r\n\r\n for ( j = 0; j < patchesFound.length; j++) {\r\n patch = patchesFound[j];\r\n _imageToPatchGrid.data[patch.index] = patch;\r\n _patchGrid.data[patch.index] = 1;\r\n }\r\n\r\n // rasterize the patches found to determine area\r\n _patchGrid.zeroBorder();\r\n\r\n while (( currIdx = notYetProcessed()) < _patchLabelGrid.data.length) {\r\n label++;\r\n trace(currIdx);\r\n }\r\n\r\n // draw patch-labels if requested\r\n if (ENV.development && _config.debug.showPatchLabels) {\r\n for ( j = 0; j < _patchLabelGrid.data.length; j++) {\r\n if (_patchLabelGrid.data[j] > 0 && _patchLabelGrid.data[j] <= label) {\r\n patch = _imageToPatchGrid.data[j];\r\n hsv[0] = (_patchLabelGrid.data[j] / (label + 1)) * 360;\r\n hsv2rgb(hsv, rgb);\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"rgb(\" + rgb.join(\",\") + \")\", lineWidth: 2});\r\n }\r\n }\r\n }\r\n\r\n return label;\r\n }\r\n\r\n return {\r\n locate: function() {\r\n var patchesFound,\r\n topLabels,\r\n boxes;\r\n\r\n if (_config.halfSample) {\r\n halfSample(_inputImageWrapper, _currentImageWrapper);\r\n }\r\n\r\n binarizeImage();\r\n patchesFound = findPatches();\r\n // return unless 5% or more patches are found\r\n if (patchesFound.length < _numPatches.x * _numPatches.y * 0.05) {\r\n return null;\r\n }\r\n\r\n // rasterrize area by comparing angular similarity;\r\n var maxLabel = rasterizeAngularSimilarity(patchesFound);\r\n if (maxLabel < 1) {\r\n return null;\r\n }\r\n\r\n // search for area with the most patches (biggest connected area)\r\n topLabels = findBiggestConnectedAreas(maxLabel);\r\n if (topLabels.length === 0) {\r\n return null;\r\n }\r\n\r\n boxes = findBoxes(topLabels, maxLabel);\r\n return boxes;\r\n }\r\n }\r\n}\r\nexport function checkImageConstraints(inputStream, config) {\r\n var patchSize,\r\n width = inputStream.getWidth(),\r\n height = inputStream.getHeight(),\r\n halfSample = config.halfSample ? 0.5 : 1,\r\n size,\r\n area;\r\n\r\n // calculate width and height based on area\r\n if (inputStream.getConfig().area) {\r\n area = computeImageArea(width, height, inputStream.getConfig().area);\r\n inputStream.setTopRight({x: area.sx, y: area.sy});\r\n inputStream.setCanvasSize({x: width, y: height});\r\n width = area.sw;\r\n height = area.sh;\r\n }\r\n\r\n size = {\r\n x: Math.floor(width * halfSample),\r\n y: Math.floor(height * halfSample)\r\n };\r\n\r\n patchSize = calculatePatchSize(config.patchSize, size);\r\n if (ENV.development) {\r\n console.log(\"Patch-Size: \" + JSON.stringify(patchSize));\r\n }\r\n\r\n inputStream.setWidth(Math.floor(Math.floor(size.x / patchSize.x) * (1 / halfSample) * patchSize.x));\r\n inputStream.setHeight(Math.floor(Math.floor(size.y / patchSize.y) * (1 / halfSample) * patchSize.y));\r\n\r\n if ((inputStream.getWidth() % patchSize.x) === 0 && (inputStream.getHeight() % patchSize.y) === 0) {\r\n return true;\r\n }\r\n\r\n throw new Error(\"Image dimensions do not comply with the current settings: Width (\" +\r\n width + \" )and height (\" + height +\r\n \") must a multiple of \" + patchSize.x);\r\n}\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/barcode_locator.js\n **/","import Tracer from './tracer';\r\n\r\n/**\r\n * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization\r\n */\r\nvar Rasterizer = {\r\n createContour2D: function() {\r\n return {\r\n dir: null,\r\n index: null,\r\n firstVertex: null,\r\n insideContours: null,\r\n nextpeer: null,\r\n prevpeer: null\r\n };\r\n },\r\n CONTOUR_DIR: {\r\n CW_DIR: 0,\r\n CCW_DIR: 1,\r\n UNKNOWN_DIR: 2\r\n },\r\n DIR: {\r\n OUTSIDE_EDGE: -32767,\r\n INSIDE_EDGE: -32766\r\n },\r\n create: function(imageWrapper, labelWrapper) {\r\n var imageData = imageWrapper.data,\r\n labelData = labelWrapper.data,\r\n width = imageWrapper.size.x,\r\n height = imageWrapper.size.y,\r\n tracer = Tracer.create(imageWrapper, labelWrapper);\r\n\r\n return {\r\n rasterize: function(depthlabel) {\r\n var color,\r\n bc,\r\n lc,\r\n labelindex,\r\n cx,\r\n cy,\r\n colorMap = [],\r\n vertex,\r\n p,\r\n cc,\r\n sc,\r\n pos,\r\n connectedCount = 0,\r\n i;\r\n\r\n for ( i = 0; i < 400; i++) {\r\n colorMap[i] = 0;\r\n }\r\n\r\n colorMap[0] = imageData[0];\r\n cc = null;\r\n for ( cy = 1; cy < height - 1; cy++) {\r\n labelindex = 0;\r\n bc = colorMap[0];\r\n for ( cx = 1; cx < width - 1; cx++) {\r\n pos = cy * width + cx;\r\n if (labelData[pos] === 0) {\r\n color = imageData[pos];\r\n if (color !== bc) {\r\n if (labelindex === 0) {\r\n lc = connectedCount + 1;\r\n colorMap[lc] = color;\r\n bc = color;\r\n vertex = tracer.contourTracing(cy, cx, lc, color, Rasterizer.DIR.OUTSIDE_EDGE);\r\n if (vertex !== null) {\r\n connectedCount++;\r\n labelindex = lc;\r\n p = Rasterizer.createContour2D();\r\n p.dir = Rasterizer.CONTOUR_DIR.CW_DIR;\r\n p.index = labelindex;\r\n p.firstVertex = vertex;\r\n p.nextpeer = cc;\r\n p.insideContours = null;\r\n if (cc !== null) {\r\n cc.prevpeer = p;\r\n }\r\n cc = p;\r\n }\r\n } else {\r\n vertex = tracer\r\n .contourTracing(cy, cx, Rasterizer.DIR.INSIDE_EDGE, color, labelindex);\r\n if (vertex !== null) {\r\n p = Rasterizer.createContour2D();\r\n p.firstVertex = vertex;\r\n p.insideContours = null;\r\n if (depthlabel === 0) {\r\n p.dir = Rasterizer.CONTOUR_DIR.CCW_DIR;\r\n } else {\r\n p.dir = Rasterizer.CONTOUR_DIR.CW_DIR;\r\n }\r\n p.index = depthlabel;\r\n sc = cc;\r\n while ((sc !== null) && sc.index !== labelindex) {\r\n sc = sc.nextpeer;\r\n }\r\n if (sc !== null) {\r\n p.nextpeer = sc.insideContours;\r\n if (sc.insideContours !== null) {\r\n sc.insideContours.prevpeer = p;\r\n }\r\n sc.insideContours = p;\r\n }\r\n }\r\n }\r\n } else {\r\n labelData[pos] = labelindex;\r\n }\r\n } else if (labelData[pos] === Rasterizer.DIR.OUTSIDE_EDGE\r\n || labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) {\r\n labelindex = 0;\r\n if (labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) {\r\n bc = imageData[pos];\r\n } else {\r\n bc = colorMap[0];\r\n }\r\n } else {\r\n labelindex = labelData[pos];\r\n bc = colorMap[labelindex];\r\n }\r\n }\r\n }\r\n sc = cc;\r\n while (sc !== null) {\r\n sc.index = depthlabel;\r\n sc = sc.nextpeer;\r\n }\r\n return {\r\n cc: cc,\r\n count: connectedCount\r\n };\r\n },\r\n debug: {\r\n drawContour: function(canvas, firstContour) {\r\n var ctx = canvas.getContext(\"2d\"),\r\n pq = firstContour,\r\n iq,\r\n q,\r\n p;\r\n\r\n ctx.strokeStyle = \"red\";\r\n ctx.fillStyle = \"red\";\r\n ctx.lineWidth = 1;\r\n\r\n if (pq !== null) {\r\n iq = pq.insideContours;\r\n } else {\r\n iq = null;\r\n }\r\n\r\n while (pq !== null) {\r\n if (iq !== null) {\r\n q = iq;\r\n iq = iq.nextpeer;\r\n } else {\r\n q = pq;\r\n pq = pq.nextpeer;\r\n if (pq !== null) {\r\n iq = pq.insideContours;\r\n } else {\r\n iq = null;\r\n }\r\n }\r\n\r\n switch (q.dir) {\r\n case Rasterizer.CONTOUR_DIR.CW_DIR:\r\n ctx.strokeStyle = \"red\";\r\n break;\r\n case Rasterizer.CONTOUR_DIR.CCW_DIR:\r\n ctx.strokeStyle = \"blue\";\r\n break;\r\n case Rasterizer.CONTOUR_DIR.UNKNOWN_DIR:\r\n ctx.strokeStyle = \"green\";\r\n break;\r\n }\r\n\r\n p = q.firstVertex;\r\n ctx.beginPath();\r\n ctx.moveTo(p.x, p.y);\r\n do {\r\n p = p.next;\r\n ctx.lineTo(p.x, p.y);\r\n } while (p !== q.firstVertex);\r\n ctx.stroke();\r\n }\r\n }\r\n }\r\n };\r\n }\r\n};\r\n\r\nexport default Rasterizer;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/rasterizer.js\n **/","/* @preserve ASM BEGIN */\r\n/* eslint-disable eqeqeq*/\r\nfunction Skeletonizer(stdlib, foreign, buffer) {\r\n \"use asm\";\r\n\r\n var images = new stdlib.Uint8Array(buffer),\r\n size = foreign.size | 0,\r\n imul = stdlib.Math.imul;\r\n\r\n function erode(inImagePtr, outImagePtr) {\r\n inImagePtr = inImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var v = 0,\r\n u = 0,\r\n sum = 0,\r\n yStart1 = 0,\r\n yStart2 = 0,\r\n xStart1 = 0,\r\n xStart2 = 0,\r\n offset = 0;\r\n\r\n for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) {\r\n offset = (offset + size) | 0;\r\n for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) {\r\n yStart1 = (offset - size) | 0;\r\n yStart2 = (offset + size) | 0;\r\n xStart1 = (u - 1) | 0;\r\n xStart2 = (u + 1) | 0;\r\n sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0)\r\n + (images[(inImagePtr + offset + u) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0;\r\n if ((sum | 0) == (5 | 0)) {\r\n images[(outImagePtr + offset + u) | 0] = 1;\r\n } else {\r\n images[(outImagePtr + offset + u) | 0] = 0;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n\r\n function subtract(aImagePtr, bImagePtr, outImagePtr) {\r\n aImagePtr = aImagePtr | 0;\r\n bImagePtr = bImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(outImagePtr + length) | 0] =\r\n ((images[(aImagePtr + length) | 0] | 0) - (images[(bImagePtr + length) | 0] | 0)) | 0;\r\n }\r\n }\r\n\r\n function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {\r\n aImagePtr = aImagePtr | 0;\r\n bImagePtr = bImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(outImagePtr + length) | 0] =\r\n ((images[(aImagePtr + length) | 0] | 0) | (images[(bImagePtr + length) | 0] | 0)) | 0;\r\n }\r\n }\r\n\r\n function countNonZero(imagePtr) {\r\n imagePtr = imagePtr | 0;\r\n\r\n var sum = 0,\r\n length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n sum = ((sum | 0) + (images[(imagePtr + length) | 0] | 0)) | 0;\r\n }\r\n\r\n return (sum | 0);\r\n }\r\n\r\n function init(imagePtr, value) {\r\n imagePtr = imagePtr | 0;\r\n value = value | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(imagePtr + length) | 0] = value;\r\n }\r\n }\r\n\r\n function dilate(inImagePtr, outImagePtr) {\r\n inImagePtr = inImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var v = 0,\r\n u = 0,\r\n sum = 0,\r\n yStart1 = 0,\r\n yStart2 = 0,\r\n xStart1 = 0,\r\n xStart2 = 0,\r\n offset = 0;\r\n\r\n for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) {\r\n offset = (offset + size) | 0;\r\n for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) {\r\n yStart1 = (offset - size) | 0;\r\n yStart2 = (offset + size) | 0;\r\n xStart1 = (u - 1) | 0;\r\n xStart2 = (u + 1) | 0;\r\n sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0)\r\n + (images[(inImagePtr + offset + u) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0;\r\n if ((sum | 0) > (0 | 0)) {\r\n images[(outImagePtr + offset + u) | 0] = 1;\r\n } else {\r\n images[(outImagePtr + offset + u) | 0] = 0;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n\r\n function memcpy(srcImagePtr, dstImagePtr) {\r\n srcImagePtr = srcImagePtr | 0;\r\n dstImagePtr = dstImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(dstImagePtr + length) | 0] = (images[(srcImagePtr + length) | 0] | 0);\r\n }\r\n }\r\n\r\n function zeroBorder(imagePtr) {\r\n imagePtr = imagePtr | 0;\r\n\r\n var x = 0,\r\n y = 0;\r\n\r\n for ( x = 0; (x | 0) < ((size - 1) | 0); x = (x + 1) | 0) {\r\n images[(imagePtr + x) | 0] = 0;\r\n images[(imagePtr + y) | 0] = 0;\r\n y = ((y + size) - 1) | 0;\r\n images[(imagePtr + y) | 0] = 0;\r\n y = (y + 1) | 0;\r\n }\r\n for ( x = 0; (x | 0) < (size | 0); x = (x + 1) | 0) {\r\n images[(imagePtr + y) | 0] = 0;\r\n y = (y + 1) | 0;\r\n }\r\n }\r\n\r\n function skeletonize() {\r\n var subImagePtr = 0,\r\n erodedImagePtr = 0,\r\n tempImagePtr = 0,\r\n skelImagePtr = 0,\r\n sum = 0,\r\n done = 0;\r\n\r\n erodedImagePtr = imul(size, size) | 0;\r\n tempImagePtr = (erodedImagePtr + erodedImagePtr) | 0;\r\n skelImagePtr = (tempImagePtr + erodedImagePtr) | 0;\r\n\r\n // init skel-image\r\n init(skelImagePtr, 0);\r\n zeroBorder(subImagePtr);\r\n\r\n do {\r\n erode(subImagePtr, erodedImagePtr);\r\n dilate(erodedImagePtr, tempImagePtr);\r\n subtract(subImagePtr, tempImagePtr, tempImagePtr);\r\n bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);\r\n memcpy(erodedImagePtr, subImagePtr);\r\n sum = countNonZero(subImagePtr) | 0;\r\n done = ((sum | 0) == 0 | 0);\r\n } while (!done);\r\n }\r\n return {\r\n skeletonize: skeletonize\r\n };\r\n}\r\n/* @preserve ASM END */\r\nexport default Skeletonizer;\r\n/* eslint-enable eqeqeq*/\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/skeletonizer.js\n **/","import BarcodeReader from './barcode_reader';\r\n\r\nfunction CodabarReader() {\r\n BarcodeReader.call(this);\r\n this._counters = [];\r\n}\r\n\r\nvar properties = {\r\n ALPHABETH_STRING: {value: \"0123456789-$:/.+ABCD\"},\r\n ALPHABET: {value: [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 45, 36, 58, 47, 46, 43, 65, 66, 67, 68]},\r\n CHARACTER_ENCODINGS: {value: [0x003, 0x006, 0x009, 0x060, 0x012, 0x042, 0x021, 0x024, 0x030, 0x048, 0x00c, 0x018,\r\n 0x045, 0x051, 0x054, 0x015, 0x01A, 0x029, 0x00B, 0x00E]},\r\n START_END: {value: [0x01A, 0x029, 0x00B, 0x00E]},\r\n MIN_ENCODED_CHARS: {value: 4},\r\n MAX_ACCEPTABLE: {value: 2.0},\r\n PADDING: {value: 1.5},\r\n FORMAT: {value: \"codabar\", writeable: false}\r\n};\r\n\r\nCodabarReader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCodabarReader.prototype.constructor = CodabarReader;\r\n\r\nCodabarReader.prototype._decode = function() {\r\n var self = this,\r\n result = [],\r\n start,\r\n decodedChar,\r\n pattern,\r\n nextStart,\r\n end;\r\n\r\n this._counters = self._fillCounters();\r\n start = self._findStart();\r\n if (!start) {\r\n return null;\r\n }\r\n nextStart = start.startCounter;\r\n\r\n do {\r\n pattern = self._toPattern(nextStart);\r\n if (pattern < 0) {\r\n return null;\r\n }\r\n decodedChar = self._patternToChar(pattern);\r\n if (decodedChar < 0){\r\n return null;\r\n }\r\n result.push(decodedChar);\r\n nextStart += 8;\r\n if (result.length > 1 && self._isStartEnd(pattern)) {\r\n break;\r\n }\r\n } while (nextStart < self._counters.length);\r\n\r\n // verify end\r\n if ((result.length - 2) < self.MIN_ENCODED_CHARS || !self._isStartEnd(pattern)) {\r\n return null;\r\n }\r\n\r\n // verify end white space\r\n if (!self._verifyWhitespace(start.startCounter, nextStart - 8)){\r\n return null;\r\n }\r\n\r\n if (!self._validateResult(result, start.startCounter)){\r\n return null;\r\n }\r\n\r\n nextStart = nextStart > self._counters.length ? self._counters.length : nextStart;\r\n end = start.start + self._sumCounters(start.startCounter, nextStart - 8);\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: start.start,\r\n end: end,\r\n startInfo: start,\r\n decodedCodes: result\r\n };\r\n};\r\n\r\nCodabarReader.prototype._verifyWhitespace = function(startCounter, endCounter) {\r\n if ((startCounter - 1 <= 0)\r\n || this._counters[startCounter - 1] >= (this._calculatePatternLength(startCounter) / 2.0)) {\r\n if ((endCounter + 8 >= this._counters.length)\r\n || this._counters[endCounter + 7] >= (this._calculatePatternLength(endCounter) / 2.0)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nCodabarReader.prototype._calculatePatternLength = function(offset) {\r\n var i,\r\n sum = 0;\r\n\r\n for (i = offset; i < offset + 7; i++) {\r\n sum += this._counters[i];\r\n }\r\n\r\n return sum;\r\n};\r\n\r\nCodabarReader.prototype._thresholdResultPattern = function(result, startCounter){\r\n var self = this,\r\n categorization = {\r\n space: {\r\n narrow: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE},\r\n wide: {size: 0, counts: 0, min: 0, max: Number.MAX_VALUE}\r\n },\r\n bar: {\r\n narrow: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE},\r\n wide: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE}\r\n }\r\n },\r\n kind,\r\n cat,\r\n i,\r\n j,\r\n pos = startCounter,\r\n pattern;\r\n\r\n for (i = 0; i < result.length; i++){\r\n pattern = self._charToPattern(result[i]);\r\n for (j = 6; j >= 0; j--) {\r\n kind = (j & 1) === 2 ? categorization.bar : categorization.space;\r\n cat = (pattern & 1) === 1 ? kind.wide : kind.narrow;\r\n cat.size += self._counters[pos + j];\r\n cat.counts++;\r\n pattern >>= 1;\r\n }\r\n pos += 8;\r\n }\r\n\r\n [\"space\", \"bar\"].forEach(function(key) {\r\n var newkind = categorization[key];\r\n newkind.wide.min =\r\n Math.floor((newkind.narrow.size / newkind.narrow.counts + newkind.wide.size / newkind.wide.counts) / 2);\r\n newkind.narrow.max = Math.ceil(newkind.wide.min);\r\n newkind.wide.max = Math.ceil((newkind.wide.size * self.MAX_ACCEPTABLE + self.PADDING) / newkind.wide.counts);\r\n });\r\n\r\n return categorization;\r\n};\r\n\r\nCodabarReader.prototype._charToPattern = function(char) {\r\n var self = this,\r\n charCode = char.charCodeAt(0),\r\n i;\r\n\r\n for (i = 0; i < self.ALPHABET.length; i++) {\r\n if (self.ALPHABET[i] === charCode){\r\n return self.CHARACTER_ENCODINGS[i];\r\n }\r\n }\r\n return 0x0;\r\n};\r\n\r\nCodabarReader.prototype._validateResult = function(result, startCounter) {\r\n var self = this,\r\n thresholds = self._thresholdResultPattern(result, startCounter),\r\n i,\r\n j,\r\n kind,\r\n cat,\r\n size,\r\n pos = startCounter,\r\n pattern;\r\n\r\n for (i = 0; i < result.length; i++) {\r\n pattern = self._charToPattern(result[i]);\r\n for (j = 6; j >= 0; j--) {\r\n kind = (j & 1) === 0 ? thresholds.bar : thresholds.space;\r\n cat = (pattern & 1) === 1 ? kind.wide : kind.narrow;\r\n size = self._counters[pos + j];\r\n if (size < cat.min || size > cat.max) {\r\n return false;\r\n }\r\n pattern >>= 1;\r\n }\r\n pos += 8;\r\n }\r\n return true;\r\n};\r\n\r\nCodabarReader.prototype._patternToChar = function(pattern) {\r\n var i,\r\n self = this;\r\n\r\n for (i = 0; i < self.CHARACTER_ENCODINGS.length; i++) {\r\n if (self.CHARACTER_ENCODINGS[i] === pattern) {\r\n return String.fromCharCode(self.ALPHABET[i]);\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCodabarReader.prototype._computeAlternatingThreshold = function(offset, end) {\r\n var i,\r\n min = Number.MAX_VALUE,\r\n max = 0,\r\n counter;\r\n\r\n for (i = offset; i < end; i += 2){\r\n counter = this._counters[i];\r\n if (counter > max) {\r\n max = counter;\r\n }\r\n if (counter < min) {\r\n min = counter;\r\n }\r\n }\r\n\r\n return ((min + max) / 2.0) | 0;\r\n};\r\n\r\nCodabarReader.prototype._toPattern = function(offset) {\r\n var numCounters = 7,\r\n end = offset + numCounters,\r\n barThreshold,\r\n spaceThreshold,\r\n bitmask = 1 << (numCounters - 1),\r\n pattern = 0,\r\n i,\r\n threshold;\r\n\r\n if (end > this._counters.length) {\r\n return -1;\r\n }\r\n\r\n barThreshold = this._computeAlternatingThreshold(offset, end);\r\n spaceThreshold = this._computeAlternatingThreshold(offset + 1, end);\r\n\r\n for (i = 0; i < numCounters; i++){\r\n threshold = (i & 1) === 0 ? barThreshold : spaceThreshold;\r\n if (this._counters[offset + i] > threshold) {\r\n pattern |= bitmask;\r\n }\r\n bitmask >>= 1;\r\n }\r\n\r\n return pattern;\r\n};\r\n\r\nCodabarReader.prototype._isStartEnd = function(pattern) {\r\n var i;\r\n\r\n for (i = 0; i < this.START_END.length; i++) {\r\n if (this.START_END[i] === pattern) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nCodabarReader.prototype._sumCounters = function(start, end) {\r\n var i,\r\n sum = 0;\r\n\r\n for (i = start; i < end; i++) {\r\n sum += this._counters[i];\r\n }\r\n return sum;\r\n};\r\n\r\nCodabarReader.prototype._findStart = function() {\r\n var self = this,\r\n i,\r\n pattern,\r\n start = self._nextUnset(self._row),\r\n end;\r\n\r\n for (i = 1; i < this._counters.length; i++) {\r\n pattern = self._toPattern(i);\r\n if (pattern !== -1 && self._isStartEnd(pattern)) {\r\n // TODO: Look for whitespace ahead\r\n start += self._sumCounters(0, i);\r\n end = start + self._sumCounters(i, i + 8);\r\n return {\r\n start: start,\r\n end: end,\r\n startCounter: i,\r\n endCounter: i + 8\r\n };\r\n }\r\n }\r\n};\r\n\r\nexport default CodabarReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/codabar_reader.js\n **/","import BarcodeReader from './barcode_reader';\r\n\r\nfunction Code128Reader() {\r\n BarcodeReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n CODE_SHIFT: {value: 98},\r\n CODE_C: {value: 99},\r\n CODE_B: {value: 100},\r\n CODE_A: {value: 101},\r\n START_CODE_A: {value: 103},\r\n START_CODE_B: {value: 104},\r\n START_CODE_C: {value: 105},\r\n STOP_CODE: {value: 106},\r\n CODE_PATTERN: {value: [\r\n [2, 1, 2, 2, 2, 2],\r\n [2, 2, 2, 1, 2, 2],\r\n [2, 2, 2, 2, 2, 1],\r\n [1, 2, 1, 2, 2, 3],\r\n [1, 2, 1, 3, 2, 2],\r\n [1, 3, 1, 2, 2, 2],\r\n [1, 2, 2, 2, 1, 3],\r\n [1, 2, 2, 3, 1, 2],\r\n [1, 3, 2, 2, 1, 2],\r\n [2, 2, 1, 2, 1, 3],\r\n [2, 2, 1, 3, 1, 2],\r\n [2, 3, 1, 2, 1, 2],\r\n [1, 1, 2, 2, 3, 2],\r\n [1, 2, 2, 1, 3, 2],\r\n [1, 2, 2, 2, 3, 1],\r\n [1, 1, 3, 2, 2, 2],\r\n [1, 2, 3, 1, 2, 2],\r\n [1, 2, 3, 2, 2, 1],\r\n [2, 2, 3, 2, 1, 1],\r\n [2, 2, 1, 1, 3, 2],\r\n [2, 2, 1, 2, 3, 1],\r\n [2, 1, 3, 2, 1, 2],\r\n [2, 2, 3, 1, 1, 2],\r\n [3, 1, 2, 1, 3, 1],\r\n [3, 1, 1, 2, 2, 2],\r\n [3, 2, 1, 1, 2, 2],\r\n [3, 2, 1, 2, 2, 1],\r\n [3, 1, 2, 2, 1, 2],\r\n [3, 2, 2, 1, 1, 2],\r\n [3, 2, 2, 2, 1, 1],\r\n [2, 1, 2, 1, 2, 3],\r\n [2, 1, 2, 3, 2, 1],\r\n [2, 3, 2, 1, 2, 1],\r\n [1, 1, 1, 3, 2, 3],\r\n [1, 3, 1, 1, 2, 3],\r\n [1, 3, 1, 3, 2, 1],\r\n [1, 1, 2, 3, 1, 3],\r\n [1, 3, 2, 1, 1, 3],\r\n [1, 3, 2, 3, 1, 1],\r\n [2, 1, 1, 3, 1, 3],\r\n [2, 3, 1, 1, 1, 3],\r\n [2, 3, 1, 3, 1, 1],\r\n [1, 1, 2, 1, 3, 3],\r\n [1, 1, 2, 3, 3, 1],\r\n [1, 3, 2, 1, 3, 1],\r\n [1, 1, 3, 1, 2, 3],\r\n [1, 1, 3, 3, 2, 1],\r\n [1, 3, 3, 1, 2, 1],\r\n [3, 1, 3, 1, 2, 1],\r\n [2, 1, 1, 3, 3, 1],\r\n [2, 3, 1, 1, 3, 1],\r\n [2, 1, 3, 1, 1, 3],\r\n [2, 1, 3, 3, 1, 1],\r\n [2, 1, 3, 1, 3, 1],\r\n [3, 1, 1, 1, 2, 3],\r\n [3, 1, 1, 3, 2, 1],\r\n [3, 3, 1, 1, 2, 1],\r\n [3, 1, 2, 1, 1, 3],\r\n [3, 1, 2, 3, 1, 1],\r\n [3, 3, 2, 1, 1, 1],\r\n [3, 1, 4, 1, 1, 1],\r\n [2, 2, 1, 4, 1, 1],\r\n [4, 3, 1, 1, 1, 1],\r\n [1, 1, 1, 2, 2, 4],\r\n [1, 1, 1, 4, 2, 2],\r\n [1, 2, 1, 1, 2, 4],\r\n [1, 2, 1, 4, 2, 1],\r\n [1, 4, 1, 1, 2, 2],\r\n [1, 4, 1, 2, 2, 1],\r\n [1, 1, 2, 2, 1, 4],\r\n [1, 1, 2, 4, 1, 2],\r\n [1, 2, 2, 1, 1, 4],\r\n [1, 2, 2, 4, 1, 1],\r\n [1, 4, 2, 1, 1, 2],\r\n [1, 4, 2, 2, 1, 1],\r\n [2, 4, 1, 2, 1, 1],\r\n [2, 2, 1, 1, 1, 4],\r\n [4, 1, 3, 1, 1, 1],\r\n [2, 4, 1, 1, 1, 2],\r\n [1, 3, 4, 1, 1, 1],\r\n [1, 1, 1, 2, 4, 2],\r\n [1, 2, 1, 1, 4, 2],\r\n [1, 2, 1, 2, 4, 1],\r\n [1, 1, 4, 2, 1, 2],\r\n [1, 2, 4, 1, 1, 2],\r\n [1, 2, 4, 2, 1, 1],\r\n [4, 1, 1, 2, 1, 2],\r\n [4, 2, 1, 1, 1, 2],\r\n [4, 2, 1, 2, 1, 1],\r\n [2, 1, 2, 1, 4, 1],\r\n [2, 1, 4, 1, 2, 1],\r\n [4, 1, 2, 1, 2, 1],\r\n [1, 1, 1, 1, 4, 3],\r\n [1, 1, 1, 3, 4, 1],\r\n [1, 3, 1, 1, 4, 1],\r\n [1, 1, 4, 1, 1, 3],\r\n [1, 1, 4, 3, 1, 1],\r\n [4, 1, 1, 1, 1, 3],\r\n [4, 1, 1, 3, 1, 1],\r\n [1, 1, 3, 1, 4, 1],\r\n [1, 1, 4, 1, 3, 1],\r\n [3, 1, 1, 1, 4, 1],\r\n [4, 1, 1, 1, 3, 1],\r\n [2, 1, 1, 4, 1, 2],\r\n [2, 1, 1, 2, 1, 4],\r\n [2, 1, 1, 2, 3, 2],\r\n [2, 3, 3, 1, 1, 1, 2]\r\n ]},\r\n SINGLE_CODE_ERROR: {value: 0.64},\r\n AVG_CODE_ERROR: {value: 0.30},\r\n FORMAT: {value: \"code_128\", writeable: false},\r\n MODULE_INDICES: {value: {bar: [0, 2, 4], space: [1, 3, 5]}}\r\n};\r\n\r\nCode128Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCode128Reader.prototype.constructor = Code128Reader;\r\n\r\nCode128Reader.prototype._decodeCode = function(start, correction) {\r\n var counter = [0, 0, 0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = start,\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: start,\r\n end: start,\r\n correction: {\r\n bar: 1,\r\n space: 1\r\n }\r\n },\r\n code,\r\n error;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n if (correction) {\r\n self._correct(counter, correction);\r\n }\r\n for (code = 0; code < self.CODE_PATTERN.length; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n bestMatch.end = i;\r\n if (bestMatch.code === -1 || bestMatch.error > self.AVG_CODE_ERROR) {\r\n return null;\r\n }\r\n if (self.CODE_PATTERN[bestMatch.code]) {\r\n bestMatch.correction.bar = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.bar);\r\n bestMatch.correction.space = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.space);\r\n }\r\n return bestMatch;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nCode128Reader.prototype._correct = function(counter, correction) {\r\n this._correctBars(counter, correction.bar, this.MODULE_INDICES.bar);\r\n this._correctBars(counter, correction.space, this.MODULE_INDICES.space);\r\n};\r\n\r\nCode128Reader.prototype._findStart = function() {\r\n var counter = [0, 0, 0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = self._nextSet(self._row),\r\n isWhite = false,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0,\r\n correction: {\r\n bar: 1,\r\n space: 1\r\n }\r\n },\r\n code,\r\n error,\r\n j,\r\n sum;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n for (code = self.START_CODE_A; code <= self.START_CODE_C; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n if (bestMatch.error < self.AVG_CODE_ERROR) {\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n bestMatch.correction.bar = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.bar);\r\n bestMatch.correction.space = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.space);\r\n return bestMatch;\r\n }\r\n\r\n for ( j = 0; j < 4; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[4] = 0;\r\n counter[5] = 0;\r\n counterPos--;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nCode128Reader.prototype._decode = function() {\r\n var self = this,\r\n startInfo = self._findStart(),\r\n code = null,\r\n done = false,\r\n result = [],\r\n multiplier = 0,\r\n checksum = 0,\r\n codeset,\r\n rawResult = [],\r\n decodedCodes = [],\r\n shiftNext = false,\r\n unshift,\r\n removeLastCharacter = true;\r\n\r\n if (startInfo === null) {\r\n return null;\r\n }\r\n code = {\r\n code: startInfo.code,\r\n start: startInfo.start,\r\n end: startInfo.end,\r\n correction: {\r\n bar: startInfo.correction.bar,\r\n space: startInfo.correction.space\r\n }\r\n };\r\n decodedCodes.push(code);\r\n checksum = code.code;\r\n switch (code.code) {\r\n case self.START_CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.START_CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.START_CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n default:\r\n return null;\r\n }\r\n\r\n while (!done) {\r\n unshift = shiftNext;\r\n shiftNext = false;\r\n code = self._decodeCode(code.end, code.correction);\r\n if (code !== null) {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = true;\r\n }\r\n\r\n if (code.code !== self.STOP_CODE) {\r\n rawResult.push(code.code);\r\n multiplier++;\r\n checksum += multiplier * code.code;\r\n }\r\n decodedCodes.push(code);\r\n\r\n switch (codeset) {\r\n case self.CODE_A:\r\n if (code.code < 64) {\r\n result.push(String.fromCharCode(32 + code.code));\r\n } else if (code.code < 96) {\r\n result.push(String.fromCharCode(code.code - 64));\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_SHIFT:\r\n shiftNext = true;\r\n codeset = self.CODE_B;\r\n break;\r\n case self.CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n case self.CODE_B:\r\n if (code.code < 96) {\r\n result.push(String.fromCharCode(32 + code.code));\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_SHIFT:\r\n shiftNext = true;\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n case self.CODE_C:\r\n if (code.code < 100) {\r\n result.push(code.code < 10 ? \"0\" + code.code : code.code);\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n } else {\r\n done = true;\r\n }\r\n if (unshift) {\r\n codeset = codeset === self.CODE_A ? self.CODE_B : self.CODE_A;\r\n }\r\n }\r\n\r\n if (code === null) {\r\n return null;\r\n }\r\n\r\n code.end = self._nextUnset(self._row, code.end);\r\n if (!self._verifyTrailingWhitespace(code)){\r\n return null;\r\n }\r\n\r\n checksum -= multiplier * rawResult[rawResult.length - 1];\r\n if (checksum % 103 !== rawResult[rawResult.length - 1]) {\r\n return null;\r\n }\r\n\r\n if (!result.length) {\r\n return null;\r\n }\r\n\r\n // remove last code from result (checksum)\r\n if (removeLastCharacter) {\r\n result.splice(result.length - 1, 1);\r\n }\r\n\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: code.end,\r\n codeset: codeset,\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes,\r\n endInfo: code\r\n };\r\n};\r\n\r\n\r\nBarcodeReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nfunction calculateCorrection(expected, normalized, indices) {\r\n var length = indices.length,\r\n sumNormalized = 0,\r\n sumExpected = 0;\r\n\r\n while(length--) {\r\n sumExpected += expected[indices[length]];\r\n sumNormalized += normalized[indices[length]];\r\n }\r\n return sumExpected/sumNormalized;\r\n}\r\n\r\nexport default Code128Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_128_reader.js\n **/","import Code39Reader from './code_39_reader';\r\n\r\nfunction Code39VINReader() {\r\n Code39Reader.call(this);\r\n}\r\n\r\nvar patterns = {\r\n IOQ: /[IOQ]/g,\r\n AZ09: /[A-Z0-9]{17}/\r\n};\r\n\r\nCode39VINReader.prototype = Object.create(Code39Reader.prototype);\r\nCode39VINReader.prototype.constructor = Code39VINReader;\r\n\r\n// Cribbed from:\r\n// https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/client/result/VINResultParser.java\r\nCode39VINReader.prototype._decode = function() {\r\n var result = Code39Reader.prototype._decode.apply(this);\r\n if (!result) {\r\n return null;\r\n }\r\n\r\n var code = result.code;\r\n\r\n if (!code) {\r\n return null;\r\n }\r\n\r\n code = code.replace(patterns.IOQ, '');\r\n\r\n if (!code.match(patterns.AZ09)) {\r\n if (ENV.development) {\r\n console.log('Failed AZ09 pattern code:', code);\r\n }\r\n return null;\r\n }\r\n\r\n if (!this._checkChecksum(code)) {\r\n return null;\r\n }\r\n\r\n result.code = code;\r\n return result;\r\n};\r\n\r\nCode39VINReader.prototype._checkChecksum = function(code) {\r\n // TODO\r\n return !!code;\r\n};\r\n\r\nexport default Code39VINReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_39_vin_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN2Reader() {\r\n EANReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_2\", writeable: false}\r\n};\r\n\r\nEAN2Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN2Reader.prototype.constructor = EAN2Reader;\r\n\r\nEAN2Reader.prototype.decode = function(row, start) {\r\n this._row = row;\r\n var counters = [0, 0, 0, 0],\r\n codeFrequency = 0,\r\n i = 0,\r\n offset = start,\r\n end = this._row.length,\r\n code,\r\n result = [],\r\n decodedCodes = [];\r\n\r\n for (i = 0; i < 2 && offset < end; i++) {\r\n code = this._decodeCode(offset);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code % 10);\r\n if (code.code >= this.CODE_G_START) {\r\n codeFrequency |= 1 << (1 - i);\r\n }\r\n if (i != 1) {\r\n offset = this._nextSet(this._row, code.end);\r\n offset = this._nextUnset(this._row, offset);\r\n }\r\n }\r\n\r\n if (result.length != 2 || (parseInt(result.join(\"\")) % 4) !== codeFrequency) {\r\n return null;\r\n }\r\n return {\r\n code: result.join(\"\"),\r\n decodedCodes,\r\n end: code.end\r\n };\r\n};\r\n\r\nexport default EAN2Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_2_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN5Reader() {\r\n EANReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_5\", writeable: false}\r\n};\r\n\r\nconst CHECK_DIGIT_ENCODINGS = [24, 20, 18, 17, 12, 6, 3, 10, 9, 5];\r\n\r\nEAN5Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN5Reader.prototype.constructor = EAN5Reader;\r\n\r\nEAN5Reader.prototype.decode = function(row, start) {\r\n this._row = row;\r\n var counters = [0, 0, 0, 0],\r\n codeFrequency = 0,\r\n i = 0,\r\n offset = start,\r\n end = this._row.length,\r\n code,\r\n result = [],\r\n decodedCodes = [];\r\n\r\n for (i = 0; i < 5 && offset < end; i++) {\r\n code = this._decodeCode(offset);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code % 10);\r\n if (code.code >= this.CODE_G_START) {\r\n codeFrequency |= 1 << (4 - i);\r\n }\r\n if (i != 4) {\r\n offset = this._nextSet(this._row, code.end);\r\n offset = this._nextUnset(this._row, offset);\r\n }\r\n }\r\n\r\n if (result.length != 5) {\r\n return null;\r\n }\r\n\r\n if (extensionChecksum(result) !== determineCheckDigit(codeFrequency)) {\r\n return null;\r\n }\r\n return {\r\n code: result.join(\"\"),\r\n decodedCodes,\r\n end: code.end\r\n };\r\n};\r\n\r\nfunction determineCheckDigit(codeFrequency) {\r\n var i;\r\n for (i = 0; i < 10; i++) {\r\n if (codeFrequency === CHECK_DIGIT_ENCODINGS[i]) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n\r\nfunction extensionChecksum(result) {\r\n var length = result.length,\r\n sum = 0,\r\n i;\r\n\r\n for (i = length - 2; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n for (i = length - 1; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n return sum % 10;\r\n}\r\n\r\nexport default EAN5Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_5_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN8Reader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_8\", writeable: false}\r\n};\r\n\r\nEAN8Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN8Reader.prototype.constructor = EAN8Reader;\r\n\r\nEAN8Reader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this;\r\n\r\n for ( i = 0; i < 4; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n\r\n code = self._findPattern(self.MIDDLE_PATTERN, code.end, true, false);\r\n if (code === null) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n\r\n for ( i = 0; i < 4; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code);\r\n }\r\n\r\n return code;\r\n};\r\n\r\nexport default EAN8Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_8_reader.js\n **/","import BarcodeReader from './barcode_reader';\r\nimport {merge} from 'lodash';\r\n\r\nfunction I2of5Reader(opts) {\r\n opts = merge(getDefaulConfig(), opts);\r\n BarcodeReader.call(this, opts);\r\n this.barSpaceRatio = [1, 1];\r\n if (opts.normalizeBarSpaceWidth) {\r\n this.SINGLE_CODE_ERROR = 0.38;\r\n this.AVG_CODE_ERROR = 0.09;\r\n }\r\n}\r\n\r\nfunction getDefaulConfig() {\r\n var config = {};\r\n\r\n Object.keys(I2of5Reader.CONFIG_KEYS).forEach(function(key) {\r\n config[key] = I2of5Reader.CONFIG_KEYS[key].default;\r\n });\r\n return config;\r\n}\r\n\r\nvar N = 1,\r\n W = 3,\r\n properties = {\r\n START_PATTERN: {value: [N, N, N, N]},\r\n STOP_PATTERN: {value: [N, N, W]},\r\n CODE_PATTERN: {value: [\r\n [N, N, W, W, N],\r\n [W, N, N, N, W],\r\n [N, W, N, N, W],\r\n [W, W, N, N, N],\r\n [N, N, W, N, W],\r\n [W, N, W, N, N],\r\n [N, W, W, N, N],\r\n [N, N, N, W, W],\r\n [W, N, N, W, N],\r\n [N, W, N, W, N]\r\n ]},\r\n SINGLE_CODE_ERROR: {value: 0.78, writable: true},\r\n AVG_CODE_ERROR: {value: 0.38, writable: true},\r\n MAX_CORRECTION_FACTOR: {value: 5},\r\n FORMAT: {value: \"i2of5\"}\r\n };\r\n\r\nI2of5Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nI2of5Reader.prototype.constructor = I2of5Reader;\r\n\r\nI2of5Reader.prototype._matchPattern = function(counter, code) {\r\n if (this.config.normalizeBarSpaceWidth) {\r\n var i,\r\n counterSum = [0, 0],\r\n codeSum = [0, 0],\r\n correction = [0, 0],\r\n correctionRatio = this.MAX_CORRECTION_FACTOR,\r\n correctionRatioInverse = 1 / correctionRatio;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n counterSum[i % 2] += counter[i];\r\n codeSum[i % 2] += code[i];\r\n }\r\n correction[0] = codeSum[0] / counterSum[0];\r\n correction[1] = codeSum[1] / counterSum[1];\r\n\r\n correction[0] = Math.max(Math.min(correction[0], correctionRatio), correctionRatioInverse);\r\n correction[1] = Math.max(Math.min(correction[1], correctionRatio), correctionRatioInverse);\r\n this.barSpaceRatio = correction;\r\n for (i = 0; i < counter.length; i++) {\r\n counter[i] *= this.barSpaceRatio[i % 2];\r\n }\r\n }\r\n return BarcodeReader.prototype._matchPattern.call(this, counter, code);\r\n};\r\n\r\nI2of5Reader.prototype._findPattern = function(pattern, offset, isWhite, tryHarder) {\r\n var counter = [],\r\n self = this,\r\n i,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n },\r\n error,\r\n j,\r\n sum,\r\n normalized,\r\n epsilon = self.AVG_CODE_ERROR;\r\n\r\n isWhite = isWhite || false;\r\n tryHarder = tryHarder || false;\r\n\r\n if (!offset) {\r\n offset = self._nextSet(self._row);\r\n }\r\n\r\n for ( i = 0; i < pattern.length; i++) {\r\n counter[i] = 0;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n error = self._matchPattern(counter, pattern);\r\n if (error < epsilon) {\r\n bestMatch.error = error;\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n return bestMatch;\r\n }\r\n if (tryHarder) {\r\n for (j = 0; j < counter.length - 2; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[counter.length - 2] = 0;\r\n counter[counter.length - 1] = 0;\r\n counterPos--;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nI2of5Reader.prototype._findStart = function() {\r\n var self = this,\r\n leadingWhitespaceStart,\r\n offset = self._nextSet(self._row),\r\n startInfo,\r\n narrowBarWidth = 1;\r\n\r\n while (!startInfo) {\r\n startInfo = self._findPattern(self.START_PATTERN, offset, false, true);\r\n if (!startInfo) {\r\n return null;\r\n }\r\n narrowBarWidth = Math.floor((startInfo.end - startInfo.start) / 4);\r\n leadingWhitespaceStart = startInfo.start - narrowBarWidth * 10;\r\n if (leadingWhitespaceStart >= 0) {\r\n if (self._matchRange(leadingWhitespaceStart, startInfo.start, 0)) {\r\n return startInfo;\r\n }\r\n }\r\n offset = startInfo.end;\r\n startInfo = null;\r\n }\r\n};\r\n\r\nI2of5Reader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nI2of5Reader.prototype._findEnd = function() {\r\n var self = this,\r\n endInfo,\r\n tmp;\r\n\r\n self._row.reverse();\r\n endInfo = self._findPattern(self.STOP_PATTERN);\r\n self._row.reverse();\r\n\r\n if (endInfo === null) {\r\n return null;\r\n }\r\n\r\n // reverse numbers\r\n tmp = endInfo.start;\r\n endInfo.start = self._row.length - endInfo.end;\r\n endInfo.end = self._row.length - tmp;\r\n\r\n return endInfo !== null ? self._verifyTrailingWhitespace(endInfo) : null;\r\n};\r\n\r\nI2of5Reader.prototype._decodePair = function(counterPair) {\r\n var i,\r\n code,\r\n codes = [],\r\n self = this;\r\n\r\n for (i = 0; i < counterPair.length; i++) {\r\n code = self._decodeCode(counterPair[i]);\r\n if (!code) {\r\n return null;\r\n }\r\n codes.push(code);\r\n }\r\n return codes;\r\n};\r\n\r\nI2of5Reader.prototype._decodeCode = function(counter) {\r\n var j,\r\n self = this,\r\n sum = 0,\r\n normalized,\r\n error,\r\n epsilon = self.AVG_CODE_ERROR,\r\n code,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n };\r\n\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n for (code = 0; code < self.CODE_PATTERN.length; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n if (bestMatch.error < epsilon) {\r\n return bestMatch;\r\n }\r\n};\r\n\r\nI2of5Reader.prototype._decodePayload = function(counters, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n pos = 0,\r\n counterLength = counters.length,\r\n counterPair = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]],\r\n codes;\r\n\r\n while (pos < counterLength) {\r\n for (i = 0; i < 5; i++) {\r\n counterPair[0][i] = counters[pos] * this.barSpaceRatio[0];\r\n counterPair[1][i] = counters[pos + 1] * this.barSpaceRatio[1];\r\n pos += 2;\r\n }\r\n codes = self._decodePair(counterPair);\r\n if (!codes) {\r\n return null;\r\n }\r\n for (i = 0; i < codes.length; i++) {\r\n result.push(codes[i].code + \"\");\r\n decodedCodes.push(codes[i]);\r\n }\r\n }\r\n return codes;\r\n};\r\n\r\nI2of5Reader.prototype._verifyCounterLength = function(counters) {\r\n return (counters.length % 10 === 0);\r\n};\r\n\r\nI2of5Reader.prototype._decode = function() {\r\n var startInfo,\r\n endInfo,\r\n self = this,\r\n code,\r\n result = [],\r\n decodedCodes = [],\r\n counters;\r\n\r\n startInfo = self._findStart();\r\n if (!startInfo) {\r\n return null;\r\n }\r\n decodedCodes.push(startInfo);\r\n\r\n endInfo = self._findEnd();\r\n if (!endInfo) {\r\n return null;\r\n }\r\n\r\n counters = self._fillCounters(startInfo.end, endInfo.start, false);\r\n if (!self._verifyCounterLength(counters)) {\r\n return null;\r\n }\r\n code = self._decodePayload(counters, result, decodedCodes);\r\n if (!code) {\r\n return null;\r\n }\r\n if (result.length % 2 !== 0 ||\r\n result.length < 6) {\r\n return null;\r\n }\r\n\r\n decodedCodes.push(endInfo);\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: endInfo.end,\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes\r\n };\r\n};\r\n\r\nI2of5Reader.CONFIG_KEYS = {\r\n normalizeBarSpaceWidth: {\r\n 'type': 'boolean',\r\n 'default': false,\r\n 'description': 'If true, the reader tries to normalize the' +\r\n 'width-difference between bars and spaces'\r\n }\r\n};\r\n\r\nexport default I2of5Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/i2of5_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction UPCEReader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n CODE_FREQUENCY: {value: [\r\n [ 56, 52, 50, 49, 44, 38, 35, 42, 41, 37 ],\r\n [7, 11, 13, 14, 19, 25, 28, 21, 22, 26]]},\r\n STOP_PATTERN: { value: [1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7]},\r\n FORMAT: {value: \"upc_e\", writeable: false}\r\n};\r\n\r\nUPCEReader.prototype = Object.create(EANReader.prototype, properties);\r\nUPCEReader.prototype.constructor = UPCEReader;\r\n\r\nUPCEReader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n codeFrequency = 0x0;\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end);\r\n if (!code) {\r\n return null;\r\n }\r\n if (code.code >= self.CODE_G_START) {\r\n code.code = code.code - self.CODE_G_START;\r\n codeFrequency |= 1 << (5 - i);\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n if (!self._determineParity(codeFrequency, result)) {\r\n return null;\r\n }\r\n\r\n return code;\r\n};\r\n\r\nUPCEReader.prototype._determineParity = function(codeFrequency, result) {\r\n var i,\r\n nrSystem;\r\n\r\n for (nrSystem = 0; nrSystem < this.CODE_FREQUENCY.length; nrSystem++){\r\n for ( i = 0; i < this.CODE_FREQUENCY[nrSystem].length; i++) {\r\n if (codeFrequency === this.CODE_FREQUENCY[nrSystem][i]) {\r\n result.unshift(nrSystem);\r\n result.push(i);\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nUPCEReader.prototype._convertToUPCA = function(result) {\r\n var upca = [result[0]],\r\n lastDigit = result[result.length - 2];\r\n\r\n if (lastDigit <= 2) {\r\n upca = upca.concat(result.slice(1, 3))\r\n .concat([lastDigit, 0, 0, 0, 0])\r\n .concat(result.slice(3, 6));\r\n } else if (lastDigit === 3) {\r\n upca = upca.concat(result.slice(1, 4))\r\n .concat([0, 0, 0, 0, 0])\r\n .concat(result.slice(4, 6));\r\n } else if (lastDigit === 4) {\r\n upca = upca.concat(result.slice(1, 5))\r\n .concat([0, 0, 0, 0, 0, result[5]]);\r\n } else {\r\n upca = upca.concat(result.slice(1, 6))\r\n .concat([0, 0, 0, 0, lastDigit]);\r\n }\r\n\r\n upca.push(result[result.length - 1]);\r\n return upca;\r\n};\r\n\r\nUPCEReader.prototype._checksum = function(result) {\r\n return EANReader.prototype._checksum.call(this, this._convertToUPCA(result));\r\n};\r\n\r\nUPCEReader.prototype._findEnd = function(offset, isWhite) {\r\n isWhite = true;\r\n return EANReader.prototype._findEnd.call(this, offset, isWhite);\r\n};\r\n\r\nUPCEReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n};\r\n\r\nexport default UPCEReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/upc_e_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction UPCReader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"upc_a\", writeable: false}\r\n};\r\n\r\nUPCReader.prototype = Object.create(EANReader.prototype, properties);\r\nUPCReader.prototype.constructor = UPCReader;\r\n\r\nUPCReader.prototype._decode = function() {\r\n var result = EANReader.prototype._decode.call(this);\r\n\r\n if (result && result.code && result.code.length === 13 && result.code.charAt(0) === \"0\") {\r\n result.code = result.code.substring(1);\r\n return result;\r\n }\r\n return null;\r\n};\r\n\r\nexport default UPCReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/upc_reader.js\n **/","import ImageWrapper from './common/image_wrapper';\r\nimport createLocator, {checkImageConstraints} from './locator/barcode_locator';\r\nimport BarcodeDecoder from './decoder/barcode_decoder';\r\nimport createEventedElement from './common/events';\r\nimport CameraAccess from './input/camera_access';\r\nimport ImageDebug from './common/image_debug';\r\nimport ResultCollector from './analytics/result_collector';\r\nimport Config from './config/config';\r\nimport InputStream from 'input_stream';\r\nimport FrameGrabber from 'frame_grabber';\r\nimport {merge} from 'lodash';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone')\r\n};\r\n\r\n\r\nfunction createScanner() {\r\n var _inputStream,\r\n _framegrabber,\r\n _stopped,\r\n _canvasContainer = {\r\n ctx: {\r\n image: null,\r\n overlay: null\r\n },\r\n dom: {\r\n image: null,\r\n overlay: null\r\n }\r\n },\r\n _inputImageWrapper,\r\n _boxSize,\r\n _decoder,\r\n _workerPool = [],\r\n _onUIThread = true,\r\n _resultCollector,\r\n _config = {},\r\n _events = createEventedElement(),\r\n _locator;\r\n\r\n function initializeData(imageWrapper) {\r\n initBuffers(imageWrapper);\r\n _decoder = BarcodeDecoder.create(_config.decoder, _inputImageWrapper);\r\n }\r\n\r\n function initInputStream(cb) {\r\n var video;\r\n if (_config.inputStream.type === \"VideoStream\") {\r\n video = document.createElement(\"video\");\r\n _inputStream = InputStream.createVideoStream(video);\r\n } else if (_config.inputStream.type === \"ImageStream\") {\r\n _inputStream = InputStream.createImageStream();\r\n } else if (_config.inputStream.type === \"LiveStream\") {\r\n var $viewport = getViewPort();\r\n if ($viewport) {\r\n video = $viewport.querySelector(\"video\");\r\n if (!video) {\r\n video = document.createElement(\"video\");\r\n $viewport.appendChild(video);\r\n }\r\n }\r\n _inputStream = InputStream.createLiveStream(video);\r\n CameraAccess.request(video, _config.inputStream.constraints)\r\n .then(() => {\r\n _inputStream.trigger(\"canrecord\");\r\n }).catch((err) => {\r\n return cb(err);\r\n });\r\n }\r\n\r\n _inputStream.setAttribute(\"preload\", \"auto\");\r\n _inputStream.setInputStream(_config.inputStream);\r\n _inputStream.addEventListener(\"canrecord\", canRecord.bind(undefined, cb));\r\n }\r\n\r\n function getViewPort() {\r\n var target = _config.inputStream.target;\r\n // Check if target is already a DOM element\r\n if (target && target.nodeName && target.nodeType === 1) {\r\n return target;\r\n } else {\r\n // Use '#interactive.viewport' as a fallback selector (backwards compatibility)\r\n var selector = typeof target === 'string' ? target : '#interactive.viewport';\r\n return document.querySelector(selector);\r\n }\r\n }\r\n\r\n function canRecord(cb) {\r\n checkImageConstraints(_inputStream, _config.locator);\r\n initCanvas(_config);\r\n _framegrabber = FrameGrabber.create(_inputStream, _canvasContainer.dom.image);\r\n\r\n adjustWorkerPool(_config.numOfWorkers, function() {\r\n if (_config.numOfWorkers === 0) {\r\n initializeData();\r\n }\r\n ready(cb);\r\n });\r\n }\r\n\r\n function ready(cb){\r\n _inputStream.play();\r\n cb();\r\n }\r\n\r\n function initCanvas() {\r\n if (typeof document !== \"undefined\") {\r\n var $viewport = getViewPort();\r\n _canvasContainer.dom.image = document.querySelector(\"canvas.imgBuffer\");\r\n if (!_canvasContainer.dom.image) {\r\n _canvasContainer.dom.image = document.createElement(\"canvas\");\r\n _canvasContainer.dom.image.className = \"imgBuffer\";\r\n if ($viewport && _config.inputStream.type === \"ImageStream\") {\r\n $viewport.appendChild(_canvasContainer.dom.image);\r\n }\r\n }\r\n _canvasContainer.ctx.image = _canvasContainer.dom.image.getContext(\"2d\");\r\n _canvasContainer.dom.image.width = _inputStream.getCanvasSize().x;\r\n _canvasContainer.dom.image.height = _inputStream.getCanvasSize().y;\r\n\r\n _canvasContainer.dom.overlay = document.querySelector(\"canvas.drawingBuffer\");\r\n if (!_canvasContainer.dom.overlay) {\r\n _canvasContainer.dom.overlay = document.createElement(\"canvas\");\r\n _canvasContainer.dom.overlay.className = \"drawingBuffer\";\r\n if ($viewport) {\r\n $viewport.appendChild(_canvasContainer.dom.overlay);\r\n }\r\n }\r\n _canvasContainer.ctx.overlay = _canvasContainer.dom.overlay.getContext(\"2d\");\r\n _canvasContainer.dom.overlay.width = _inputStream.getCanvasSize().x;\r\n _canvasContainer.dom.overlay.height = _inputStream.getCanvasSize().y;\r\n }\r\n }\r\n\r\n function initBuffers(imageWrapper) {\r\n if (imageWrapper) {\r\n _inputImageWrapper = imageWrapper;\r\n } else {\r\n _inputImageWrapper = new ImageWrapper({\r\n x: _inputStream.getWidth(),\r\n y: _inputStream.getHeight()\r\n });\r\n }\r\n\r\n if (ENV.development) {\r\n console.log(_inputImageWrapper.size);\r\n }\r\n _boxSize = [\r\n vec2.clone([0, 0]),\r\n vec2.clone([0, _inputImageWrapper.size.y]),\r\n vec2.clone([_inputImageWrapper.size.x, _inputImageWrapper.size.y]),\r\n vec2.clone([_inputImageWrapper.size.x, 0])\r\n ];\r\n _locator = createLocator(_inputImageWrapper, _config.locator);\r\n }\r\n\r\n function getBoundingBoxes() {\r\n if (_config.locate) {\r\n return _locator.locate();\r\n } else {\r\n return [[\r\n vec2.clone(_boxSize[0]),\r\n vec2.clone(_boxSize[1]),\r\n vec2.clone(_boxSize[2]),\r\n vec2.clone(_boxSize[3])]];\r\n }\r\n }\r\n\r\n function transformResult(result) {\r\n var topRight = _inputStream.getTopRight(),\r\n xOffset = topRight.x,\r\n yOffset = topRight.y,\r\n i;\r\n\r\n if (xOffset === 0 && yOffset === 0) {\r\n return;\r\n }\r\n\r\n if (result.barcodes) {\r\n for (i = 0; i < result.barcodes.length; i++) {\r\n transformResult(result.barcodes[i]);\r\n }\r\n }\r\n\r\n if (result.line && result.line.length === 2) {\r\n moveLine(result.line);\r\n }\r\n\r\n if (result.box) {\r\n moveBox(result.box);\r\n }\r\n\r\n if (result.boxes && result.boxes.length > 0) {\r\n for (i = 0; i < result.boxes.length; i++) {\r\n moveBox(result.boxes[i]);\r\n }\r\n }\r\n\r\n function moveBox(box) {\r\n var corner = box.length;\r\n\r\n while (corner--) {\r\n box[corner][0] += xOffset;\r\n box[corner][1] += yOffset;\r\n }\r\n }\r\n\r\n function moveLine(line) {\r\n line[0].x += xOffset;\r\n line[0].y += yOffset;\r\n line[1].x += xOffset;\r\n line[1].y += yOffset;\r\n }\r\n }\r\n\r\n function addResult (result, imageData) {\r\n if (!imageData || !_resultCollector) {\r\n return;\r\n }\r\n\r\n if (result.barcodes) {\r\n result.barcodes.filter(barcode => barcode.codeResult)\r\n .forEach(barcode => addResult(barcode, imageData));\r\n } else if (result.codeResult) {\r\n _resultCollector.addResult(imageData, _inputStream.getCanvasSize(), result.codeResult);\r\n }\r\n }\r\n\r\n function hasCodeResult (result) {\r\n return result && (result.barcodes ?\r\n result.barcodes.some(barcode => barcode.codeResult) :\r\n result.codeResult);\r\n }\r\n\r\n function publishResult(result, imageData) {\r\n let resultToPublish = result;\r\n\r\n if (result && _onUIThread) {\r\n transformResult(result);\r\n addResult(result, imageData);\r\n resultToPublish = result.barcodes || result;\r\n }\r\n\r\n _events.publish(\"processed\", resultToPublish);\r\n if (hasCodeResult(result)) {\r\n _events.publish(\"detected\", resultToPublish);\r\n }\r\n }\r\n\r\n function locateAndDecode() {\r\n var result,\r\n boxes;\r\n\r\n boxes = getBoundingBoxes();\r\n if (boxes) {\r\n result = _decoder.decodeFromBoundingBoxes(boxes);\r\n result = result || {};\r\n result.boxes = boxes;\r\n publishResult(result, _inputImageWrapper.data);\r\n } else {\r\n publishResult();\r\n }\r\n }\r\n\r\n function update() {\r\n var availableWorker;\r\n\r\n if (_onUIThread) {\r\n if (_workerPool.length > 0) {\r\n availableWorker = _workerPool.filter(function(workerThread) {\r\n return !workerThread.busy;\r\n })[0];\r\n if (availableWorker) {\r\n _framegrabber.attachData(availableWorker.imageData);\r\n } else {\r\n return; // all workers are busy\r\n }\r\n } else {\r\n _framegrabber.attachData(_inputImageWrapper.data);\r\n }\r\n if (_framegrabber.grab()) {\r\n if (availableWorker) {\r\n availableWorker.busy = true;\r\n availableWorker.worker.postMessage({\r\n cmd: 'process',\r\n imageData: availableWorker.imageData\r\n }, [availableWorker.imageData.buffer]);\r\n } else {\r\n locateAndDecode();\r\n }\r\n }\r\n } else {\r\n locateAndDecode();\r\n }\r\n }\r\n\r\n function startContinuousUpdate() {\r\n var next = null,\r\n delay = 1000 / (_config.frequency || 60);\r\n\r\n _stopped = false;\r\n (function frame(timestamp) {\r\n next = next || timestamp;\r\n if (!_stopped) {\r\n if (timestamp >= next) {\r\n next += delay;\r\n update();\r\n }\r\n window.requestAnimFrame(frame);\r\n }\r\n }(performance.now()));\r\n }\r\n\r\n function start() {\r\n if (_onUIThread && _config.inputStream.type === \"LiveStream\") {\r\n startContinuousUpdate();\r\n } else {\r\n update();\r\n }\r\n }\r\n\r\n function initWorker(cb) {\r\n var blobURL,\r\n workerThread = {\r\n worker: undefined,\r\n imageData: new Uint8Array(_inputStream.getWidth() * _inputStream.getHeight()),\r\n busy: true\r\n };\r\n\r\n blobURL = generateWorkerBlob();\r\n workerThread.worker = new Worker(blobURL);\r\n\r\n workerThread.worker.onmessage = function(e) {\r\n if (e.data.event === 'initialized') {\r\n URL.revokeObjectURL(blobURL);\r\n workerThread.busy = false;\r\n workerThread.imageData = new Uint8Array(e.data.imageData);\r\n if (ENV.development) {\r\n console.log(\"Worker initialized\");\r\n }\r\n return cb(workerThread);\r\n } else if (e.data.event === 'processed') {\r\n workerThread.imageData = new Uint8Array(e.data.imageData);\r\n workerThread.busy = false;\r\n publishResult(e.data.result, workerThread.imageData);\r\n } else if (e.data.event === 'error') {\r\n if (ENV.development) {\r\n console.log(\"Worker error: \" + e.data.message);\r\n }\r\n }\r\n };\r\n\r\n workerThread.worker.postMessage({\r\n cmd: 'init',\r\n size: {x: _inputStream.getWidth(), y: _inputStream.getHeight()},\r\n imageData: workerThread.imageData,\r\n config: configForWorker(_config)\r\n }, [workerThread.imageData.buffer]);\r\n }\r\n\r\n function configForWorker(config) {\r\n return {\r\n ...config,\r\n inputStream: {\r\n ...config.inputStream,\r\n target: null\r\n }\r\n };\r\n }\r\n\r\n function workerInterface(factory) {\r\n /* eslint-disable no-undef*/\r\n if (factory) {\r\n var Quagga = factory().default;\r\n if (!Quagga) {\r\n self.postMessage({'event': 'error', message: 'Quagga could not be created'});\r\n return;\r\n }\r\n }\r\n var imageWrapper,\r\n scanner = Quagga._worker.createScanner();\r\n\r\n self.onmessage = function(e) {\r\n if (e.data.cmd === 'init') {\r\n var config = e.data.config;\r\n config.numOfWorkers = 0;\r\n imageWrapper = new Quagga.ImageWrapper({\r\n x: e.data.size.x,\r\n y: e.data.size.y\r\n }, new Uint8Array(e.data.imageData));\r\n scanner.init(config, ready, imageWrapper);\r\n scanner.subscribe(\"processed\", onProcessed);\r\n } else if (e.data.cmd === 'process') {\r\n imageWrapper.data = new Uint8Array(e.data.imageData);\r\n scanner.start();\r\n }\r\n };\r\n\r\n function onProcessed(result) {\r\n self.postMessage({\r\n 'event': 'processed',\r\n imageData: imageWrapper.data,\r\n result: result\r\n }, [imageWrapper.data.buffer]);\r\n }\r\n\r\n function ready() { // eslint-disable-line\r\n self.postMessage({'event': 'initialized', imageData: imageWrapper.data}, [imageWrapper.data.buffer]);\r\n }\r\n\r\n /* eslint-enable */\r\n }\r\n\r\n function generateWorkerBlob() {\r\n var blob,\r\n factorySource;\r\n\r\n /* jshint ignore:start */\r\n if (typeof __factorySource__ !== 'undefined') {\r\n factorySource = __factorySource__; // eslint-disable-line no-undef\r\n }\r\n /* jshint ignore:end */\r\n\r\n blob = new Blob(['(' + workerInterface.toString() + ')(' + factorySource + ');'],\r\n {type: 'text/javascript'});\r\n\r\n return window.URL.createObjectURL(blob);\r\n }\r\n\r\n function setReaders(readers) {\r\n if (_decoder) {\r\n _decoder.setReaders(readers);\r\n } else if (_onUIThread && _workerPool.length > 0) {\r\n _workerPool.forEach(function(workerThread) {\r\n workerThread.worker.postMessage({cmd: 'setReaders', readers: readers});\r\n });\r\n }\r\n }\r\n\r\n function adjustWorkerPool(capacity, cb) {\r\n const increaseBy = capacity - _workerPool.length;\r\n if (increaseBy === 0) {\r\n return cb && cb();\r\n }\r\n if (increaseBy < 0) {\r\n const workersToTerminate = _workerPool.slice(increaseBy);\r\n workersToTerminate.forEach(function(workerThread) {\r\n workerThread.worker.terminate();\r\n if (ENV.development) {\r\n console.log(\"Worker terminated!\");\r\n }\r\n });\r\n _workerPool = _workerPool.slice(0, increaseBy);\r\n return cb && cb();\r\n } else {\r\n for (var i = 0; i < increaseBy; i++) {\r\n initWorker(workerInitialized);\r\n }\r\n\r\n function workerInitialized(workerThread) {\r\n _workerPool.push(workerThread);\r\n if (_workerPool.length >= capacity){\r\n cb && cb();\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n init: function(config, cb, imageWrapper) {\r\n _config = merge({}, Config, config);\r\n\r\n if (imageWrapper) {\r\n _onUIThread = false;\r\n initializeData(imageWrapper);\r\n return cb();\r\n } else {\r\n initInputStream(cb);\r\n }\r\n },\r\n start: function() {\r\n start();\r\n },\r\n stop: function() {\r\n _stopped = true;\r\n adjustWorkerPool(0);\r\n if (_config.inputStream.type === \"LiveStream\") {\r\n CameraAccess.release();\r\n _inputStream.clearEventHandlers();\r\n }\r\n },\r\n pause: function() {\r\n _stopped = true;\r\n },\r\n subscribe(eventName, callback) {\r\n _events.subscribe(eventName, callback);\r\n },\r\n unsubscribe(eventName, callback) {\r\n _events.unsubscribe(eventName, callback);\r\n },\r\n registerResultCollector: function(resultCollector) {\r\n if (resultCollector && typeof resultCollector.addResult === 'function') {\r\n _resultCollector = resultCollector;\r\n }\r\n },\r\n decodeSingle: function(config, resultCallback) {\r\n this.init(config, () => {\r\n _events.once(\"processed\", (result) => {\r\n this.stop();\r\n resultCallback.call(null, result);\r\n }, true);\r\n start();\r\n });\r\n },\r\n canvas: _canvasContainer\r\n };\r\n}\r\n\r\nexport default createScanner;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/scanner.js\n **/","module.exports = copy\n\n/**\n * Copy the values from one mat2 to another\n *\n * @alias mat2.copy\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction copy(out, a) {\n out[0] = a[0]\n out[1] = a[1]\n out[2] = a[2]\n out[3] = a[3]\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/copy.js\n ** module id = 92\n ** module chunks = 0\n **/","module.exports = create\n\n/**\n * Creates a new identity mat2\n *\n * @alias mat2.create\n * @returns {mat2} a new 2x2 matrix\n */\nfunction create() {\n var out = new Float32Array(4)\n out[0] = 1\n out[1] = 0\n out[2] = 0\n out[3] = 1\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/create.js\n ** module id = 93\n ** module chunks = 0\n **/","module.exports = invert\n\n/**\n * Inverts a mat2\n *\n * @alias mat2.invert\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction invert(out, a) {\n var a0 = a[0]\n var a1 = a[1]\n var a2 = a[2]\n var a3 = a[3]\n var det = a0 * a3 - a2 * a1\n\n if (!det) return null\n det = 1.0 / det\n\n out[0] = a3 * det\n out[1] = -a1 * det\n out[2] = -a2 * det\n out[3] = a0 * det\n\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/invert.js\n ** module id = 94\n ** module chunks = 0\n **/","module.exports = scale\n\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\nfunction scale(out, a, b) {\n out[0] = a[0] * b\n out[1] = a[1] * b\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/scale.js\n ** module id = 95\n ** module chunks = 0\n **/","module.exports = transformMat2\n\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat2(out, a, m) {\n var x = a[0],\n y = a[1]\n out[0] = m[0] * x + m[2] * y\n out[1] = m[1] * x + m[3] * y\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/transformMat2.js\n ** module id = 96\n ** module chunks = 0\n **/","module.exports = clone;\n\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {vec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\nfunction clone(a) {\n var out = new Float32Array(3)\n out[0] = a[0]\n out[1] = a[1]\n out[2] = a[2]\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec3/clone.js\n ** module id = 97\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Creates an hash object.\n *\n * @private\n * @constructor\n * @returns {Object} Returns the new hash object.\n */\nfunction Hash() {}\n\n// Avoid inheriting from `Object.prototype` when possible.\nHash.prototype = nativeCreate ? nativeCreate(null) : objectProto;\n\nmodule.exports = Hash;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Hash.js\n ** module id = 98\n ** module chunks = 0\n **/","var mapClear = require('./_mapClear'),\n mapDelete = require('./_mapDelete'),\n mapGet = require('./_mapGet'),\n mapHas = require('./_mapHas'),\n mapSet = require('./_mapSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction MapCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = values[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add functions to the `MapCache`.\nMapCache.prototype.clear = mapClear;\nMapCache.prototype['delete'] = mapDelete;\nMapCache.prototype.get = mapGet;\nMapCache.prototype.has = mapHas;\nMapCache.prototype.set = mapSet;\n\nmodule.exports = MapCache;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_MapCache.js\n ** module id = 99\n ** module chunks = 0\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Reflect = root.Reflect;\n\nmodule.exports = Reflect;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Reflect.js\n ** module id = 100\n ** module chunks = 0\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Set.js\n ** module id = 101\n ** module chunks = 0\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_WeakMap.js\n ** module id = 102\n ** module chunks = 0\n **/","/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `Map#set` because it doesn't return the map instance in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\nmodule.exports = addMapEntry;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_addMapEntry.js\n ** module id = 103\n ** module chunks = 0\n **/","/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n set.add(value);\n return set;\n}\n\nmodule.exports = addSetEntry;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_addSetEntry.js\n ** module id = 104\n ** module chunks = 0\n **/","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n var length = args.length;\n switch (length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_apply.js\n ** module id = 105\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayMap.js\n ** module id = 106\n ** module chunks = 0\n **/","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayPush.js\n ** module id = 107\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check, else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arraySome.js\n ** module id = 108\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseAssign.js\n ** module id = 109\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseForOwn = require('./_baseForOwn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isHostObject = require('./_isHostObject'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[boolTag] =\ncloneableTags[dateTag] = cloneableTags[float32Tag] =\ncloneableTags[float64Tag] = cloneableTags[int8Tag] =\ncloneableTags[int16Tag] = cloneableTags[int32Tag] =\ncloneableTags[mapTag] = cloneableTags[numberTag] =\ncloneableTags[objectTag] = cloneableTags[regexpTag] =\ncloneableTags[setTag] = cloneableTags[stringTag] =\ncloneableTags[symbolTag] = cloneableTags[uint8Tag] =\ncloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] =\ncloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n result = baseAssign(result, value);\n return isFull ? copySymbols(value, result) : result;\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n // Recursively populate clone (susceptible to call stack limits).\n (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return (isFull && !isArr) ? copySymbols(value, result) : result;\n}\n\nmodule.exports = baseClone;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseClone.js\n ** module id = 110\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\nmodule.exports = baseCreate;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseCreate.js\n ** module id = 111\n ** module chunks = 0\n **/","var arrayPush = require('./_arrayPush'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, isStrict, result) {\n result || (result = []);\n\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && isArrayLikeObject(value) &&\n (isStrict || isArray(value) || isArguments(value))) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseFlatten.js\n ** module id = 112\n ** module chunks = 0\n **/","var baseFor = require('./_baseFor'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return object == null ? object : baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseForIn.js\n ** module id = 113\n ** module chunks = 0\n **/","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseForOwn.js\n ** module id = 114\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseHasIn.js\n ** module id = 115\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isHostObject = require('./_isHostObject'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for comparison styles. */\nvar PARTIAL_COMPARE_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n stack || (stack = new Stack);\n return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsEqualDeep.js\n ** module id = 116\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack,\n result = customizer ? customizer(objValue, srcValue, key, object, source, stack) : undefined;\n\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsMatch.js\n ** module id = 117\n ** module chunks = 0\n **/","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n var type = typeof value;\n if (type == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (type == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIteratee.js\n ** module id = 118\n ** module chunks = 0\n **/","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = Object.keys;\n\n/**\n * The base implementation of `_.keys` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n return nativeKeys(Object(object));\n}\n\nmodule.exports = baseKeys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseKeys.js\n ** module id = 119\n ** module chunks = 0\n **/","var Reflect = require('./_Reflect'),\n iteratorToArray = require('./_iteratorToArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar enumerate = Reflect ? Reflect.enumerate : undefined,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * The base implementation of `_.keysIn` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n object = object == null ? object : Object(object);\n\n var result = [];\n for (var key in object) {\n result.push(key);\n }\n return result;\n}\n\n// Fallback for IE < 9 with es6-shim.\nif (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) {\n baseKeysIn = function(object) {\n return iteratorToArray(enumerate(object));\n };\n}\n\nmodule.exports = baseKeysIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseKeysIn.js\n ** module id = 120\n ** module chunks = 0\n **/","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n var key = matchData[0][0],\n value = matchData[0][1];\n\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === value &&\n (value !== undefined || (key in Object(object)));\n };\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMatches.js\n ** module id = 121\n ** module chunks = 0\n **/","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMatchesProperty.js\n ** module id = 122\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignMergeValue = require('./_assignMergeValue'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isArray = require('./isArray'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n var props = (isArray(source) || isTypedArray(source))\n ? undefined\n : keysIn(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(object[key], srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n });\n}\n\nmodule.exports = baseMerge;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMerge.js\n ** module id = 123\n ** module chunks = 0\n **/","var assignMergeValue = require('./_assignMergeValue'),\n baseClone = require('./_baseClone'),\n copyArray = require('./_copyArray'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = object[key],\n srcValue = source[key],\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n newValue = srcValue;\n if (isArray(srcValue) || isTypedArray(srcValue)) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else {\n isCommon = false;\n newValue = baseClone(srcValue, !customizer);\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n isCommon = false;\n newValue = baseClone(srcValue, !customizer);\n }\n else {\n newValue = objValue;\n }\n }\n else {\n isCommon = false;\n }\n }\n stack.set(srcValue, newValue);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n }\n stack['delete'](srcValue);\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMergeDeep.js\n ** module id = 124\n ** module chunks = 0\n **/","var arrayReduce = require('./_arrayReduce');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property names.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property names to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n object = Object(object);\n return arrayReduce(props, function(result, key) {\n if (key in object) {\n result[key] = object[key];\n }\n return result;\n }, {});\n}\n\nmodule.exports = basePick;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePick.js\n ** module id = 125\n ** module chunks = 0\n **/","var baseForIn = require('./_baseForIn');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, predicate) {\n var result = {};\n baseForIn(object, function(value, key) {\n if (predicate(value, key)) {\n result[key] = value;\n }\n });\n return result;\n}\n\nmodule.exports = basePickBy;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePickBy.js\n ** module id = 126\n ** module chunks = 0\n **/","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePropertyDeep.js\n ** module id = 127\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseSlice.js\n ** module id = 128\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseTimes.js\n ** module id = 129\n ** module chunks = 0\n **/","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the new array of key-value pairs.\n */\nfunction baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n}\n\nmodule.exports = baseToPairs;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseToPairs.js\n ** module id = 130\n ** module chunks = 0\n **/","/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\nmodule.exports = checkGlobal;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_checkGlobal.js\n ** module id = 131\n ** module chunks = 0\n **/","/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneBuffer.js\n ** module id = 132\n ** module chunks = 0\n **/","var addMapEntry = require('./_addMapEntry'),\n arrayReduce = require('./_arrayReduce'),\n mapToArray = require('./_mapToArray');\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map) {\n return arrayReduce(mapToArray(map), addMapEntry, new map.constructor);\n}\n\nmodule.exports = cloneMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneMap.js\n ** module id = 133\n ** module chunks = 0\n **/","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneRegExp.js\n ** module id = 134\n ** module chunks = 0\n **/","var addSetEntry = require('./_addSetEntry'),\n arrayReduce = require('./_arrayReduce'),\n setToArray = require('./_setToArray');\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set) {\n return arrayReduce(setToArray(set), addSetEntry, new set.constructor);\n}\n\nmodule.exports = cloneSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneSet.js\n ** module id = 135\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneSymbol.js\n ** module id = 136\n ** module chunks = 0\n **/","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneTypedArray.js\n ** module id = 137\n ** module chunks = 0\n **/","var assignValue = require('./_assignValue');\n\n/**\n * This function is like `copyObject` except that it accepts a function to\n * customize copied values.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObjectWith(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : source[key];\n\n assignValue(object, key, newValue);\n }\n return object;\n}\n\nmodule.exports = copyObjectWith;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyObjectWith.js\n ** module id = 138\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copySymbols.js\n ** module id = 139\n ** module chunks = 0\n **/","var isIterateeCall = require('./_isIterateeCall'),\n rest = require('./rest');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return rest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = typeof customizer == 'function'\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_createAssigner.js\n ** module id = 140\n ** module chunks = 0\n **/","/**\n * Creates a base function for methods like `_.forIn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_createBaseFor.js\n ** module id = 141\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n // Coerce dates and booleans to numbers, dates to milliseconds and booleans\n // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.\n return +object == +other;\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case numberTag:\n // Treat `NaN` vs. `NaN` as equal.\n return (object != +object) ? other != +other : object == +other;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings primitives and string\n // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n // Recursively compare objects (susceptible to call stack limits).\n return equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask | UNORDERED_COMPARE_FLAG, stack.set(object, other));\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalByTag.js\n ** module id = 142\n ** module chunks = 0\n **/","var baseHas = require('./_baseHas'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for comparison styles. */\nvar PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : baseHas(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n return result;\n}\n\nmodule.exports = equalObjects;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalObjects.js\n ** module id = 143\n ** module chunks = 0\n **/","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getLength.js\n ** module id = 144\n ** module chunks = 0\n **/","var isStrictComparable = require('./_isStrictComparable'),\n toPairs = require('./toPairs');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = toPairs(object),\n length = result.length;\n\n while (length--) {\n result[length][2] = isStrictComparable(result[length][1]);\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getMatchData.js\n ** module id = 145\n ** module chunks = 0\n **/","/** Built-in value references. */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = getOwnPropertySymbols || function() {\n return [];\n};\n\nmodule.exports = getSymbols;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getSymbols.js\n ** module id = 146\n ** module chunks = 0\n **/","var baseCastPath = require('./_baseCastPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isKey = require('./_isKey'),\n isLength = require('./isLength'),\n isString = require('./isString'),\n last = require('./last'),\n parent = require('./_parent');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n if (object == null) {\n return false;\n }\n var result = hasFunc(object, path);\n if (!result && !isKey(path)) {\n path = baseCastPath(path);\n object = parent(object, path);\n if (object != null) {\n path = last(path);\n result = hasFunc(object, path);\n }\n }\n var length = object ? object.length : undefined;\n return result || (\n !!length && isLength(length) && isIndex(path, length) &&\n (isArray(object) || isString(object) || isArguments(object))\n );\n}\n\nmodule.exports = hasPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hasPath.js\n ** module id = 147\n ** module chunks = 0\n **/","var hashHas = require('./_hashHas');\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(hash, key) {\n return hashHas(hash, key) && delete hash[key];\n}\n\nmodule.exports = hashDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashDelete.js\n ** module id = 148\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @param {Object} hash The hash to query.\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(hash, key) {\n if (nativeCreate) {\n var result = hash[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(hash, key) ? hash[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashGet.js\n ** module id = 149\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n */\nfunction hashSet(hash, key, value) {\n hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n}\n\nmodule.exports = hashSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashSet.js\n ** module id = 150\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneArray.js\n ** module id = 151\n ** module chunks = 0\n **/","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneMap = require('./_cloneMap'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSet = require('./_cloneSet'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneByTag.js\n ** module id = 152\n ** module chunks = 0\n **/","var baseCreate = require('./_baseCreate'),\n isPrototype = require('./_isPrototype');\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototypeOf(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneObject.js\n ** module id = 153\n ** module chunks = 0\n **/","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isIterateeCall.js\n ** module id = 154\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isStrictComparable.js\n ** module id = 155\n ** module chunks = 0\n **/","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_iteratorToArray.js\n ** module id = 156\n ** module chunks = 0\n **/","var Hash = require('./_Hash'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': Map ? new Map : [],\n 'string': new Hash\n };\n}\n\nmodule.exports = mapClear;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapClear.js\n ** module id = 157\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocDelete = require('./_assocDelete'),\n hashDelete = require('./_hashDelete'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapDelete(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashDelete(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map['delete'](key) : assocDelete(data.map, key);\n}\n\nmodule.exports = mapDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapDelete.js\n ** module id = 158\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocGet = require('./_assocGet'),\n hashGet = require('./_hashGet'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapGet(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashGet(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.get(key) : assocGet(data.map, key);\n}\n\nmodule.exports = mapGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapGet.js\n ** module id = 159\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocHas = require('./_assocHas'),\n hashHas = require('./_hashHas'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapHas(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashHas(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.has(key) : assocHas(data.map, key);\n}\n\nmodule.exports = mapHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapHas.js\n ** module id = 160\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocSet = require('./_assocSet'),\n hashSet = require('./_hashSet'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache object.\n */\nfunction mapSet(key, value) {\n var data = this.__data__;\n if (isKeyable(key)) {\n hashSet(typeof key == 'string' ? data.string : data.hash, key, value);\n } else if (Map) {\n data.map.set(key, value);\n } else {\n assocSet(data.map, key, value);\n }\n return this;\n}\n\nmodule.exports = mapSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapSet.js\n ** module id = 161\n ** module chunks = 0\n **/","var baseSlice = require('./_baseSlice'),\n get = require('./get');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length == 1 ? object : get(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_parent.js\n ** module id = 162\n ** module chunks = 0\n **/","/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = { 'array': [], 'map': null };\n}\n\nmodule.exports = stackClear;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackClear.js\n ** module id = 163\n ** module chunks = 0\n **/","var assocDelete = require('./_assocDelete');\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocDelete(array, key) : data.map['delete'](key);\n}\n\nmodule.exports = stackDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackDelete.js\n ** module id = 164\n ** module chunks = 0\n **/","var assocGet = require('./_assocGet');\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocGet(array, key) : data.map.get(key);\n}\n\nmodule.exports = stackGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackGet.js\n ** module id = 165\n ** module chunks = 0\n **/","var assocHas = require('./_assocHas');\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocHas(array, key) : data.map.has(key);\n}\n\nmodule.exports = stackHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackHas.js\n ** module id = 166\n ** module chunks = 0\n **/","var MapCache = require('./_MapCache'),\n assocSet = require('./_assocSet');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache object.\n */\nfunction stackSet(key, value) {\n var data = this.__data__,\n array = data.array;\n\n if (array) {\n if (array.length < (LARGE_ARRAY_SIZE - 1)) {\n assocSet(array, key, value);\n } else {\n data.array = null;\n data.map = new MapCache(array);\n }\n }\n var map = data.map;\n if (map) {\n map.set(key, value);\n }\n return this;\n}\n\nmodule.exports = stackSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackSet.js\n ** module id = 167\n ** module chunks = 0\n **/","var toString = require('./toString');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nfunction stringToPath(string) {\n var result = [];\n toString(string).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n}\n\nmodule.exports = stringToPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stringToPath.js\n ** module id = 168\n ** module chunks = 0\n **/","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var getter = _.constant(object);\n *\n * getter() === object;\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/constant.js\n ** module id = 169\n ** module chunks = 0\n **/","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b.c');\n * // => true\n *\n * _.hasIn(object, ['a', 'b', 'c']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/hasIn.js\n ** module id = 170\n ** module chunks = 0\n **/","/**\n * This method returns the first argument given to it.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/identity.js\n ** module id = 171\n ** module chunks = 0\n **/","var constant = require('./constant'),\n root = require('./_root');\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = (freeModule && freeModule.exports === freeExports)\n ? freeExports\n : undefined;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = !Buffer ? constant(false) : function(value) {\n return value instanceof Buffer;\n};\n\nmodule.exports = isBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isBuffer.js\n ** module id = 172\n ** module chunks = 0\n **/","var isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isFunction = require('./isFunction'),\n isString = require('./isString');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty collection or object. A value is considered\n * empty if it's an `arguments` object, array, string, or jQuery-like collection\n * with a length of `0` or has no own enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (isArrayLike(value) &&\n (isArray(value) || isString(value) ||\n isFunction(value.splice) || isArguments(value))) {\n return !value.length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isEmpty.js\n ** module id = 173\n ** module chunks = 0\n **/","var isFunction = require('./isFunction'),\n isHostObject = require('./_isHostObject'),\n isObjectLike = require('./isObjectLike');\n\n/** Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(funcToString.call(value));\n }\n return isObjectLike(value) &&\n (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isNative.js\n ** module id = 174\n ** module chunks = 0\n **/","var isHostObject = require('./_isHostObject'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n var Ctor = proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isPlainObject.js\n ** module id = 175\n ** module chunks = 0\n **/","var isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isSymbol.js\n ** module id = 176\n ** module chunks = 0\n **/","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array ? array.length : 0;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/last.js\n ** module id = 177\n ** module chunks = 0\n **/","var baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable properties of `object` that `predicate`\n * doesn't return truthy for. The predicate is invoked with two arguments:\n * (value, key).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n predicate = baseIteratee(predicate);\n return basePickBy(object, function(value, key) {\n return !predicate(value, key);\n });\n}\n\nmodule.exports = omitBy;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/omitBy.js\n ** module id = 178\n ** module chunks = 0\n **/","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': { 'c': 2 } } },\n * { 'a': { 'b': { 'c': 1 } } }\n * ];\n *\n * _.map(objects, _.property('a.b.c'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(path) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/property.js\n ** module id = 179\n ** module chunks = 0\n **/","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This function is loosely based on [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3');\n * // => 3\n */\nfunction toInteger(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n var remainder = value % 1;\n return value === value ? (remainder ? value - remainder : value) : 0;\n}\n\nmodule.exports = toInteger;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toInteger.js\n ** module id = 180\n ** module chunks = 0\n **/","var isFunction = require('./isFunction'),\n isObject = require('./isObject');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3);\n * // => 3\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3');\n * // => 3\n */\nfunction toNumber(value) {\n if (isObject(value)) {\n var other = isFunction(value.valueOf) ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toNumber.js\n ** module id = 181\n ** module chunks = 0\n **/","var baseToPairs = require('./_baseToPairs'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable key-value pairs for `object` which\n * can be consumed by `_.fromPairs`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the new array of key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\nfunction toPairs(object) {\n return baseToPairs(object, keys(object));\n}\n\nmodule.exports = toPairs;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toPairs.js\n ** module id = 182\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toPlainObject.js\n ** module id = 183\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Converts `value` to a string if it's not one. An empty string is returned\n * for `null` and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (value == null) {\n return '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toString;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toString.js\n ** module id = 184\n ** module chunks = 0\n **/"," /* eslint-env node */\n'use strict';\n\n// SDP helpers.\nvar SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(function(line) {\n return line.trim();\n });\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n var parts = blob.split('\\nm=');\n return parts.map(function(part, index) {\n return (index > 0 ? 'm=' + part : part).trim() + '\\r\\n';\n });\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(function(line) {\n return line.indexOf(prefix) === 0;\n });\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\nSDPUtils.parseCandidate = function(line) {\n var parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n var candidate = {\n foundation: parts[0],\n component: parts[1],\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7]\n };\n\n for (var i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n default: // Unknown extensions are silently ignored.\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\nSDPUtils.writeCandidate = function(candidate) {\n var sdp = [];\n sdp.push(candidate.foundation);\n sdp.push(candidate.component);\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.ip);\n sdp.push(candidate.port);\n\n var type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress); // was: relAddr\n sdp.push('rport');\n sdp.push(candidate.relatedPort); // was: relPort\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n var parts = line.substr(9).split(' ');\n var parsed = {\n payloadType: parseInt(parts.shift(), 10) // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n // was: channels\n parsed.numChannels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n return parsed;\n};\n\n// Generate an a=rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (codec.numChannels !== 1 ? '/' + codec.numChannels : '') + '\\r\\n';\n};\n\n// Parses an a=extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n var parts = line.substr(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n uri: parts[1]\n };\n};\n\n// Generates a=extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n ' ' + headerExtension.uri + '\\r\\n';\n};\n\n// Parses an ftmp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n var parsed = {};\n var kv;\n var parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (var j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n var line = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n var params = [];\n Object.keys(codec.parameters).forEach(function(param) {\n params.push(param + '=' + codec.parameters[param]);\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n var parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' ')\n };\n};\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n var lines = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(function(fb) {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses an RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n var sp = line.indexOf(' ');\n var parts = {\n ssrc: parseInt(line.substr(7, sp - 7), 10)\n };\n var colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.splitLines(mediaSection);\n // Search in session part, too.\n lines = lines.concat(SDPUtils.splitLines(sessionpart));\n var fpLine = lines.filter(function(line) {\n return line.indexOf('a=fingerprint:') === 0;\n })[0].substr(14);\n // Note: a=setup line is ignored since we use the 'auto' role.\n var dtlsParameters = {\n role: 'auto',\n fingerprints: [{\n algorithm: fpLine.split(' ')[0],\n value: fpLine.split(' ')[1]\n }]\n };\n return dtlsParameters;\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n var sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(function(fp) {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.splitLines(mediaSection);\n // Search in session part, too.\n lines = lines.concat(SDPUtils.splitLines(sessionpart));\n var iceParameters = {\n usernameFragment: lines.filter(function(line) {\n return line.indexOf('a=ice-ufrag:') === 0;\n })[0].substr(12),\n password: lines.filter(function(line) {\n return line.indexOf('a=ice-pwd:') === 0;\n })[0].substr(10)\n };\n return iceParameters;\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n return 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n var description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: []\n };\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n var pt = mline[i];\n var rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n var codec = SDPUtils.parseRtpMap(rtpmapline);\n var fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp: is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function(line) {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n var sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' UDP/TLS/RTP/SAVPF ';\n sdp += caps.codecs.map(function(codec) {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(function(codec) {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n // FIXME: add headerExtensions, fecMechanismş and rtcp.\n sdp += 'a=rtcp-mux\\r\\n';\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n var encodingParameters = [];\n var description = SDPUtils.parseRtpParameters(mediaSection);\n var hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(parts) {\n return parts.attribute === 'cname';\n });\n var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n var secondarySsrc;\n\n var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(function(line) {\n var parts = line.split(' ');\n parts.shift();\n return parts.map(function(part) {\n return parseInt(part, 10);\n });\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(function(codec) {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n var encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10),\n rtx: {\n payloadType: codec.payloadType,\n ssrc: secondarySsrc\n }\n };\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: secondarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red'\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(5), 10);\n }\n encodingParameters.forEach(function(params) {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\nSDPUtils.writeSessionBoilerplate = function() {\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\nSDPUtils.writeMediaSection = function(transceiver, caps, type, stream) {\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\n\n // Map ICE parameters (ufrag, pwd) to SDP.\n sdp += SDPUtils.writeIceParameters(\n transceiver.iceGatherer.getLocalParameters());\n\n // Map DTLS parameters to SDP.\n sdp += SDPUtils.writeDtlsParameters(\n transceiver.dtlsTransport.getLocalParameters(),\n type === 'offer' ? 'actpass' : 'active');\n\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\n\n if (transceiver.rtpSender && transceiver.rtpReceiver) {\n sdp += 'a=sendrecv\\r\\n';\n } else if (transceiver.rtpSender) {\n sdp += 'a=sendonly\\r\\n';\n } else if (transceiver.rtpReceiver) {\n sdp += 'a=recvonly\\r\\n';\n } else {\n sdp += 'a=inactive\\r\\n';\n }\n\n // FIXME: for RTX there might be multiple SSRCs. Not implemented in Edge yet.\n if (transceiver.rtpSender) {\n var msid = 'msid:' + stream.id + ' ' +\n transceiver.rtpSender.track.id + '\\r\\n';\n sdp += 'a=' + msid;\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' ' + msid;\n }\n // FIXME: this should be written by writeRtpDescription.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n return sdp;\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n var lines = SDPUtils.splitLines(mediaSection);\n for (var i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substr(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\n// Expose public methods.\nmodule.exports = SDPUtils;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sdp/sdp.js\n ** module id = 185\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n\n'use strict';\n\n// Shimming starts here.\n(function() {\n // Utils.\n var logging = require('./utils').log;\n var browserDetails = require('./utils').browserDetails;\n // Export to the adapter global object visible in the browser.\n module.exports.browserDetails = browserDetails;\n module.exports.extractVersion = require('./utils').extractVersion;\n module.exports.disableLog = require('./utils').disableLog;\n\n // Uncomment the line below if you want logging to occur, including logging\n // for the switch statement below. Can also be turned on in the browser via\n // adapter.disableLog(false), but then logging from the switch statement below\n // will not appear.\n // require('./utils').disableLog(false);\n\n // Browser shims.\n var chromeShim = require('./chrome/chrome_shim') || null;\n var edgeShim = require('./edge/edge_shim') || null;\n var firefoxShim = require('./firefox/firefox_shim') || null;\n var safariShim = require('./safari/safari_shim') || null;\n\n // Shim browser if found.\n switch (browserDetails.browser) {\n case 'opera': // fallthrough as it uses chrome shims\n case 'chrome':\n if (!chromeShim || !chromeShim.shimPeerConnection) {\n logging('Chrome shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming chrome.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = chromeShim;\n\n chromeShim.shimGetUserMedia();\n chromeShim.shimMediaStream();\n chromeShim.shimSourceObject();\n chromeShim.shimPeerConnection();\n chromeShim.shimOnTrack();\n break;\n case 'firefox':\n if (!firefoxShim || !firefoxShim.shimPeerConnection) {\n logging('Firefox shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming firefox.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = firefoxShim;\n\n firefoxShim.shimGetUserMedia();\n firefoxShim.shimSourceObject();\n firefoxShim.shimPeerConnection();\n firefoxShim.shimOnTrack();\n break;\n case 'edge':\n if (!edgeShim || !edgeShim.shimPeerConnection) {\n logging('MS edge shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming edge.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = edgeShim;\n\n edgeShim.shimGetUserMedia();\n edgeShim.shimPeerConnection();\n break;\n case 'safari':\n if (!safariShim) {\n logging('Safari shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming safari.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = safariShim;\n\n safariShim.shimGetUserMedia();\n break;\n default:\n logging('Unsupported browser!');\n }\n})();\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/adapter_core.js\n ** module id = 186\n ** module chunks = 0\n **/","\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\nvar logging = require('../utils.js').log;\nvar browserDetails = require('../utils.js').browserDetails;\n\nvar chromeShim = {\n shimMediaStream: function() {\n window.MediaStream = window.MediaStream || window.webkitMediaStream;\n },\n\n shimOnTrack: function() {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get: function() {\n return this._ontrack;\n },\n set: function(f) {\n var self = this;\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n this.removeEventListener('addstream', this._ontrackpoly);\n }\n this.addEventListener('track', this._ontrack = f);\n this.addEventListener('addstream', this._ontrackpoly = function(e) {\n // onaddstream does not fire when a track is added to an existing\n // stream. But stream.onaddtrack is implemented so we use that.\n e.stream.addEventListener('addtrack', function(te) {\n var event = new Event('track');\n event.track = te.track;\n event.receiver = {track: te.track};\n event.streams = [e.stream];\n self.dispatchEvent(event);\n });\n e.stream.getTracks().forEach(function(track) {\n var event = new Event('track');\n event.track = track;\n event.receiver = {track: track};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n }.bind(this));\n }.bind(this));\n }\n });\n }\n },\n\n shimSourceObject: function() {\n if (typeof window === 'object') {\n if (window.HTMLMediaElement &&\n !('srcObject' in window.HTMLMediaElement.prototype)) {\n // Shim the srcObject property, once, when HTMLMediaElement is found.\n Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', {\n get: function() {\n return this._srcObject;\n },\n set: function(stream) {\n var self = this;\n // Use _srcObject as a private property for this shim\n this._srcObject = stream;\n if (this.src) {\n URL.revokeObjectURL(this.src);\n }\n\n if (!stream) {\n this.src = '';\n return;\n }\n this.src = URL.createObjectURL(stream);\n // We need to recreate the blob url when a track is added or\n // removed. Doing it manually since we want to avoid a recursion.\n stream.addEventListener('addtrack', function() {\n if (self.src) {\n URL.revokeObjectURL(self.src);\n }\n self.src = URL.createObjectURL(stream);\n });\n stream.addEventListener('removetrack', function() {\n if (self.src) {\n URL.revokeObjectURL(self.src);\n }\n self.src = URL.createObjectURL(stream);\n });\n }\n });\n }\n }\n },\n\n shimPeerConnection: function() {\n // The RTCPeerConnection object.\n window.RTCPeerConnection = function(pcConfig, pcConstraints) {\n // Translate iceTransportPolicy to iceTransports,\n // see https://code.google.com/p/webrtc/issues/detail?id=4869\n logging('PeerConnection');\n if (pcConfig && pcConfig.iceTransportPolicy) {\n pcConfig.iceTransports = pcConfig.iceTransportPolicy;\n }\n\n var pc = new webkitRTCPeerConnection(pcConfig, pcConstraints);\n var origGetStats = pc.getStats.bind(pc);\n pc.getStats = function(selector, successCallback, errorCallback) {\n var self = this;\n var args = arguments;\n\n // If selector is a function then we are in the old style stats so just\n // pass back the original getStats format to avoid breaking old users.\n if (arguments.length > 0 && typeof selector === 'function') {\n return origGetStats(selector, successCallback);\n }\n\n var fixChromeStats_ = function(response) {\n var standardReport = {};\n var reports = response.result();\n reports.forEach(function(report) {\n var standardStats = {\n id: report.id,\n timestamp: report.timestamp,\n type: report.type\n };\n report.names().forEach(function(name) {\n standardStats[name] = report.stat(name);\n });\n standardReport[standardStats.id] = standardStats;\n });\n\n return standardReport;\n };\n\n // shim getStats with maplike support\n var makeMapStats = function(stats, legacyStats) {\n var map = new Map(Object.keys(stats).map(function(key) {\n return[key, stats[key]];\n }));\n legacyStats = legacyStats || stats;\n Object.keys(legacyStats).forEach(function(key) {\n map[key] = legacyStats[key];\n });\n return map;\n };\n\n if (arguments.length >= 2) {\n var successCallbackWrapper_ = function(response) {\n args[1](makeMapStats(fixChromeStats_(response)));\n };\n\n return origGetStats.apply(this, [successCallbackWrapper_,\n arguments[0]]);\n }\n\n // promise-support\n return new Promise(function(resolve, reject) {\n if (args.length === 1 && typeof selector === 'object') {\n origGetStats.apply(self, [\n function(response) {\n resolve(makeMapStats(fixChromeStats_(response)));\n }, reject]);\n } else {\n // Preserve legacy chrome stats only on legacy access of stats obj\n origGetStats.apply(self, [\n function(response) {\n resolve(makeMapStats(fixChromeStats_(response),\n response.result()));\n }, reject]);\n }\n }).then(successCallback, errorCallback);\n };\n\n return pc;\n };\n window.RTCPeerConnection.prototype = webkitRTCPeerConnection.prototype;\n\n // wrap static methods. Currently just generateCertificate.\n if (webkitRTCPeerConnection.generateCertificate) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get: function() {\n return webkitRTCPeerConnection.generateCertificate;\n }\n });\n }\n\n // add promise support -- natively available in Chrome 51\n if (browserDetails.version < 51) {\n ['createOffer', 'createAnswer'].forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n var self = this;\n if (arguments.length < 1 || (arguments.length === 1 &&\n typeof arguments[0] === 'object')) {\n var opts = arguments.length === 1 ? arguments[0] : undefined;\n return new Promise(function(resolve, reject) {\n nativeMethod.apply(self, [resolve, reject, opts]);\n });\n }\n return nativeMethod.apply(this, arguments);\n };\n });\n\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n var args = arguments;\n var self = this;\n var promise = new Promise(function(resolve, reject) {\n nativeMethod.apply(self, [args[0], resolve, reject]);\n });\n if (args.length < 2) {\n return promise;\n }\n return promise.then(function() {\n args[1].apply(null, []);\n },\n function(err) {\n if (args.length >= 3) {\n args[2].apply(null, [err]);\n }\n });\n };\n });\n }\n\n // support for addIceCandidate(null)\n var nativeAddIceCandidate =\n RTCPeerConnection.prototype.addIceCandidate;\n RTCPeerConnection.prototype.addIceCandidate = function() {\n return arguments[0] === null ? Promise.resolve()\n : nativeAddIceCandidate.apply(this, arguments);\n };\n\n // shim implicit creation of RTCSessionDescription/RTCIceCandidate\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n RTCIceCandidate : RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n };\n });\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n if (browserDetails.version >= 43) {\n element.srcObject = stream;\n } else if (typeof element.src !== 'undefined') {\n element.src = URL.createObjectURL(stream);\n } else {\n logging('Error attaching stream to element.');\n }\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n if (browserDetails.version >= 43) {\n to.srcObject = from.srcObject;\n } else {\n to.src = from.src;\n }\n }\n};\n\n\n// Expose public methods.\nmodule.exports = {\n shimMediaStream: chromeShim.shimMediaStream,\n shimOnTrack: chromeShim.shimOnTrack,\n shimSourceObject: chromeShim.shimSourceObject,\n shimPeerConnection: chromeShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia'),\n attachMediaStream: chromeShim.attachMediaStream,\n reattachMediaStream: chromeShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/chrome/chrome_shim.js\n ** module id = 187\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\nvar logging = require('../utils.js').log;\n\n// Expose public methods.\nmodule.exports = function() {\n var constraintsToChrome_ = function(c) {\n if (typeof c !== 'object' || c.mandatory || c.optional) {\n return c;\n }\n var cc = {};\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n var r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]};\n if (r.exact !== undefined && typeof r.exact === 'number') {\n r.min = r.max = r.exact;\n }\n var oldname_ = function(prefix, name) {\n if (prefix) {\n return prefix + name.charAt(0).toUpperCase() + name.slice(1);\n }\n return (name === 'deviceId') ? 'sourceId' : name;\n };\n if (r.ideal !== undefined) {\n cc.optional = cc.optional || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[oldname_('min', key)] = r.ideal;\n cc.optional.push(oc);\n oc = {};\n oc[oldname_('max', key)] = r.ideal;\n cc.optional.push(oc);\n } else {\n oc[oldname_('', key)] = r.ideal;\n cc.optional.push(oc);\n }\n }\n if (r.exact !== undefined && typeof r.exact !== 'number') {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_('', key)] = r.exact;\n } else {\n ['min', 'max'].forEach(function(mix) {\n if (r[mix] !== undefined) {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_(mix, key)] = r[mix];\n }\n });\n }\n });\n if (c.advanced) {\n cc.optional = (cc.optional || []).concat(c.advanced);\n }\n return cc;\n };\n\n var shimConstraints_ = function(constraints, func) {\n constraints = JSON.parse(JSON.stringify(constraints));\n if (constraints && constraints.audio) {\n constraints.audio = constraintsToChrome_(constraints.audio);\n }\n if (constraints && typeof constraints.video === 'object') {\n // Shim facingMode for mobile, where it defaults to \"user\".\n var face = constraints.video.facingMode;\n face = face && ((typeof face === 'object') ? face : {ideal: face});\n\n if ((face && (face.exact === 'user' || face.exact === 'environment' ||\n face.ideal === 'user' || face.ideal === 'environment')) &&\n !(navigator.mediaDevices.getSupportedConstraints &&\n navigator.mediaDevices.getSupportedConstraints().facingMode)) {\n delete constraints.video.facingMode;\n if (face.exact === 'environment' || face.ideal === 'environment') {\n // Look for \"back\" in label, or use last cam (typically back cam).\n return navigator.mediaDevices.enumerateDevices()\n .then(function(devices) {\n devices = devices.filter(function(d) {\n return d.kind === 'videoinput';\n });\n var back = devices.find(function(d) {\n return d.label.toLowerCase().indexOf('back') !== -1;\n }) || (devices.length && devices[devices.length - 1]);\n if (back) {\n constraints.video.deviceId = face.exact ? {exact: back.deviceId} :\n {ideal: back.deviceId};\n }\n constraints.video = constraintsToChrome_(constraints.video);\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n });\n }\n }\n constraints.video = constraintsToChrome_(constraints.video);\n }\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n };\n\n var shimError_ = function(e) {\n return {\n name: {\n PermissionDeniedError: 'NotAllowedError',\n ConstraintNotSatisfiedError: 'OverconstrainedError'\n }[e.name] || e.name,\n message: e.message,\n constraint: e.constraintName,\n toString: function() {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n shimConstraints_(constraints, function(c) {\n navigator.webkitGetUserMedia(c, onSuccess, function(e) {\n onError(shimError_(e));\n });\n });\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n };\n\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {\n getUserMedia: getUserMediaPromise_,\n enumerateDevices: function() {\n return new Promise(function(resolve) {\n var kinds = {audio: 'audioinput', video: 'videoinput'};\n return MediaStreamTrack.getSources(function(devices) {\n resolve(devices.map(function(device) {\n return {label: device.label,\n kind: kinds[device.kind],\n deviceId: device.id,\n groupId: ''};\n }));\n });\n });\n }\n };\n }\n\n // A shim for getUserMedia method on the mediaDevices object.\n // TODO(KaptenJansson) remove once implemented in Chrome stable.\n if (!navigator.mediaDevices.getUserMedia) {\n navigator.mediaDevices.getUserMedia = function(constraints) {\n return getUserMediaPromise_(constraints);\n };\n } else {\n // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia\n // function which returns a Promise, it does not accept spec-style\n // constraints.\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(cs) {\n return shimConstraints_(cs, function(c) {\n return origGetUserMedia(c).catch(function(e) {\n return Promise.reject(shimError_(e));\n });\n });\n };\n }\n\n // Dummy devicechange event methods.\n // TODO(KaptenJansson) remove once implemented in Chrome stable.\n if (typeof navigator.mediaDevices.addEventListener === 'undefined') {\n navigator.mediaDevices.addEventListener = function() {\n logging('Dummy mediaDevices.addEventListener called.');\n };\n }\n if (typeof navigator.mediaDevices.removeEventListener === 'undefined') {\n navigator.mediaDevices.removeEventListener = function() {\n logging('Dummy mediaDevices.removeEventListener called.');\n };\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/chrome/getusermedia.js\n ** module id = 188\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar SDPUtils = require('sdp');\nvar logging = require('../utils').log;\n\nvar edgeShim = {\n shimPeerConnection: function() {\n if (window.RTCIceGatherer) {\n // ORTC defines an RTCIceCandidate object but no constructor.\n // Not implemented in Edge.\n if (!window.RTCIceCandidate) {\n window.RTCIceCandidate = function(args) {\n return args;\n };\n }\n // ORTC does not have a session description object but\n // other browsers (i.e. Chrome) that will support both PC and ORTC\n // in the future might have this defined already.\n if (!window.RTCSessionDescription) {\n window.RTCSessionDescription = function(args) {\n return args;\n };\n }\n }\n\n window.RTCPeerConnection = function(config) {\n var self = this;\n\n var _eventTarget = document.createDocumentFragment();\n ['addEventListener', 'removeEventListener', 'dispatchEvent']\n .forEach(function(method) {\n self[method] = _eventTarget[method].bind(_eventTarget);\n });\n\n this.onicecandidate = null;\n this.onaddstream = null;\n this.ontrack = null;\n this.onremovestream = null;\n this.onsignalingstatechange = null;\n this.oniceconnectionstatechange = null;\n this.onnegotiationneeded = null;\n this.ondatachannel = null;\n\n this.localStreams = [];\n this.remoteStreams = [];\n this.getLocalStreams = function() {\n return self.localStreams;\n };\n this.getRemoteStreams = function() {\n return self.remoteStreams;\n };\n\n this.localDescription = new RTCSessionDescription({\n type: '',\n sdp: ''\n });\n this.remoteDescription = new RTCSessionDescription({\n type: '',\n sdp: ''\n });\n this.signalingState = 'stable';\n this.iceConnectionState = 'new';\n this.iceGatheringState = 'new';\n\n this.iceOptions = {\n gatherPolicy: 'all',\n iceServers: []\n };\n if (config && config.iceTransportPolicy) {\n switch (config.iceTransportPolicy) {\n case 'all':\n case 'relay':\n this.iceOptions.gatherPolicy = config.iceTransportPolicy;\n break;\n case 'none':\n // FIXME: remove once implementation and spec have added this.\n throw new TypeError('iceTransportPolicy \"none\" not supported');\n default:\n // don't set iceTransportPolicy.\n break;\n }\n }\n if (config && config.iceServers) {\n // Edge does not like\n // 1) stun:\n // 2) turn: that does not have all of turn:host:port?transport=udp\n this.iceOptions.iceServers = config.iceServers.filter(function(server) {\n if (server && server.urls) {\n server.urls = server.urls.filter(function(url) {\n return url.indexOf('turn:') === 0 &&\n url.indexOf('transport=udp') !== -1;\n })[0];\n return !!server.urls;\n }\n return false;\n });\n }\n\n // per-track iceGathers, iceTransports, dtlsTransports, rtpSenders, ...\n // everything that is needed to describe a SDP m-line.\n this.transceivers = [];\n\n // since the iceGatherer is currently created in createOffer but we\n // must not emit candidates until after setLocalDescription we buffer\n // them in this array.\n this._localIceCandidatesBuffer = [];\n };\n\n window.RTCPeerConnection.prototype._emitBufferedCandidates = function() {\n var self = this;\n var sections = SDPUtils.splitSections(self.localDescription.sdp);\n // FIXME: need to apply ice candidates in a way which is async but\n // in-order\n this._localIceCandidatesBuffer.forEach(function(event) {\n var end = !event.candidate || Object.keys(event.candidate).length === 0;\n if (end) {\n for (var j = 1; j < sections.length; j++) {\n if (sections[j].indexOf('\\r\\na=end-of-candidates\\r\\n') === -1) {\n sections[j] += 'a=end-of-candidates\\r\\n';\n }\n }\n } else if (event.candidate.candidate.indexOf('typ endOfCandidates')\n === -1) {\n sections[event.candidate.sdpMLineIndex + 1] +=\n 'a=' + event.candidate.candidate + '\\r\\n';\n }\n self.localDescription.sdp = sections.join('');\n self.dispatchEvent(event);\n if (self.onicecandidate !== null) {\n self.onicecandidate(event);\n }\n if (!event.candidate && self.iceGatheringState !== 'complete') {\n var complete = self.transceivers.every(function(transceiver) {\n return transceiver.iceGatherer &&\n transceiver.iceGatherer.state === 'completed';\n });\n if (complete) {\n self.iceGatheringState = 'complete';\n }\n }\n });\n this._localIceCandidatesBuffer = [];\n };\n\n window.RTCPeerConnection.prototype.addStream = function(stream) {\n // Clone is necessary for local demos mostly, attaching directly\n // to two different senders does not work (build 10547).\n this.localStreams.push(stream.clone());\n this._maybeFireNegotiationNeeded();\n };\n\n window.RTCPeerConnection.prototype.removeStream = function(stream) {\n var idx = this.localStreams.indexOf(stream);\n if (idx > -1) {\n this.localStreams.splice(idx, 1);\n this._maybeFireNegotiationNeeded();\n }\n };\n\n window.RTCPeerConnection.prototype.getSenders = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpSender;\n })\n .map(function(transceiver) {\n return transceiver.rtpSender;\n });\n };\n\n window.RTCPeerConnection.prototype.getReceivers = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpReceiver;\n })\n .map(function(transceiver) {\n return transceiver.rtpReceiver;\n });\n };\n\n // Determines the intersection of local and remote capabilities.\n window.RTCPeerConnection.prototype._getCommonCapabilities =\n function(localCapabilities, remoteCapabilities) {\n var commonCapabilities = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: []\n };\n localCapabilities.codecs.forEach(function(lCodec) {\n for (var i = 0; i < remoteCapabilities.codecs.length; i++) {\n var rCodec = remoteCapabilities.codecs[i];\n if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() &&\n lCodec.clockRate === rCodec.clockRate &&\n lCodec.numChannels === rCodec.numChannels) {\n // push rCodec so we reply with offerer payload type\n commonCapabilities.codecs.push(rCodec);\n\n // FIXME: also need to determine intersection between\n // .rtcpFeedback and .parameters\n break;\n }\n }\n });\n\n localCapabilities.headerExtensions\n .forEach(function(lHeaderExtension) {\n for (var i = 0; i < remoteCapabilities.headerExtensions.length;\n i++) {\n var rHeaderExtension = remoteCapabilities.headerExtensions[i];\n if (lHeaderExtension.uri === rHeaderExtension.uri) {\n commonCapabilities.headerExtensions.push(rHeaderExtension);\n break;\n }\n }\n });\n\n // FIXME: fecMechanisms\n return commonCapabilities;\n };\n\n // Create ICE gatherer, ICE transport and DTLS transport.\n window.RTCPeerConnection.prototype._createIceAndDtlsTransports =\n function(mid, sdpMLineIndex) {\n var self = this;\n var iceGatherer = new RTCIceGatherer(self.iceOptions);\n var iceTransport = new RTCIceTransport(iceGatherer);\n iceGatherer.onlocalcandidate = function(evt) {\n var event = new Event('icecandidate');\n event.candidate = {sdpMid: mid, sdpMLineIndex: sdpMLineIndex};\n\n var cand = evt.candidate;\n var end = !cand || Object.keys(cand).length === 0;\n // Edge emits an empty object for RTCIceCandidateComplete‥\n if (end) {\n // polyfill since RTCIceGatherer.state is not implemented in\n // Edge 10547 yet.\n if (iceGatherer.state === undefined) {\n iceGatherer.state = 'completed';\n }\n\n // Emit a candidate with type endOfCandidates to make the samples\n // work. Edge requires addIceCandidate with this empty candidate\n // to start checking. The real solution is to signal\n // end-of-candidates to the other side when getting the null\n // candidate but some apps (like the samples) don't do that.\n event.candidate.candidate =\n 'candidate:1 1 udp 1 0.0.0.0 9 typ endOfCandidates';\n } else {\n // RTCIceCandidate doesn't have a component, needs to be added\n cand.component = iceTransport.component === 'RTCP' ? 2 : 1;\n event.candidate.candidate = SDPUtils.writeCandidate(cand);\n }\n\n var complete = self.transceivers.every(function(transceiver) {\n return transceiver.iceGatherer &&\n transceiver.iceGatherer.state === 'completed';\n });\n\n // Emit candidate if localDescription is set.\n // Also emits null candidate when all gatherers are complete.\n switch (self.iceGatheringState) {\n case 'new':\n self._localIceCandidatesBuffer.push(event);\n if (end && complete) {\n self._localIceCandidatesBuffer.push(\n new Event('icecandidate'));\n }\n break;\n case 'gathering':\n self._emitBufferedCandidates();\n self.dispatchEvent(event);\n if (self.onicecandidate !== null) {\n self.onicecandidate(event);\n }\n if (complete) {\n self.dispatchEvent(new Event('icecandidate'));\n if (self.onicecandidate !== null) {\n self.onicecandidate(new Event('icecandidate'));\n }\n self.iceGatheringState = 'complete';\n }\n break;\n case 'complete':\n // should not happen... currently!\n break;\n default: // no-op.\n break;\n }\n };\n iceTransport.onicestatechange = function() {\n self._updateConnectionState();\n };\n\n var dtlsTransport = new RTCDtlsTransport(iceTransport);\n dtlsTransport.ondtlsstatechange = function() {\n self._updateConnectionState();\n };\n dtlsTransport.onerror = function() {\n // onerror does not set state to failed by itself.\n dtlsTransport.state = 'failed';\n self._updateConnectionState();\n };\n\n return {\n iceGatherer: iceGatherer,\n iceTransport: iceTransport,\n dtlsTransport: dtlsTransport\n };\n };\n\n // Start the RTP Sender and Receiver for a transceiver.\n window.RTCPeerConnection.prototype._transceive = function(transceiver,\n send, recv) {\n var params = this._getCommonCapabilities(transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n if (send && transceiver.rtpSender) {\n params.encodings = transceiver.sendEncodingParameters;\n params.rtcp = {\n cname: SDPUtils.localCName\n };\n if (transceiver.recvEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.recvEncodingParameters[0].ssrc;\n }\n transceiver.rtpSender.send(params);\n }\n if (recv && transceiver.rtpReceiver) {\n params.encodings = transceiver.recvEncodingParameters;\n params.rtcp = {\n cname: transceiver.cname\n };\n if (transceiver.sendEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.sendEncodingParameters[0].ssrc;\n }\n transceiver.rtpReceiver.receive(params);\n }\n };\n\n window.RTCPeerConnection.prototype.setLocalDescription =\n function(description) {\n var self = this;\n var sections;\n var sessionpart;\n if (description.type === 'offer') {\n // FIXME: What was the purpose of this empty if statement?\n // if (!this._pendingOffer) {\n // } else {\n if (this._pendingOffer) {\n // VERY limited support for SDP munging. Limited to:\n // * changing the order of codecs\n sections = SDPUtils.splitSections(description.sdp);\n sessionpart = sections.shift();\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var caps = SDPUtils.parseRtpParameters(mediaSection);\n self._pendingOffer[sdpMLineIndex].localCapabilities = caps;\n });\n this.transceivers = this._pendingOffer;\n delete this._pendingOffer;\n }\n } else if (description.type === 'answer') {\n sections = SDPUtils.splitSections(self.remoteDescription.sdp);\n sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var transceiver = self.transceivers[sdpMLineIndex];\n var iceGatherer = transceiver.iceGatherer;\n var iceTransport = transceiver.iceTransport;\n var dtlsTransport = transceiver.dtlsTransport;\n var localCapabilities = transceiver.localCapabilities;\n var remoteCapabilities = transceiver.remoteCapabilities;\n var rejected = mediaSection.split('\\n', 1)[0]\n .split(' ', 2)[1] === '0';\n\n if (!rejected) {\n var remoteIceParameters = SDPUtils.getIceParameters(\n mediaSection, sessionpart);\n if (isIceLite) {\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:')\n .map(function(cand) {\n return SDPUtils.parseCandidate(cand);\n })\n .filter(function(cand) {\n return cand.component === '1';\n });\n // ice-lite only includes host candidates in the SDP so we can\n // use setRemoteCandidates (which implies an\n // RTCIceCandidateComplete)\n iceTransport.setRemoteCandidates(cands);\n }\n iceTransport.start(iceGatherer, remoteIceParameters,\n isIceLite ? 'controlling' : 'controlled');\n\n var remoteDtlsParameters = SDPUtils.getDtlsParameters(\n mediaSection, sessionpart);\n if (isIceLite) {\n remoteDtlsParameters.role = 'server';\n }\n dtlsTransport.start(remoteDtlsParameters);\n\n // Calculate intersection of capabilities.\n var params = self._getCommonCapabilities(localCapabilities,\n remoteCapabilities);\n\n // Start the RTCRtpSender. The RTCRtpReceiver for this\n // transceiver has already been started in setRemoteDescription.\n self._transceive(transceiver,\n params.codecs.length > 0,\n false);\n }\n });\n }\n\n this.localDescription = {\n type: description.type,\n sdp: description.sdp\n };\n switch (description.type) {\n case 'offer':\n this._updateSignalingState('have-local-offer');\n break;\n case 'answer':\n this._updateSignalingState('stable');\n break;\n default:\n throw new TypeError('unsupported type \"' + description.type +\n '\"');\n }\n\n // If a success callback was provided, emit ICE candidates after it\n // has been executed. Otherwise, emit callback after the Promise is\n // resolved.\n var hasCallback = arguments.length > 1 &&\n typeof arguments[1] === 'function';\n if (hasCallback) {\n var cb = arguments[1];\n window.setTimeout(function() {\n cb();\n if (self.iceGatheringState === 'new') {\n self.iceGatheringState = 'gathering';\n }\n self._emitBufferedCandidates();\n }, 0);\n }\n var p = Promise.resolve();\n p.then(function() {\n if (!hasCallback) {\n if (self.iceGatheringState === 'new') {\n self.iceGatheringState = 'gathering';\n }\n // Usually candidates will be emitted earlier.\n window.setTimeout(self._emitBufferedCandidates.bind(self), 500);\n }\n });\n return p;\n };\n\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function(description) {\n var self = this;\n var stream = new MediaStream();\n var receiverList = [];\n var sections = SDPUtils.splitSections(description.sdp);\n var sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].substr(2).split(' ');\n var kind = mline[0];\n var rejected = mline[1] === '0';\n var direction = SDPUtils.getDirection(mediaSection, sessionpart);\n\n var transceiver;\n var iceGatherer;\n var iceTransport;\n var dtlsTransport;\n var rtpSender;\n var rtpReceiver;\n var sendEncodingParameters;\n var recvEncodingParameters;\n var localCapabilities;\n\n var track;\n // FIXME: ensure the mediaSection has rtcp-mux set.\n var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection);\n var remoteIceParameters;\n var remoteDtlsParameters;\n if (!rejected) {\n remoteIceParameters = SDPUtils.getIceParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters.role = 'client';\n }\n recvEncodingParameters =\n SDPUtils.parseRtpEncodingParameters(mediaSection);\n\n var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:');\n if (mid.length) {\n mid = mid[0].substr(6);\n } else {\n mid = SDPUtils.generateIdentifier();\n }\n\n var cname;\n // Gets the first SSRC. Note that with RTX there might be multiple\n // SSRCs.\n var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(obj) {\n return obj.attribute === 'cname';\n })[0];\n if (remoteSsrc) {\n cname = remoteSsrc.value;\n }\n\n var isComplete = SDPUtils.matchPrefix(mediaSection,\n 'a=end-of-candidates').length > 0;\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:')\n .map(function(cand) {\n return SDPUtils.parseCandidate(cand);\n })\n .filter(function(cand) {\n return cand.component === '1';\n });\n if (description.type === 'offer' && !rejected) {\n var transports = self._createIceAndDtlsTransports(mid,\n sdpMLineIndex);\n if (isComplete) {\n transports.iceTransport.setRemoteCandidates(cands);\n }\n\n localCapabilities = RTCRtpReceiver.getCapabilities(kind);\n sendEncodingParameters = [{\n ssrc: (2 * sdpMLineIndex + 2) * 1001\n }];\n\n rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind);\n\n track = rtpReceiver.track;\n receiverList.push([track, rtpReceiver]);\n // FIXME: not correct when there are multiple streams but that is\n // not currently supported in this shim.\n stream.addTrack(track);\n\n // FIXME: look at direction.\n if (self.localStreams.length > 0 &&\n self.localStreams[0].getTracks().length >= sdpMLineIndex) {\n // FIXME: actually more complicated, needs to match types etc\n var localtrack = self.localStreams[0]\n .getTracks()[sdpMLineIndex];\n rtpSender = new RTCRtpSender(localtrack,\n transports.dtlsTransport);\n }\n\n self.transceivers[sdpMLineIndex] = {\n iceGatherer: transports.iceGatherer,\n iceTransport: transports.iceTransport,\n dtlsTransport: transports.dtlsTransport,\n localCapabilities: localCapabilities,\n remoteCapabilities: remoteCapabilities,\n rtpSender: rtpSender,\n rtpReceiver: rtpReceiver,\n kind: kind,\n mid: mid,\n cname: cname,\n sendEncodingParameters: sendEncodingParameters,\n recvEncodingParameters: recvEncodingParameters\n };\n // Start the RTCRtpReceiver now. The RTPSender is started in\n // setLocalDescription.\n self._transceive(self.transceivers[sdpMLineIndex],\n false,\n direction === 'sendrecv' || direction === 'sendonly');\n } else if (description.type === 'answer' && !rejected) {\n transceiver = self.transceivers[sdpMLineIndex];\n iceGatherer = transceiver.iceGatherer;\n iceTransport = transceiver.iceTransport;\n dtlsTransport = transceiver.dtlsTransport;\n rtpSender = transceiver.rtpSender;\n rtpReceiver = transceiver.rtpReceiver;\n sendEncodingParameters = transceiver.sendEncodingParameters;\n localCapabilities = transceiver.localCapabilities;\n\n self.transceivers[sdpMLineIndex].recvEncodingParameters =\n recvEncodingParameters;\n self.transceivers[sdpMLineIndex].remoteCapabilities =\n remoteCapabilities;\n self.transceivers[sdpMLineIndex].cname = cname;\n\n if (isIceLite || isComplete) {\n iceTransport.setRemoteCandidates(cands);\n }\n iceTransport.start(iceGatherer, remoteIceParameters,\n 'controlling');\n dtlsTransport.start(remoteDtlsParameters);\n\n self._transceive(transceiver,\n direction === 'sendrecv' || direction === 'recvonly',\n direction === 'sendrecv' || direction === 'sendonly');\n\n if (rtpReceiver &&\n (direction === 'sendrecv' || direction === 'sendonly')) {\n track = rtpReceiver.track;\n receiverList.push([track, rtpReceiver]);\n stream.addTrack(track);\n } else {\n // FIXME: actually the receiver should be created later.\n delete transceiver.rtpReceiver;\n }\n }\n });\n\n this.remoteDescription = {\n type: description.type,\n sdp: description.sdp\n };\n switch (description.type) {\n case 'offer':\n this._updateSignalingState('have-remote-offer');\n break;\n case 'answer':\n this._updateSignalingState('stable');\n break;\n default:\n throw new TypeError('unsupported type \"' + description.type +\n '\"');\n }\n if (stream.getTracks().length) {\n self.remoteStreams.push(stream);\n window.setTimeout(function() {\n var event = new Event('addstream');\n event.stream = stream;\n self.dispatchEvent(event);\n if (self.onaddstream !== null) {\n window.setTimeout(function() {\n self.onaddstream(event);\n }, 0);\n }\n\n receiverList.forEach(function(item) {\n var track = item[0];\n var receiver = item[1];\n var trackEvent = new Event('track');\n trackEvent.track = track;\n trackEvent.receiver = receiver;\n trackEvent.streams = [stream];\n self.dispatchEvent(event);\n if (self.ontrack !== null) {\n window.setTimeout(function() {\n self.ontrack(trackEvent);\n }, 0);\n }\n });\n }, 0);\n }\n if (arguments.length > 1 && typeof arguments[1] === 'function') {\n window.setTimeout(arguments[1], 0);\n }\n return Promise.resolve();\n };\n\n window.RTCPeerConnection.prototype.close = function() {\n this.transceivers.forEach(function(transceiver) {\n /* not yet\n if (transceiver.iceGatherer) {\n transceiver.iceGatherer.close();\n }\n */\n if (transceiver.iceTransport) {\n transceiver.iceTransport.stop();\n }\n if (transceiver.dtlsTransport) {\n transceiver.dtlsTransport.stop();\n }\n if (transceiver.rtpSender) {\n transceiver.rtpSender.stop();\n }\n if (transceiver.rtpReceiver) {\n transceiver.rtpReceiver.stop();\n }\n });\n // FIXME: clean up tracks, local streams, remote streams, etc\n this._updateSignalingState('closed');\n };\n\n // Update the signaling state.\n window.RTCPeerConnection.prototype._updateSignalingState =\n function(newState) {\n this.signalingState = newState;\n var event = new Event('signalingstatechange');\n this.dispatchEvent(event);\n if (this.onsignalingstatechange !== null) {\n this.onsignalingstatechange(event);\n }\n };\n\n // Determine whether to fire the negotiationneeded event.\n window.RTCPeerConnection.prototype._maybeFireNegotiationNeeded =\n function() {\n // Fire away (for now).\n var event = new Event('negotiationneeded');\n this.dispatchEvent(event);\n if (this.onnegotiationneeded !== null) {\n this.onnegotiationneeded(event);\n }\n };\n\n // Update the connection state.\n window.RTCPeerConnection.prototype._updateConnectionState = function() {\n var self = this;\n var newState;\n var states = {\n 'new': 0,\n closed: 0,\n connecting: 0,\n checking: 0,\n connected: 0,\n completed: 0,\n failed: 0\n };\n this.transceivers.forEach(function(transceiver) {\n states[transceiver.iceTransport.state]++;\n states[transceiver.dtlsTransport.state]++;\n });\n // ICETransport.completed and connected are the same for this purpose.\n states.connected += states.completed;\n\n newState = 'new';\n if (states.failed > 0) {\n newState = 'failed';\n } else if (states.connecting > 0 || states.checking > 0) {\n newState = 'connecting';\n } else if (states.disconnected > 0) {\n newState = 'disconnected';\n } else if (states.new > 0) {\n newState = 'new';\n } else if (states.connected > 0 || states.completed > 0) {\n newState = 'connected';\n }\n\n if (newState !== self.iceConnectionState) {\n self.iceConnectionState = newState;\n var event = new Event('iceconnectionstatechange');\n this.dispatchEvent(event);\n if (this.oniceconnectionstatechange !== null) {\n this.oniceconnectionstatechange(event);\n }\n }\n };\n\n window.RTCPeerConnection.prototype.createOffer = function() {\n var self = this;\n if (this._pendingOffer) {\n throw new Error('createOffer called while there is a pending offer.');\n }\n var offerOptions;\n if (arguments.length === 1 && typeof arguments[0] !== 'function') {\n offerOptions = arguments[0];\n } else if (arguments.length === 3) {\n offerOptions = arguments[2];\n }\n\n var tracks = [];\n var numAudioTracks = 0;\n var numVideoTracks = 0;\n // Default to sendrecv.\n if (this.localStreams.length) {\n numAudioTracks = this.localStreams[0].getAudioTracks().length;\n numVideoTracks = this.localStreams[0].getVideoTracks().length;\n }\n // Determine number of audio and video tracks we need to send/recv.\n if (offerOptions) {\n // Reject Chrome legacy constraints.\n if (offerOptions.mandatory || offerOptions.optional) {\n throw new TypeError(\n 'Legacy mandatory/optional constraints not supported.');\n }\n if (offerOptions.offerToReceiveAudio !== undefined) {\n numAudioTracks = offerOptions.offerToReceiveAudio;\n }\n if (offerOptions.offerToReceiveVideo !== undefined) {\n numVideoTracks = offerOptions.offerToReceiveVideo;\n }\n }\n if (this.localStreams.length) {\n // Push local streams.\n this.localStreams[0].getTracks().forEach(function(track) {\n tracks.push({\n kind: track.kind,\n track: track,\n wantReceive: track.kind === 'audio' ?\n numAudioTracks > 0 : numVideoTracks > 0\n });\n if (track.kind === 'audio') {\n numAudioTracks--;\n } else if (track.kind === 'video') {\n numVideoTracks--;\n }\n });\n }\n // Create M-lines for recvonly streams.\n while (numAudioTracks > 0 || numVideoTracks > 0) {\n if (numAudioTracks > 0) {\n tracks.push({\n kind: 'audio',\n wantReceive: true\n });\n numAudioTracks--;\n }\n if (numVideoTracks > 0) {\n tracks.push({\n kind: 'video',\n wantReceive: true\n });\n numVideoTracks--;\n }\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate();\n var transceivers = [];\n tracks.forEach(function(mline, sdpMLineIndex) {\n // For each track, create an ice gatherer, ice transport,\n // dtls transport, potentially rtpsender and rtpreceiver.\n var track = mline.track;\n var kind = mline.kind;\n var mid = SDPUtils.generateIdentifier();\n\n var transports = self._createIceAndDtlsTransports(mid, sdpMLineIndex);\n\n var localCapabilities = RTCRtpSender.getCapabilities(kind);\n var rtpSender;\n var rtpReceiver;\n\n // generate an ssrc now, to be used later in rtpSender.send\n var sendEncodingParameters = [{\n ssrc: (2 * sdpMLineIndex + 1) * 1001\n }];\n if (track) {\n rtpSender = new RTCRtpSender(track, transports.dtlsTransport);\n }\n\n if (mline.wantReceive) {\n rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind);\n }\n\n transceivers[sdpMLineIndex] = {\n iceGatherer: transports.iceGatherer,\n iceTransport: transports.iceTransport,\n dtlsTransport: transports.dtlsTransport,\n localCapabilities: localCapabilities,\n remoteCapabilities: null,\n rtpSender: rtpSender,\n rtpReceiver: rtpReceiver,\n kind: kind,\n mid: mid,\n sendEncodingParameters: sendEncodingParameters,\n recvEncodingParameters: null\n };\n var transceiver = transceivers[sdpMLineIndex];\n sdp += SDPUtils.writeMediaSection(transceiver,\n transceiver.localCapabilities, 'offer', self.localStreams[0]);\n });\n\n this._pendingOffer = transceivers;\n var desc = new RTCSessionDescription({\n type: 'offer',\n sdp: sdp\n });\n if (arguments.length && typeof arguments[0] === 'function') {\n window.setTimeout(arguments[0], 0, desc);\n }\n return Promise.resolve(desc);\n };\n\n window.RTCPeerConnection.prototype.createAnswer = function() {\n var self = this;\n\n var sdp = SDPUtils.writeSessionBoilerplate();\n this.transceivers.forEach(function(transceiver) {\n // Calculate intersection of capabilities.\n var commonCapabilities = self._getCommonCapabilities(\n transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n\n sdp += SDPUtils.writeMediaSection(transceiver, commonCapabilities,\n 'answer', self.localStreams[0]);\n });\n\n var desc = new RTCSessionDescription({\n type: 'answer',\n sdp: sdp\n });\n if (arguments.length && typeof arguments[0] === 'function') {\n window.setTimeout(arguments[0], 0, desc);\n }\n return Promise.resolve(desc);\n };\n\n window.RTCPeerConnection.prototype.addIceCandidate = function(candidate) {\n if (candidate === null) {\n this.transceivers.forEach(function(transceiver) {\n transceiver.iceTransport.addIceCandidate({});\n });\n } else {\n var mLineIndex = candidate.sdpMLineIndex;\n if (candidate.sdpMid) {\n for (var i = 0; i < this.transceivers.length; i++) {\n if (this.transceivers[i].mid === candidate.sdpMid) {\n mLineIndex = i;\n break;\n }\n }\n }\n var transceiver = this.transceivers[mLineIndex];\n if (transceiver) {\n var cand = Object.keys(candidate.candidate).length > 0 ?\n SDPUtils.parseCandidate(candidate.candidate) : {};\n // Ignore Chrome's invalid candidates since Edge does not like them.\n if (cand.protocol === 'tcp' && cand.port === 0) {\n return;\n }\n // Ignore RTCP candidates, we assume RTCP-MUX.\n if (cand.component !== '1') {\n return;\n }\n // A dirty hack to make samples work.\n if (cand.type === 'endOfCandidates') {\n cand = {};\n }\n transceiver.iceTransport.addRemoteCandidate(cand);\n\n // update the remoteDescription.\n var sections = SDPUtils.splitSections(this.remoteDescription.sdp);\n sections[mLineIndex + 1] += (cand.type ? candidate.candidate.trim()\n : 'a=end-of-candidates') + '\\r\\n';\n this.remoteDescription.sdp = sections.join('');\n }\n }\n if (arguments.length > 1 && typeof arguments[1] === 'function') {\n window.setTimeout(arguments[1], 0);\n }\n return Promise.resolve();\n };\n\n window.RTCPeerConnection.prototype.getStats = function() {\n var promises = [];\n this.transceivers.forEach(function(transceiver) {\n ['rtpSender', 'rtpReceiver', 'iceGatherer', 'iceTransport',\n 'dtlsTransport'].forEach(function(method) {\n if (transceiver[method]) {\n promises.push(transceiver[method].getStats());\n }\n });\n });\n var cb = arguments.length > 1 && typeof arguments[1] === 'function' &&\n arguments[1];\n return new Promise(function(resolve) {\n // shim getStats with maplike support\n var results = new Map();\n Promise.all(promises).then(function(res) {\n res.forEach(function(result) {\n Object.keys(result).forEach(function(id) {\n results.set(id, result[id]);\n results[id] = result[id];\n });\n });\n if (cb) {\n window.setTimeout(cb, 0, results);\n }\n resolve(results);\n });\n });\n };\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n element.srcObject = stream;\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n to.srcObject = from.srcObject;\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimPeerConnection: edgeShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia'),\n attachMediaStream: edgeShim.attachMediaStream,\n reattachMediaStream: edgeShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/edge/edge_shim.js\n ** module id = 189\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\n// Expose public methods.\nmodule.exports = function() {\n var shimError_ = function(e) {\n return {\n name: {PermissionDeniedError: 'NotAllowedError'}[e.name] || e.name,\n message: e.message,\n constraint: e.constraint,\n toString: function() {\n return this.name;\n }\n };\n };\n\n // getUserMedia error shim.\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n return origGetUserMedia(c).catch(function(e) {\n return Promise.reject(shimError_(e));\n });\n };\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/edge/getusermedia.js\n ** module id = 190\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar logging = require('../utils').log;\nvar browserDetails = require('../utils').browserDetails;\n\nvar firefoxShim = {\n shimOnTrack: function() {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get: function() {\n return this._ontrack;\n },\n set: function(f) {\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n this.removeEventListener('addstream', this._ontrackpoly);\n }\n this.addEventListener('track', this._ontrack = f);\n this.addEventListener('addstream', this._ontrackpoly = function(e) {\n e.stream.getTracks().forEach(function(track) {\n var event = new Event('track');\n event.track = track;\n event.receiver = {track: track};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n }.bind(this));\n }.bind(this));\n }\n });\n }\n },\n\n shimSourceObject: function() {\n // Firefox has supported mozSrcObject since FF22, unprefixed in 42.\n if (typeof window === 'object') {\n if (window.HTMLMediaElement &&\n !('srcObject' in window.HTMLMediaElement.prototype)) {\n // Shim the srcObject property, once, when HTMLMediaElement is found.\n Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', {\n get: function() {\n return this.mozSrcObject;\n },\n set: function(stream) {\n this.mozSrcObject = stream;\n }\n });\n }\n }\n },\n\n shimPeerConnection: function() {\n if (typeof window !== 'object' || !(window.RTCPeerConnection ||\n window.mozRTCPeerConnection)) {\n return; // probably media.peerconnection.enabled=false in about:config\n }\n // The RTCPeerConnection object.\n if (!window.RTCPeerConnection) {\n window.RTCPeerConnection = function(pcConfig, pcConstraints) {\n if (browserDetails.version < 38) {\n // .urls is not supported in FF < 38.\n // create RTCIceServers with a single url.\n if (pcConfig && pcConfig.iceServers) {\n var newIceServers = [];\n for (var i = 0; i < pcConfig.iceServers.length; i++) {\n var server = pcConfig.iceServers[i];\n if (server.hasOwnProperty('urls')) {\n for (var j = 0; j < server.urls.length; j++) {\n var newServer = {\n url: server.urls[j]\n };\n if (server.urls[j].indexOf('turn') === 0) {\n newServer.username = server.username;\n newServer.credential = server.credential;\n }\n newIceServers.push(newServer);\n }\n } else {\n newIceServers.push(pcConfig.iceServers[i]);\n }\n }\n pcConfig.iceServers = newIceServers;\n }\n }\n return new mozRTCPeerConnection(pcConfig, pcConstraints);\n };\n window.RTCPeerConnection.prototype = mozRTCPeerConnection.prototype;\n\n // wrap static methods. Currently just generateCertificate.\n if (mozRTCPeerConnection.generateCertificate) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get: function() {\n return mozRTCPeerConnection.generateCertificate;\n }\n });\n }\n\n window.RTCSessionDescription = mozRTCSessionDescription;\n window.RTCIceCandidate = mozRTCIceCandidate;\n }\n\n // shim away need for obsolete RTCIceCandidate/RTCSessionDescription.\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n RTCPeerConnection.prototype[method] = function() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n RTCIceCandidate : RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n };\n });\n\n // support for addIceCandidate(null)\n var nativeAddIceCandidate =\n RTCPeerConnection.prototype.addIceCandidate;\n RTCPeerConnection.prototype.addIceCandidate = function() {\n return arguments[0] === null ? Promise.resolve()\n : nativeAddIceCandidate.apply(this, arguments);\n };\n\n // shim getStats with maplike support\n var makeMapStats = function(stats) {\n var map = new Map();\n Object.keys(stats).forEach(function(key) {\n map.set(key, stats[key]);\n map[key] = stats[key];\n });\n return map;\n };\n\n var nativeGetStats = RTCPeerConnection.prototype.getStats;\n RTCPeerConnection.prototype.getStats = function(selector, onSucc, onErr) {\n return nativeGetStats.apply(this, [selector || null])\n .then(function(stats) {\n return makeMapStats(stats);\n })\n .then(onSucc, onErr);\n };\n },\n\n shimGetUserMedia: function() {\n // getUserMedia constraints shim.\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n var constraintsToFF37_ = function(c) {\n if (typeof c !== 'object' || c.require) {\n return c;\n }\n var require = [];\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' ||\n key === 'mediaSource') {\n return;\n }\n var r = c[key] = (typeof c[key] === 'object') ?\n c[key] : {ideal: c[key]};\n if (r.min !== undefined ||\n r.max !== undefined || r.exact !== undefined) {\n require.push(key);\n }\n if (r.exact !== undefined) {\n if (typeof r.exact === 'number') {\n r. min = r.max = r.exact;\n } else {\n c[key] = r.exact;\n }\n delete r.exact;\n }\n if (r.ideal !== undefined) {\n c.advanced = c.advanced || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[key] = {min: r.ideal, max: r.ideal};\n } else {\n oc[key] = r.ideal;\n }\n c.advanced.push(oc);\n delete r.ideal;\n if (!Object.keys(r).length) {\n delete c[key];\n }\n }\n });\n if (require.length) {\n c.require = require;\n }\n return c;\n };\n constraints = JSON.parse(JSON.stringify(constraints));\n if (browserDetails.version < 38) {\n logging('spec: ' + JSON.stringify(constraints));\n if (constraints.audio) {\n constraints.audio = constraintsToFF37_(constraints.audio);\n }\n if (constraints.video) {\n constraints.video = constraintsToFF37_(constraints.video);\n }\n logging('ff37: ' + JSON.stringify(constraints));\n }\n return navigator.mozGetUserMedia(constraints, onSuccess, onError);\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n };\n\n // Shim for mediaDevices on older versions.\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {getUserMedia: getUserMediaPromise_,\n addEventListener: function() { },\n removeEventListener: function() { }\n };\n }\n navigator.mediaDevices.enumerateDevices =\n navigator.mediaDevices.enumerateDevices || function() {\n return new Promise(function(resolve) {\n var infos = [\n {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''},\n {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''}\n ];\n resolve(infos);\n });\n };\n\n if (browserDetails.version < 41) {\n // Work around http://bugzil.la/1169665\n var orgEnumerateDevices =\n navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices);\n navigator.mediaDevices.enumerateDevices = function() {\n return orgEnumerateDevices().then(undefined, function(e) {\n if (e.name === 'NotFoundError') {\n return [];\n }\n throw e;\n });\n };\n }\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n element.srcObject = stream;\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n to.srcObject = from.srcObject;\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimOnTrack: firefoxShim.shimOnTrack,\n shimSourceObject: firefoxShim.shimSourceObject,\n shimPeerConnection: firefoxShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia'),\n attachMediaStream: firefoxShim.attachMediaStream,\n reattachMediaStream: firefoxShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/firefox/firefox_shim.js\n ** module id = 191\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar logging = require('../utils').log;\nvar browserDetails = require('../utils').browserDetails;\n\n// Expose public methods.\nmodule.exports = function() {\n var shimError_ = function(e) {\n return {\n name: {\n SecurityError: 'NotAllowedError',\n PermissionDeniedError: 'NotAllowedError'\n }[e.name] || e.name,\n message: {\n 'The operation is insecure.': 'The request is not allowed by the ' +\n 'user agent or the platform in the current context.'\n }[e.message] || e.message,\n constraint: e.constraint,\n toString: function() {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n // getUserMedia constraints shim.\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n var constraintsToFF37_ = function(c) {\n if (typeof c !== 'object' || c.require) {\n return c;\n }\n var require = [];\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n var r = c[key] = (typeof c[key] === 'object') ?\n c[key] : {ideal: c[key]};\n if (r.min !== undefined ||\n r.max !== undefined || r.exact !== undefined) {\n require.push(key);\n }\n if (r.exact !== undefined) {\n if (typeof r.exact === 'number') {\n r. min = r.max = r.exact;\n } else {\n c[key] = r.exact;\n }\n delete r.exact;\n }\n if (r.ideal !== undefined) {\n c.advanced = c.advanced || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[key] = {min: r.ideal, max: r.ideal};\n } else {\n oc[key] = r.ideal;\n }\n c.advanced.push(oc);\n delete r.ideal;\n if (!Object.keys(r).length) {\n delete c[key];\n }\n }\n });\n if (require.length) {\n c.require = require;\n }\n return c;\n };\n constraints = JSON.parse(JSON.stringify(constraints));\n if (browserDetails.version < 38) {\n logging('spec: ' + JSON.stringify(constraints));\n if (constraints.audio) {\n constraints.audio = constraintsToFF37_(constraints.audio);\n }\n if (constraints.video) {\n constraints.video = constraintsToFF37_(constraints.video);\n }\n logging('ff37: ' + JSON.stringify(constraints));\n }\n return navigator.mozGetUserMedia(constraints, onSuccess, function(e) {\n onError(shimError_(e));\n });\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n };\n\n // Shim for mediaDevices on older versions.\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {getUserMedia: getUserMediaPromise_,\n addEventListener: function() { },\n removeEventListener: function() { }\n };\n }\n navigator.mediaDevices.enumerateDevices =\n navigator.mediaDevices.enumerateDevices || function() {\n return new Promise(function(resolve) {\n var infos = [\n {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''},\n {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''}\n ];\n resolve(infos);\n });\n };\n\n if (browserDetails.version < 41) {\n // Work around http://bugzil.la/1169665\n var orgEnumerateDevices =\n navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices);\n navigator.mediaDevices.enumerateDevices = function() {\n return orgEnumerateDevices().then(undefined, function(e) {\n if (e.name === 'NotFoundError') {\n return [];\n }\n throw e;\n });\n };\n }\n if (browserDetails.version < 49) {\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n return origGetUserMedia(c).catch(function(e) {\n return Promise.reject(shimError_(e));\n });\n };\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/firefox/getusermedia.js\n ** module id = 192\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\nvar safariShim = {\n // TODO: DrAlex, should be here, double check against LayoutTests\n // shimOnTrack: function() { },\n\n // TODO: DrAlex\n // attachMediaStream: function(element, stream) { },\n // reattachMediaStream: function(to, from) { },\n\n // TODO: once the back-end for the mac port is done, add.\n // TODO: check for webkitGTK+\n // shimPeerConnection: function() { },\n\n shimGetUserMedia: function() {\n navigator.getUserMedia = navigator.webkitGetUserMedia;\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimGetUserMedia: safariShim.shimGetUserMedia\n // TODO\n // shimOnTrack: safariShim.shimOnTrack,\n // shimPeerConnection: safariShim.shimPeerConnection,\n // attachMediaStream: safariShim.attachMediaStream,\n // reattachMediaStream: safariShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/safari/safari_shim.js\n ** module id = 193\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/quagga.min.js b/dist/quagga.min.js index 0d0e374..6551ffc 100644 --- a/dist/quagga.min.js +++ b/dist/quagga.min.js @@ -1,4 +1,4 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(t.toString())["default"]:"object"==typeof exports?exports.Quagga=t(t.toString())["default"]:e.Quagga=t(t.toString())["default"]}(this,function(e){return function(e){function t(r){if(n[r])return n[r].e;var o=n[r]={e:{},i:r,l:!1};return e[r].call(o.e,o,o.e,t),o.l=!0,o.e}var n={};return t.m=e,t.c=n,t.p="/",t(t.s=192)}([function(e,t,n){"use strict";var r=!1,o={disableLog:function(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(r=e,e?"adapter.js logging disabled":"adapter.js logging enabled")},log:function(){if("object"==typeof window){if(r)return;console.log.apply(console,arguments)}},extractVersion:function(e,t,n){var r=e.match(t);return r&&r.length>=n&&parseInt(r[n],10)},detectBrowser:function(){var e={};if(e.browser=null,e.version=null,e.minVersion=null,"undefined"==typeof window||!window.navigator)return e.browser="Not a browser.",e;if(navigator.mozGetUserMedia)e.browser="firefox",e.version=this.extractVersion(navigator.userAgent,/Firefox\/([0-9]+)\./,1),e.minVersion=31;else if(navigator.webkitGetUserMedia&&window.webkitRTCPeerConnection)e.browser="chrome",e.version=this.extractVersion(navigator.userAgent,/Chrom(e|ium)\/([0-9]+)\./,2),e.minVersion=38;else{if(!navigator.mediaDevices||!navigator.userAgent.match(/Edge\/(\d+).(\d+)$/))return e.browser="Not a supported browser.",e;e.browser="edge",e.version=this.extractVersion(navigator.userAgent,/Edge\/(\d+).(\d+)$/,2),e.minVersion=10547}return e.versionr;r++)o=a._matchPattern(i,a.CODE_PATTERN[r]),oa.AVG_CODE_ERROR?null:f}s++,i[s]=1,u=!u}return null},r.prototype._findPattern=function(e,t,n,r,o){var i,a,c,u,s=[],f=this,d=0,l={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(t||(t=f._nextSet(f._row)),void 0===n&&(n=!1),void 0===r&&(r=!0),void 0===o&&(o=f.AVG_CODE_ERROR),i=0;ia)return l.error=a,l.start=i-u,l.end=i,l;if(!r)return null;for(c=0;c=0&&n._matchRange(e,t.start,0))return t;r=t.end,t=null}},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start),tr;r++){if(e=i._decodeCode(e.end),!e)return null;e.code>=i.CODE_G_START?(e.code=e.code-i.CODE_G_START,a|=1<<5-r):a|=0<<5-r,t.push(e.code),n.push(e)}if(o=i._calculateFirstDigit(a),null===o)return null;if(t.unshift(o),e=i._findPattern(i.MIDDLE_PATTERN,e.end,!0,!1),null===e)return null;for(n.push(e),r=0;6>r;r++){if(e=i._decodeCode(e.end,i.CODE_G_START),!e)return null;n.push(e),t.push(e.code)}return e},r.prototype._decode=function(){var e,t,n=this,r=[],o=[],i={};if(e=n._findStart(),!e)return null;if(t={code:e.code,start:e.start,end:e.end},o.push(t),t=n._decodePayload(t,r,o),!t)return null;if(t=n._findEnd(t.end,!1),!t)return null;if(o.push(t),!n._checksum(r))return null;if(this.supplements.length>0){var a=this._decodeExtensions(t.end);if(!a)return null;var c=a.decodedCodes[a.decodedCodes.length-1],s={start:c.start+((c.end-c.start)/2|0),end:c.end};if(!n._verifyTrailingWhitespace(s))return null;i={supplement:a,code:r.join("")+a.code}}return u({code:r.join(""),start:e.start,end:t.end,codeset:"",startInfo:e,decodedCodes:o},i)},r.prototype._decodeExtensions=function(e){var t,n,r=this._nextSet(this._row,e),o=this._findPattern(this.EXTENSION_START_PATTERN,r,!1,!1);if(null===o)return null;for(t=0;t=0;t-=2)n+=e[t];for(n*=3,t=e.length-1;t>=0;t-=2)n+=e[t];return n%10===0},r.CONFIG_KEYS={supplements:{type:"arrayOf(string)","default":[],description:"Allowed extensions to be decoded (2 and/or 5)"}},t.a=r},function(e,t,n){var r=n(16),o=n(3),i=r(o,"Map");e.e=i},function(e,t,n){t.a={drawRect:function(e,t,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=1,n.beginPath(),n.strokeRect(e.x,e.y,t.x,t.y)},drawPath:function(e,t,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=r.lineWidth,n.beginPath(),n.moveTo(e[0][t.x],e[0][t.y]);for(var o=1;os)return Number.MAX_VALUE;for(o=s/f,n*=o,r=0;rn)return Number.MAX_VALUE;c+=u}return c/f},r.prototype._nextSet=function(e,t){var n;for(t=t||0,n=t;n1&&(e[n[r]]=o)},r.prototype._matchTrace=function(e,t){var n,r,o=[],i=this,a=i._nextSet(i._row),c=!i._row[a],u=0,s={error:Number.MAX_VALUE,code:-1,start:0};if(e){for(n=0;nr?(s.start=n-a,s.end=n,s.counter=o,s):null;u++,o[u]=1,c=!c}}else for(o.push(0),n=a;ne?0:e,r=e;t>r;r++)if(this._row[r]!==n)return!1;return!0},r.prototype._fillCounters=function(e,t,n){var r,o=this,i=0,a=[];for(n="undefined"!=typeof n?n:!0,e="undefined"!=typeof e?e:o._nextUnset(o._row),t=t||o._row.length,a[i]=0,r=e;t>r;r++)o._row[r]^n?a[i]++:(i++,a[i]=1,n=!n);return a},Object.defineProperty(r.prototype,"FORMAT",{value:"unknown",writeable:!1}),r.DIRECTION={FORWARD:1,REVERSE:-1},r.Exception={StartNotFoundException:"Start-Info was not found!",CodeNotFoundException:"Code could not be found!",PatternNotFoundException:"Pattern could not be found!"},r.CONFIG_KEYS={},t.a=r},function(e,t,n){function r(e){var t=new Float32Array(2);return t[0]=e[0],t[1]=e[1],t}e.e=r},function(e,t,n){function r(e){return o(e)&&c.call(e,"callee")&&(!s.call(e,"callee")||u.call(e)==i)}var o=n(32),i="[object Arguments]",a=Object.prototype,c=a.hasOwnProperty,u=a.toString,s=a.propertyIsEnumerable;e.e=r},function(e,t,n){function r(e){var t=o(e)?u.call(e):"";return t==i||t==a}var o=n(2),i="[object Function]",a="[object GeneratorFunction]",c=Object.prototype,u=c.toString;e.e=r},function(e,t,n){var r=n(123),o=n(140),i=o(function(e,t,n){r(e,t,n)});e.e=i},function(e,t,n){t.a={init:function(e,t){for(var n=e.length;n--;)e[n]=t},shuffle:function(e){var t,n,r=e.length-1;for(r;r>=0;r--)t=Math.floor(Math.random()*r),n=e[r],e[r]=e[t],e[t]=n;return e},toPointList:function(e){var t,n,r=[],o=[];for(t=0;t=t&&o.push(e[r]);return o},maxIndex:function(e){var t,n=0;for(t=0;te[n]&&(n=t);return n},max:function r(e){var t,r=0;for(t=0;tr&&(r=e[t]);return r},sum:function o(e){for(var t=e.length,o=0;t--;)o+=e[t];return o}}},function(e,t,n){function r(e){var t=-1,n=e?e.length:0;for(this.clear();++t-1&&e%1==0&&t>e}var o=9007199254740991,i=/^(?:0|[1-9]\d*)$/;e.e=r},function(e,t,n){function r(e){var t=typeof e;return"number"==t||"boolean"==t||"string"==t&&"__proto__"!=e||null==e}e.e=r},function(e,t,n){var r=n(16),o=r(Object,"create");e.e=o},function(e,t,n){function r(e,t){return e===t||e!==e&&t!==t}e.e=r},function(e,t,n){function r(e){return null!=e&&a(o(e))&&!i(e)}var o=n(144),i=n(11),a=n(23);e.e=r},function(e,t,n){function r(e){return"number"==typeof e&&e>-1&&e%1==0&&o>=e}var o=9007199254740991;e.e=r},function(e,t,n){function r(e){var t=s(e);if(!t&&!c(e))return i(e);var n=a(e),r=!!n,f=n||[],d=f.length;for(var l in e)!o(e,l)||r&&("length"==l||u(l,d))||t&&"constructor"==l||f.push(l);return f}var o=n(52),i=n(119),a=n(60),c=n(22),u=n(18),s=n(31);e.e=r},function(e,t,n){function r(e,t){var n={x:e,y:t,toVec2:function(){return w.clone([this.x,this.y])},toVec3:function(){return C.clone([this.x,this.y,1])},round:function(){return this.x=this.x>0?Math.floor(this.x+.5):Math.floor(this.x-.5),this.y=this.y>0?Math.floor(this.y+.5):Math.floor(this.y-.5),this}};return n}function o(e,t,n){n||(n=e);for(var r=e.data,o=r.length,i=n.data;o--;)i[o]=r[o]>o]++;return a}function a(e,t){function n(e,t){var n,r=0;for(n=e;t>=n;n++)r+=a[n];return r}function r(e,t){var n,r=0;for(n=e;t>=n;n++)r+=n*a[n];return r}function o(){var o,c,u,s,f,d,l,p=[0],h=(1<s;s++)o=n(0,s),c=n(s+1,h),u=o*c,0===u&&(u=1),f=r(0,s)*c,d=r(s+1,h)*o,l=f-d,p[s]=l*l/u;return _.a.maxIndex(p)}t||(t=8);var a,c,u=8-t;return c=o(),c<r;r++)s[r]={score:0,item:null};for(r=0;ru)for(i=s[c],i.score=o,i.item=e[r],u=Number.MAX_VALUE,a=0;t>a;a++)s[a].scorei;){for(r=0;c>r;r++)n[u]=Math.floor((.299*e[4*o+0]+.587*e[4*o+1]+.114*e[4*o+2]+(.299*e[4*(o+1)+0]+.587*e[4*(o+1)+1]+.114*e[4*(o+1)+2])+(.299*e[4*i+0]+.587*e[4*i+1]+.114*e[4*i+2])+(.299*e[4*(i+1)+0]+.587*e[4*(i+1)+1]+.114*e[4*(i+1)+2]))/4),u++,o+=2,i+=2;o+=s,i+=s}}function d(e,t,n){var r,o=e.length/4|0,i=n&&n.singleChannel===!0;if(i)for(r=0;o>r;r++)t[r]=e[4*r+0];else for(r=0;o>r;r++)t[r]=Math.floor(.299*e[4*r+0]+.587*e[4*r+1]+.114*e[4*r+2])}function l(e,t){for(var n=e.data,r=e.size.x,o=t.data,i=0,a=r,c=n.length,u=r/2,s=0;c>a;){for(var f=0;u>f;f++)o[s]=Math.floor((n[i]+n[i+1]+n[a]+n[a+1])/4),s++,i+=2,a+=2;i+=r,a+=r}}function p(e,t){var n=e[0],r=e[1],o=e[2],i=o*r,a=i*(1-Math.abs(n/60%2-1)),c=o-i,u=0,s=0,f=0;return t=t||[0,0,0],60>n?(u=i,s=a):120>n?(u=a,s=i):180>n?(s=i,f=a):240>n?(s=a,f=i):300>n?(u=a,f=i):360>n&&(u=i,f=a),t[0]=255*(u+c)|0,t[1]=255*(s+c)|0,t[2]=255*(f+c)|0,t}function h(e){var t,n=[],r=[];for(t=1;tt[r]?r++:n++;return o}function g(e,t){function n(e){for(var t=0,n=e[Math.floor(e.length/2)];t0&&(n=Math.abs(e[t]-l)>Math.abs(e[t-1]-l)?e[t-1]:e[t]),l/nu[f-1]/u[f]?{x:n,y:n}:null}var r,o=h(t.x),i=h(t.y),a=Math.max(t.x,t.y),c=v(o,i),u=[8,10,15,20,32,60,80],s={"x-small":5,small:4,medium:3,large:2,"x-large":1},f=s[e]||s.medium,d=u[f],l=Math.floor(a/d);return r=n(c),r||(r=n(h(a)),r||(r=n(h(l*d)))),r}function m(e){var t={value:parseFloat(e),unit:(e.indexOf("%")===e.length-1,"%")};return t}function y(e,t,n){var r={width:e,height:t},o=Object.keys(n).reduce(function(e,t){var o=n[t],i=m(o),a=E[t](i,r);return e[t]=a,e},{});return{sx:o.left,sy:o.top,sw:o.right-o.left,sh:o.bottom-o.top}}var b=n(68),_=n(13);t.f=r,t.c=c,t.d=u,t.e=s,t.i=f,t.j=d,t.g=l,t.a=p,t.b=g,t.h=y;var w={clone:n(9)},C={clone:n(97)},E={top:function(e,t){return"%"===e.unit?Math.floor(t.height*(e.value/100)):void 0},right:function(e,t){return"%"===e.unit?Math.floor(t.width-t.width*(e.value/100)):void 0},bottom:function(e,t){return"%"===e.unit?Math.floor(t.height-t.height*(e.value/100)):void 0},left:function(e,t){return"%"===e.unit?Math.floor(t.width*(e.value/100)):void 0}}},function(e,t,n){function r(e,t,n,r){t?this.data=t:n?(this.data=new n(e.x*e.y),n===Array&&r&&a.a.init(this.data,0)):(this.data=new Uint8Array(e.x*e.y),Uint8Array===Array&&r&&a.a.init(this.data,0)),this.size=e}var o=n(70),i=n(25),a=n(13),c={clone:n(9)};r.prototype.inImageWithBorder=function(e,t){return e.x>=t&&e.y>=t&&e.xn;n++)for(r=0;o>r;r++)e.data[r*i+n]=this.data[(t.y+r)*this.size.x+t.x+n]},r.prototype.copyTo=function(e){for(var t=this.data.length,n=this.data,r=e.data;t--;)r[t]=n[t]},r.prototype.get=function(e,t){return this.data[t*this.size.x+e]},r.prototype.getSafe=function(e,t){var n;if(!this.indexMapping){for(this.indexMapping={x:[],y:[]},n=0;ne;e++)r[e]=r[(n-1)*t+e]=0;for(e=1;n-1>e;e++)r[e*t]=r[e*t+(t-1)]=0},r.prototype.invert=function(){for(var e=this.data,t=e.length;t--;)e[t]=e[t]?0:1},r.prototype.convolve=function(e){var t,n,r,o,i=e.length/2|0,a=0;for(n=0;n=o;o++)for(r=-i;i>=r;r++)a+=e[o+i][r+i]*this.getSafe(t+r,n+o);this.data[n*this.size.x+t]=a}},r.prototype.moments=function(e){var t,n,r,o,i,a,u,s,f,d,l,p,h=this.data,v=this.size.y,g=this.size.x,m=[],y=[],b=Math.PI,_=b/4;if(0>=e)return y;for(i=0;e>i;i++)m[i]={m00:0,m01:0,m10:0,m11:0,m02:0,m20:0,theta:0,rad:0};for(n=0;v>n;n++)for(o=n*n,t=0;g>t;t++)r=h[n*g+t],r>0&&(a=m[r-1],a.m00+=1,a.m01+=n,a.m10+=t,a.m11+=t*n,a.m02+=o,a.m20+=t*t);for(i=0;e>i;i++)a=m[i],isNaN(a.m00)||0===a.m00||(d=a.m10/a.m00,l=a.m01/a.m00,u=a.m11/a.m00-d*l,s=a.m02/a.m00-l*l,f=a.m20/a.m00-d*d,p=(s-f)/(2*u),p=.5*Math.atan(p)+(u>=0?_:-_)+b,a.theta=(180*p/b+90)%180-90,a.theta<0&&(a.theta+=180),a.rad=p>b?p-b:p,a.vec=c.clone([Math.cos(p),Math.sin(p)]),y.push(a));return y},r.prototype.show=function(e,t){var n,r,o,i,a,c,u;for(t||(t=1),n=e.getContext("2d"),e.width=this.size.x,e.height=this.size.y,r=n.getImageData(0,0,e.width,e.height),o=r.data,i=0,u=0;ut||t>360)&&(t=360);for(var r=[0,1,1],o=[0,0,0],a=[255,255,255],c=[0,0,0],u=[],s=e.getContext("2d"),f=s.getImageData(n.x,n.y,this.size.x,this.size.y),d=f.data,l=this.data.length;l--;)r[0]=this.data[l]*t,u=r[0]<=0?a:r[0]>=360?c:i.a.bind()(r,o),d[4*l+0]=u[0],d[4*l+1]=u[1],d[4*l+2]=u[2],d[4*l+3]=255;s.putImageData(f,n.x,n.y)},t.a=r},function(e,t,n){var r=n(3),o=r.Symbol;e.e=o},function(e,t,n){function r(e,t,n,r){var o=-1,i=e.length;for(r&&i&&(n=e[++o]);++oo;o++){if(f=e.cy+u[e.dir][0],d=e.cx+u[e.dir][1],i=f*s+d,a[i]===t&&(0===c[i]||c[i]===n))return c[i]=n,e.cy=f,e.cx=d,!0;0===c[i]&&(c[i]=r),e.dir=(e.dir+1)%8}return!1}function r(e,t,n){return{dir:n,x:e,y:t,next:null,prev:null}}function o(e,t,o,i,a){var c,u,s,f=null,d={cx:t,cy:e,dir:0};if(n(d,i,o,a)){f=r(t,e,d.dir),c=f,s=d.dir,u=r(d.cx,d.cy,0),u.prev=c,c.next=u,u.next=null,c=u;do d.dir=(d.dir+6)%8,n(d,i,o,a),s!==d.dir?(c.dir=d.dir,u=r(d.cx,d.cy,0),u.prev=c,c.next=u,u.next=null,c=u):(c.dir=s,c.x=d.cx,c.y=d.cy),s=d.dir;while(d.cx!==t||d.cy!==e);f.prev=c.prev,c.prev.next=f}return f}var i,a=e.data,c=t.data,u=this.searchDirections,s=e.size.x;return{trace:function(e,t,r,o){return n(e,t,r,o)},contourTracing:function(e,t,n,r,i){return o(e,t,n,r,i)}}}};t.a=r},function(e,t,n){function r(){o.a.call(this)}var o=n(8),i=n(13),a={ALPHABETH_STRING:{value:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,45,46,32,42,36,47,43,37]},CHARACTER_ENCODINGS:{value:[52,289,97,352,49,304,112,37,292,100,265,73,328,25,280,88,13,268,76,28,259,67,322,19,274,82,7,262,70,22,385,193,448,145,400,208,133,388,196,148,168,162,138,42]},ASTERISK:{value:148},FORMAT:{value:"code_39",writeable:!1}};r.prototype=Object.create(o.a.prototype,a),r.prototype.constructor=r,r.prototype._toCounters=function(e,t){var n,r=this,o=t.length,a=r._row.length,c=!r._row[e],u=0;for(i.a.init(t,0),n=e;a>n;n++)if(r._row[n]^c)t[u]++;else{if(u++,u===o)break;t[u]=1,c=!c}return t},r.prototype._decode=function(){var e,t,n,r,o=this,a=[0,0,0,0,0,0,0,0,0],c=[],u=o._findStart();if(!u)return null;r=o._nextSet(o._row,u.end);do{if(a=o._toCounters(r,a),n=o._toPattern(a),0>n)return null;if(e=o._patternToChar(n),0>e)return null;c.push(e),t=r,r+=i.a.sum(a),r=o._nextSet(o._row,r)}while("*"!==e);return c.pop(),c.length&&o._verifyTrailingWhitespace(t,r,a)?{code:c.join(""),start:u.start,end:r,startInfo:u,decodedCodes:c}:null},r.prototype._verifyTrailingWhitespace=function(e,t,n){var r,o=i.a.sum(n);return r=t-e-o,3*r>=o},r.prototype._patternToChar=function(e){var t,n=this;for(t=0;tt&&(r=e[n]);return r},r.prototype._toPattern=function(e){for(var t,n,r=e.length,o=0,i=r,a=0,c=this;i>3;){for(o=c._findNextWidth(e,o),i=0,t=0,n=0;r>n;n++)e[n]>o&&(t|=1<n&&i>0;n++)if(e[n]>o&&(i--,2*e[n]>=a))return-1;return t}}return-1},r.prototype._findStart=function(){var e,t,n,r=this,o=r._nextSet(r._row),i=o,a=[0,0,0,0,0,0,0,0,0],c=0,u=!1;for(e=o;et;t++)a[t]=a[t+2];a[7]=0,a[8]=0,c--}else c++;a[c]=1,u=!u}return null},t.a=r},function(e,t,n){function r(e,t){return e[0]*t[0]+e[1]*t[1]}e.e=r},function(e,t,n){var r=n(3),o=r.Uint8Array;e.e=o},function(e,t,n){function r(e,t){for(var n=-1,r=e.length;++nn)return!1;var r=e.length-1;return n==r?e.pop():a.call(e,n,1),!0}var o=n(15),i=Array.prototype,a=i.splice;e.e=r},function(e,t,n){function r(e,t){var n=o(e,t);return 0>n?void 0:e[n][1]}var o=n(15);e.e=r},function(e,t,n){function r(e,t){return o(e,t)>-1}var o=n(15);e.e=r},function(e,t,n){function r(e,t,n){var r=o(e,t);0>r?e.push([t,n]):e[r][1]=n}var o=n(15);e.e=r},function(e,t,n){function r(e){return o(e)?e:i(e)}var o=n(1),i=n(168);e.e=r},function(e,t,n){var r=n(141),o=r();e.e=o},function(e,t,n){function r(e,t){t=i(t,e)?[t+""]:o(t);for(var n=0,r=t.length;null!=e&&r>n;)e=e[t[n++]];return n&&n==r?e:void 0}var o=n(49),i=n(30);e.e=r},function(e,t,n){function r(e,t){return i.call(e,t)||"object"==typeof e&&t in e&&null===a(e)}var o=Object.prototype,i=o.hasOwnProperty,a=Object.getPrototypeOf;e.e=r},function(e,t,n){function r(e,t,n,c,u){return e===t?!0:null==e||null==t||!i(e)&&!a(t)?e!==e&&t!==t:o(e,t,r,n,c,u)}var o=n(116),i=n(2),a=n(4);e.e=r},function(e,t,n){function r(e){return function(t){return null==t?void 0:t[e]}}e.e=r},function(e,t,n){function r(e){var t=new e.constructor(e.byteLength);return new o(t).set(new o(e)),t}var o=n(41);e.e=r},function(e,t,n){function r(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++nl))return!1;var h=u.get(e);if(h)return h==t;var v=!0;for(u.set(e,t);++s0?1:0},{inputStream:f.a.bind()(l.a.bind()(e.inputStream,["size","src"]),u.a)},{inputStream:n});var o=b.a.bind()();return{addEventListener:function(e,t){return o.subscribe(e,t),this},removeEventListener:function(e,t){return o.unsubscribe(e,t),this},start:function(){return o.init(e,function(){o.start()}),this},stop:function(){return o.stop(),this},toPromise:function(){return new Promise(function(t,n){o.decodeSingle(e,function(e){return e.codeResult&&e.codeResult.code?t(e):n(e)})})}}}function o(e,t){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],r={type:"LiveStream",constraints:{width:640,height:480,facingMode:"environment"}};t instanceof Element||"string"==typeof t||"object"!==("undefined"==typeof t?"undefined":S(t))||"undefined"==typeof t.constraints&&"undefined"==typeof t.area||(console.log("inputConfig"),n=t),e=h.a.bind()({},e,{inputStream:r},{inputStream:n}),console.log(e);var o=b.a.bind()();return{addEventListener:function(e,t){return o.subscribe(e,t),this},removeEventListener:function(e,t){return o.unsubscribe(e,t),this},start:function(){return o.init(e,function(e){if(e)throw console.log(e),e;o.start()}),this},stop:function(){return o.stop(),this}}}function i(){var e,t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=arguments[1],r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],o=h.a.bind()({},t,(e={},e[n]=r,e));return a(o)}function a(){var e=arguments.length<=0||void 0===arguments[0]?E.a:arguments[0];return{fromImage:function(t,n){return r(e,t,n)},fromVideo:function(t,n){return o(e,t,n)},decoder:function(t){return i(e,"decoder",t)},locator:function(t){return i(e,"locator",t)},config:function(t){return a(h.a.bind()({},e,t))},registerResultCollector:function(e){T.registerResultCollector(e)},getCanvas:function(){return T.canvas},ImageWrapper:_.a,ImageDebug:w.a,ResultCollector:C.a,_worker:{createScanner:b.a}}}var c=n(173),u=c&&c.__esModule?function(){return c["default"]}:function(){return c};Object.defineProperty(u,"a",{get:u});var s=n(178),f=s&&s.__esModule?function(){return s["default"]}:function(){return s};Object.defineProperty(f,"a",{get:f});var d=n(64),l=d&&d.__esModule?function(){return d["default"]}:function(){return d};Object.defineProperty(l,"a",{get:l});var p=n(12),h=p&&p.__esModule?function(){return p["default"]}:function(){return p};Object.defineProperty(h,"a",{get:h});var v=n(71),g=v&&v.__esModule?function(){return v["default"]}:function(){return v};Object.defineProperty(g,"a",{get:g}); -var m=n(185),y=m&&m.__esModule?function(){return m["default"]}:function(){return m};Object.defineProperty(y,"a",{get:y});var b=n(91),_=n(26),w=n(7),C=n(36),E=n(37),S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},T=b.a.bind()();t["default"]=a()},function(e,t,n){var r={clone:n(9),dot:n(40)};t.a={create:function(e,t){function n(){o(e),i()}function o(e){u[e.id]=e,a.push(e)}function i(){var e,t=0;for(e=0;et},getPoints:function(){return a},getCenter:function(){return c}}},createPoint:function(e,t,n){return{rad:e[n],point:e,id:t}}}},function(e,t,n){function r(){function e(e){return o[e]||(o[e]={subscribers:[]}),o[e]}function t(){o={}}function n(e,t){e.async?setTimeout(function(){e.callback(t)},4):e.callback(t)}function r(t,n,r){var o;if("function"==typeof n)o={callback:n,async:r};else if(o=n,!o.callback)throw"Callback was not specified on options";e(t).subscribers.push(o)}var o={};return{subscribe:function(e,t,n){return r(e,t,n)},publish:function(t,r){var o=e(t),i=o.subscribers;o.subscribers=i.filter(function(e){return n(e,r),!e.once})},once:function(e,t,n){r(e,{callback:t,async:n,once:!0})},unsubscribe:function(n,r){var o;n?(o=e(n),o&&r?o.subscribers=o.subscribers.filter(function(e){return e.callback!==r}):o.subscribers=[]):t()}}}t.a=r},function(e,t,n){function r(e,t,n){n||(n={data:null,size:t}),this.data=n.data,this.originalSize=n.size,this.I=n,this.from=e,this.size=t}r.prototype.show=function(e,t){var n,r,o,i,a,c,u;for(t||(t=1),n=e.getContext("2d"),e.width=this.size.x,e.height=this.size.y,r=n.getImageData(0,0,e.width,e.height),o=r.data,i=0,a=0;a>>16&65535,r=65535&e,o=t>>>16&65535,i=65535&t;return r*i+(n*i+r*o<<16>>>0)|0}},function(e,t,n){e.e={inputStream:{name:"Live",type:"LiveStream",constraints:{width:640,height:480,facingMode:"environment"},area:{top:"0%",right:"0%",left:"0%",bottom:"0%"},singleChannel:!1},locate:!0,numOfWorkers:4,decoder:{readers:["code_128_reader"]},locator:{halfSample:!0,patchSize:"medium"}}},function(e,t,n){var r=n(74),o=(n(7),n(83)),i=n(5),a=n(39),c=n(84),u=n(82),s=n(90),f=n(87),d=n(85),l=n(86),p=n(89),h=n(88),v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},g={code_128_reader:o.a,ean_reader:i.a,ean_5_reader:l.a,ean_2_reader:d.a,ean_8_reader:f.a,code_39_reader:a.a,code_39_vin_reader:c.a,codabar_reader:u.a,upc_reader:s.a,upc_e_reader:p.a,i2of5_reader:h.a};t.a={create:function(e,t){function n(){}function o(){e.readers.forEach(function(e){var t,n={},r=[];"object"===("undefined"==typeof e?"undefined":v(e))?(t=e.format,n=e.config):"string"==typeof e&&(t=e),n.supplements&&(r=n.supplements.map(function(e){return new g[e]})),p.push(new g[t](n,r))})}function i(){}function a(e,n,r){function o(t){var r={y:t*Math.sin(n),x:t*Math.cos(n)};e[0].y-=r.y,e[0].x-=r.x,e[1].y+=r.y,e[1].x+=r.x}for(o(r);r>1&&(!t.inImageWithBorder(e[0],0)||!t.inImageWithBorder(e[1],0));)r-=Math.ceil(r/2),o(-r);return e}function c(e){return[{x:(e[1][0]-e[0][0])/2+e[0][0],y:(e[1][1]-e[0][1])/2+e[0][1]},{x:(e[3][0]-e[2][0])/2+e[2][0],y:(e[3][1]-e[2][1])/2+e[2][1]}]}function u(e){var n,o=null,i=r.a.getBarcodeLine(t,e[0],e[1]);for(r.a.toBinaryLine(i),n=0;nr&&null===s;r++)o=a/c*r*(r%2===0?-1:1),i={y:o*f,x:o*d},t[0].y+=i.x,t[0].x-=i.y,t[1].y+=i.x,t[1].x-=i.y,s=u(t);return s}function f(e){return Math.sqrt(Math.pow(Math.abs(e[1].y-e[0].y),2)+Math.pow(Math.abs(e[1].x-e[0].x),2))}function d(e){var t,n,r,o;l.ctx.overlay;return t=c(e),o=f(t),n=Math.atan2(t[1].y-t[0].y,t[1].x-t[0].x),t=a(t,n,Math.floor(.1*o)),null===t?null:(r=u(t),null===r&&(r=s(e,t,n)),null===r?null:{codeResult:r.codeResult,line:t,angle:n,pattern:r.barcodeLine.line,threshold:r.barcodeLine.threshold})}var l={ctx:{frequency:null,pattern:null,overlay:null},dom:{frequency:null,pattern:null,overlay:null}},p=[];return n(),o(),i(),{decodeFromBoundingBox:function(e){return d(e)},decodeFromBoundingBoxes:function(t){var n,r,o=[],i=e.multiple;for(n=0;nd?d:w,C=d>C?d:C,m.push(d)}var o,i,a,c,u,s,f,d,l=0|t.x,p=0|t.y,h=0|n.x,v=0|n.y,g=Math.abs(v-p)>Math.abs(h-l),m=[],y=e.data,b=e.size.x,_=0,w=255,C=0;for(g&&(s=l,l=p,p=s,s=h,h=v,v=s),l>h&&(s=l,l=h,h=s,s=p,p=v,v=s),o=h-l,i=Math.abs(v-p),a=o/2|0,u=p,c=v>p?1:-1,f=l;h>f;f++)g?r(u,f):r(f,u),a-=i,0>a&&(u+=c,a+=o);return{line:m,min:w,max:C}},r.toBinaryLine=function(e){var t,n,r,i,a,c,u=e.min,s=e.max,f=e.line,d=u+(s-u)/2,l=[],p=(s-u)/12,h=-p;for(r=f[0]>d?o.DIR.UP:o.DIR.DOWN,l.push({pos:0,val:f[0]}),a=0;at+n&&f[a+1]<1.5*d?o.DIR.DOWN:t+n>p&&f[a+1]>.5*d?o.DIR.UP:r,r!==i&&(l.push({pos:a,val:f[a]}),r=i);for(l.push({pos:f.length,val:f[f.length-1]}),c=l[0].pos;cd?0:1;for(a=1;al[a].val?l[a].val+(l[a+1].val-l[a].val)/3*2|0:l[a+1].val+(l[a].val-l[a+1].val)/3|0,c=l[a].pos;cp?0:1;return{line:f,threshold:p}},r.debug={printFrequency:function(e,t){var n,r=t.getContext("2d");for(t.width=e.length,t.height=256,r.beginPath(),r.strokeStyle="blue",n=0;n0?e.videoWidth>0&&e.videoHeight>0?t():window.setTimeout(r,500):n("Unable to play video stream. Is webcam working?"),o--}var o=10;r()})}function o(e,t){return navigator.mediaDevices.getUserMedia(t).then(function(t){return new Promise(function(n,r){l=t,e.src=window.URL.createObjectURL(t),e.onloadedmetadata=function(t){e.play(),n()}})}).then(r.bind(null,e))}function i(e){var t=s.a.bind()(e,["width","height","facingMode","aspectRatio","deviceId"]);return"undefined"!=typeof e.minAspectRatio&&e.minAspectRatio>0&&(t.aspectRatio=e.minAspectRatio,console.log("WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead")),"undefined"!=typeof e.facing&&(t.facingMode=e.facing,console.log("WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'")),t}function a(e,t){return"undefined"==typeof t.video.deviceId&&e?"undefined"!=typeof MediaStreamTrack&&"undefined"!=typeof MediaStreamTrack.getSources?new Promise(function(n,r){MediaStreamTrack.getSources(function(r){var o=r.filter(function(t){return"video"===t.kind&&t.facing===e})[0];return n(o?d.a.bind()({},t,{video:{deviceId:o.id}}):t)})}):Promise.resolve(d.a.bind()({},t,{video:{facingMode:e}})):Promise.resolve(t)}function c(e){var t={audio:!1,video:i(e)};return a(t.video.facingMode,t)}var u=n(64),s=u&&u.__esModule?function(){return u["default"]}:function(){return u};Object.defineProperty(s,"a",{get:s});var f=n(12),d=f&&f.__esModule?function(){return f["default"]}:function(){return f};Object.defineProperty(d,"a",{get:d});var l;t.a={request:function(e,t){return c(t).then(o.bind(null,e))},release:function(){var e=l&&l.getVideoTracks();e&&e.length&&e[0].stop(),l=null}}},function(e,t,n){function r(e,t){e.width!==t.x&&(e.width=t.x),e.height!==t.y&&(e.height=t.y)}var o=n(25),i={};i.create=function(e,t){var n,i={},a=e.getConfig(),c=(o.f.bind()(e.getRealWidth(),e.getRealHeight()),e.getCanvasSize()),u=o.f.bind()(e.getWidth(),e.getHeight()),s=e.getTopRight(),f=s.x,d=s.y,l=null,p=null;return n=t?t:document.createElement("canvas"),n.width=c.x,n.height=c.y,l=n.getContext("2d"),p=new Uint8Array(u.x*u.y),i.attachData=function(e){p=e},i.getData=function(){return p},i.grab=function(){var t,i=a.halfSample,s=e.getFrame();return s?(r(n,c),l.drawImage(s,0,0,c.x,c.y),t=l.getImageData(f,d,u.x,u.y).data,i?o.i.bind()(t,u,p):o.j.bind()(t,p,a),!0):!1},i.getSize=function(){return u},i},t.a=i},function(e,t,n){function r(e,t){e.onload=function(){t.loaded(this)}}var o={};o.load=function(e,t,n,o,i){var a,c,u,s=new Array(o),f=new Array(s.length);if(i===!1)s[0]=e;else for(a=0;a1?i.size:Math.floor(t/o*i.size):t,r=i.size?t/o>1?Math.floor(o/t*i.size):i.size:o,s.x=n,s.y=r}var n,r,o={},i=null,a=["canrecord","ended"],c={},u={x:0,y:0},s={x:0,y:0};return o.getRealWidth=function(){return e.videoWidth},o.getRealHeight=function(){return e.videoHeight},o.getWidth=function(){return n},o.getHeight=function(){return r},o.setWidth=function(e){n=e},o.setHeight=function(e){r=e},o.setInputStream=function(t){i=t,e.src="undefined"!=typeof t.src?t.src:""},o.ended=function(){return e.ended},o.getConfig=function(){return i},o.setAttribute=function(t,n){e.setAttribute(t,n)},o.pause=function(){e.pause()},o.play=function(){e.play()},o.setCurrentTime=function(t){"LiveStream"!==i.type&&(e.currentTime=t)},o.addEventListener=function(t,n,r){-1!==a.indexOf(t)?(c[t]||(c[t]=[]),c[t].push(n)):e.addEventListener(t,n,r)},o.clearEventHandlers=function(){a.forEach(function(t){var n=c[t];n&&n.length>0&&n.forEach(function(n){e.removeEventListener(t,n)})})},o.trigger=function(e,n){var r,i=c[e];if("canrecord"===e&&t(),i&&i.length>0)for(r=0;r1?a.size:Math.floor(c/u*a.size):c,o=a.size?c/u>1?Math.floor(u/c*a.size):a.size:u,_.x=n,_.y=o,d=!0,s=0,setTimeout(function(){t("canrecord",[])},0)},h,p,a.sequence)}function t(e,t){var n,r=y[e];if(r&&r.length>0)for(n=0;ns?s++:setTimeout(function(){g=!0,t("ended",[])},0)),e):null},i},t.a=o},function(e,t,n){(function(e){function r(t,n){function r(){var t;C=j.halfSample?new i.a({x:k.size.x/2|0,y:k.size.y/2|0}):k,A=a.b.bind()(j.patchSize,C.size),I.x=C.size.x/A.x|0,I.y=C.size.y/A.y|0,D=new i.a(C.size,void 0,Uint8Array,!1),T=new i.a(A,void 0,Array,!0),t=new ArrayBuffer(65536),S=new i.a(A,new Uint8Array(t,0,A.x*A.y)),E=new i.a(A,new Uint8Array(t,A.x*A.y*3,A.x*A.y),void 0,!0),P=f.a.bind()("undefined"!=typeof window?window:"undefined"!=typeof self?self:e,{size:A.x},t),x=new i.a({x:C.size.x/S.size.x|0,y:C.size.y/S.size.y|0},void 0,Array,!0),R=new i.a(x.size,void 0,void 0,!0),O=new i.a(x.size,void 0,Int32Array,!0)}function o(){j.useWorker||"undefined"==typeof document||(M.dom.binary=document.createElement("canvas"),M.dom.binary.className="binaryBuffer",M.ctx.binary=M.dom.binary.getContext("2d"),M.dom.binary.width=D.size.x,M.dom.binary.height=D.size.y)}function p(e){var t,n,r,o,i,a,c,u=D.size.x,s=D.size.y,f=-D.size.x,p=-D.size.y;for(t=0,n=0;nt&&(t+=180),t=(180-t)*Math.PI/180,i=l.copy(l.create(),[Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t)]),n=0;nr;r++)d.transformMat2(o.box[r],o.box[r],i);for(n=0;nr;r++)o.box[r][0]f&&(f=o.box[r][0]),o.box[r][1]p&&(p=o.box[r][1]);for(a=[[u,s],[f,s],[f,p],[u,p]],c=j.halfSample?2:1,i=l.invert(i,i),r=0;4>r;r++)d.transformMat2(a[r],a[r],i);for(r=0;4>r;r++)d.scale(a[r],a[r],c);return a}function h(){a.c.bind()(C,D),D.zeroBorder()}function v(){var e,t,n,r,o,i,a,s=[];for(e=0;et;t++)r.push(0);for(n=O.data.length;n--;)O.data[n]>0&&r[O.data[n]-1]++;return r=r.map(function(e,t){return{val:e,label:t+1}}),r.sort(function(e,t){return t.val-e.val}),o=r.filter(function(e){return e.val>=5})}function m(e,t){var n,r,o,i,a=[],c=[];for(n=0;n=2){for(o=0;of&&u.push(e[o]);if(u.length>=2){for(a=y(u),i=0,o=0;o1&&a.length>=u.length/4*3&&a.length>e.length/4&&(i/=a.length,c={index:t[1]*I.x+t[0],pos:{x:n,y:r},box:[d.clone([n,r]),d.clone([n+S.size.x,r]),d.clone([n+S.size.x,r+S.size.y]),d.clone([n,r+S.size.y])],moments:a,rad:i,vec:d.clone([Math.cos(i),Math.sin(i)])},s.push(c))}}return s}function w(e){function t(){var e;for(e=0;ea&&n(c)):O.data[c]=Number.MAX_VALUE}var r,o,i=0,a=.95,u=0;for(c.a.init(R.data,0),c.a.init(O.data,0),c.a.init(x.data,null),r=0;rr?null:(t=g(r),0===t.length?null:n=m(t,r))}}}function o(e,t){var n,r,o,i=e.getWidth(),c=e.getHeight(),u=t.halfSample?.5:1;if(e.getConfig().area&&(o=a.h.bind()(i,c,e.getConfig().area),e.setTopRight({x:o.sx,y:o.sy}),e.setCanvasSize({x:i,y:c}),i=o.sw,c=o.sh),r={x:Math.floor(i*u),y:Math.floor(c*u)},n=a.b.bind()(t.patchSize,r),e.setWidth(Math.floor(Math.floor(r.x/n.x)*(1/u)*n.x)),e.setHeight(Math.floor(Math.floor(r.y/n.y)*(1/u)*n.y)),e.getWidth()%n.x===0&&e.getHeight()%n.y===0)return!0;throw new Error("Image dimensions do not comply with the current settings: Width ("+i+" )and height ("+c+") must a multiple of "+n.x)}var i=n(26),a=n(25),c=n(13),u=(n(7),n(80)),s=n(38),f=n(81);t.b=r,t.a=o;var d={clone:n(9),dot:n(40),scale:n(95),transformMat2:n(96)},l={copy:n(92),create:n(93),invert:n(94)}}).call(t,function(){return this}())},function(e,t,n){var r=n(38),o={createContour2D:function(){return{dir:null,index:null,firstVertex:null,insideContours:null,nextpeer:null,prevpeer:null}},CONTOUR_DIR:{CW_DIR:0,CCW_DIR:1,UNKNOWN_DIR:2},DIR:{OUTSIDE_EDGE:-32767,INSIDE_EDGE:-32766},create:function(e,t){var n=e.data,i=t.data,a=e.size.x,c=e.size.y,u=r.a.create(e,t);return{rasterize:function(e){var t,r,s,f,d,l,p,h,v,g,m,y,b=[],_=0;for(y=0;400>y;y++)b[y]=0;for(b[0]=n[0],v=null,l=1;c-1>l;l++)for(f=0,r=b[0],d=1;a-1>d;d++)if(m=l*a+d,0===i[m])if(t=n[m],t!==r){if(0===f)s=_+1,b[s]=t,r=t,p=u.contourTracing(l,d,s,t,o.DIR.OUTSIDE_EDGE),null!==p&&(_++,f=s,h=o.createContour2D(),h.dir=o.CONTOUR_DIR.CW_DIR,h.index=f,h.firstVertex=p,h.nextpeer=v,h.insideContours=null,null!==v&&(v.prevpeer=h),v=h);else if(p=u.contourTracing(l,d,o.DIR.INSIDE_EDGE,t,f),null!==p){for(h=o.createContour2D(),h.firstVertex=p,h.insideContours=null,0===e?h.dir=o.CONTOUR_DIR.CCW_DIR:h.dir=o.CONTOUR_DIR.CW_DIR,h.index=e,g=v;null!==g&&g.index!==f;)g=g.nextpeer;null!==g&&(h.nextpeer=g.insideContours,null!==g.insideContours&&(g.insideContours.prevpeer=h),g.insideContours=h)}}else i[m]=f;else i[m]===o.DIR.OUTSIDE_EDGE||i[m]===o.DIR.INSIDE_EDGE?(f=0,r=i[m]===o.DIR.INSIDE_EDGE?n[m]:b[0]):(f=i[m],r=b[f]);for(g=v;null!==g;)g.index=e,g=g.nextpeer;return{cc:v,count:_}},debug:{drawContour:function(e,t){var n,r,i,a=e.getContext("2d"),c=t;for(a.strokeStyle="red",a.fillStyle="red",a.lineWidth=1,n=null!==c?c.insideContours:null;null!==c;){switch(null!==n?(r=n,n=n.nextpeer):(r=c,c=c.nextpeer,n=null!==c?c.insideContours:null),r.dir){case o.CONTOUR_DIR.CW_DIR:a.strokeStyle="red";break;case o.CONTOUR_DIR.CCW_DIR:a.strokeStyle="blue";break;case o.CONTOUR_DIR.UNKNOWN_DIR:a.strokeStyle="green"}i=r.firstVertex,a.beginPath(),a.moveTo(i.x,i.y);do i=i.next,a.lineTo(i.x,i.y);while(i!==r.firstVertex);a.stroke()}}}}}};t.a=o},function(module, exports, __webpack_require__) {function Skeletonizer(stdlib, foreign, buffer) {"use asm";var images=new stdlib.Uint8Array(buffer),size=foreign.size|0,imul=stdlib.Math.imul;function erode(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for (v=1; (v|0)<(size - 1|0); v=v+1|0) {offset=offset+size|0;for (u=1; (u|0)<(size - 1|0); u=u+1|0) {yStart1=offset - size|0;yStart2=offset+size|0;xStart1=u - 1|0;xStart2=u+1|0;sum=(images[inImagePtr+yStart1+xStart1|0]|0)+(images[inImagePtr+yStart1+xStart2|0]|0)+(images[inImagePtr+offset+u|0]|0)+(images[inImagePtr+yStart2+xStart1|0]|0)+(images[inImagePtr+yStart2+xStart2|0]|0)|0;if ((sum|0) == (5|0)) {images[outImagePtr+offset+u|0]=1;} else {images[outImagePtr+offset+u|0]=0;}}}return;}function subtract(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[outImagePtr+length|0]=(images[aImagePtr+length|0]|0) - (images[bImagePtr+length|0]|0)|0;}}function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[outImagePtr+length|0]=images[aImagePtr+length|0]|0|(images[bImagePtr+length|0]|0)|0;}}function countNonZero(imagePtr) {imagePtr=imagePtr|0;var sum=0,length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;sum=(sum|0)+(images[imagePtr+length|0]|0)|0;}return sum|0;}function init(imagePtr, value) {imagePtr=imagePtr|0;value=value|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[imagePtr+length|0]=value;}}function dilate(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for (v=1; (v|0)<(size - 1|0); v=v+1|0) {offset=offset+size|0;for (u=1; (u|0)<(size - 1|0); u=u+1|0) {yStart1=offset - size|0;yStart2=offset+size|0;xStart1=u - 1|0;xStart2=u+1|0;sum=(images[inImagePtr+yStart1+xStart1|0]|0)+(images[inImagePtr+yStart1+xStart2|0]|0)+(images[inImagePtr+offset+u|0]|0)+(images[inImagePtr+yStart2+xStart1|0]|0)+(images[inImagePtr+yStart2+xStart2|0]|0)|0;if ((sum|0)>(0|0)) {images[outImagePtr+offset+u|0]=1;} else {images[outImagePtr+offset+u|0]=0;}}}return;}function memcpy(srcImagePtr, dstImagePtr) {srcImagePtr=srcImagePtr|0;dstImagePtr=dstImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[dstImagePtr+length|0]=images[srcImagePtr+length|0]|0;}}function zeroBorder(imagePtr) {imagePtr=imagePtr|0;var x=0,y=0;for (x=0; (x|0)<(size - 1|0); x=x+1|0) {images[imagePtr+x|0]=0;images[imagePtr+y|0]=0;y=y+size - 1|0;images[imagePtr+y|0]=0;y=y+1|0;}for (x=0; (x|0)<(size|0); x=x+1|0) {images[imagePtr+y|0]=0;y=y+1|0;}}function skeletonize() {var subImagePtr=0,erodedImagePtr=0,tempImagePtr=0,skelImagePtr=0,sum=0,done=0;erodedImagePtr=imul(size, size)|0;tempImagePtr=erodedImagePtr+erodedImagePtr|0;skelImagePtr=tempImagePtr+erodedImagePtr|0;init(skelImagePtr, 0);zeroBorder(subImagePtr);do {erode(subImagePtr, erodedImagePtr);dilate(erodedImagePtr, tempImagePtr);subtract(subImagePtr, tempImagePtr, tempImagePtr);bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);memcpy(erodedImagePtr, subImagePtr);sum=countNonZero(subImagePtr)|0;done=(sum|0) == 0|0;} while (!done);}return {skeletonize: skeletonize};} exports["a"]=Skeletonizer; },function(e,t,n){function r(){o.a.call(this),this._counters=[]}var o=n(8),i={ALPHABETH_STRING:{value:"0123456789-$:/.+ABCD"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,45,36,58,47,46,43,65,66,67,68]},CHARACTER_ENCODINGS:{value:[3,6,9,96,18,66,33,36,48,72,12,24,69,81,84,21,26,41,11,14]},START_END:{value:[26,41,11,14]},MIN_ENCODED_CHARS:{value:4},MAX_ACCEPTABLE:{value:2},PADDING:{value:1.5},FORMAT:{value:"codabar",writeable:!1}};r.prototype=Object.create(o.a.prototype,i),r.prototype.constructor=r,r.prototype._decode=function(){var e,t,n,r,o,i=this,a=[];if(this._counters=i._fillCounters(),e=i._findStart(),!e)return null;r=e.startCounter;do{if(n=i._toPattern(r),0>n)return null;if(t=i._patternToChar(n),0>t)return null;if(a.push(t),r+=8,a.length>1&&i._isStartEnd(n))break}while(ri._counters.length?i._counters.length:r,o=e.start+i._sumCounters(e.startCounter,r-8),{code:a.join(""),start:e.start,end:o,startInfo:e,decodedCodes:a}):null},r.prototype._verifyWhitespace=function(e,t){return(0>=e-1||this._counters[e-1]>=this._calculatePatternLength(e)/2)&&(t+8>=this._counters.length||this._counters[t+7]>=this._calculatePatternLength(t)/2)},r.prototype._calculatePatternLength=function(e){var t,n=0;for(t=e;e+7>t;t++)n+=this._counters[t];return n},r.prototype._thresholdResultPattern=function(e,t){var n,r,o,i,a,c=this,u={space:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}},bar:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}}},s=t;for(o=0;o=0;i--)n=2===(1&i)?u.bar:u.space,r=1===(1&a)?n.wide:n.narrow,r.size+=c._counters[s+i],r.counts++,a>>=1;s+=8}return["space","bar"].forEach(function(e){var t=u[e];t.wide.min=Math.floor((t.narrow.size/t.narrow.counts+t.wide.size/t.wide.counts)/2),t.narrow.max=Math.ceil(t.wide.min),t.wide.max=Math.ceil((t.wide.size*c.MAX_ACCEPTABLE+c.PADDING)/t.wide.counts)}),u},r.prototype._charToPattern=function(e){var t,n=this,r=e.charCodeAt(0);for(t=0;t=0;r--){if(o=0===(1&r)?s.bar:s.space,i=1===(1&c)?o.wide:o.narrow,a=u._counters[f+r],ai.max)return!1;c>>=1}f+=8}return!0},r.prototype._patternToChar=function(e){var t,n=this;for(t=0;tn;n+=2)r=this._counters[n],r>i&&(i=r),o>r&&(o=r);return(o+i)/2|0},r.prototype._toPattern=function(e){var t,n,r,o,i=7,a=e+i,c=1<this._counters.length)return-1;for(t=this._computeAlternatingThreshold(e,a),n=this._computeAlternatingThreshold(e+1,a),r=0;i>r;r++)o=0===(1&r)?t:n,this._counters[e+r]>o&&(u|=c),c>>=1;return u},r.prototype._isStartEnd=function(e){var t;for(t=0;tn;n++)r+=this._counters[n];return r},r.prototype._findStart=function(){var e,t,n,r=this,o=r._nextUnset(r._row);for(e=1;ec.AVG_CODE_ERROR?null:(c.CODE_PATTERN[d.code]&&(d.correction.bar=o(c.CODE_PATTERN[d.code],a,this.MODULE_INDICES.bar),d.correction.space=o(c.CODE_PATTERN[d.code],a,this.MODULE_INDICES.space)),d)}f++,a[f]=1,s=!s}return null},r.prototype._correct=function(e,t){this._correctBars(e,t.bar,this.MODULE_INDICES.bar),this._correctBars(e,t.space,this.MODULE_INDICES.space)},r.prototype._findStart=function(){var e,t,n,r,i,a=[0,0,0,0,0,0],c=this,u=c._nextSet(c._row),s=!1,f=0,d={error:Number.MAX_VALUE,code:-1,start:0,end:0,correction:{bar:1,space:1}};for(e=u;er;r++)a[r]=a[r+2];a[4]=0,a[5]=0,f--}else f++;a[f]=1,s=!s}return null},r.prototype._decode=function(){var e,t,n=this,r=n._findStart(),o=null,i=!1,a=[],c=0,u=0,s=[],f=[],d=!1,l=!0;if(null===r)return null;switch(o={code:r.code,start:r.start,end:r.end,correction:{bar:r.correction.bar,space:r.correction.space}},f.push(o),u=o.code,o.code){case n.START_CODE_A:e=n.CODE_A;break;case n.START_CODE_B:e=n.CODE_B;break;case n.START_CODE_C:e=n.CODE_C;break;default:return null}for(;!i;){if(t=d,d=!1,o=n._decodeCode(o.end,o.correction),null!==o)switch(o.code!==n.STOP_CODE&&(l=!0),o.code!==n.STOP_CODE&&(s.push(o.code),c++,u+=c*o.code),f.push(o),e){case n.CODE_A:if(o.code<64)a.push(String.fromCharCode(32+o.code));else if(o.code<96)a.push(String.fromCharCode(o.code-64));else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_SHIFT:d=!0,e=n.CODE_B;break;case n.CODE_B:e=n.CODE_B;break;case n.CODE_C:e=n.CODE_C;break;case n.STOP_CODE:i=!0}break;case n.CODE_B:if(o.code<96)a.push(String.fromCharCode(32+o.code));else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_SHIFT:d=!0,e=n.CODE_A;break;case n.CODE_A:e=n.CODE_A;break;case n.CODE_C:e=n.CODE_C;break;case n.STOP_CODE:i=!0}break;case n.CODE_C:if(o.code<100)a.push(o.code<10?"0"+o.code:o.code);else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_A:e=n.CODE_A;break;case n.CODE_B:e=n.CODE_B;break;case n.STOP_CODE:i=!0}}else i=!0;t&&(e=e===n.CODE_A?n.CODE_B:n.CODE_A)}return null===o?null:(o.end=n._nextUnset(n._row,o.end),n._verifyTrailingWhitespace(o)?(u-=c*s[s.length-1],u%103!==s[s.length-1]?null:a.length?(l&&a.splice(a.length-1,1),{code:a.join(""),start:r.start,end:o.end,codeset:e,startInfo:r,decodedCodes:f,endInfo:o}):null):null)},i.a.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,to&&a>i;o++){if(n=this._decodeCode(i),!n)return null;u.push(n),c.push(n.code%10),n.code>=this.CODE_G_START&&(r|=1<<1-o),1!=o&&(i=this._nextSet(this._row,n.end),i=this._nextUnset(this._row,i))}return 2!=c.length||parseInt(c.join(""))%4!==r?null:{code:c.join(""),decodedCodes:u,end:n.end}},t.a=r},function(e,t,n){function r(){a.a.call(this)}function o(e){var t;for(t=0;10>t;t++)if(e===u[t])return t;return null}function i(e){var t,n=e.length,r=0;for(t=n-2;t>=0;t-=2)r+=e[t];for(r*=3,t=n-1;t>=0;t-=2)r+=e[t];return r*=3,r%10}var a=n(5),c={FORMAT:{value:"ean_5",writeable:!1}},u=[24,20,18,17,12,6,3,10,9,5];r.prototype=Object.create(a.a.prototype,c),r.prototype.constructor=r,r.prototype.decode=function(e,t){this._row=e;var n,r=0,a=0,c=t,u=this._row.length,s=[],f=[];for(a=0;5>a&&u>c;a++){if(n=this._decodeCode(c),!n)return null;f.push(n),s.push(n.code%10),n.code>=this.CODE_G_START&&(r|=1<<4-a),4!=a&&(c=this._nextSet(this._row,n.end),c=this._nextUnset(this._row,c))}return 5!=s.length?null:i(s)!==o(r)?null:{code:s.join(""),decodedCodes:f,end:n.end}},t.a=r},function(e,t,n){function r(e,t){o.a.call(this,e,t)}var o=n(5),i={FORMAT:{value:"ean_8",writeable:!1}};r.prototype=Object.create(o.a.prototype,i),r.prototype.constructor=r,r.prototype._decodePayload=function(e,t,n){var r,o=this;for(r=0;4>r;r++){if(e=o._decodeCode(e.end,o.CODE_G_START),!e)return null;t.push(e.code),n.push(e)}if(e=o._findPattern(o.MIDDLE_PATTERN,e.end,!0,!1),null===e)return null;for(n.push(e),r=0;4>r;r++){if(e=o._decodeCode(e.end,o.CODE_G_START),!e)return null;n.push(e),t.push(e.code)}return e},t.a=r},function(e,t,n){function r(e){e=a.a.bind()(o(),e),c.a.call(this,e),this.barSpaceRatio=[1,1],e.normalizeBarSpaceWidth&&(this.SINGLE_CODE_ERROR=.38,this.AVG_CODE_ERROR=.09)}function o(){var e={};return Object.keys(r.CONFIG_KEYS).forEach(function(t){e[t]=r.CONFIG_KEYS[t]["default"]}),e}var i=n(12),a=i&&i.__esModule?function(){return i["default"]}:function(){return i};Object.defineProperty(a,"a",{get:a});var c=n(8),u=1,s=3,f={START_PATTERN:{value:[u,u,u,u]},STOP_PATTERN:{value:[u,u,s]},CODE_PATTERN:{value:[[u,u,s,s,u],[s,u,u,u,s],[u,s,u,u,s],[s,s,u,u,u],[u,u,s,u,s],[s,u,s,u,u],[u,s,s,u,u],[u,u,u,s,s],[s,u,u,s,u],[u,s,u,s,u]]},SINGLE_CODE_ERROR:{value:.78,writable:!0},AVG_CODE_ERROR:{value:.38,writable:!0},MAX_CORRECTION_FACTOR:{value:5},FORMAT:{value:"i2of5"}};r.prototype=Object.create(c.a.prototype,f),r.prototype.constructor=r,r.prototype._matchPattern=function(e,t){if(this.config.normalizeBarSpaceWidth){var n,r=[0,0],o=[0,0],i=[0,0],a=this.MAX_CORRECTION_FACTOR,u=1/a;for(n=0;ni)return d.error=i,d.start=o-c,d.end=o,d;if(!r)return null;for(a=0;a=0&&n._matchRange(e,t.start,0))return t;r=t.end,t=null}},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,ta;){for(r=0;5>r;r++)u[0][r]=e[a]*this.barSpaceRatio[0],u[1][r]=e[a+1]*this.barSpaceRatio[1],a+=2;if(o=i._decodePair(u),!o)return null;for(r=0;rr;r++){if(e=o._decodeCode(e.end),!e)return null;e.code>=o.CODE_G_START&&(e.code=e.code-o.CODE_G_START,i|=1<<5-r),t.push(e.code),n.push(e)}return o._determineParity(i,t)?e:null},r.prototype._determineParity=function(e,t){var n,r;for(r=0;r=n?t.concat(e.slice(1,3)).concat([n,0,0,0,0]).concat(e.slice(3,6)):3===n?t.concat(e.slice(1,4)).concat([0,0,0,0,0]).concat(e.slice(4,6)):4===n?t.concat(e.slice(1,5)).concat([0,0,0,0,0,e[5]]):t.concat(e.slice(1,6)).concat([0,0,0,0,n]),t.push(e[e.length-1]),t},r.prototype._checksum=function(e){return o.a.prototype._checksum.call(this,this._convertToUPCA(e))},r.prototype._findEnd=function(e,t){return t=!0,o.a.prototype._findEnd.call(this,e,t)},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,t0)for(r=0;r0){if(e=B.filter(function(e){return!e.busy})[0],!e)return;I.attachData(e.imageData)}else I.attachData(N.data);I.grab()&&(e?(e.busy=!0,e.worker.postMessage({cmd:"process",imageData:e.imageData},[e.imageData.buffer])):S())}else S()}function R(){var e=null,t=1e3/(V.frequency||60);k=!1,function n(r){e=e||r,k||(r>=e&&(e+=t,T()),window.requestAnimFrame(n))}(performance.now())}function O(){W&&"LiveStream"===V.inputStream.type?R():T()}function x(e){var t,n={worker:void 0,imageData:new Uint8Array(M.getWidth()*M.getHeight()),busy:!0};t=P(),n.worker=new Worker(t),n.worker.onmessage=function(r){return"initialized"===r.data.event?(URL.revokeObjectURL(t),n.busy=!1,n.imageData=new Uint8Array(r.data.imageData),e(n)):void("processed"===r.data.event?(n.imageData=new Uint8Array(r.data.imageData),n.busy=!1,E(r.data.result,n.imageData)):"error"===r.data.event)},n.worker.postMessage({cmd:"init",size:{x:M.getWidth(),y:M.getHeight()},imageData:n.imageData,config:D(V)},[n.imageData.buffer])}function D(e){return v({},e,{inputStream:v({},e.inputStream,{target:null})})}function A(e){function t(e){self.postMessage({event:"processed",imageData:o.data,result:e},[o.data.buffer])}function n(){self.postMessage({event:"initialized",imageData:o.data},[o.data.buffer])}if(e){var r=e()["default"];if(!r)return void self.postMessage({event:"error",message:"Quagga could not be created"})}var o,i=r._worker.createScanner();self.onmessage=function(e){if("init"===e.data.cmd){var a=e.data.config;a.numOfWorkers=0,o=new r.ImageWrapper({x:e.data.size.x,y:e.data.size.y},new Uint8Array(e.data.imageData)),i.init(a,n,o),i.subscribe("processed",t)}else"process"===e.data.cmd&&(o.data=new Uint8Array(e.data.imageData),i.start())}}function P(){var t,n;return"undefined"!=typeof e&&(n=e),t=new Blob(["("+A.toString()+")("+n+");"],{type:"text/javascript"}),window.URL.createObjectURL(t)}function j(e,t){var n=e-B.length;if(0===n)return t&&t();if(0>n){var r=B.slice(n);return r.forEach(function(e){e.worker.terminate()}),B=B.slice(0,n),t&&t()}for(var o=function(n){B.push(n),B.length>=e&&t&&t()},i=0;n>i;i++)x(o)}var M,I,k,N,L,z,U,F,G={ctx:{image:null,overlay:null},dom:{image:null,overlay:null}},B=[],W=!0,V={},H=f.a.bind()();return{init:function(e,r,o){return V=a.a.bind()({},l.a,e),o?(W=!1,t(o),r()):void n(r)},start:function(){O()},stop:function(){k=!0,j(0),"LiveStream"===V.inputStream.type&&(d.a.release(),M.clearEventHandlers())},pause:function(){k=!0},subscribe:function(e,t){H.subscribe(e,t)},unsubscribe:function(e,t){H.unsubscribe(e,t)},registerResultCollector:function(e){e&&"function"==typeof e.addResult&&(U=e)},decodeSingle:function(e,t){var n=this;this.init(e,function(){H.once("processed",function(e){n.stop(),t.call(null,e)},!0),O()})},canvas:G}}var i=r(12),a=i&&i.__esModule?function(){return i["default"]}:function(){return i};Object.defineProperty(a,"a",{get:a});var c=r(26),u=r(79),s=r(73),f=r(69),d=r(75),l=(r(7),r(36),r(37)),p=r(78),h=r(76),v=Object.assign||function(e){for(var t=1;t0&&c(d)&&(n||a(d)||i(d))?t>1?r(d,t-1,n,u):o(u,d):n||(u[u.length]=d)}return u}var o=n(107),i=n(10),a=n(1),c=n(32);e.e=r},function(e,t,n){function r(e,t){return null==e?e:o(e,t,i)}var o=n(50),i=n(35);e.e=r},function(e,t,n){function r(e,t){return e&&o(e,t,i)}var o=n(50),i=n(24);e.e=r},function(e,t,n){function r(e,t){return t in Object(e)}e.e=r},function(e,t,n){function r(e,t,n,r,g,y){var b=s(e),_=s(t),w=h,C=h;b||(w=u(e),w=w==p?v:w),_||(C=u(t),C=C==p?v:C);var E=w==v&&!f(e),S=C==v&&!f(t),T=w==C;if(T&&!E)return y||(y=new o),b||d(e)?i(e,t,n,r,g,y):a(e,t,w,n,r,g,y);if(!(g&l)){var R=E&&m.call(e,"__wrapped__"),O=S&&m.call(t,"__wrapped__");if(R||O)return y||(y=new o),n(R?e.value():e,O?t.value():t,r,g,y)}return T?(y||(y=new o),c(e,t,n,r,g,y)):!1}var o=n(14),i=n(57),a=n(142),c=n(143),u=n(58),s=n(1),f=n(17),d=n(34),l=2,p="[object Arguments]",h="[object Array]",v="[object Object]",g=Object.prototype,m=g.hasOwnProperty;e.e=r},function(e,t,n){function r(e,t,n,r){var u=n.length,s=u,f=!r;if(null==e)return!s;for(e=Object(e);u--;){var d=n[u];if(f&&d[2]?d[1]!==e[d[0]]:!(d[0]in e))return!1}for(;++ut&&(t=-t>o?0:o+t),n=n>o?o:n,0>n&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var i=Array(o);++r1?n[i-1]:void 0,c=i>2?n[2]:void 0;for(a="function"==typeof a?(i--,a):void 0,c&&o(n[0],n[1],c)&&(a=3>i?void 0:a,i=1),t=Object(t);++re?-1:1;return t*a}var n=e%1;return e===e?n?e-n:e:0}var o=n(181),i=1/0,a=1.7976931348623157e308;e.e=r},function(e,t,n){function r(e){if(i(e)){var t=o(e.valueOf)?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(c,"");var n=s.test(e);return n||f.test(e)?d(e.slice(2),n?2:8):u.test(e)?a:+e}var o=n(11),i=n(2),a=NaN,c=/^\s+|\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,f=/^0o[0-7]+$/i,d=parseInt;e.e=r},function(e,t,n){function r(e){return o(e,i(e))}var o=n(130),i=n(24);e.e=r},function(e,t,n){function r(e){return o(e,i(e))}var o=n(29),i=n(35);e.e=r},function(e,t,n){function r(e){if("string"==typeof e)return e;if(null==e)return"";if(i(e))return u?u.call(e):"";var t=e+"";return"0"==t&&1/e==-a?"-0":t}var o=n(27),i=n(176),a=1/0,c=o?o.prototype:void 0,u=c?c.toString:void 0;e.e=r},function(e,t,n){"use strict";!function(){var t=n(0).log,r=n(0).browserDetails;e.e.browserDetails=r,e.e.extractVersion=n(0).extractVersion,e.e.disableLog=n(0).disableLog;var o=n(186)||null,i=n(189)||null,a=n(190)||null;switch(r.browser){case"chrome":if(!o||!o.shimPeerConnection)return void t("Chrome shim is not included in this adapter release.");t("adapter.js shimming chrome!"),e.e.browserShim=o,o.shimGetUserMedia(),o.shimSourceObject(),o.shimPeerConnection(),o.shimOnTrack();break;case"edge":if(!i||!i.shimPeerConnection)return void t("MS edge shim is not included in this adapter release.");t("adapter.js shimming edge!"),e.e.browserShim=i,i.shimPeerConnection();break;case"firefox":if(!a||!a.shimPeerConnection)return void t("Firefox shim is not included in this adapter release.");t("adapter.js shimming firefox!"),e.e.browserShim=a,a.shimGetUserMedia(),a.shimSourceObject(),a.shimPeerConnection(),a.shimOnTrack();break;default:t("Unsupported browser!")}}()},function(e,t,n){"use strict";var r=n(0).log,o=n(0).browserDetails,i={shimOnTrack:function(){"object"!=typeof window||!window.RTCPeerConnection||"ontrack"in window.RTCPeerConnection.prototype||Object.defineProperty(window.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){var t=this;this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=e),this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.addEventListener("addtrack",function(n){var r=new Event("track");r.track=n.track,r.receiver={track:n.track},r.streams=[e.stream],t.dispatchEvent(r)}),e.stream.getTracks().forEach(function(t){var n=new Event("track");n.track=t,n.receiver={track:t},n.streams=[e.stream],this.dispatchEvent(n)}.bind(this))}.bind(this))}})},shimSourceObject:function(){"object"==typeof window&&(!window.HTMLMediaElement||"srcObject"in window.HTMLMediaElement.prototype||Object.defineProperty(window.HTMLMediaElement.prototype,"srcObject",{get:function(){return this._srcObject},set:function(e){var t=this;return this._srcObject=e,this.src&&URL.revokeObjectURL(this.src),e?(this.src=URL.createObjectURL(e),e.addEventListener("addtrack",function(){t.src&&URL.revokeObjectURL(t.src),t.src=URL.createObjectURL(e)}),void e.addEventListener("removetrack",function(){t.src&&URL.revokeObjectURL(t.src),t.src=URL.createObjectURL(e)})):void(this.src="")}}))},shimPeerConnection:function(){window.RTCPeerConnection=function(e,t){r("PeerConnection"),e&&e.iceTransportPolicy&&(e.iceTransports=e.iceTransportPolicy);var n=new webkitRTCPeerConnection(e,t),o=n.getStats.bind(n);return n.getStats=function(e,t,n){var r=this,i=arguments;if(arguments.length>0&&"function"==typeof e)return o(e,t);var a=function(e){var t={},n=e.result();return n.forEach(function(e){var n={id:e.id,timestamp:e.timestamp,type:e.type};e.names().forEach(function(t){n[t]=e.stat(t)}),t[n.id]=n}),t};if(arguments.length>=2){var c=function(e){i[1](a(e))};return o.apply(this,[c,arguments[0]])}return new Promise(function(t,n){1===i.length&&null===e?o.apply(r,[function(e){t.apply(null,[a(e)])},n]):o.apply(r,[t,n])})},n},window.RTCPeerConnection.prototype=webkitRTCPeerConnection.prototype,webkitRTCPeerConnection.generateCertificate&&Object.defineProperty(window.RTCPeerConnection,"generateCertificate",{get:function(){return arguments.length?webkitRTCPeerConnection.generateCertificate.apply(null,arguments):webkitRTCPeerConnection.generateCertificate}}),["createOffer","createAnswer"].forEach(function(e){var t=webkitRTCPeerConnection.prototype[e];webkitRTCPeerConnection.prototype[e]=function(){var e=this;if(arguments.length<1||1===arguments.length&&"object"==typeof arguments[0]){var n=1===arguments.length?arguments[0]:void 0;return new Promise(function(r,o){t.apply(e,[r,o,n])})}return t.apply(this,arguments)}}),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(e){var t=webkitRTCPeerConnection.prototype[e];webkitRTCPeerConnection.prototype[e]=function(){var e=arguments,n=this;return new Promise(function(r,o){t.apply(n,[e[0],function(){r(),e.length>=2&&e[1].apply(null,[])},function(t){o(t),e.length>=3&&e[2].apply(null,[t])}])})}})},attachMediaStream:function(e,t){r("DEPRECATED, attachMediaStream will soon be removed."),o.version>=43?e.srcObject=t:"undefined"!=typeof e.src?e.src=URL.createObjectURL(t):r("Error attaching stream to element.")},reattachMediaStream:function(e,t){r("DEPRECATED, reattachMediaStream will soon be removed."),o.version>=43?e.srcObject=t.srcObject:e.src=t.src}};e.e={shimOnTrack:i.shimOnTrack,shimSourceObject:i.shimSourceObject,shimPeerConnection:i.shimPeerConnection,shimGetUserMedia:n(187),attachMediaStream:i.attachMediaStream,reattachMediaStream:i.reattachMediaStream}},function(e,t,n){"use strict";var r=n(0).log;e.e=function(){var e=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;var t={};return Object.keys(e).forEach(function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r="object"==typeof e[n]?e[n]:{ideal:e[n]};void 0!==r.exact&&"number"==typeof r.exact&&(r.min=r.max=r.exact);var o=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==r.ideal){t.optional=t.optional||[];var i={};"number"==typeof r.ideal?(i[o("min",n)]=r.ideal,t.optional.push(i),i={},i[o("max",n)]=r.ideal,t.optional.push(i)):(i[o("",n)]=r.ideal,t.optional.push(i))}void 0!==r.exact&&"number"!=typeof r.exact?(t.mandatory=t.mandatory||{},t.mandatory[o("",n)]=r.exact):["min","max"].forEach(function(e){void 0!==r[e]&&(t.mandatory=t.mandatory||{},t.mandatory[o(e,n)]=r[e])})}}),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},t=function(t,n,o){return t.audio&&(t.audio=e(t.audio)),t.video&&(t.video=e(t.video)),r("chrome: "+JSON.stringify(t)),navigator.webkitGetUserMedia(t,n,o)};navigator.getUserMedia=t;var n=function(e){return new Promise(function(t,n){navigator.getUserMedia(e,t,n)})};if(navigator.mediaDevices||(navigator.mediaDevices={getUserMedia:n,enumerateDevices:function(){return new Promise(function(e){var t={audio:"audioinput",video:"videoinput"};return MediaStreamTrack.getSources(function(n){e(n.map(function(e){return{label:e.label,kind:t[e.kind],deviceId:e.id,groupId:""}}))})})}}),navigator.mediaDevices.getUserMedia){var o=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(t){return t&&(r("spec: "+JSON.stringify(t)),t.audio=e(t.audio),t.video=e(t.video),r("chrome: "+JSON.stringify(t))),o(t)}.bind(this)}else navigator.mediaDevices.getUserMedia=function(e){return n(e)};"undefined"==typeof navigator.mediaDevices.addEventListener&&(navigator.mediaDevices.addEventListener=function(){r("Dummy mediaDevices.addEventListener called.")}),"undefined"==typeof navigator.mediaDevices.removeEventListener&&(navigator.mediaDevices.removeEventListener=function(){r("Dummy mediaDevices.removeEventListener called.")})}},function(e,t,n){"use strict";var r={};r.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},r.localCName=r.generateIdentifier(),r.splitLines=function(e){return e.trim().split("\n").map(function(e){return e.trim()})},r.splitSections=function(e){var t=e.split("\r\nm=");return t.map(function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"})},r.matchPrefix=function(e,t){return r.splitLines(e).filter(function(e){return 0===e.indexOf(t)})},r.parseCandidate=function(e){var t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");for(var n={foundation:t[0],component:t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],port:parseInt(t[5],10),type:t[7]},r=8;r-1?(n.attribute=e.substr(t+1,r-t-1),n.value=e.substr(r+1)):n.attribute=e.substr(t+1),n},r.getDtlsParameters=function(e,t){var n=r.splitLines(e);n=n.concat(r.splitLines(t));var o=n.filter(function(e){return 0===e.indexOf("a=fingerprint:")})[0].substr(14),i={role:"auto",fingerprints:[{algorithm:o.split(" ")[0],value:o.split(" ")[1]}]};return i},r.writeDtlsParameters=function(e,t){var n="a=setup:"+t+"\r\n";return e.fingerprints.forEach(function(e){n+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"}),n},r.getIceParameters=function(e,t){var n=r.splitLines(e);n=n.concat(r.splitLines(t));var o={usernameFragment:n.filter(function(e){return 0===e.indexOf("a=ice-ufrag:")})[0].substr(12),password:n.filter(function(e){return 0===e.indexOf("a=ice-pwd:")})[0].substr(10)};return o},r.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},r.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=r.splitLines(e),o=n[0].split(" "),i=3;i0?"9":"0",n+=" UDP/TLS/RTP/SAVPF ",n+=t.codecs.map(function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType}).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",t.codecs.forEach(function(e){n+=r.writeRtpMap(e),n+=r.writeFtmp(e),n+=r.writeRtcpFb(e)}),n+="a=rtcp-mux\r\n"},r.writeSessionBoilerplate=function(){return"v=0\r\no=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},r.writeMediaSection=function(e,t,n,o){var i=r.writeRtpDescription(e.kind,t);if(i+=r.writeIceParameters(e.iceGatherer.getLocalParameters()),i+=r.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":"active"),i+="a=mid:"+e.mid+"\r\n",i+=e.rtpSender&&e.rtpReceiver?"a=sendrecv\r\n":e.rtpSender?"a=sendonly\r\n":e.rtpReceiver?"a=recvonly\r\n":"a=inactive\r\n",e.rtpSender){var a="msid:"+o.id+" "+e.rtpSender.track.id+"\r\n";i+="a="+a,i+="a=ssrc:"+e.sendSsrc+" "+a}return i+="a=ssrc:"+e.sendSsrc+" cname:"+r.localCName+"\r\n"},r.getDirection=function(e,t){for(var n=r.splitLines(e),o=0;o-1&&(this.localStreams.splice(t,1),this._maybeFireNegotiationNeeded())},window.RTCPeerConnection.prototype._getCommonCapabilities=function(e,t){var n={codecs:[],headerExtensions:[],fecMechanisms:[]};return e.codecs.forEach(function(e){for(var r=0;r0,!1)}})}switch(this.localDescription={type:e.type,sdp:e.sdp},e.type){case"offer":this._updateSignalingState("have-local-offer");break;case"answer":this._updateSignalingState("stable");break;default:throw new TypeError('unsupported type "'+e.type+'"')}var i=arguments.length>1&&"function"==typeof arguments[1];if(i){var a=arguments[1];window.setTimeout(function(){a(),"new"===t.iceGatheringState&&(t.iceGatheringState="gathering"),t._emitBufferedCandidates()},0)}var c=Promise.resolve();return c.then(function(){i||("new"===t.iceGatheringState&&(t.iceGatheringState="gathering"),window.setTimeout(t._emitBufferedCandidates.bind(t),500))}),c},window.RTCPeerConnection.prototype.setRemoteDescription=function(e){var t=this,n=new MediaStream,o=[],i=r.splitSections(e.sdp),a=i.shift();switch(i.forEach(function(i,c){var u,s,f,d,l,p,h,v,g,m,y,b,_=r.splitLines(i),w=_[0].substr(2).split(" "),C=w[0],E="0"===w[1],S=r.getDirection(i,a),T=r.parseRtpParameters(i);E||(y=r.getIceParameters(i,a),b=r.getDtlsParameters(i,a));var R,O=r.matchPrefix(i,"a=mid:")[0].substr(6),x=r.matchPrefix(i,"a=ssrc:").map(function(e){return r.parseSsrcMedia(e)}).filter(function(e){return"cname"===e.attribute})[0];if(x&&(v=parseInt(x.ssrc,10),R=x.value),"offer"===e.type){var D=t._createIceAndDtlsTransports(O,c);if(g=RTCRtpReceiver.getCapabilities(C),h=1001*(2*c+2),p=new RTCRtpReceiver(D.dtlsTransport,C),m=p.track,o.push([m,p]),n.addTrack(m),t.localStreams.length>0&&t.localStreams[0].getTracks().length>=c){var A=t.localStreams[0].getTracks()[c];l=new RTCRtpSender(A,D.dtlsTransport)}t.transceivers[c]={iceGatherer:D.iceGatherer,iceTransport:D.iceTransport,dtlsTransport:D.dtlsTransport,localCapabilities:g,remoteCapabilities:T,rtpSender:l,rtpReceiver:p,kind:C,mid:O,cname:R,sendSsrc:h,recvSsrc:v},t._transceive(t.transceivers[c],!1,"sendrecv"===S||"sendonly"===S)}else"answer"!==e.type||E||(u=t.transceivers[c],s=u.iceGatherer,f=u.iceTransport,d=u.dtlsTransport,l=u.rtpSender,p=u.rtpReceiver,h=u.sendSsrc,g=u.localCapabilities,t.transceivers[c].recvSsrc=v,t.transceivers[c].remoteCapabilities=T,t.transceivers[c].cname=R,f.start(s,y,"controlling"),d.start(b),t._transceive(u,"sendrecv"===S||"recvonly"===S,"sendrecv"===S||"sendonly"===S),!p||"sendrecv"!==S&&"sendonly"!==S?delete u.rtpReceiver:(m=p.track,o.push([m,p]),n.addTrack(m)))}),this.remoteDescription={type:e.type,sdp:e.sdp},e.type){case"offer":this._updateSignalingState("have-remote-offer");break;case"answer":this._updateSignalingState("stable");break;default:throw new TypeError('unsupported type "'+e.type+'"')}return n.getTracks().length&&(t.remoteStreams.push(n),window.setTimeout(function(){var e=new Event("addstream");e.stream=n,t.dispatchEvent(e),null!==t.onaddstream&&window.setTimeout(function(){t.onaddstream(e)},0),o.forEach(function(e){var r=e[0],o=e[1],i=new Event("track");i.track=r,i.receiver=o,i.streams=[n],t.dispatchEvent(i),null!==t.ontrack&&window.setTimeout(function(){t.ontrack(i)},0)})},0)),arguments.length>1&&"function"==typeof arguments[1]&&window.setTimeout(arguments[1],0),Promise.resolve()},window.RTCPeerConnection.prototype.close=function(){this.transceivers.forEach(function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()}),this._updateSignalingState("closed")},window.RTCPeerConnection.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this.dispatchEvent(t),null!==this.onsignalingstatechange&&this.onsignalingstatechange(t)},window.RTCPeerConnection.prototype._maybeFireNegotiationNeeded=function(){var e=new Event("negotiationneeded");this.dispatchEvent(e),null!==this.onnegotiationneeded&&this.onnegotiationneeded(e)},window.RTCPeerConnection.prototype._updateConnectionState=function(){var e,t=this,n={"new":0,closed:0,connecting:0,checking:0,connected:0,completed:0,failed:0};if(this.transceivers.forEach(function(e){n[e.iceTransport.state]++,n[e.dtlsTransport.state]++}),n.connected+=n.completed,e="new",n.failed>0?e="failed":n.connecting>0||n.checking>0?e="connecting":n.disconnected>0?e="disconnected":n["new"]>0?e="new":(n.connecting>0||n.completed>0)&&(e="connected"),e!==t.iceConnectionState){t.iceConnectionState=e;var r=new Event("iceconnectionstatechange");this.dispatchEvent(r),null!==this.oniceconnectionstatechange&&this.oniceconnectionstatechange(r)}},window.RTCPeerConnection.prototype.createOffer=function(){var e=this;if(this._pendingOffer)throw new Error("createOffer called while there is a pending offer.");var t;1===arguments.length&&"function"!=typeof arguments[0]?t=arguments[0]:3===arguments.length&&(t=arguments[2]);var n=[],o=0,i=0;if(this.localStreams.length&&(o=this.localStreams[0].getAudioTracks().length,i=this.localStreams[0].getVideoTracks().length),t){if(t.mandatory||t.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==t.offerToReceiveAudio&&(o=t.offerToReceiveAudio),void 0!==t.offerToReceiveVideo&&(i=t.offerToReceiveVideo)}for(this.localStreams.length&&this.localStreams[0].getTracks().forEach(function(e){n.push({kind:e.kind,track:e,wantReceive:"audio"===e.kind?o>0:i>0}),"audio"===e.kind?o--:"video"===e.kind&&i--});o>0||i>0;)o>0&&(n.push({kind:"audio",wantReceive:!0}),o--),i>0&&(n.push({kind:"video",wantReceive:!0}),i--);var a=r.writeSessionBoilerplate(),c=[];n.forEach(function(t,n){var o,i,u=t.track,s=t.kind,f=r.generateIdentifier(),d=e._createIceAndDtlsTransports(f,n),l=RTCRtpSender.getCapabilities(s),p=1001*(2*n+1);u&&(o=new RTCRtpSender(u,d.dtlsTransport)),t.wantReceive&&(i=new RTCRtpReceiver(d.dtlsTransport,s)),c[n]={iceGatherer:d.iceGatherer,iceTransport:d.iceTransport,dtlsTransport:d.dtlsTransport,localCapabilities:l,remoteCapabilities:null,rtpSender:o,rtpReceiver:i,kind:s,mid:f,sendSsrc:p,recvSsrc:null};var h=c[n];a+=r.writeMediaSection(h,h.localCapabilities,"offer",e.localStreams[0])}),this._pendingOffer=c;var u=new RTCSessionDescription({type:"offer",sdp:a});return arguments.length&&"function"==typeof arguments[0]&&window.setTimeout(arguments[0],0,u),Promise.resolve(u)},window.RTCPeerConnection.prototype.createAnswer=function(){var e,t=this;1===arguments.length&&"function"!=typeof arguments[0]?e=arguments[0]:3===arguments.length&&(e=arguments[2]);var n=r.writeSessionBoilerplate();this.transceivers.forEach(function(e){var o=t._getCommonCapabilities(e.localCapabilities,e.remoteCapabilities);n+=r.writeMediaSection(e,o,"answer",t.localStreams[0])});var o=new RTCSessionDescription({type:"answer",sdp:n});return arguments.length&&"function"==typeof arguments[0]&&window.setTimeout(arguments[0],0,o),Promise.resolve(o)},window.RTCPeerConnection.prototype.addIceCandidate=function(e){var t=e.sdpMLineIndex;if(e.sdpMid)for(var n=0;n0?r.parseCandidate(e.candidate):{};if("tcp"===i.protocol&&0===i.port)return;if("1"!==i.component)return;"endOfCandidates"===i.type&&(i={}), -o.iceTransport.addRemoteCandidate(i);var a=r.splitSections(this.remoteDescription.sdp);a[t+1]+=(i.type?e.candidate.trim():"a=end-of-candidates")+"\r\n",this.remoteDescription.sdp=a.join("")}return arguments.length>1&&"function"==typeof arguments[1]&&window.setTimeout(arguments[1],0),Promise.resolve()},window.RTCPeerConnection.prototype.getStats=function(){var e=[];this.transceivers.forEach(function(t){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(n){t[n]&&e.push(t[n].getStats())})});var t=arguments.length>1&&"function"==typeof arguments[1]&&arguments[1];return new Promise(function(n){var r={};Promise.all(e).then(function(e){e.forEach(function(e){Object.keys(e).forEach(function(t){r[t]=e[t]})}),t&&window.setTimeout(t,0,r),n(r)})})}},attachMediaStream:function(e,t){o("DEPRECATED, attachMediaStream will soon be removed."),e.srcObject=t},reattachMediaStream:function(e,t){o("DEPRECATED, reattachMediaStream will soon be removed."),e.srcObject=t.srcObject}});e.e={shimPeerConnection:i.shimPeerConnection,attachMediaStream:i.attachMediaStream,reattachMediaStream:i.reattachMediaStream}},function(e,t,n){"use strict";var r=n(0).log,o=n(0).browserDetails,i={shimOnTrack:function(){"object"!=typeof window||!window.RTCPeerConnection||"ontrack"in window.RTCPeerConnection.prototype||Object.defineProperty(window.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=e),this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.getTracks().forEach(function(t){var n=new Event("track");n.track=t,n.receiver={track:t},n.streams=[e.stream],this.dispatchEvent(n)}.bind(this))}.bind(this))}})},shimSourceObject:function(){"object"==typeof window&&(!window.HTMLMediaElement||"srcObject"in window.HTMLMediaElement.prototype||Object.defineProperty(window.HTMLMediaElement.prototype,"srcObject",{get:function(){return this.mozSrcObject},set:function(e){this.mozSrcObject=e}}))},shimPeerConnection:function(){window.RTCPeerConnection||(window.RTCPeerConnection=function(e,t){if(o.version<38&&e&&e.iceServers){for(var n=[],r=0;r=n&&parseInt(r[n],10)},detectBrowser:function(){var e={};if(e.browser=null,e.version=null,e.minVersion=null,"undefined"==typeof window||!window.navigator)return e.browser="Not a browser.",e;if(navigator.mozGetUserMedia)e.browser="firefox",e.version=this.extractVersion(navigator.userAgent,/Firefox\/([0-9]+)\./,1),e.minVersion=31;else if(navigator.webkitGetUserMedia)if(window.webkitRTCPeerConnection)e.browser="chrome",e.version=this.extractVersion(navigator.userAgent,/Chrom(e|ium)\/([0-9]+)\./,2),e.minVersion=38;else{if(!navigator.userAgent.match(/Version\/(\d+).(\d+)/))return e.browser="Unsupported webkit-based browser with GUM support but no WebRTC support.",e;e.browser="safari",e.version=this.extractVersion(navigator.userAgent,/AppleWebKit\/([0-9]+)\./,1),e.minVersion=602}else{if(!navigator.mediaDevices||!navigator.userAgent.match(/Edge\/(\d+).(\d+)$/))return e.browser="Not a supported browser.",e;e.browser="edge",e.version=this.extractVersion(navigator.userAgent,/Edge\/(\d+).(\d+)$/,2),e.minVersion=10547}return e.versionr;r++)o=a._matchPattern(i,a.CODE_PATTERN[r]),oa.AVG_CODE_ERROR?null:f}s++,i[s]=1,u=!u}return null},r.prototype._findPattern=function(e,t,n,r,o){var i,a,c,u,s=[],f=this,d=0,l={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(t||(t=f._nextSet(f._row)),void 0===n&&(n=!1),void 0===r&&(r=!0),void 0===o&&(o=f.AVG_CODE_ERROR),i=0;ia)return l.error=a,l.start=i-u,l.end=i,l;if(!r)return null;for(c=0;c=0&&n._matchRange(e,t.start,0))return t;r=t.end,t=null}},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start),tr;r++){if(e=i._decodeCode(e.end),!e)return null;e.code>=i.CODE_G_START?(e.code=e.code-i.CODE_G_START,a|=1<<5-r):a|=0<<5-r,t.push(e.code),n.push(e)}if(o=i._calculateFirstDigit(a),null===o)return null;if(t.unshift(o),e=i._findPattern(i.MIDDLE_PATTERN,e.end,!0,!1),null===e)return null;for(n.push(e),r=0;6>r;r++){if(e=i._decodeCode(e.end,i.CODE_G_START),!e)return null;n.push(e),t.push(e.code)}return e},r.prototype._decode=function(){var e,t,n=this,r=[],o=[],i={};if(e=n._findStart(),!e)return null;if(t={code:e.code,start:e.start,end:e.end},o.push(t),t=n._decodePayload(t,r,o),!t)return null;if(t=n._findEnd(t.end,!1),!t)return null;if(o.push(t),!n._checksum(r))return null;if(this.supplements.length>0){var a=this._decodeExtensions(t.end);if(!a)return null;var c=a.decodedCodes[a.decodedCodes.length-1],s={start:c.start+((c.end-c.start)/2|0),end:c.end};if(!n._verifyTrailingWhitespace(s))return null;i={supplement:a,code:r.join("")+a.code}}return u({code:r.join(""),start:e.start,end:t.end,codeset:"",startInfo:e,decodedCodes:o},i)},r.prototype._decodeExtensions=function(e){var t,n,r=this._nextSet(this._row,e),o=this._findPattern(this.EXTENSION_START_PATTERN,r,!1,!1);if(null===o)return null;for(t=0;t=0;t-=2)n+=e[t];for(n*=3,t=e.length-1;t>=0;t-=2)n+=e[t];return n%10===0},r.CONFIG_KEYS={supplements:{type:"arrayOf(string)","default":[],description:"Allowed extensions to be decoded (2 and/or 5)"}},t.a=r},function(e,t,n){var r=n(16),o=n(3),i=r(o,"Map");e.e=i},function(e,t,n){t.a={drawRect:function(e,t,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=1,n.beginPath(),n.strokeRect(e.x,e.y,t.x,t.y)},drawPath:function(e,t,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=r.lineWidth,n.beginPath(),n.moveTo(e[0][t.x],e[0][t.y]);for(var o=1;os)return Number.MAX_VALUE;for(o=s/f,n*=o,r=0;rn)return Number.MAX_VALUE;c+=u}return c/f},r.prototype._nextSet=function(e,t){var n;for(t=t||0,n=t;n1&&(e[n[r]]=o)},r.prototype._matchTrace=function(e,t){var n,r,o=[],i=this,a=i._nextSet(i._row),c=!i._row[a],u=0,s={error:Number.MAX_VALUE,code:-1,start:0};if(e){for(n=0;nr?(s.start=n-a,s.end=n,s.counter=o,s):null;u++,o[u]=1,c=!c}}else for(o.push(0),n=a;ne?0:e,r=e;t>r;r++)if(this._row[r]!==n)return!1;return!0},r.prototype._fillCounters=function(e,t,n){var r,o=this,i=0,a=[];for(n="undefined"!=typeof n?n:!0,e="undefined"!=typeof e?e:o._nextUnset(o._row),t=t||o._row.length,a[i]=0,r=e;t>r;r++)o._row[r]^n?a[i]++:(i++,a[i]=1,n=!n);return a},Object.defineProperty(r.prototype,"FORMAT",{value:"unknown",writeable:!1}),r.DIRECTION={FORWARD:1,REVERSE:-1},r.Exception={StartNotFoundException:"Start-Info was not found!",CodeNotFoundException:"Code could not be found!",PatternNotFoundException:"Pattern could not be found!"},r.CONFIG_KEYS={},t.a=r},function(e,t,n){function r(e){var t=new Float32Array(2);return t[0]=e[0],t[1]=e[1],t}e.e=r},function(e,t,n){function r(e){return o(e)&&c.call(e,"callee")&&(!s.call(e,"callee")||u.call(e)==i)}var o=n(32),i="[object Arguments]",a=Object.prototype,c=a.hasOwnProperty,u=a.toString,s=a.propertyIsEnumerable;e.e=r},function(e,t,n){function r(e){var t=o(e)?u.call(e):"";return t==i||t==a}var o=n(2),i="[object Function]",a="[object GeneratorFunction]",c=Object.prototype,u=c.toString;e.e=r},function(e,t,n){var r=n(123),o=n(140),i=o(function(e,t,n){r(e,t,n)});e.e=i},function(e,t,n){t.a={init:function(e,t){for(var n=e.length;n--;)e[n]=t},shuffle:function(e){var t,n,r=e.length-1;for(r;r>=0;r--)t=Math.floor(Math.random()*r),n=e[r],e[r]=e[t],e[t]=n;return e},toPointList:function(e){var t,n,r=[],o=[];for(t=0;t=t&&o.push(e[r]);return o},maxIndex:function(e){var t,n=0;for(t=0;te[n]&&(n=t);return n},max:function r(e){var t,r=0;for(t=0;tr&&(r=e[t]);return r},sum:function o(e){for(var t=e.length,o=0;t--;)o+=e[t];return o}}},function(e,t,n){function r(e){var t=-1,n=e?e.length:0;for(this.clear();++t-1&&e%1==0&&t>e}var o=9007199254740991,i=/^(?:0|[1-9]\d*)$/;e.e=r},function(e,t,n){function r(e){var t=typeof e;return"number"==t||"boolean"==t||"string"==t&&"__proto__"!=e||null==e}e.e=r},function(e,t,n){var r=n(16),o=r(Object,"create");e.e=o},function(e,t,n){function r(e,t){return e===t||e!==e&&t!==t}e.e=r},function(e,t,n){function r(e){return null!=e&&a(o(e))&&!i(e)}var o=n(144),i=n(11),a=n(23);e.e=r},function(e,t,n){function r(e){return"number"==typeof e&&e>-1&&e%1==0&&o>=e}var o=9007199254740991;e.e=r},function(e,t,n){function r(e){var t=s(e);if(!t&&!c(e))return i(e);var n=a(e),r=!!n,f=n||[],d=f.length;for(var l in e)!o(e,l)||r&&("length"==l||u(l,d))||t&&"constructor"==l||f.push(l);return f}var o=n(52),i=n(119),a=n(60),c=n(22),u=n(18),s=n(31);e.e=r},function(e,t,n){function r(e,t){var n={x:e,y:t,toVec2:function(){return w.clone([this.x,this.y])},toVec3:function(){return C.clone([this.x,this.y,1])},round:function(){return this.x=this.x>0?Math.floor(this.x+.5):Math.floor(this.x-.5),this.y=this.y>0?Math.floor(this.y+.5):Math.floor(this.y-.5),this}};return n}function o(e,t,n){n||(n=e);for(var r=e.data,o=r.length,i=n.data;o--;)i[o]=r[o]>o]++;return a}function a(e,t){function n(e,t){var n,r=0;for(n=e;t>=n;n++)r+=a[n];return r}function r(e,t){var n,r=0;for(n=e;t>=n;n++)r+=n*a[n];return r}function o(){var o,c,u,s,f,d,l,p=[0],h=(1<s;s++)o=n(0,s),c=n(s+1,h),u=o*c,0===u&&(u=1),f=r(0,s)*c,d=r(s+1,h)*o,l=f-d,p[s]=l*l/u;return _.a.maxIndex(p)}t||(t=8);var a,c,u=8-t;return c=o(),c<r;r++)s[r]={score:0,item:null};for(r=0;ru)for(i=s[c],i.score=o,i.item=e[r],u=Number.MAX_VALUE,a=0;t>a;a++)s[a].scorei;){for(r=0;c>r;r++)n[u]=Math.floor((.299*e[4*o+0]+.587*e[4*o+1]+.114*e[4*o+2]+(.299*e[4*(o+1)+0]+.587*e[4*(o+1)+1]+.114*e[4*(o+1)+2])+(.299*e[4*i+0]+.587*e[4*i+1]+.114*e[4*i+2])+(.299*e[4*(i+1)+0]+.587*e[4*(i+1)+1]+.114*e[4*(i+1)+2]))/4),u++,o+=2,i+=2;o+=s,i+=s}}function d(e,t,n){var r,o=e.length/4|0,i=n&&n.singleChannel===!0;if(i)for(r=0;o>r;r++)t[r]=e[4*r+0];else for(r=0;o>r;r++)t[r]=Math.floor(.299*e[4*r+0]+.587*e[4*r+1]+.114*e[4*r+2])}function l(e,t){for(var n=e.data,r=e.size.x,o=t.data,i=0,a=r,c=n.length,u=r/2,s=0;c>a;){for(var f=0;u>f;f++)o[s]=Math.floor((n[i]+n[i+1]+n[a]+n[a+1])/4),s++,i+=2,a+=2;i+=r,a+=r}}function p(e,t){var n=e[0],r=e[1],o=e[2],i=o*r,a=i*(1-Math.abs(n/60%2-1)),c=o-i,u=0,s=0,f=0;return t=t||[0,0,0],60>n?(u=i,s=a):120>n?(u=a,s=i):180>n?(s=i,f=a):240>n?(s=a,f=i):300>n?(u=a,f=i):360>n&&(u=i,f=a),t[0]=255*(u+c)|0,t[1]=255*(s+c)|0,t[2]=255*(f+c)|0,t}function h(e){var t,n=[],r=[];for(t=1;tt[r]?r++:n++;return o}function m(e,t){function n(e){for(var t=0,n=e[Math.floor(e.length/2)];t0&&(n=Math.abs(e[t]-l)>Math.abs(e[t-1]-l)?e[t-1]:e[t]),l/nu[f-1]/u[f]?{x:n,y:n}:null}var r,o=h(t.x),i=h(t.y),a=Math.max(t.x,t.y),c=v(o,i),u=[8,10,15,20,32,60,80],s={"x-small":5,small:4,medium:3,large:2,"x-large":1},f=s[e]||s.medium,d=u[f],l=Math.floor(a/d);return r=n(c),r||(r=n(h(a)),r||(r=n(h(l*d)))),r}function g(e){var t={value:parseFloat(e),unit:(e.indexOf("%")===e.length-1,"%")};return t}function y(e,t,n){var r={width:e,height:t},o=Object.keys(n).reduce(function(e,t){var o=n[t],i=g(o),a=E[t](i,r);return e[t]=a,e},{});return{sx:o.left,sy:o.top,sw:o.right-o.left,sh:o.bottom-o.top}}var b=n(68),_=n(13);t.f=r,t.c=c,t.d=u,t.e=s,t.i=f,t.j=d,t.g=l,t.a=p,t.b=m,t.h=y;var w={clone:n(9)},C={clone:n(97)},E={top:function(e,t){return"%"===e.unit?Math.floor(t.height*(e.value/100)):void 0},right:function(e,t){return"%"===e.unit?Math.floor(t.width-t.width*(e.value/100)):void 0},bottom:function(e,t){return"%"===e.unit?Math.floor(t.height-t.height*(e.value/100)):void 0},left:function(e,t){return"%"===e.unit?Math.floor(t.width*(e.value/100)):void 0}}},function(e,t,n){function r(e,t,n,r){t?this.data=t:n?(this.data=new n(e.x*e.y),n===Array&&r&&a.a.init(this.data,0)):(this.data=new Uint8Array(e.x*e.y),Uint8Array===Array&&r&&a.a.init(this.data,0)),this.size=e}var o=n(70),i=n(25),a=n(13),c={clone:n(9)};r.prototype.inImageWithBorder=function(e,t){return e.x>=t&&e.y>=t&&e.xn;n++)for(r=0;o>r;r++)e.data[r*i+n]=this.data[(t.y+r)*this.size.x+t.x+n]},r.prototype.copyTo=function(e){for(var t=this.data.length,n=this.data,r=e.data;t--;)r[t]=n[t]},r.prototype.get=function(e,t){return this.data[t*this.size.x+e]},r.prototype.getSafe=function(e,t){var n;if(!this.indexMapping){for(this.indexMapping={x:[],y:[]},n=0;ne;e++)r[e]=r[(n-1)*t+e]=0;for(e=1;n-1>e;e++)r[e*t]=r[e*t+(t-1)]=0},r.prototype.invert=function(){for(var e=this.data,t=e.length;t--;)e[t]=e[t]?0:1},r.prototype.convolve=function(e){var t,n,r,o,i=e.length/2|0,a=0;for(n=0;n=o;o++)for(r=-i;i>=r;r++)a+=e[o+i][r+i]*this.getSafe(t+r,n+o);this.data[n*this.size.x+t]=a}},r.prototype.moments=function(e){var t,n,r,o,i,a,u,s,f,d,l,p,h=this.data,v=this.size.y,m=this.size.x,g=[],y=[],b=Math.PI,_=b/4;if(0>=e)return y;for(i=0;e>i;i++)g[i]={m00:0,m01:0,m10:0,m11:0,m02:0,m20:0,theta:0,rad:0};for(n=0;v>n;n++)for(o=n*n,t=0;m>t;t++)r=h[n*m+t],r>0&&(a=g[r-1],a.m00+=1,a.m01+=n,a.m10+=t,a.m11+=t*n,a.m02+=o,a.m20+=t*t);for(i=0;e>i;i++)a=g[i],isNaN(a.m00)||0===a.m00||(d=a.m10/a.m00,l=a.m01/a.m00,u=a.m11/a.m00-d*l,s=a.m02/a.m00-l*l,f=a.m20/a.m00-d*d,p=(s-f)/(2*u),p=.5*Math.atan(p)+(u>=0?_:-_)+b,a.theta=(180*p/b+90)%180-90,a.theta<0&&(a.theta+=180),a.rad=p>b?p-b:p,a.vec=c.clone([Math.cos(p),Math.sin(p)]),y.push(a));return y},r.prototype.show=function(e,t){var n,r,o,i,a,c,u;for(t||(t=1),n=e.getContext("2d"),e.width=this.size.x,e.height=this.size.y,r=n.getImageData(0,0,e.width,e.height),o=r.data,i=0,u=0;ut||t>360)&&(t=360);for(var r=[0,1,1],o=[0,0,0],a=[255,255,255],c=[0,0,0],u=[],s=e.getContext("2d"),f=s.getImageData(n.x,n.y,this.size.x,this.size.y),d=f.data,l=this.data.length;l--;)r[0]=this.data[l]*t,u=r[0]<=0?a:r[0]>=360?c:i.a.bind()(r,o),d[4*l+0]=u[0],d[4*l+1]=u[1],d[4*l+2]=u[2],d[4*l+3]=255;s.putImageData(f,n.x,n.y)},t.a=r},function(e,t,n){var r=n(3),o=r.Symbol;e.e=o},function(e,t,n){function r(e,t,n,r){var o=-1,i=e.length;for(r&&i&&(n=e[++o]);++oo;o++){if(f=e.cy+u[e.dir][0],d=e.cx+u[e.dir][1],i=f*s+d,a[i]===t&&(0===c[i]||c[i]===n))return c[i]=n,e.cy=f,e.cx=d,!0;0===c[i]&&(c[i]=r),e.dir=(e.dir+1)%8}return!1}function r(e,t,n){return{dir:n,x:e,y:t,next:null,prev:null}}function o(e,t,o,i,a){var c,u,s,f=null,d={cx:t,cy:e,dir:0};if(n(d,i,o,a)){f=r(t,e,d.dir),c=f,s=d.dir,u=r(d.cx,d.cy,0),u.prev=c,c.next=u,u.next=null,c=u;do d.dir=(d.dir+6)%8,n(d,i,o,a),s!==d.dir?(c.dir=d.dir,u=r(d.cx,d.cy,0),u.prev=c,c.next=u,u.next=null,c=u):(c.dir=s,c.x=d.cx,c.y=d.cy),s=d.dir;while(d.cx!==t||d.cy!==e);f.prev=c.prev,c.prev.next=f}return f}var i,a=e.data,c=t.data,u=this.searchDirections,s=e.size.x;return{trace:function(e,t,r,o){return n(e,t,r,o)},contourTracing:function(e,t,n,r,i){return o(e,t,n,r,i)}}}};t.a=r},function(e,t,n){function r(){o.a.call(this)}var o=n(8),i=n(13),a={ALPHABETH_STRING:{value:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,45,46,32,42,36,47,43,37]},CHARACTER_ENCODINGS:{value:[52,289,97,352,49,304,112,37,292,100,265,73,328,25,280,88,13,268,76,28,259,67,322,19,274,82,7,262,70,22,385,193,448,145,400,208,133,388,196,148,168,162,138,42]},ASTERISK:{value:148},FORMAT:{value:"code_39",writeable:!1}};r.prototype=Object.create(o.a.prototype,a),r.prototype.constructor=r,r.prototype._toCounters=function(e,t){var n,r=this,o=t.length,a=r._row.length,c=!r._row[e],u=0;for(i.a.init(t,0),n=e;a>n;n++)if(r._row[n]^c)t[u]++;else{if(u++,u===o)break;t[u]=1,c=!c}return t},r.prototype._decode=function(){var e,t,n,r,o=this,a=[0,0,0,0,0,0,0,0,0],c=[],u=o._findStart();if(!u)return null;r=o._nextSet(o._row,u.end);do{if(a=o._toCounters(r,a),n=o._toPattern(a),0>n)return null;if(e=o._patternToChar(n),0>e)return null;c.push(e),t=r,r+=i.a.sum(a),r=o._nextSet(o._row,r)}while("*"!==e);return c.pop(),c.length&&o._verifyTrailingWhitespace(t,r,a)?{code:c.join(""),start:u.start,end:r,startInfo:u,decodedCodes:c}:null},r.prototype._verifyTrailingWhitespace=function(e,t,n){var r,o=i.a.sum(n);return r=t-e-o,3*r>=o},r.prototype._patternToChar=function(e){var t,n=this;for(t=0;tt&&(r=e[n]);return r},r.prototype._toPattern=function(e){for(var t,n,r=e.length,o=0,i=r,a=0,c=this;i>3;){for(o=c._findNextWidth(e,o),i=0,t=0,n=0;r>n;n++)e[n]>o&&(t|=1<n&&i>0;n++)if(e[n]>o&&(i--,2*e[n]>=a))return-1;return t}}return-1},r.prototype._findStart=function(){var e,t,n,r=this,o=r._nextSet(r._row),i=o,a=[0,0,0,0,0,0,0,0,0],c=0,u=!1;for(e=o;et;t++)a[t]=a[t+2];a[7]=0,a[8]=0,c--}else c++;a[c]=1,u=!u}return null},t.a=r},function(e,t,n){function r(e,t){return e[0]*t[0]+e[1]*t[1]}e.e=r},function(e,t,n){var r=n(3),o=r.Uint8Array;e.e=o},function(e,t,n){function r(e,t){for(var n=-1,r=e.length;++nn)return!1;var r=e.length-1;return n==r?e.pop():a.call(e,n,1),!0}var o=n(15),i=Array.prototype,a=i.splice;e.e=r},function(e,t,n){function r(e,t){var n=o(e,t);return 0>n?void 0:e[n][1]}var o=n(15);e.e=r},function(e,t,n){function r(e,t){return o(e,t)>-1}var o=n(15);e.e=r},function(e,t,n){function r(e,t,n){var r=o(e,t);0>r?e.push([t,n]):e[r][1]=n}var o=n(15);e.e=r},function(e,t,n){function r(e){return o(e)?e:i(e)}var o=n(0),i=n(168);e.e=r},function(e,t,n){var r=n(141),o=r();e.e=o},function(e,t,n){function r(e,t){t=i(t,e)?[t+""]:o(t);for(var n=0,r=t.length;null!=e&&r>n;)e=e[t[n++]];return n&&n==r?e:void 0}var o=n(49),i=n(30);e.e=r},function(e,t,n){function r(e,t){return i.call(e,t)||"object"==typeof e&&t in e&&null===a(e)}var o=Object.prototype,i=o.hasOwnProperty,a=Object.getPrototypeOf;e.e=r},function(e,t,n){function r(e,t,n,c,u){return e===t?!0:null==e||null==t||!i(e)&&!a(t)?e!==e&&t!==t:o(e,t,r,n,c,u)}var o=n(116),i=n(2),a=n(4);e.e=r},function(e,t,n){function r(e){return function(t){return null==t?void 0:t[e]}}e.e=r},function(e,t,n){function r(e){var t=new e.constructor(e.byteLength);return new o(t).set(new o(e)),t}var o=n(41);e.e=r},function(e,t,n){function r(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++nl))return!1;var h=u.get(e);if(h)return h==t;var v=!0;for(u.set(e,t);++s0?1:0},{inputStream:f.a.bind()(l.a.bind()(e.inputStream,["size","src"]),u.a)},{inputStream:n});var o=b.a.bind()();return{addEventListener:function(e,t){return o.subscribe(e,t),this},removeEventListener:function(e,t){return o.unsubscribe(e,t),this},start:function(){return o.init(e,function(){o.start()}),this},stop:function(){return o.stop(),this},toPromise:function(){return new Promise(function(t,n){o.decodeSingle(e,function(e){return e&&e.codeResult&&e.codeResult.code?t(e):n(e)})})}}}function o(e,t){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],r={type:"LiveStream",constraints:{width:640,height:480,facingMode:"environment"}};t instanceof Element||"string"==typeof t||"object"!==("undefined"==typeof t?"undefined":S(t))||"undefined"==typeof t.constraints&&"undefined"==typeof t.area||(n=t),e=h.a.bind()({},e,{inputStream:r},{inputStream:n}),console.log(e);var o=b.a.bind()();return{addEventListener:function(e,t){return o.subscribe(e,t),this},removeEventListener:function(e,t){return o.unsubscribe(e,t),this},start:function(){return o.init(e,function(e){if(e)throw console.log(e),e;o.start()}),this},stop:function(){return o.stop(),this}}}function i(){var e,t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=arguments[1],r=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],o=h.a.bind()({},t,(e={},e[n]=r,e));return a(o)}function a(){var e=arguments.length<=0||void 0===arguments[0]?E.a:arguments[0];return{fromImage:function(t,n){return r(e,t,n)},fromVideo:function(t,n){return o(e,t,n)},decoder:function(t){return i(e,"decoder",t)},locator:function(t){return i(e,"locator",t)},config:function(t){return a(h.a.bind()({},e,t))},registerResultCollector:function(e){T.registerResultCollector(e)},getCanvas:function(){return T.canvas},ImageWrapper:_.a,ImageDebug:w.a,ResultCollector:C.a,_worker:{createScanner:b.a}}}var c=n(173),u=c&&c.__esModule?function(){return c["default"]}:function(){return c};Object.defineProperty(u,"a",{get:u});var s=n(178),f=s&&s.__esModule?function(){return s["default"]}:function(){return s};Object.defineProperty(f,"a",{get:f});var d=n(64),l=d&&d.__esModule?function(){return d["default"]; +}:function(){return d};Object.defineProperty(l,"a",{get:l});var p=n(12),h=p&&p.__esModule?function(){return p["default"]}:function(){return p};Object.defineProperty(h,"a",{get:h});var v=n(71),m=v&&v.__esModule?function(){return v["default"]}:function(){return v};Object.defineProperty(m,"a",{get:m});var g=n(186),y=g&&g.__esModule?function(){return g["default"]}:function(){return g};Object.defineProperty(y,"a",{get:y});var b=n(91),_=n(26),w=n(7),C=n(36),E=n(37),S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},T=b.a.bind()();t["default"]=a()},function(e,t,n){var r={clone:n(9),dot:n(40)};t.a={create:function(e,t){function n(){o(e),i()}function o(e){u[e.id]=e,a.push(e)}function i(){var e,t=0;for(e=0;et},getPoints:function(){return a},getCenter:function(){return c}}},createPoint:function(e,t,n){return{rad:e[n],point:e,id:t}}}},function(e,t,n){function r(){function e(e){return o[e]||(o[e]={subscribers:[]}),o[e]}function t(){o={}}function n(e,t){e.async?setTimeout(function(){e.callback(t)},4):e.callback(t)}function r(t,n,r){var o;if("function"==typeof n)o={callback:n,async:r};else if(o=n,!o.callback)throw"Callback was not specified on options";e(t).subscribers.push(o)}var o={};return{subscribe:function(e,t,n){return r(e,t,n)},publish:function(t,r){var o=e(t),i=o.subscribers;i.filter(function(e){return!!e.once}).forEach(function(e){n(e,r)}),o.subscribers=i.filter(function(e){return!e.once}),o.subscribers.forEach(function(e){n(e,r)})},once:function(e,t,n){r(e,{callback:t,async:n,once:!0})},unsubscribe:function(n,r){var o;n?(o=e(n),o&&r?o.subscribers=o.subscribers.filter(function(e){return e.callback!==r}):o.subscribers=[]):t()}}}t.a=r},function(e,t,n){function r(e,t,n){n||(n={data:null,size:t}),this.data=n.data,this.originalSize=n.size,this.I=n,this.from=e,this.size=t}r.prototype.show=function(e,t){var n,r,o,i,a,c,u;for(t||(t=1),n=e.getContext("2d"),e.width=this.size.x,e.height=this.size.y,r=n.getImageData(0,0,e.width,e.height),o=r.data,i=0,a=0;a>>16&65535,r=65535&e,o=t>>>16&65535,i=65535&t;return r*i+(n*i+r*o<<16>>>0)|0}},function(e,t,n){e.e={inputStream:{name:"Live",type:"LiveStream",constraints:{width:640,height:480,facingMode:"environment"},area:{top:"0%",right:"0%",left:"0%",bottom:"0%"},singleChannel:!1},locate:!0,numOfWorkers:4,decoder:{readers:["code_128_reader"]},locator:{halfSample:!0,patchSize:"medium"}}},function(e,t,n){var r=n(74),o=(n(7),n(83)),i=n(5),a=n(39),c=n(84),u=n(82),s=n(90),f=n(87),d=n(85),l=n(86),p=n(89),h=n(88),v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},m={code_128_reader:o.a,ean_reader:i.a,ean_5_reader:l.a,ean_2_reader:d.a,ean_8_reader:f.a,code_39_reader:a.a,code_39_vin_reader:c.a,codabar_reader:u.a,upc_reader:s.a,upc_e_reader:p.a,i2of5_reader:h.a};t.a={create:function(e,t){function n(){}function o(){e.readers.forEach(function(e){var t,n={},r=[];"object"===("undefined"==typeof e?"undefined":v(e))?(t=e.format,n=e.config):"string"==typeof e&&(t=e),n.supplements&&(r=n.supplements.map(function(e){return new m[e]})),p.push(new m[t](n,r))})}function i(){}function a(e,n,r){function o(t){var r={y:t*Math.sin(n),x:t*Math.cos(n)};e[0].y-=r.y,e[0].x-=r.x,e[1].y+=r.y,e[1].x+=r.x}for(o(r);r>1&&(!t.inImageWithBorder(e[0],0)||!t.inImageWithBorder(e[1],0));)r-=Math.ceil(r/2),o(-r);return e}function c(e){return[{x:(e[1][0]-e[0][0])/2+e[0][0],y:(e[1][1]-e[0][1])/2+e[0][1]},{x:(e[3][0]-e[2][0])/2+e[2][0],y:(e[3][1]-e[2][1])/2+e[2][1]}]}function u(e){var n,o=null,i=r.a.getBarcodeLine(t,e[0],e[1]);for(r.a.toBinaryLine(i),n=0;nr&&null===s;r++)o=a/c*r*(r%2===0?-1:1),i={y:o*f,x:o*d},t[0].y+=i.x,t[0].x-=i.y,t[1].y+=i.x,t[1].x-=i.y,s=u(t);return s}function f(e){return Math.sqrt(Math.pow(Math.abs(e[1].y-e[0].y),2)+Math.pow(Math.abs(e[1].x-e[0].x),2))}function d(e){var t,n,r,o;l.ctx.overlay;return t=c(e),o=f(t),n=Math.atan2(t[1].y-t[0].y,t[1].x-t[0].x),t=a(t,n,Math.floor(.1*o)),null===t?null:(r=u(t),null===r&&(r=s(e,t,n)),null===r?null:{codeResult:r.codeResult,line:t,angle:n,pattern:r.barcodeLine.line,threshold:r.barcodeLine.threshold})}var l={ctx:{frequency:null,pattern:null,overlay:null},dom:{frequency:null,pattern:null,overlay:null}},p=[];return n(),o(),i(),{decodeFromBoundingBox:function(e){return d(e)},decodeFromBoundingBoxes:function(t){var n,r,o=[],i=e.multiple;for(n=0;nd?d:w,C=d>C?d:C,g.push(d)}var o,i,a,c,u,s,f,d,l=0|t.x,p=0|t.y,h=0|n.x,v=0|n.y,m=Math.abs(v-p)>Math.abs(h-l),g=[],y=e.data,b=e.size.x,_=0,w=255,C=0;for(m&&(s=l,l=p,p=s,s=h,h=v,v=s),l>h&&(s=l,l=h,h=s,s=p,p=v,v=s),o=h-l,i=Math.abs(v-p),a=o/2|0,u=p,c=v>p?1:-1,f=l;h>f;f++)m?r(u,f):r(f,u),a-=i,0>a&&(u+=c,a+=o);return{line:g,min:w,max:C}},r.toBinaryLine=function(e){var t,n,r,i,a,c,u=e.min,s=e.max,f=e.line,d=u+(s-u)/2,l=[],p=(s-u)/12,h=-p;for(r=f[0]>d?o.DIR.UP:o.DIR.DOWN,l.push({pos:0,val:f[0]}),a=0;at+n&&f[a+1]<1.5*d?o.DIR.DOWN:t+n>p&&f[a+1]>.5*d?o.DIR.UP:r,r!==i&&(l.push({pos:a,val:f[a]}),r=i);for(l.push({pos:f.length,val:f[f.length-1]}),c=l[0].pos;cd?0:1;for(a=1;al[a].val?l[a].val+(l[a+1].val-l[a].val)/3*2|0:l[a+1].val+(l[a].val-l[a+1].val)/3|0,c=l[a].pos;cp?0:1;return{line:f,threshold:p}},r.debug={printFrequency:function(e,t){var n,r=t.getContext("2d");for(t.width=e.length,t.height=256,r.beginPath(),r.strokeStyle="blue",n=0;n0?e.videoWidth>0&&e.videoHeight>0?t():window.setTimeout(r,500):n("Unable to play video stream. Is webcam working?"),o--}var o=10;r()})}function o(e,t){return navigator.mediaDevices.getUserMedia(t).then(function(t){return new Promise(function(n){l=t,e.setAttribute("autoplay","true"),e.srcObject=t,e.addEventListener("loadedmetadata",function(){e.play(),n()})})}).then(r.bind(null,e))}function i(e){var t=s.a.bind()(e,["width","height","facingMode","aspectRatio","deviceId"]);return"undefined"!=typeof e.minAspectRatio&&e.minAspectRatio>0&&(t.aspectRatio=e.minAspectRatio,console.log("WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead")),"undefined"!=typeof e.facing&&(t.facingMode=e.facing,console.log("WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'")),t}function a(e,t){return"undefined"==typeof t.video.deviceId&&e?"undefined"!=typeof MediaStreamTrack&&"undefined"!=typeof MediaStreamTrack.getSources?new Promise(function(n){MediaStreamTrack.getSources(function(r){var o=r.filter(function(t){return"video"===t.kind&&t.facing===e})[0];return n(o?d.a.bind()({},t,{video:{deviceId:o.id}}):t)})}):Promise.resolve(d.a.bind()({},t,{video:{facingMode:e}})):Promise.resolve(t)}function c(e){var t={audio:!1,video:i(e)};return a(t.video.facingMode,t)}var u=n(64),s=u&&u.__esModule?function(){return u["default"]}:function(){return u};Object.defineProperty(s,"a",{get:s});var f=n(12),d=f&&f.__esModule?function(){return f["default"]}:function(){return f};Object.defineProperty(d,"a",{get:d});var l;t.a={request:function(e,t){return c(t).then(o.bind(null,e))},release:function(){var e=l&&l.getVideoTracks();e&&e.length&&e[0].stop(),l=null}}},function(e,t,n){function r(e,t){e.width!==t.x&&(e.width=t.x),e.height!==t.y&&(e.height=t.y)}var o=n(25),i={};i.create=function(e,t){var n,i={},a=e.getConfig(),c=(o.f.bind()(e.getRealWidth(),e.getRealHeight()),e.getCanvasSize()),u=o.f.bind()(e.getWidth(),e.getHeight()),s=e.getTopRight(),f=s.x,d=s.y,l=null,p=null;return n=t?t:document.createElement("canvas"),n.width=c.x,n.height=c.y,l=n.getContext("2d"),p=new Uint8Array(u.x*u.y),i.attachData=function(e){p=e},i.getData=function(){return p},i.grab=function(){var t,i=a.halfSample,s=e.getFrame();return s?(r(n,c),l.drawImage(s,0,0,c.x,c.y),t=l.getImageData(f,d,u.x,u.y).data,i?o.i.bind()(t,u,p):o.j.bind()(t,p,a),!0):!1},i.getSize=function(){return u},i},t.a=i},function(e,t,n){function r(e,t){e.onload=function(){t.loaded(this)}}var o={};o.load=function(e,t,n,o,i){var a,c,u,s=new Array(o),f=new Array(s.length);if(i===!1)s[0]=e;else for(a=0;a1?i.size:Math.floor(t/o*i.size):t,r=i.size?t/o>1?Math.floor(o/t*i.size):i.size:o,s.x=n,s.y=r}var n,r,o={},i=null,a=["canrecord","ended"],c={},u={x:0,y:0},s={x:0,y:0};return o.getRealWidth=function(){return e.videoWidth},o.getRealHeight=function(){return e.videoHeight},o.getWidth=function(){return n},o.getHeight=function(){return r},o.setWidth=function(e){n=e},o.setHeight=function(e){r=e},o.setInputStream=function(t){i=t,e.src="undefined"!=typeof t.src?t.src:""},o.ended=function(){return e.ended},o.getConfig=function(){return i},o.setAttribute=function(t,n){e.setAttribute(t,n)},o.pause=function(){e.pause()},o.play=function(){e.play()},o.setCurrentTime=function(t){"LiveStream"!==i.type&&(e.currentTime=t)},o.addEventListener=function(t,n,r){-1!==a.indexOf(t)?(c[t]||(c[t]=[]),c[t].push(n)):e.addEventListener(t,n,r)},o.clearEventHandlers=function(){a.forEach(function(t){var n=c[t];n&&n.length>0&&n.forEach(function(n){e.removeEventListener(t,n)})})},o.trigger=function(e,n){var r,i=c[e];if("canrecord"===e&&t(),i&&i.length>0)for(r=0;r1?a.size:Math.floor(c/u*a.size):c,o=a.size?c/u>1?Math.floor(u/c*a.size):a.size:u,_.x=n,_.y=o,d=!0,s=0,setTimeout(function(){t("canrecord",[])},0)},h,p,a.sequence)}function t(e,t){var n,r=y[e];if(r&&r.length>0)for(n=0;ns?s++:setTimeout(function(){m=!0,t("ended",[])},0)),e):null},i},t.a=o},function(e,t,n){(function(e){function r(t,n){function r(){var t;C=M.halfSample?new i.a({x:k.size.x/2|0,y:k.size.y/2|0}):k,D=a.b.bind()(M.patchSize,C.size),I.x=C.size.x/D.x|0,I.y=C.size.y/D.y|0,P=new i.a(C.size,void 0,Uint8Array,!1),T=new i.a(D,void 0,Array,!0),t=new ArrayBuffer(65536),S=new i.a(D,new Uint8Array(t,0,D.x*D.y)),E=new i.a(D,new Uint8Array(t,D.x*D.y*3,D.x*D.y),void 0,!0),A=f.a.bind()("undefined"!=typeof window?window:"undefined"!=typeof self?self:e,{size:D.x},t),x=new i.a({x:C.size.x/S.size.x|0,y:C.size.y/S.size.y|0},void 0,Array,!0),R=new i.a(x.size,void 0,void 0,!0),O=new i.a(x.size,void 0,Int32Array,!0)}function o(){M.useWorker||"undefined"==typeof document||(j.dom.binary=document.createElement("canvas"),j.dom.binary.className="binaryBuffer",j.ctx.binary=j.dom.binary.getContext("2d"),j.dom.binary.width=P.size.x,j.dom.binary.height=P.size.y)}function p(e){var t,n,r,o,i,a,c,u=P.size.x,s=P.size.y,f=-P.size.x,p=-P.size.y;for(t=0,n=0;nt&&(t+=180),t=(180-t)*Math.PI/180,i=l.copy(l.create(),[Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t)]),n=0;nr;r++)d.transformMat2(o.box[r],o.box[r],i);for(n=0;nr;r++)o.box[r][0]f&&(f=o.box[r][0]),o.box[r][1]p&&(p=o.box[r][1]);for(a=[[u,s],[f,s],[f,p],[u,p]],c=M.halfSample?2:1,i=l.invert(i,i),r=0;4>r;r++)d.transformMat2(a[r],a[r],i);for(r=0;4>r;r++)d.scale(a[r],a[r],c);return a}function h(){a.c.bind()(C,P),P.zeroBorder()}function v(){var e,t,n,r,o,i,a,s=[];for(e=0;et;t++)r.push(0);for(n=O.data.length;n--;)O.data[n]>0&&r[O.data[n]-1]++;return r=r.map(function(e,t){return{val:e,label:t+1}}),r.sort(function(e,t){return t.val-e.val}),o=r.filter(function(e){return e.val>=5})}function g(e,t){var n,r,o,i,a=[],c=[];for(n=0;n=2){for(o=0;of&&u.push(e[o]);if(u.length>=2){for(a=y(u),i=0,o=0;o1&&a.length>=u.length/4*3&&a.length>e.length/4&&(i/=a.length,c={index:t[1]*I.x+t[0],pos:{x:n,y:r},box:[d.clone([n,r]),d.clone([n+S.size.x,r]),d.clone([n+S.size.x,r+S.size.y]),d.clone([n,r+S.size.y])],moments:a,rad:i,vec:d.clone([Math.cos(i),Math.sin(i)])},s.push(c))}}return s}function w(e){function t(){var e;for(e=0;ea&&n(c)):O.data[c]=Number.MAX_VALUE}var r,o,i=0,a=.95,u=0;for(c.a.init(R.data,0),c.a.init(O.data,0),c.a.init(x.data,null),r=0;rr?null:(t=m(r),0===t.length?null:n=g(t,r))}}}function o(e,t){var n,r,o,i=e.getWidth(),c=e.getHeight(),u=t.halfSample?.5:1;if(e.getConfig().area&&(o=a.h.bind()(i,c,e.getConfig().area),e.setTopRight({x:o.sx,y:o.sy}),e.setCanvasSize({x:i,y:c}),i=o.sw,c=o.sh),r={x:Math.floor(i*u),y:Math.floor(c*u)},n=a.b.bind()(t.patchSize,r),e.setWidth(Math.floor(Math.floor(r.x/n.x)*(1/u)*n.x)),e.setHeight(Math.floor(Math.floor(r.y/n.y)*(1/u)*n.y)),e.getWidth()%n.x===0&&e.getHeight()%n.y===0)return!0;throw new Error("Image dimensions do not comply with the current settings: Width ("+i+" )and height ("+c+") must a multiple of "+n.x)}var i=n(26),a=n(25),c=n(13),u=(n(7),n(80)),s=n(38),f=n(81);t.b=r,t.a=o;var d={clone:n(9),dot:n(40),scale:n(95),transformMat2:n(96)},l={copy:n(92),create:n(93),invert:n(94)}}).call(t,function(){return this}())},function(e,t,n){var r=n(38),o={createContour2D:function(){return{dir:null,index:null,firstVertex:null,insideContours:null,nextpeer:null,prevpeer:null}},CONTOUR_DIR:{CW_DIR:0,CCW_DIR:1,UNKNOWN_DIR:2},DIR:{OUTSIDE_EDGE:-32767,INSIDE_EDGE:-32766},create:function(e,t){var n=e.data,i=t.data,a=e.size.x,c=e.size.y,u=r.a.create(e,t);return{rasterize:function(e){var t,r,s,f,d,l,p,h,v,m,g,y,b=[],_=0;for(y=0;400>y;y++)b[y]=0;for(b[0]=n[0],v=null,l=1;c-1>l;l++)for(f=0,r=b[0],d=1;a-1>d;d++)if(g=l*a+d,0===i[g])if(t=n[g],t!==r){if(0===f)s=_+1,b[s]=t,r=t,p=u.contourTracing(l,d,s,t,o.DIR.OUTSIDE_EDGE),null!==p&&(_++,f=s,h=o.createContour2D(),h.dir=o.CONTOUR_DIR.CW_DIR,h.index=f,h.firstVertex=p,h.nextpeer=v,h.insideContours=null,null!==v&&(v.prevpeer=h),v=h);else if(p=u.contourTracing(l,d,o.DIR.INSIDE_EDGE,t,f),null!==p){for(h=o.createContour2D(),h.firstVertex=p,h.insideContours=null,0===e?h.dir=o.CONTOUR_DIR.CCW_DIR:h.dir=o.CONTOUR_DIR.CW_DIR,h.index=e,m=v;null!==m&&m.index!==f;)m=m.nextpeer;null!==m&&(h.nextpeer=m.insideContours,null!==m.insideContours&&(m.insideContours.prevpeer=h),m.insideContours=h)}}else i[g]=f;else i[g]===o.DIR.OUTSIDE_EDGE||i[g]===o.DIR.INSIDE_EDGE?(f=0,r=i[g]===o.DIR.INSIDE_EDGE?n[g]:b[0]):(f=i[g],r=b[f]);for(m=v;null!==m;)m.index=e,m=m.nextpeer;return{cc:v,count:_}},debug:{drawContour:function(e,t){var n,r,i,a=e.getContext("2d"),c=t;for(a.strokeStyle="red",a.fillStyle="red",a.lineWidth=1,n=null!==c?c.insideContours:null;null!==c;){switch(null!==n?(r=n,n=n.nextpeer):(r=c,c=c.nextpeer,n=null!==c?c.insideContours:null),r.dir){case o.CONTOUR_DIR.CW_DIR:a.strokeStyle="red";break;case o.CONTOUR_DIR.CCW_DIR:a.strokeStyle="blue";break;case o.CONTOUR_DIR.UNKNOWN_DIR:a.strokeStyle="green"}i=r.firstVertex,a.beginPath(),a.moveTo(i.x,i.y);do i=i.next,a.lineTo(i.x,i.y);while(i!==r.firstVertex);a.stroke()}}}}}};t.a=o},function(module, exports, __webpack_require__) {function Skeletonizer(stdlib, foreign, buffer) {"use asm";var images=new stdlib.Uint8Array(buffer),size=foreign.size|0,imul=stdlib.Math.imul;function erode(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for (v=1; (v|0)<(size - 1|0); v=v+1|0) {offset=offset+size|0;for (u=1; (u|0)<(size - 1|0); u=u+1|0) {yStart1=offset - size|0;yStart2=offset+size|0;xStart1=u - 1|0;xStart2=u+1|0;sum=(images[inImagePtr+yStart1+xStart1|0]|0)+(images[inImagePtr+yStart1+xStart2|0]|0)+(images[inImagePtr+offset+u|0]|0)+(images[inImagePtr+yStart2+xStart1|0]|0)+(images[inImagePtr+yStart2+xStart2|0]|0)|0;if ((sum|0) == (5|0)) {images[outImagePtr+offset+u|0]=1;} else {images[outImagePtr+offset+u|0]=0;}}}return;}function subtract(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[outImagePtr+length|0]=(images[aImagePtr+length|0]|0) - (images[bImagePtr+length|0]|0)|0;}}function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[outImagePtr+length|0]=images[aImagePtr+length|0]|0|(images[bImagePtr+length|0]|0)|0;}}function countNonZero(imagePtr) {imagePtr=imagePtr|0;var sum=0,length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;sum=(sum|0)+(images[imagePtr+length|0]|0)|0;}return sum|0;}function init(imagePtr, value) {imagePtr=imagePtr|0;value=value|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[imagePtr+length|0]=value;}}function dilate(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for (v=1; (v|0)<(size - 1|0); v=v+1|0) {offset=offset+size|0;for (u=1; (u|0)<(size - 1|0); u=u+1|0) {yStart1=offset - size|0;yStart2=offset+size|0;xStart1=u - 1|0;xStart2=u+1|0;sum=(images[inImagePtr+yStart1+xStart1|0]|0)+(images[inImagePtr+yStart1+xStart2|0]|0)+(images[inImagePtr+offset+u|0]|0)+(images[inImagePtr+yStart2+xStart1|0]|0)+(images[inImagePtr+yStart2+xStart2|0]|0)|0;if ((sum|0)>(0|0)) {images[outImagePtr+offset+u|0]=1;} else {images[outImagePtr+offset+u|0]=0;}}}return;}function memcpy(srcImagePtr, dstImagePtr) {srcImagePtr=srcImagePtr|0;dstImagePtr=dstImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[dstImagePtr+length|0]=images[srcImagePtr+length|0]|0;}}function zeroBorder(imagePtr) {imagePtr=imagePtr|0;var x=0,y=0;for (x=0; (x|0)<(size - 1|0); x=x+1|0) {images[imagePtr+x|0]=0;images[imagePtr+y|0]=0;y=y+size - 1|0;images[imagePtr+y|0]=0;y=y+1|0;}for (x=0; (x|0)<(size|0); x=x+1|0) {images[imagePtr+y|0]=0;y=y+1|0;}}function skeletonize() {var subImagePtr=0,erodedImagePtr=0,tempImagePtr=0,skelImagePtr=0,sum=0,done=0;erodedImagePtr=imul(size, size)|0;tempImagePtr=erodedImagePtr+erodedImagePtr|0;skelImagePtr=tempImagePtr+erodedImagePtr|0;init(skelImagePtr, 0);zeroBorder(subImagePtr);do {erode(subImagePtr, erodedImagePtr);dilate(erodedImagePtr, tempImagePtr);subtract(subImagePtr, tempImagePtr, tempImagePtr);bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);memcpy(erodedImagePtr, subImagePtr);sum=countNonZero(subImagePtr)|0;done=(sum|0) == 0|0;} while (!done);}return {skeletonize: skeletonize};} exports["a"]=Skeletonizer; },function(e,t,n){function r(){o.a.call(this),this._counters=[]}var o=n(8),i={ALPHABETH_STRING:{value:"0123456789-$:/.+ABCD"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,45,36,58,47,46,43,65,66,67,68]},CHARACTER_ENCODINGS:{value:[3,6,9,96,18,66,33,36,48,72,12,24,69,81,84,21,26,41,11,14]},START_END:{value:[26,41,11,14]},MIN_ENCODED_CHARS:{value:4},MAX_ACCEPTABLE:{value:2},PADDING:{value:1.5},FORMAT:{value:"codabar",writeable:!1}};r.prototype=Object.create(o.a.prototype,i),r.prototype.constructor=r,r.prototype._decode=function(){var e,t,n,r,o,i=this,a=[];if(this._counters=i._fillCounters(),e=i._findStart(),!e)return null;r=e.startCounter;do{if(n=i._toPattern(r),0>n)return null;if(t=i._patternToChar(n),0>t)return null;if(a.push(t),r+=8,a.length>1&&i._isStartEnd(n))break}while(ri._counters.length?i._counters.length:r,o=e.start+i._sumCounters(e.startCounter,r-8),{code:a.join(""),start:e.start,end:o,startInfo:e,decodedCodes:a}):null},r.prototype._verifyWhitespace=function(e,t){return(0>=e-1||this._counters[e-1]>=this._calculatePatternLength(e)/2)&&(t+8>=this._counters.length||this._counters[t+7]>=this._calculatePatternLength(t)/2)},r.prototype._calculatePatternLength=function(e){var t,n=0;for(t=e;e+7>t;t++)n+=this._counters[t];return n},r.prototype._thresholdResultPattern=function(e,t){var n,r,o,i,a,c=this,u={space:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}},bar:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}}},s=t;for(o=0;o=0;i--)n=2===(1&i)?u.bar:u.space,r=1===(1&a)?n.wide:n.narrow,r.size+=c._counters[s+i],r.counts++,a>>=1;s+=8}return["space","bar"].forEach(function(e){var t=u[e];t.wide.min=Math.floor((t.narrow.size/t.narrow.counts+t.wide.size/t.wide.counts)/2),t.narrow.max=Math.ceil(t.wide.min),t.wide.max=Math.ceil((t.wide.size*c.MAX_ACCEPTABLE+c.PADDING)/t.wide.counts)}),u},r.prototype._charToPattern=function(e){var t,n=this,r=e.charCodeAt(0);for(t=0;t=0;r--){if(o=0===(1&r)?s.bar:s.space,i=1===(1&c)?o.wide:o.narrow,a=u._counters[f+r],ai.max)return!1;c>>=1}f+=8}return!0},r.prototype._patternToChar=function(e){var t,n=this;for(t=0;tn;n+=2)r=this._counters[n],r>i&&(i=r),o>r&&(o=r);return(o+i)/2|0},r.prototype._toPattern=function(e){var t,n,r,o,i=7,a=e+i,c=1<this._counters.length)return-1;for(t=this._computeAlternatingThreshold(e,a),n=this._computeAlternatingThreshold(e+1,a),r=0;i>r;r++)o=0===(1&r)?t:n,this._counters[e+r]>o&&(u|=c),c>>=1;return u},r.prototype._isStartEnd=function(e){var t;for(t=0;tn;n++)r+=this._counters[n];return r},r.prototype._findStart=function(){var e,t,n,r=this,o=r._nextUnset(r._row);for(e=1;ec.AVG_CODE_ERROR?null:(c.CODE_PATTERN[d.code]&&(d.correction.bar=o(c.CODE_PATTERN[d.code],a,this.MODULE_INDICES.bar),d.correction.space=o(c.CODE_PATTERN[d.code],a,this.MODULE_INDICES.space)),d)}f++,a[f]=1,s=!s}return null},r.prototype._correct=function(e,t){this._correctBars(e,t.bar,this.MODULE_INDICES.bar),this._correctBars(e,t.space,this.MODULE_INDICES.space)},r.prototype._findStart=function(){var e,t,n,r,i,a=[0,0,0,0,0,0],c=this,u=c._nextSet(c._row),s=!1,f=0,d={error:Number.MAX_VALUE,code:-1,start:0,end:0,correction:{bar:1,space:1}};for(e=u;er;r++)a[r]=a[r+2];a[4]=0,a[5]=0,f--}else f++;a[f]=1,s=!s}return null},r.prototype._decode=function(){var e,t,n=this,r=n._findStart(),o=null,i=!1,a=[],c=0,u=0,s=[],f=[],d=!1,l=!0;if(null===r)return null;switch(o={code:r.code,start:r.start,end:r.end,correction:{bar:r.correction.bar,space:r.correction.space}},f.push(o),u=o.code,o.code){case n.START_CODE_A:e=n.CODE_A;break;case n.START_CODE_B:e=n.CODE_B;break;case n.START_CODE_C:e=n.CODE_C;break;default:return null}for(;!i;){if(t=d,d=!1,o=n._decodeCode(o.end,o.correction),null!==o)switch(o.code!==n.STOP_CODE&&(l=!0),o.code!==n.STOP_CODE&&(s.push(o.code),c++,u+=c*o.code),f.push(o),e){case n.CODE_A:if(o.code<64)a.push(String.fromCharCode(32+o.code));else if(o.code<96)a.push(String.fromCharCode(o.code-64));else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_SHIFT:d=!0,e=n.CODE_B;break;case n.CODE_B:e=n.CODE_B;break;case n.CODE_C:e=n.CODE_C;break;case n.STOP_CODE:i=!0}break;case n.CODE_B:if(o.code<96)a.push(String.fromCharCode(32+o.code));else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_SHIFT:d=!0,e=n.CODE_A;break;case n.CODE_A:e=n.CODE_A;break;case n.CODE_C:e=n.CODE_C;break;case n.STOP_CODE:i=!0}break;case n.CODE_C:if(o.code<100)a.push(o.code<10?"0"+o.code:o.code);else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_A:e=n.CODE_A;break;case n.CODE_B:e=n.CODE_B;break;case n.STOP_CODE:i=!0}}else i=!0;t&&(e=e===n.CODE_A?n.CODE_B:n.CODE_A)}return null===o?null:(o.end=n._nextUnset(n._row,o.end),n._verifyTrailingWhitespace(o)?(u-=c*s[s.length-1],u%103!==s[s.length-1]?null:a.length?(l&&a.splice(a.length-1,1),{code:a.join(""),start:r.start,end:o.end,codeset:e,startInfo:r,decodedCodes:f,endInfo:o}):null):null)},i.a.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,to&&a>i;o++){if(n=this._decodeCode(i),!n)return null;u.push(n),c.push(n.code%10),n.code>=this.CODE_G_START&&(r|=1<<1-o),1!=o&&(i=this._nextSet(this._row,n.end),i=this._nextUnset(this._row,i))}return 2!=c.length||parseInt(c.join(""))%4!==r?null:{code:c.join(""),decodedCodes:u,end:n.end}},t.a=r},function(e,t,n){function r(){a.a.call(this)}function o(e){var t;for(t=0;10>t;t++)if(e===u[t])return t;return null}function i(e){var t,n=e.length,r=0;for(t=n-2;t>=0;t-=2)r+=e[t];for(r*=3,t=n-1;t>=0;t-=2)r+=e[t];return r*=3,r%10}var a=n(5),c={FORMAT:{value:"ean_5",writeable:!1}},u=[24,20,18,17,12,6,3,10,9,5];r.prototype=Object.create(a.a.prototype,c),r.prototype.constructor=r,r.prototype.decode=function(e,t){this._row=e;var n,r=0,a=0,c=t,u=this._row.length,s=[],f=[];for(a=0;5>a&&u>c;a++){if(n=this._decodeCode(c),!n)return null;f.push(n),s.push(n.code%10),n.code>=this.CODE_G_START&&(r|=1<<4-a),4!=a&&(c=this._nextSet(this._row,n.end),c=this._nextUnset(this._row,c))}return 5!=s.length?null:i(s)!==o(r)?null:{code:s.join(""),decodedCodes:f,end:n.end}},t.a=r},function(e,t,n){function r(e,t){o.a.call(this,e,t)}var o=n(5),i={FORMAT:{value:"ean_8",writeable:!1}};r.prototype=Object.create(o.a.prototype,i),r.prototype.constructor=r,r.prototype._decodePayload=function(e,t,n){var r,o=this;for(r=0;4>r;r++){if(e=o._decodeCode(e.end,o.CODE_G_START),!e)return null;t.push(e.code),n.push(e)}if(e=o._findPattern(o.MIDDLE_PATTERN,e.end,!0,!1),null===e)return null;for(n.push(e),r=0;4>r;r++){if(e=o._decodeCode(e.end,o.CODE_G_START),!e)return null;n.push(e),t.push(e.code)}return e},t.a=r},function(e,t,n){function r(e){e=a.a.bind()(o(),e),c.a.call(this,e),this.barSpaceRatio=[1,1],e.normalizeBarSpaceWidth&&(this.SINGLE_CODE_ERROR=.38,this.AVG_CODE_ERROR=.09)}function o(){var e={};return Object.keys(r.CONFIG_KEYS).forEach(function(t){e[t]=r.CONFIG_KEYS[t]["default"]}),e}var i=n(12),a=i&&i.__esModule?function(){return i["default"]}:function(){return i};Object.defineProperty(a,"a",{get:a});var c=n(8),u=1,s=3,f={START_PATTERN:{value:[u,u,u,u]},STOP_PATTERN:{value:[u,u,s]},CODE_PATTERN:{value:[[u,u,s,s,u],[s,u,u,u,s],[u,s,u,u,s],[s,s,u,u,u],[u,u,s,u,s],[s,u,s,u,u],[u,s,s,u,u],[u,u,u,s,s],[s,u,u,s,u],[u,s,u,s,u]]},SINGLE_CODE_ERROR:{value:.78,writable:!0},AVG_CODE_ERROR:{value:.38,writable:!0},MAX_CORRECTION_FACTOR:{value:5},FORMAT:{value:"i2of5"}};r.prototype=Object.create(c.a.prototype,f),r.prototype.constructor=r,r.prototype._matchPattern=function(e,t){if(this.config.normalizeBarSpaceWidth){var n,r=[0,0],o=[0,0],i=[0,0],a=this.MAX_CORRECTION_FACTOR,u=1/a;for(n=0;ni)return d.error=i,d.start=o-c,d.end=o,d;if(!r)return null;for(a=0;a=0&&n._matchRange(e,t.start,0))return t;r=t.end,t=null}},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,ta;){for(r=0;5>r;r++)u[0][r]=e[a]*this.barSpaceRatio[0],u[1][r]=e[a+1]*this.barSpaceRatio[1],a+=2;if(o=i._decodePair(u),!o)return null;for(r=0;rr;r++){if(e=o._decodeCode(e.end),!e)return null;e.code>=o.CODE_G_START&&(e.code=e.code-o.CODE_G_START,i|=1<<5-r),t.push(e.code),n.push(e)}return o._determineParity(i,t)?e:null},r.prototype._determineParity=function(e,t){var n,r;for(r=0;r=n?t.concat(e.slice(1,3)).concat([n,0,0,0,0]).concat(e.slice(3,6)):3===n?t.concat(e.slice(1,4)).concat([0,0,0,0,0]).concat(e.slice(4,6)):4===n?t.concat(e.slice(1,5)).concat([0,0,0,0,0,e[5]]):t.concat(e.slice(1,6)).concat([0,0,0,0,n]),t.push(e[e.length-1]),t},r.prototype._checksum=function(e){return o.a.prototype._checksum.call(this,this._convertToUPCA(e))},r.prototype._findEnd=function(e,t){return t=!0,o.a.prototype._findEnd.call(this,e,t)},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,t0)for(r=0;r0){if(e=B.filter(function(e){return!e.busy})[0],!e)return;I.attachData(e.imageData)}else I.attachData(N.data);I.grab()&&(e?(e.busy=!0,e.worker.postMessage({cmd:"process",imageData:e.imageData},[e.imageData.buffer])):S())}else S()}function R(){var e=null,t=1e3/(V.frequency||60);k=!1,function n(r){e=e||r,k||(r>=e&&(e+=t,T()),window.requestAnimFrame(n))}(performance.now())}function O(){W&&"LiveStream"===V.inputStream.type?R():T()}function x(e){var t,n={worker:void 0,imageData:new Uint8Array(j.getWidth()*j.getHeight()),busy:!0};t=A(),n.worker=new Worker(t),n.worker.onmessage=function(r){return"initialized"===r.data.event?(URL.revokeObjectURL(t),n.busy=!1,n.imageData=new Uint8Array(r.data.imageData),e(n)):void("processed"===r.data.event?(n.imageData=new Uint8Array(r.data.imageData),n.busy=!1,E(r.data.result,n.imageData)):"error"===r.data.event)},n.worker.postMessage({cmd:"init",size:{x:j.getWidth(),y:j.getHeight()},imageData:n.imageData,config:P(V)},[n.imageData.buffer])}function P(e){return v({},e,{inputStream:v({},e.inputStream,{target:null})})}function D(e){function t(e){self.postMessage({event:"processed",imageData:o.data,result:e},[o.data.buffer])}function n(){self.postMessage({event:"initialized",imageData:o.data},[o.data.buffer])}if(e){var r=e()["default"];if(!r)return void self.postMessage({event:"error",message:"Quagga could not be created"})}var o,i=r._worker.createScanner();self.onmessage=function(e){if("init"===e.data.cmd){var a=e.data.config;a.numOfWorkers=0,o=new r.ImageWrapper({x:e.data.size.x,y:e.data.size.y},new Uint8Array(e.data.imageData)),i.init(a,n,o),i.subscribe("processed",t)}else"process"===e.data.cmd&&(o.data=new Uint8Array(e.data.imageData),i.start())}}function A(){var t,n;return"undefined"!=typeof e&&(n=e),t=new Blob(["("+D.toString()+")("+n+");"],{type:"text/javascript"}),window.URL.createObjectURL(t)}function M(e,t){var n=e-B.length;if(0===n)return t&&t();if(0>n){var r=B.slice(n);return r.forEach(function(e){e.worker.terminate()}),B=B.slice(0,n),t&&t()}for(var o=function(n){B.push(n),B.length>=e&&t&&t()},i=0;n>i;i++)x(o)}var j,I,k,N,L,z,U,F,G={ctx:{image:null,overlay:null},dom:{image:null,overlay:null}},B=[],W=!0,V={},H=f.a.bind()();return{init:function(e,r,o){return V=a.a.bind()({},l.a,e),o?(W=!1,t(o),r()):void n(r)},start:function(){O()},stop:function(){k=!0,M(0),"LiveStream"===V.inputStream.type&&(d.a.release(),j.clearEventHandlers())},pause:function(){k=!0},subscribe:function(e,t){H.subscribe(e,t)},unsubscribe:function(e,t){H.unsubscribe(e,t)},registerResultCollector:function(e){e&&"function"==typeof e.addResult&&(U=e)},decodeSingle:function(e,t){var n=this;this.init(e,function(){H.once("processed",function(e){n.stop(),t.call(null,e)},!0),O()})},canvas:G}}var i=r(12),a=i&&i.__esModule?function(){return i["default"]}:function(){return i};Object.defineProperty(a,"a",{get:a});var c=r(26),u=r(79),s=r(73),f=r(69),d=r(75),l=(r(7),r(36),r(37)),p=r(78),h=r(76),v=Object.assign||function(e){for(var t=1;t0&&c(d)&&(n||a(d)||i(d))?t>1?r(d,t-1,n,u):o(u,d):n||(u[u.length]=d)}return u}var o=n(107),i=n(10),a=n(0),c=n(32);e.e=r},function(e,t,n){function r(e,t){return null==e?e:o(e,t,i)}var o=n(50),i=n(35);e.e=r},function(e,t,n){function r(e,t){return e&&o(e,t,i)}var o=n(50),i=n(24);e.e=r},function(e,t,n){function r(e,t){return t in Object(e)}e.e=r},function(e,t,n){function r(e,t,n,r,m,y){var b=s(e),_=s(t),w=h,C=h;b||(w=u(e),w=w==p?v:w),_||(C=u(t),C=C==p?v:C);var E=w==v&&!f(e),S=C==v&&!f(t),T=w==C;if(T&&!E)return y||(y=new o),b||d(e)?i(e,t,n,r,m,y):a(e,t,w,n,r,m,y);if(!(m&l)){var R=E&&g.call(e,"__wrapped__"),O=S&&g.call(t,"__wrapped__");if(R||O)return y||(y=new o),n(R?e.value():e,O?t.value():t,r,m,y)}return T?(y||(y=new o),c(e,t,n,r,m,y)):!1}var o=n(14),i=n(57),a=n(142),c=n(143),u=n(58),s=n(0),f=n(17),d=n(34),l=2,p="[object Arguments]",h="[object Array]",v="[object Object]",m=Object.prototype,g=m.hasOwnProperty;e.e=r},function(e,t,n){function r(e,t,n,r){var u=n.length,s=u,f=!r;if(null==e)return!s;for(e=Object(e);u--;){var d=n[u];if(f&&d[2]?d[1]!==e[d[0]]:!(d[0]in e))return!1}for(;++ut&&(t=-t>o?0:o+t),n=n>o?o:n,0>n&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var i=Array(o);++r1?n[i-1]:void 0,c=i>2?n[2]:void 0;for(a="function"==typeof a?(i--,a):void 0,c&&o(n[0],n[1],c)&&(a=3>i?void 0:a,i=1),t=Object(t);++re?-1:1;return t*a}var n=e%1;return e===e?n?e-n:e:0}var o=n(181),i=1/0,a=1.7976931348623157e308;e.e=r},function(e,t,n){function r(e){if(i(e)){var t=o(e.valueOf)?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(c,"");var n=s.test(e);return n||f.test(e)?d(e.slice(2),n?2:8):u.test(e)?a:+e}var o=n(11),i=n(2),a=NaN,c=/^\s+|\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,f=/^0o[0-7]+$/i,d=parseInt;e.e=r},function(e,t,n){function r(e){return o(e,i(e))}var o=n(130),i=n(24);e.e=r},function(e,t,n){function r(e){return o(e,i(e))}var o=n(29),i=n(35);e.e=r},function(e,t,n){function r(e){if("string"==typeof e)return e;if(null==e)return"";if(i(e))return u?u.call(e):"";var t=e+"";return"0"==t&&1/e==-a?"-0":t}var o=n(27),i=n(176),a=1/0,c=o?o.prototype:void 0,u=c?c.toString:void 0;e.e=r},function(e,t,n){"use strict";var r={};r.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},r.localCName=r.generateIdentifier(),r.splitLines=function(e){return e.trim().split("\n").map(function(e){return e.trim()})},r.splitSections=function(e){var t=e.split("\nm=");return t.map(function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"})},r.matchPrefix=function(e,t){return r.splitLines(e).filter(function(e){return 0===e.indexOf(t)})},r.parseCandidate=function(e){var t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");for(var n={foundation:t[0],component:t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],port:parseInt(t[5],10),type:t[7]},r=8;r-1?(n.attribute=e.substr(t+1,r-t-1),n.value=e.substr(r+1)):n.attribute=e.substr(t+1),n},r.getDtlsParameters=function(e,t){var n=r.splitLines(e);n=n.concat(r.splitLines(t));var o=n.filter(function(e){return 0===e.indexOf("a=fingerprint:")})[0].substr(14),i={role:"auto",fingerprints:[{algorithm:o.split(" ")[0],value:o.split(" ")[1]}]};return i},r.writeDtlsParameters=function(e,t){var n="a=setup:"+t+"\r\n";return e.fingerprints.forEach(function(e){n+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"}),n},r.getIceParameters=function(e,t){var n=r.splitLines(e);n=n.concat(r.splitLines(t));var o={usernameFragment:n.filter(function(e){return 0===e.indexOf("a=ice-ufrag:")})[0].substr(12),password:n.filter(function(e){return 0===e.indexOf("a=ice-pwd:")})[0].substr(10)};return o},r.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},r.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=r.splitLines(e),o=n[0].split(" "),i=3;i0?"9":"0",n+=" UDP/TLS/RTP/SAVPF ",n+=t.codecs.map(function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType}).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",t.codecs.forEach(function(e){n+=r.writeRtpMap(e),n+=r.writeFmtp(e),n+=r.writeRtcpFb(e)}),n+="a=rtcp-mux\r\n"},r.parseRtpEncodingParameters=function(e){var t,n=[],o=r.parseRtpParameters(e),i=-1!==o.fecMechanisms.indexOf("RED"),a=-1!==o.fecMechanisms.indexOf("ULPFEC"),c=r.matchPrefix(e,"a=ssrc:").map(function(e){return r.parseSsrcMedia(e)}).filter(function(e){return"cname"===e.attribute}),u=c.length>0&&c[0].ssrc,s=r.matchPrefix(e,"a=ssrc-group:FID").map(function(e){var t=e.split(" ");return t.shift(),t.map(function(e){return parseInt(e,10)})});s.length>0&&s[0].length>1&&s[0][0]===u&&(t=s[0][1]),o.codecs.forEach(function(e){if("RTX"===e.name.toUpperCase()&&e.parameters.apt){var r={ssrc:u,codecPayloadType:parseInt(e.parameters.apt,10),rtx:{payloadType:e.payloadType,ssrc:t}};n.push(r),i&&(r=JSON.parse(JSON.stringify(r)),r.fec={ssrc:t,mechanism:a?"red+ulpfec":"red"},n.push(r))}}),0===n.length&&u&&n.push({ssrc:u});var f=r.matchPrefix(e,"b=");return f.length&&(0===f[0].indexOf("b=TIAS:")?f=parseInt(f[0].substr(7),10):0===f[0].indexOf("b=AS:")&&(f=parseInt(f[0].substr(5),10)),n.forEach(function(e){e.maxBitrate=f})),n},r.writeSessionBoilerplate=function(){return"v=0\r\no=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},r.writeMediaSection=function(e,t,n,o){var i=r.writeRtpDescription(e.kind,t);if(i+=r.writeIceParameters(e.iceGatherer.getLocalParameters()),i+=r.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":"active"),i+="a=mid:"+e.mid+"\r\n",i+=e.rtpSender&&e.rtpReceiver?"a=sendrecv\r\n":e.rtpSender?"a=sendonly\r\n":e.rtpReceiver?"a=recvonly\r\n":"a=inactive\r\n",e.rtpSender){var a="msid:"+o.id+" "+e.rtpSender.track.id+"\r\n";i+="a="+a,i+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+a}return i+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+"\r\n"},r.getDirection=function(e,t){for(var n=r.splitLines(e),o=0;o0&&"function"==typeof e)return o(e,t);var a=function(e){var t={},n=e.result();return n.forEach(function(e){var n={id:e.id,timestamp:e.timestamp,type:e.type};e.names().forEach(function(t){n[t]=e.stat(t)}),t[n.id]=n}),t},c=function(e,t){var n=new Map(Object.keys(e).map(function(t){return[t,e[t]]}));return t=t||e,Object.keys(t).forEach(function(e){n[e]=t[e]}),n};if(arguments.length>=2){var u=function(e){i[1](c(a(e)))};return o.apply(this,[u,arguments[0]])}return new Promise(function(t,n){1===i.length&&"object"==typeof e?o.apply(r,[function(e){t(c(a(e)))},n]):o.apply(r,[function(e){t(c(a(e),e.result()))},n])}).then(t,n)},n},window.RTCPeerConnection.prototype=webkitRTCPeerConnection.prototype,webkitRTCPeerConnection.generateCertificate&&Object.defineProperty(window.RTCPeerConnection,"generateCertificate",{get:function(){return webkitRTCPeerConnection.generateCertificate}}),o.version<51&&(["createOffer","createAnswer"].forEach(function(e){var t=webkitRTCPeerConnection.prototype[e];webkitRTCPeerConnection.prototype[e]=function(){var e=this;if(arguments.length<1||1===arguments.length&&"object"==typeof arguments[0]){var n=1===arguments.length?arguments[0]:void 0;return new Promise(function(r,o){t.apply(e,[r,o,n])})}return t.apply(this,arguments)}}),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(e){var t=webkitRTCPeerConnection.prototype[e];webkitRTCPeerConnection.prototype[e]=function(){var e=arguments,n=this,r=new Promise(function(r,o){t.apply(n,[e[0],r,o])});return e.length<2?r:r.then(function(){e[1].apply(null,[])},function(t){e.length>=3&&e[2].apply(null,[t])})}}));var e=RTCPeerConnection.prototype.addIceCandidate;RTCPeerConnection.prototype.addIceCandidate=function(){return null===arguments[0]?Promise.resolve():e.apply(this,arguments)},["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(e){var t=webkitRTCPeerConnection.prototype[e];webkitRTCPeerConnection.prototype[e]=function(){return arguments[0]=new("addIceCandidate"===e?RTCIceCandidate:RTCSessionDescription)(arguments[0]),t.apply(this,arguments)}})},attachMediaStream:function(e,t){r("DEPRECATED, attachMediaStream will soon be removed."),o.version>=43?e.srcObject=t:"undefined"!=typeof e.src?e.src=URL.createObjectURL(t):r("Error attaching stream to element.")},reattachMediaStream:function(e,t){r("DEPRECATED, reattachMediaStream will soon be removed."),o.version>=43?e.srcObject=t.srcObject:e.src=t.src}};e.e={shimMediaStream:i.shimMediaStream,shimOnTrack:i.shimOnTrack,shimSourceObject:i.shimSourceObject,shimPeerConnection:i.shimPeerConnection,shimGetUserMedia:n(188),attachMediaStream:i.attachMediaStream,reattachMediaStream:i.reattachMediaStream}},function(e,t,n){"use strict";var r=n(1).log;e.e=function(){var e=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;var t={};return Object.keys(e).forEach(function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r="object"==typeof e[n]?e[n]:{ideal:e[n]};void 0!==r.exact&&"number"==typeof r.exact&&(r.min=r.max=r.exact);var o=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==r.ideal){t.optional=t.optional||[];var i={};"number"==typeof r.ideal?(i[o("min",n)]=r.ideal,t.optional.push(i),i={},i[o("max",n)]=r.ideal,t.optional.push(i)):(i[o("",n)]=r.ideal,t.optional.push(i))}void 0!==r.exact&&"number"!=typeof r.exact?(t.mandatory=t.mandatory||{},t.mandatory[o("",n)]=r.exact):["min","max"].forEach(function(e){void 0!==r[e]&&(t.mandatory=t.mandatory||{},t.mandatory[o(e,n)]=r[e])})}}),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},t=function(t,n){if(t=JSON.parse(JSON.stringify(t)),t&&t.audio&&(t.audio=e(t.audio)),t&&"object"==typeof t.video){var o=t.video.facingMode;if(o=o&&("object"==typeof o?o:{ideal:o}),o&&("user"===o.exact||"environment"===o.exact||"user"===o.ideal||"environment"===o.ideal)&&(!navigator.mediaDevices.getSupportedConstraints||!navigator.mediaDevices.getSupportedConstraints().facingMode)&&(delete t.video.facingMode,"environment"===o.exact||"environment"===o.ideal))return navigator.mediaDevices.enumerateDevices().then(function(i){i=i.filter(function(e){return"videoinput"===e.kind});var a=i.find(function(e){return-1!==e.label.toLowerCase().indexOf("back")})||i.length&&i[i.length-1];return a&&(t.video.deviceId=o.exact?{exact:a.deviceId}:{ideal:a.deviceId}),t.video=e(t.video),r("chrome: "+JSON.stringify(t)),n(t)});t.video=e(t.video)}return r("chrome: "+JSON.stringify(t)),n(t)},n=function(e){return{name:{PermissionDeniedError:"NotAllowedError",ConstraintNotSatisfiedError:"OverconstrainedError"}[e.name]||e.name,message:e.message,constraint:e.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}},o=function(e,r,o){t(e,function(e){navigator.webkitGetUserMedia(e,r,function(e){o(n(e))})})};navigator.getUserMedia=o;var i=function(e){return new Promise(function(t,n){navigator.getUserMedia(e,t,n)})};if(navigator.mediaDevices||(navigator.mediaDevices={getUserMedia:i,enumerateDevices:function(){return new Promise(function(e){var t={audio:"audioinput",video:"videoinput"};return MediaStreamTrack.getSources(function(n){e(n.map(function(e){return{label:e.label,kind:t[e.kind],deviceId:e.id,groupId:""}}))})})}}),navigator.mediaDevices.getUserMedia){var a=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(e){return t(e,function(e){return a(e)["catch"](function(e){return Promise.reject(n(e))})})}}else navigator.mediaDevices.getUserMedia=function(e){return i(e)};"undefined"==typeof navigator.mediaDevices.addEventListener&&(navigator.mediaDevices.addEventListener=function(){r("Dummy mediaDevices.addEventListener called.")}),"undefined"==typeof navigator.mediaDevices.removeEventListener&&(navigator.mediaDevices.removeEventListener=function(){r("Dummy mediaDevices.removeEventListener called.")})}},function(e,t,n){"use strict";var r=n(185),o=n(1).log,i={shimPeerConnection:function(){window.RTCIceGatherer&&(window.RTCIceCandidate||(window.RTCIceCandidate=function(e){return e}),window.RTCSessionDescription||(window.RTCSessionDescription=function(e){return e})),window.RTCPeerConnection=function(e){var t=this,n=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach(function(e){t[e]=n[e].bind(n)}),this.onicecandidate=null,this.onaddstream=null,this.ontrack=null,this.onremovestream=null,this.onsignalingstatechange=null,this.oniceconnectionstatechange=null,this.onnegotiationneeded=null,this.ondatachannel=null,this.localStreams=[],this.remoteStreams=[],this.getLocalStreams=function(){return t.localStreams},this.getRemoteStreams=function(){return t.remoteStreams},this.localDescription=new RTCSessionDescription({type:"",sdp:""}),this.remoteDescription=new RTCSessionDescription({type:"",sdp:""}),this.signalingState="stable",this.iceConnectionState="new",this.iceGatheringState="new",this.iceOptions={gatherPolicy:"all",iceServers:[]},e&&e.iceTransportPolicy)switch(e.iceTransportPolicy){case"all":case"relay":this.iceOptions.gatherPolicy=e.iceTransportPolicy;break;case"none":throw new TypeError('iceTransportPolicy "none" not supported')}e&&e.iceServers&&(this.iceOptions.iceServers=e.iceServers.filter(function(e){return e&&e.urls?(e.urls=e.urls.filter(function(e){return 0===e.indexOf("turn:")&&-1!==e.indexOf("transport=udp")})[0],!!e.urls):!1})),this.transceivers=[],this._localIceCandidatesBuffer=[]},window.RTCPeerConnection.prototype._emitBufferedCandidates=function(){var e=this,t=r.splitSections(e.localDescription.sdp);this._localIceCandidatesBuffer.forEach(function(n){var r=!n.candidate||0===Object.keys(n.candidate).length;if(r)for(var o=1;o-1&&(this.localStreams.splice(t,1),this._maybeFireNegotiationNeeded())},window.RTCPeerConnection.prototype.getSenders=function(){return this.transceivers.filter(function(e){return!!e.rtpSender}).map(function(e){return e.rtpSender})},window.RTCPeerConnection.prototype.getReceivers=function(){return this.transceivers.filter(function(e){return!!e.rtpReceiver}).map(function(e){return e.rtpReceiver})},window.RTCPeerConnection.prototype._getCommonCapabilities=function(e,t){var n={codecs:[],headerExtensions:[],fecMechanisms:[]};return e.codecs.forEach(function(e){for(var r=0;r0;t.forEach(function(e,t){var a=o.transceivers[t],c=a.iceGatherer,u=a.iceTransport,s=a.dtlsTransport,f=a.localCapabilities,d=a.remoteCapabilities,l="0"===e.split("\n",1)[0].split(" ",2)[1];if(!l){var p=r.getIceParameters(e,n);if(i){var h=r.matchPrefix(e,"a=candidate:").map(function(e){return r.parseCandidate(e)}).filter(function(e){return"1"===e.component});u.setRemoteCandidates(h)}u.start(c,p,i?"controlling":"controlled");var v=r.getDtlsParameters(e,n);i&&(v.role="server"),s.start(v);var m=o._getCommonCapabilities(f,d);o._transceive(a,m.codecs.length>0,!1)}})}switch(this.localDescription={type:e.type,sdp:e.sdp},e.type){case"offer":this._updateSignalingState("have-local-offer");break;case"answer":this._updateSignalingState("stable");break;default:throw new TypeError('unsupported type "'+e.type+'"')}var a=arguments.length>1&&"function"==typeof arguments[1];if(a){var c=arguments[1];window.setTimeout(function(){c(),"new"===o.iceGatheringState&&(o.iceGatheringState="gathering"),o._emitBufferedCandidates()},0)}var u=Promise.resolve();return u.then(function(){a||("new"===o.iceGatheringState&&(o.iceGatheringState="gathering"),window.setTimeout(o._emitBufferedCandidates.bind(o),500))}),u},window.RTCPeerConnection.prototype.setRemoteDescription=function(e){var t=this,n=new MediaStream,o=[],i=r.splitSections(e.sdp),a=i.shift(),c=r.matchPrefix(a,"a=ice-lite").length>0;switch(i.forEach(function(i,u){var s,f,d,l,p,h,v,m,g,y,b,_,w=r.splitLines(i),C=w[0].substr(2).split(" "),E=C[0],S="0"===C[1],T=r.getDirection(i,a),R=r.parseRtpParameters(i);S||(b=r.getIceParameters(i,a),_=r.getDtlsParameters(i,a),_.role="client"),m=r.parseRtpEncodingParameters(i);var O=r.matchPrefix(i,"a=mid:");O=O.length?O[0].substr(6):r.generateIdentifier();var x,P=r.matchPrefix(i,"a=ssrc:").map(function(e){return r.parseSsrcMedia(e)}).filter(function(e){return"cname"===e.attribute})[0];P&&(x=P.value);var D=r.matchPrefix(i,"a=end-of-candidates").length>0,A=r.matchPrefix(i,"a=candidate:").map(function(e){return r.parseCandidate(e)}).filter(function(e){return"1"===e.component});if("offer"!==e.type||S)"answer"!==e.type||S||(s=t.transceivers[u],f=s.iceGatherer,d=s.iceTransport,l=s.dtlsTransport,p=s.rtpSender,h=s.rtpReceiver,v=s.sendEncodingParameters,g=s.localCapabilities,t.transceivers[u].recvEncodingParameters=m,t.transceivers[u].remoteCapabilities=R,t.transceivers[u].cname=x,(c||D)&&d.setRemoteCandidates(A),d.start(f,b,"controlling"),l.start(_),t._transceive(s,"sendrecv"===T||"recvonly"===T,"sendrecv"===T||"sendonly"===T),!h||"sendrecv"!==T&&"sendonly"!==T?delete s.rtpReceiver:(y=h.track,o.push([y,h]),n.addTrack(y)));else{var M=t._createIceAndDtlsTransports(O,u);if(D&&M.iceTransport.setRemoteCandidates(A),g=RTCRtpReceiver.getCapabilities(E),v=[{ssrc:1001*(2*u+2)}],h=new RTCRtpReceiver(M.dtlsTransport,E),y=h.track,o.push([y,h]),n.addTrack(y),t.localStreams.length>0&&t.localStreams[0].getTracks().length>=u){var j=t.localStreams[0].getTracks()[u];p=new RTCRtpSender(j,M.dtlsTransport)}t.transceivers[u]={iceGatherer:M.iceGatherer,iceTransport:M.iceTransport,dtlsTransport:M.dtlsTransport,localCapabilities:g,remoteCapabilities:R,rtpSender:p,rtpReceiver:h,kind:E,mid:O,cname:x,sendEncodingParameters:v,recvEncodingParameters:m},t._transceive(t.transceivers[u],!1,"sendrecv"===T||"sendonly"===T); +}}),this.remoteDescription={type:e.type,sdp:e.sdp},e.type){case"offer":this._updateSignalingState("have-remote-offer");break;case"answer":this._updateSignalingState("stable");break;default:throw new TypeError('unsupported type "'+e.type+'"')}return n.getTracks().length&&(t.remoteStreams.push(n),window.setTimeout(function(){var e=new Event("addstream");e.stream=n,t.dispatchEvent(e),null!==t.onaddstream&&window.setTimeout(function(){t.onaddstream(e)},0),o.forEach(function(r){var o=r[0],i=r[1],a=new Event("track");a.track=o,a.receiver=i,a.streams=[n],t.dispatchEvent(e),null!==t.ontrack&&window.setTimeout(function(){t.ontrack(a)},0)})},0)),arguments.length>1&&"function"==typeof arguments[1]&&window.setTimeout(arguments[1],0),Promise.resolve()},window.RTCPeerConnection.prototype.close=function(){this.transceivers.forEach(function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()}),this._updateSignalingState("closed")},window.RTCPeerConnection.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this.dispatchEvent(t),null!==this.onsignalingstatechange&&this.onsignalingstatechange(t)},window.RTCPeerConnection.prototype._maybeFireNegotiationNeeded=function(){var e=new Event("negotiationneeded");this.dispatchEvent(e),null!==this.onnegotiationneeded&&this.onnegotiationneeded(e)},window.RTCPeerConnection.prototype._updateConnectionState=function(){var e,t=this,n={"new":0,closed:0,connecting:0,checking:0,connected:0,completed:0,failed:0};if(this.transceivers.forEach(function(e){n[e.iceTransport.state]++,n[e.dtlsTransport.state]++}),n.connected+=n.completed,e="new",n.failed>0?e="failed":n.connecting>0||n.checking>0?e="connecting":n.disconnected>0?e="disconnected":n["new"]>0?e="new":(n.connected>0||n.completed>0)&&(e="connected"),e!==t.iceConnectionState){t.iceConnectionState=e;var r=new Event("iceconnectionstatechange");this.dispatchEvent(r),null!==this.oniceconnectionstatechange&&this.oniceconnectionstatechange(r)}},window.RTCPeerConnection.prototype.createOffer=function(){var e=this;if(this._pendingOffer)throw new Error("createOffer called while there is a pending offer.");var t;1===arguments.length&&"function"!=typeof arguments[0]?t=arguments[0]:3===arguments.length&&(t=arguments[2]);var n=[],o=0,i=0;if(this.localStreams.length&&(o=this.localStreams[0].getAudioTracks().length,i=this.localStreams[0].getVideoTracks().length),t){if(t.mandatory||t.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==t.offerToReceiveAudio&&(o=t.offerToReceiveAudio),void 0!==t.offerToReceiveVideo&&(i=t.offerToReceiveVideo)}for(this.localStreams.length&&this.localStreams[0].getTracks().forEach(function(e){n.push({kind:e.kind,track:e,wantReceive:"audio"===e.kind?o>0:i>0}),"audio"===e.kind?o--:"video"===e.kind&&i--});o>0||i>0;)o>0&&(n.push({kind:"audio",wantReceive:!0}),o--),i>0&&(n.push({kind:"video",wantReceive:!0}),i--);var a=r.writeSessionBoilerplate(),c=[];n.forEach(function(t,n){var o,i,u=t.track,s=t.kind,f=r.generateIdentifier(),d=e._createIceAndDtlsTransports(f,n),l=RTCRtpSender.getCapabilities(s),p=[{ssrc:1001*(2*n+1)}];u&&(o=new RTCRtpSender(u,d.dtlsTransport)),t.wantReceive&&(i=new RTCRtpReceiver(d.dtlsTransport,s)),c[n]={iceGatherer:d.iceGatherer,iceTransport:d.iceTransport,dtlsTransport:d.dtlsTransport,localCapabilities:l,remoteCapabilities:null,rtpSender:o,rtpReceiver:i,kind:s,mid:f,sendEncodingParameters:p,recvEncodingParameters:null};var h=c[n];a+=r.writeMediaSection(h,h.localCapabilities,"offer",e.localStreams[0])}),this._pendingOffer=c;var u=new RTCSessionDescription({type:"offer",sdp:a});return arguments.length&&"function"==typeof arguments[0]&&window.setTimeout(arguments[0],0,u),Promise.resolve(u)},window.RTCPeerConnection.prototype.createAnswer=function(){var e=this,t=r.writeSessionBoilerplate();this.transceivers.forEach(function(n){var o=e._getCommonCapabilities(n.localCapabilities,n.remoteCapabilities);t+=r.writeMediaSection(n,o,"answer",e.localStreams[0])});var n=new RTCSessionDescription({type:"answer",sdp:t});return arguments.length&&"function"==typeof arguments[0]&&window.setTimeout(arguments[0],0,n),Promise.resolve(n)},window.RTCPeerConnection.prototype.addIceCandidate=function(e){if(null===e)this.transceivers.forEach(function(e){e.iceTransport.addIceCandidate({})});else{var t=e.sdpMLineIndex;if(e.sdpMid)for(var n=0;n0?r.parseCandidate(e.candidate):{};if("tcp"===i.protocol&&0===i.port)return;if("1"!==i.component)return;"endOfCandidates"===i.type&&(i={}),o.iceTransport.addRemoteCandidate(i);var a=r.splitSections(this.remoteDescription.sdp);a[t+1]+=(i.type?e.candidate.trim():"a=end-of-candidates")+"\r\n",this.remoteDescription.sdp=a.join("")}}return arguments.length>1&&"function"==typeof arguments[1]&&window.setTimeout(arguments[1],0),Promise.resolve()},window.RTCPeerConnection.prototype.getStats=function(){var e=[];this.transceivers.forEach(function(t){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(n){t[n]&&e.push(t[n].getStats())})});var t=arguments.length>1&&"function"==typeof arguments[1]&&arguments[1];return new Promise(function(n){var r=new Map;Promise.all(e).then(function(e){e.forEach(function(e){Object.keys(e).forEach(function(t){r.set(t,e[t]),r[t]=e[t]})}),t&&window.setTimeout(t,0,r),n(r)})})}},attachMediaStream:function(e,t){o("DEPRECATED, attachMediaStream will soon be removed."),e.srcObject=t},reattachMediaStream:function(e,t){o("DEPRECATED, reattachMediaStream will soon be removed."),e.srcObject=t.srcObject}};e.e={shimPeerConnection:i.shimPeerConnection,shimGetUserMedia:n(190),attachMediaStream:i.attachMediaStream,reattachMediaStream:i.reattachMediaStream}},function(e,t,n){"use strict";e.e=function(){var e=function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString:function(){return this.name}}},t=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(n){return t(n)["catch"](function(t){return Promise.reject(e(t))})}}},function(e,t,n){"use strict";var r=n(1).log,o=n(1).browserDetails,i={shimOnTrack:function(){"object"!=typeof window||!window.RTCPeerConnection||"ontrack"in window.RTCPeerConnection.prototype||Object.defineProperty(window.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=e),this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.getTracks().forEach(function(t){var n=new Event("track");n.track=t,n.receiver={track:t},n.streams=[e.stream],this.dispatchEvent(n)}.bind(this))}.bind(this))}})},shimSourceObject:function(){"object"==typeof window&&(!window.HTMLMediaElement||"srcObject"in window.HTMLMediaElement.prototype||Object.defineProperty(window.HTMLMediaElement.prototype,"srcObject",{get:function(){return this.mozSrcObject},set:function(e){this.mozSrcObject=e}}))},shimPeerConnection:function(){if("object"==typeof window&&(window.RTCPeerConnection||window.mozRTCPeerConnection)){window.RTCPeerConnection||(window.RTCPeerConnection=function(e,t){if(o.version<38&&e&&e.iceServers){for(var n=[],r=0;r true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + module.e = isArray; + + +/***/ }, +/* 1 */ /***/ function(module, exports, __webpack_require__) { /* @@ -61,9 +93,10 @@ return /******/ (function(modules) { // webpackBootstrap * that can be found in the LICENSE file in the root of the source * tree. */ + /* eslint-env node */ 'use strict'; - var logDisabled_ = false; + var logDisabled_ = true; // Utility methods. var utils = { @@ -82,12 +115,15 @@ return /******/ (function(modules) { // webpackBootstrap if (logDisabled_) { return; } - console.log.apply(console, arguments); + if (typeof console !== 'undefined' && typeof console.log === 'function') { + console.log.apply(console, arguments); + } } }, - /** + /** * Extract browser version out of the provided user agent string. + * * @param {!string} uastring userAgent string. * @param {!string} expr Regular expression used as match criteria. * @param {!number} pos position in the version string to be returned. @@ -100,6 +136,7 @@ return /******/ (function(modules) { // webpackBootstrap /** * Browser detector. + * * @return {object} result containing browser, version and minVersion * properties. */ @@ -110,28 +147,65 @@ return /******/ (function(modules) { // webpackBootstrap result.version = null; result.minVersion = null; + // Fail early if it's not a browser if (typeof window === 'undefined' || !window.navigator) { result.browser = 'Not a browser.'; return result; - } else if (navigator.mozGetUserMedia) { - // Firefox. + } + + // Firefox. + if (navigator.mozGetUserMedia) { result.browser = 'firefox'; result.version = this.extractVersion(navigator.userAgent, /Firefox\/([0-9]+)\./, 1); result.minVersion = 31; - } else if (navigator.webkitGetUserMedia && window.webkitRTCPeerConnection) { - // Chrome, Chromium, WebView, Opera and other WebKit browsers. - result.browser = 'chrome'; - result.version = this.extractVersion(navigator.userAgent, + + // all webkit-based browsers + } else if (navigator.webkitGetUserMedia) { + // Chrome, Chromium, Webview, Opera, all use the chrome shim for now + if (window.webkitRTCPeerConnection) { + result.browser = 'chrome'; + result.version = this.extractVersion(navigator.userAgent, /Chrom(e|ium)\/([0-9]+)\./, 2); - result.minVersion = 38; - } else if(navigator.mediaDevices && + result.minVersion = 38; + + // Safari or unknown webkit-based + // for the time being Safari has support for MediaStreams but not webRTC + } else { + // Safari UA substrings of interest for reference: + // - webkit version: AppleWebKit/602.1.25 (also used in Op,Cr) + // - safari UI version: Version/9.0.3 (unique to Safari) + // - safari UI webkit version: Safari/601.4.4 (also used in Op,Cr) + // + // if the webkit version and safari UI webkit versions are equals, + // ... this is a stable version. + // + // only the internal webkit version is important today to know if + // media streams are supported + // + if (navigator.userAgent.match(/Version\/(\d+).(\d+)/)) { + result.browser = 'safari'; + result.version = this.extractVersion(navigator.userAgent, + /AppleWebKit\/([0-9]+)\./, 1); + result.minVersion = 602; + + // unknown webkit-based browser + } else { + result.browser = 'Unsupported webkit-based browser ' + + 'with GUM support but no WebRTC support.'; + return result; + } + } + + // Edge. + } else if (navigator.mediaDevices && navigator.userAgent.match(/Edge\/(\d+).(\d+)$/)) { - // Edge. result.browser = 'edge'; result.version = this.extractVersion(navigator.userAgent, /Edge\/(\d+).(\d+)$/, 2); result.minVersion = 10547; + + // Default fallthrough: not supported. } else { result.browser = 'Not a supported browser.'; return result; @@ -157,38 +231,6 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 1 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @type {Function} - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - module.e = isArray; - - /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { @@ -2841,7 +2883,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 30 */ /***/ function(module, exports, __webpack_require__) { - var isArray = __webpack_require__(1); + var isArray = __webpack_require__(0); /** Used to match property names within property paths. */ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, @@ -2932,7 +2974,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 33 */ /***/ function(module, exports, __webpack_require__) { - var isArray = __webpack_require__(1), + var isArray = __webpack_require__(0), isObjectLike = __webpack_require__(4); /** `Object#toString` result references. */ @@ -3757,7 +3799,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 49 */ /***/ function(module, exports, __webpack_require__) { - var isArray = __webpack_require__(1), + var isArray = __webpack_require__(0), stringToPath = __webpack_require__(167); /** @@ -4139,7 +4181,7 @@ return /******/ (function(modules) { // webpackBootstrap var baseTimes = __webpack_require__(128), isArguments = __webpack_require__(10), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isLength = __webpack_require__(23), isString = __webpack_require__(33); @@ -4408,7 +4450,7 @@ return /******/ (function(modules) { // webpackBootstrap __webpack_require__(73); - __webpack_require__(184); + __webpack_require__(185); var _scanner = __webpack_require__(90); @@ -4469,7 +4511,7 @@ return /******/ (function(modules) { // webpackBootstrap toPromise: function toPromise() { return new Promise(function (resolve, reject) { scanner.decodeSingle(config, function (result) { - if (result.codeResult && result.codeResult.code) { + if (result && result.codeResult && result.codeResult.code) { return resolve(result); } return reject(result); @@ -4501,7 +4543,6 @@ return /******/ (function(modules) { // webpackBootstrap } else if (typeof source === 'string') { // video source } else if ((typeof source === 'undefined' ? 'undefined' : _typeof(source)) === 'object' && (typeof source.constraints !== 'undefined' || typeof source.area !== 'undefined')) { - console.log("inputConfig"); inputConfig = source; } else if (!source) { // LiveStream @@ -4592,8 +4633,8 @@ return /******/ (function(modules) { // webpackBootstrap "use strict"; var CVUtils = __webpack_require__(25), - Ndarray = __webpack_require__(192), - Interp2D = __webpack_require__(193).d2; + Ndarray = __webpack_require__(194), + Interp2D = __webpack_require__(195).d2; var FrameGrabber = {}; @@ -4689,7 +4730,7 @@ return /******/ (function(modules) { // webpackBootstrap 'use strict'; - var GetPixels = __webpack_require__(191); + var GetPixels = __webpack_require__(193); var InputStream = {}; @@ -4980,10 +5021,22 @@ return /******/ (function(modules) { // webpackBootstrap var event = getEvent(eventName), subscribers = event.subscribers; - event.subscribers = subscribers.filter(function (subscriber) { + // Publish one-time subscriptions + subscribers.filter(function (subscriber) { + return !!subscriber.once; + }).forEach(function (subscriber) { publishSubscription(subscriber, data); + }); + + // remove them from the subscriber + event.subscribers = subscribers.filter(function (subscriber) { return !subscriber.once; }); + + // publish the rest + event.subscribers.forEach(function (subscriber) { + publishSubscription(subscriber, data); + }); }, once: function once(event, callback, async) { _subscribe(event, { @@ -5783,13 +5836,14 @@ return /******/ (function(modules) { // webpackBootstrap */ function initCamera(video, constraints) { return navigator.mediaDevices.getUserMedia(constraints).then(function (stream) { - return new Promise(function (resolve, reject) { + return new Promise(function (resolve) { streamRef = stream; - video.src = window.URL.createObjectURL(stream); - video.onloadedmetadata = function (e) { + video.setAttribute("autoplay", 'true'); + video.srcObject = stream; + video.addEventListener('loadedmetadata', function () { video.play(); resolve(); - }; + }); }); }).then(waitForVideo.bind(null, video)); } @@ -5797,12 +5851,12 @@ return /******/ (function(modules) { // webpackBootstrap function deprecatedConstraints(videoConstraints) { var normalized = (0, _pick3.default)(videoConstraints, ["width", "height", "facingMode", "aspectRatio", "deviceId"]); - if (typeof videoConstraints["minAspectRatio"] !== 'undefined' && videoConstraints["minAspectRatio"] > 0) { - normalized["aspectRatio"] = videoConstraints["minAspectRatio"]; + if (typeof videoConstraints.minAspectRatio !== 'undefined' && videoConstraints.minAspectRatio > 0) { + normalized.aspectRatio = videoConstraints.minAspectRatio; console.log("WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead"); } - if (typeof videoConstraints["facing"] !== 'undefined') { - normalized["facingMode"] = videoConstraints["facing"]; + if (typeof videoConstraints.facing !== 'undefined') { + normalized.facingMode = videoConstraints.facing; console.log("WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'"); } return normalized; @@ -5813,7 +5867,7 @@ return /******/ (function(modules) { // webpackBootstrap return Promise.resolve(constraints); } if (typeof MediaStreamTrack !== 'undefined' && typeof MediaStreamTrack.getSources !== 'undefined') { - return new Promise(function (resolve, reject) { + return new Promise(function (resolve) { MediaStreamTrack.getSources(function (sourceInfos) { var videoSource = sourceInfos.filter(function (sourceInfo) { return sourceInfo.kind === "video" && sourceInfo.facing === facing; @@ -8392,7 +8446,6 @@ return /******/ (function(modules) { // webpackBootstrap } _inputStream.setAttribute("preload", "auto"); - _inputStream.setAttribute("autoplay", true); _inputStream.setInputStream(_config.inputStream); _inputStream.addEventListener("canrecord", canRecord.bind(undefined, cb)); } @@ -9264,7 +9317,7 @@ return /******/ (function(modules) { // webpackBootstrap initCloneArray = __webpack_require__(150), initCloneByTag = __webpack_require__(151), initCloneObject = __webpack_require__(152), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isBuffer = __webpack_require__(171), isHostObject = __webpack_require__(17), isObject = __webpack_require__(2); @@ -9415,7 +9468,7 @@ return /******/ (function(modules) { // webpackBootstrap var arrayPush = __webpack_require__(106), isArguments = __webpack_require__(10), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isArrayLikeObject = __webpack_require__(32); /** @@ -9526,7 +9579,7 @@ return /******/ (function(modules) { // webpackBootstrap equalByTag = __webpack_require__(141), equalObjects = __webpack_require__(142), getTag = __webpack_require__(58), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isHostObject = __webpack_require__(17), isTypedArray = __webpack_require__(34); @@ -9675,7 +9728,7 @@ return /******/ (function(modules) { // webpackBootstrap var baseMatches = __webpack_require__(120), baseMatchesProperty = __webpack_require__(121), identity = __webpack_require__(170), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), property = __webpack_require__(178); /** @@ -9844,7 +9897,7 @@ return /******/ (function(modules) { // webpackBootstrap arrayEach = __webpack_require__(42), assignMergeValue = __webpack_require__(43), baseMergeDeep = __webpack_require__(123), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isObject = __webpack_require__(2), isTypedArray = __webpack_require__(34), keysIn = __webpack_require__(35); @@ -9900,7 +9953,7 @@ return /******/ (function(modules) { // webpackBootstrap baseClone = __webpack_require__(109), copyArray = __webpack_require__(56), isArguments = __webpack_require__(10), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isArrayLikeObject = __webpack_require__(32), isFunction = __webpack_require__(11), isObject = __webpack_require__(2), @@ -10701,7 +10754,7 @@ return /******/ (function(modules) { // webpackBootstrap var baseCastPath = __webpack_require__(49), isArguments = __webpack_require__(10), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isIndex = __webpack_require__(18), isKey = __webpack_require__(30), isLength = __webpack_require__(23), @@ -11524,7 +11577,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var isArguments = __webpack_require__(10), - isArray = __webpack_require__(1), + isArray = __webpack_require__(0), isArrayLike = __webpack_require__(22), isFunction = __webpack_require__(11), isString = __webpack_require__(33); @@ -12092,475 +12145,501 @@ return /******/ (function(modules) { // webpackBootstrap /* 184 */ /***/ function(module, exports, __webpack_require__) { - /* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ + /* eslint-env node */ 'use strict'; - // Shimming starts here. - (function() { - // Utils. - var logging = __webpack_require__(0).log; - var browserDetails = __webpack_require__(0).browserDetails; - // Export to the adapter global object visible in the browser. - module.e.browserDetails = browserDetails; - module.e.extractVersion = __webpack_require__(0).extractVersion; - module.e.disableLog = __webpack_require__(0).disableLog; - - // Uncomment if you do not want any logging at all including the switch - // statement below. Can also be turned off in the browser via - // adapter.disableLog(true) but then logging from the switch statement below - // will still appear. - //require('./utils').disableLog(true); + // SDP helpers. + var SDPUtils = {}; - // Browser shims. - var chromeShim = __webpack_require__(185) || null; - var edgeShim = __webpack_require__(188) || null; - var firefoxShim = __webpack_require__(189) || null; + // Generate an alphanumeric identifier for cname or mids. + // TODO: use UUIDs instead? https://gist.github.com/jed/982883 + SDPUtils.generateIdentifier = function() { + return Math.random().toString(36).substr(2, 10); + }; - // Shim browser if found. - switch (browserDetails.browser) { - case 'chrome': - if (!chromeShim || !chromeShim.shimPeerConnection) { - logging('Chrome shim is not included in this adapter release.'); - return; - } - logging('adapter.js shimming chrome!'); - // Export to the adapter global object visible in the browser. - module.e.browserShim = chromeShim; + // The RTCP CNAME used by all peerconnections from the same JS. + SDPUtils.localCName = SDPUtils.generateIdentifier(); - chromeShim.shimGetUserMedia(); - chromeShim.shimSourceObject(); - chromeShim.shimPeerConnection(); - chromeShim.shimOnTrack(); - break; - case 'edge': - if (!edgeShim || !edgeShim.shimPeerConnection) { - logging('MS edge shim is not included in this adapter release.'); - return; - } - logging('adapter.js shimming edge!'); - // Export to the adapter global object visible in the browser. - module.e.browserShim = edgeShim; + // Splits SDP into lines, dealing with both CRLF and LF. + SDPUtils.splitLines = function(blob) { + return blob.trim().split('\n').map(function(line) { + return line.trim(); + }); + }; + // Splits SDP into sessionpart and mediasections. Ensures CRLF. + SDPUtils.splitSections = function(blob) { + var parts = blob.split('\nm='); + return parts.map(function(part, index) { + return (index > 0 ? 'm=' + part : part).trim() + '\r\n'; + }); + }; - edgeShim.shimPeerConnection(); - break; - case 'firefox': - if (!firefoxShim || !firefoxShim.shimPeerConnection) { - logging('Firefox shim is not included in this adapter release.'); - return; - } - logging('adapter.js shimming firefox!'); - // Export to the adapter global object visible in the browser. - module.e.browserShim = firefoxShim; + // Returns lines that start with a certain prefix. + SDPUtils.matchPrefix = function(blob, prefix) { + return SDPUtils.splitLines(blob).filter(function(line) { + return line.indexOf(prefix) === 0; + }); + }; - firefoxShim.shimGetUserMedia(); - firefoxShim.shimSourceObject(); - firefoxShim.shimPeerConnection(); - firefoxShim.shimOnTrack(); - break; - default: - logging('Unsupported browser!'); + // Parses an ICE candidate line. Sample input: + // candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 + // rport 55996" + SDPUtils.parseCandidate = function(line) { + var parts; + // Parse both variants. + if (line.indexOf('a=candidate:') === 0) { + parts = line.substring(12).split(' '); + } else { + parts = line.substring(10).split(' '); } - })(); - - -/***/ }, -/* 185 */ -/***/ function(module, exports, __webpack_require__) { - - /* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ - 'use strict'; - var logging = __webpack_require__(0).log; - var browserDetails = __webpack_require__(0).browserDetails; - var chromeShim = { - shimOnTrack: function() { - if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in - window.RTCPeerConnection.prototype)) { - Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { - get: function() { return this._ontrack; }, - set: function(f) { - var self = this; - if (this._ontrack) { - this.removeEventListener('track', this._ontrack); - this.removeEventListener('addstream', this._ontrackpoly); - } - this.addEventListener('track', this._ontrack = f); - this.addEventListener('addstream', this._ontrackpoly = function(e) { - // onaddstream does not fire when a track is added to an existing stream. - // but stream.onaddtrack is implemented so we use that - e.stream.addEventListener('addtrack', function(te) { - var event = new Event('track'); - event.track = te.track; - event.receiver = {track: te.track}; - event.streams = [e.stream]; - self.dispatchEvent(event); - }); - e.stream.getTracks().forEach(function(track) { - var event = new Event('track'); - event.track = track; - event.receiver = {track: track}; - event.streams = [e.stream]; - this.dispatchEvent(event); - }.bind(this)); - }.bind(this)); - } - }); + var candidate = { + foundation: parts[0], + component: parts[1], + protocol: parts[2].toLowerCase(), + priority: parseInt(parts[3], 10), + ip: parts[4], + port: parseInt(parts[5], 10), + // skip parts[6] == 'typ' + type: parts[7] + }; + + for (var i = 8; i < parts.length; i += 2) { + switch (parts[i]) { + case 'raddr': + candidate.relatedAddress = parts[i + 1]; + break; + case 'rport': + candidate.relatedPort = parseInt(parts[i + 1], 10); + break; + case 'tcptype': + candidate.tcpType = parts[i + 1]; + break; + default: // Unknown extensions are silently ignored. + break; } - }, + } + return candidate; + }; - shimSourceObject: function() { - if (typeof window === 'object') { - if (window.HTMLMediaElement && - !('srcObject' in window.HTMLMediaElement.prototype)) { - // Shim the srcObject property, once, when HTMLMediaElement is found. - Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', { - get: function() { - return this._srcObject; - }, - set: function(stream) { - var self = this; - // Use _srcObject as a private property for this shim - this._srcObject = stream; - if (this.src) { - URL.revokeObjectURL(this.src); - } + // Translates a candidate object into SDP candidate attribute. + SDPUtils.writeCandidate = function(candidate) { + var sdp = []; + sdp.push(candidate.foundation); + sdp.push(candidate.component); + sdp.push(candidate.protocol.toUpperCase()); + sdp.push(candidate.priority); + sdp.push(candidate.ip); + sdp.push(candidate.port); - if (!stream) { - this.src = ''; - return; - } - this.src = URL.createObjectURL(stream); - // We need to recreate the blob url when a track is added or removed. - // Doing it manually since we want to avoid a recursion. - stream.addEventListener('addtrack', function() { - if (self.src) { - URL.revokeObjectURL(self.src); - } - self.src = URL.createObjectURL(stream); - }); - stream.addEventListener('removetrack', function() { - if (self.src) { - URL.revokeObjectURL(self.src); - } - self.src = URL.createObjectURL(stream); - }); - } - }); - } - } - }, + var type = candidate.type; + sdp.push('typ'); + sdp.push(type); + if (type !== 'host' && candidate.relatedAddress && + candidate.relatedPort) { + sdp.push('raddr'); + sdp.push(candidate.relatedAddress); // was: relAddr + sdp.push('rport'); + sdp.push(candidate.relatedPort); // was: relPort + } + if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') { + sdp.push('tcptype'); + sdp.push(candidate.tcpType); + } + return 'candidate:' + sdp.join(' '); + }; - shimPeerConnection: function() { - // The RTCPeerConnection object. - window.RTCPeerConnection = function(pcConfig, pcConstraints) { - // Translate iceTransportPolicy to iceTransports, - // see https://code.google.com/p/webrtc/issues/detail?id=4869 - logging('PeerConnection'); - if (pcConfig && pcConfig.iceTransportPolicy) { - pcConfig.iceTransports = pcConfig.iceTransportPolicy; - } + // Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input: + // a=rtpmap:111 opus/48000/2 + SDPUtils.parseRtpMap = function(line) { + var parts = line.substr(9).split(' '); + var parsed = { + payloadType: parseInt(parts.shift(), 10) // was: id + }; - var pc = new webkitRTCPeerConnection(pcConfig, pcConstraints); // jscs:ignore requireCapitalizedConstructors - var origGetStats = pc.getStats.bind(pc); - pc.getStats = function(selector, successCallback, errorCallback) { // jshint ignore: line - var self = this; - var args = arguments; + parts = parts[0].split('/'); - // If selector is a function then we are in the old style stats so just - // pass back the original getStats format to avoid breaking old users. - if (arguments.length > 0 && typeof selector === 'function') { - return origGetStats(selector, successCallback); - } + parsed.name = parts[0]; + parsed.clockRate = parseInt(parts[1], 10); // was: clockrate + // was: channels + parsed.numChannels = parts.length === 3 ? parseInt(parts[2], 10) : 1; + return parsed; + }; - var fixChromeStats_ = function(response) { - var standardReport = {}; - var reports = response.result(); - reports.forEach(function(report) { - var standardStats = { - id: report.id, - timestamp: report.timestamp, - type: report.type - }; - report.names().forEach(function(name) { - standardStats[name] = report.stat(name); - }); - standardReport[standardStats.id] = standardStats; - }); + // Generate an a=rtpmap line from RTCRtpCodecCapability or + // RTCRtpCodecParameters. + SDPUtils.writeRtpMap = function(codec) { + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate + + (codec.numChannels !== 1 ? '/' + codec.numChannels : '') + '\r\n'; + }; - return standardReport; - }; + // Parses an a=extmap line (headerextension from RFC 5285). Sample input: + // a=extmap:2 urn:ietf:params:rtp-hdrext:toffset + SDPUtils.parseExtmap = function(line) { + var parts = line.substr(9).split(' '); + return { + id: parseInt(parts[0], 10), + uri: parts[1] + }; + }; - if (arguments.length >= 2) { - var successCallbackWrapper_ = function(response) { - args[1](fixChromeStats_(response)); - }; + // Generates a=extmap line from RTCRtpHeaderExtensionParameters or + // RTCRtpHeaderExtension. + SDPUtils.writeExtmap = function(headerExtension) { + return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) + + ' ' + headerExtension.uri + '\r\n'; + }; - return origGetStats.apply(this, [successCallbackWrapper_, arguments[0]]); - } + // Parses an ftmp line, returns dictionary. Sample input: + // a=fmtp:96 vbr=on;cng=on + // Also deals with vbr=on; cng=on + SDPUtils.parseFmtp = function(line) { + var parsed = {}; + var kv; + var parts = line.substr(line.indexOf(' ') + 1).split(';'); + for (var j = 0; j < parts.length; j++) { + kv = parts[j].trim().split('='); + parsed[kv[0].trim()] = kv[1]; + } + return parsed; + }; - // promise-support - return new Promise(function(resolve, reject) { - if (args.length === 1 && selector === null) { - origGetStats.apply(self, [ - function(response) { - resolve.apply(null, [fixChromeStats_(response)]); - }, reject]); - } else { - origGetStats.apply(self, [resolve, reject]); - } - }); - }; + // Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters. + SDPUtils.writeFmtp = function(codec) { + var line = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.parameters && Object.keys(codec.parameters).length) { + var params = []; + Object.keys(codec.parameters).forEach(function(param) { + params.push(param + '=' + codec.parameters[param]); + }); + line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\r\n'; + } + return line; + }; - return pc; - }; - window.RTCPeerConnection.prototype = webkitRTCPeerConnection.prototype; + // Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input: + // a=rtcp-fb:98 nack rpsi + SDPUtils.parseRtcpFb = function(line) { + var parts = line.substr(line.indexOf(' ') + 1).split(' '); + return { + type: parts.shift(), + parameter: parts.join(' ') + }; + }; + // Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters. + SDPUtils.writeRtcpFb = function(codec) { + var lines = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.rtcpFeedback && codec.rtcpFeedback.length) { + // FIXME: special handling for trr-int? + codec.rtcpFeedback.forEach(function(fb) { + lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + + (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') + + '\r\n'; + }); + } + return lines; + }; - // wrap static methods. Currently just generateCertificate. - if (webkitRTCPeerConnection.generateCertificate) { - Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { - get: function() { - if (arguments.length) { - return webkitRTCPeerConnection.generateCertificate.apply(null, - arguments); - } else { - return webkitRTCPeerConnection.generateCertificate; - } - } - }); - } + // Parses an RFC 5576 ssrc media attribute. Sample input: + // a=ssrc:3735928559 cname:something + SDPUtils.parseSsrcMedia = function(line) { + var sp = line.indexOf(' '); + var parts = { + ssrc: parseInt(line.substr(7, sp - 7), 10) + }; + var colon = line.indexOf(':', sp); + if (colon > -1) { + parts.attribute = line.substr(sp + 1, colon - sp - 1); + parts.value = line.substr(colon + 1); + } else { + parts.attribute = line.substr(sp + 1); + } + return parts; + }; - // add promise support - ['createOffer', 'createAnswer'].forEach(function(method) { - var nativeMethod = webkitRTCPeerConnection.prototype[method]; - webkitRTCPeerConnection.prototype[method] = function() { - var self = this; - if (arguments.length < 1 || (arguments.length === 1 && - typeof(arguments[0]) === 'object')) { - var opts = arguments.length === 1 ? arguments[0] : undefined; - return new Promise(function(resolve, reject) { - nativeMethod.apply(self, [resolve, reject, opts]); - }); - } else { - return nativeMethod.apply(this, arguments); - } - }; - }); + // Extracts DTLS parameters from SDP media section or sessionpart. + // FIXME: for consistency with other functions this should only + // get the fingerprint line as input. See also getIceParameters. + SDPUtils.getDtlsParameters = function(mediaSection, sessionpart) { + var lines = SDPUtils.splitLines(mediaSection); + // Search in session part, too. + lines = lines.concat(SDPUtils.splitLines(sessionpart)); + var fpLine = lines.filter(function(line) { + return line.indexOf('a=fingerprint:') === 0; + })[0].substr(14); + // Note: a=setup line is ignored since we use the 'auto' role. + var dtlsParameters = { + role: 'auto', + fingerprints: [{ + algorithm: fpLine.split(' ')[0], + value: fpLine.split(' ')[1] + }] + }; + return dtlsParameters; + }; - ['setLocalDescription', 'setRemoteDescription', - 'addIceCandidate'].forEach(function(method) { - var nativeMethod = webkitRTCPeerConnection.prototype[method]; - webkitRTCPeerConnection.prototype[method] = function() { - var args = arguments; - var self = this; - return new Promise(function(resolve, reject) { - nativeMethod.apply(self, [args[0], - function() { - resolve(); - if (args.length >= 2) { - args[1].apply(null, []); - } - }, - function(err) { - reject(err); - if (args.length >= 3) { - args[2].apply(null, [err]); - } - }] - ); - }); - }; - }); - }, + // Serializes DTLS parameters to SDP. + SDPUtils.writeDtlsParameters = function(params, setupType) { + var sdp = 'a=setup:' + setupType + '\r\n'; + params.fingerprints.forEach(function(fp) { + sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\r\n'; + }); + return sdp; + }; + // Parses ICE information from SDP media section or sessionpart. + // FIXME: for consistency with other functions this should only + // get the ice-ufrag and ice-pwd lines as input. + SDPUtils.getIceParameters = function(mediaSection, sessionpart) { + var lines = SDPUtils.splitLines(mediaSection); + // Search in session part, too. + lines = lines.concat(SDPUtils.splitLines(sessionpart)); + var iceParameters = { + usernameFragment: lines.filter(function(line) { + return line.indexOf('a=ice-ufrag:') === 0; + })[0].substr(12), + password: lines.filter(function(line) { + return line.indexOf('a=ice-pwd:') === 0; + })[0].substr(10) + }; + return iceParameters; + }; - // Attach a media stream to an element. - attachMediaStream: function(element, stream) { - logging('DEPRECATED, attachMediaStream will soon be removed.'); - if (browserDetails.version >= 43) { - element.srcObject = stream; - } else if (typeof element.src !== 'undefined') { - element.src = URL.createObjectURL(stream); - } else { - logging('Error attaching stream to element.'); - } - }, + // Serializes ICE parameters to SDP. + SDPUtils.writeIceParameters = function(params) { + return 'a=ice-ufrag:' + params.usernameFragment + '\r\n' + + 'a=ice-pwd:' + params.password + '\r\n'; + }; - reattachMediaStream: function(to, from) { - logging('DEPRECATED, reattachMediaStream will soon be removed.'); - if (browserDetails.version >= 43) { - to.srcObject = from.srcObject; - } else { - to.src = from.src; + // Parses the SDP media section and returns RTCRtpParameters. + SDPUtils.parseRtpParameters = function(mediaSection) { + var description = { + codecs: [], + headerExtensions: [], + fecMechanisms: [], + rtcp: [] + }; + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..] + var pt = mline[i]; + var rtpmapline = SDPUtils.matchPrefix( + mediaSection, 'a=rtpmap:' + pt + ' ')[0]; + if (rtpmapline) { + var codec = SDPUtils.parseRtpMap(rtpmapline); + var fmtps = SDPUtils.matchPrefix( + mediaSection, 'a=fmtp:' + pt + ' '); + // Only the first a=fmtp: is considered. + codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {}; + codec.rtcpFeedback = SDPUtils.matchPrefix( + mediaSection, 'a=rtcp-fb:' + pt + ' ') + .map(SDPUtils.parseRtcpFb); + description.codecs.push(codec); + // parse FEC mechanisms from rtpmap lines. + switch (codec.name.toUpperCase()) { + case 'RED': + case 'ULPFEC': + description.fecMechanisms.push(codec.name.toUpperCase()); + break; + default: // only RED and ULPFEC are recognized as FEC mechanisms. + break; + } } } - } + SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function(line) { + description.headerExtensions.push(SDPUtils.parseExtmap(line)); + }); + // FIXME: parse rtcp. + return description; + }; + // Generates parts of the SDP media section describing the capabilities / + // parameters. + SDPUtils.writeRtpDescription = function(kind, caps) { + var sdp = ''; - // Expose public methods. - module.e = { - shimOnTrack: chromeShim.shimOnTrack, - shimSourceObject: chromeShim.shimSourceObject, - shimPeerConnection: chromeShim.shimPeerConnection, - shimGetUserMedia: __webpack_require__(186), - attachMediaStream: chromeShim.attachMediaStream, - reattachMediaStream: chromeShim.reattachMediaStream + // Build the mline. + sdp += 'm=' + kind + ' '; + sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs. + sdp += ' UDP/TLS/RTP/SAVPF '; + sdp += caps.codecs.map(function(codec) { + if (codec.preferredPayloadType !== undefined) { + return codec.preferredPayloadType; + } + return codec.payloadType; + }).join(' ') + '\r\n'; + + sdp += 'c=IN IP4 0.0.0.0\r\n'; + sdp += 'a=rtcp:9 IN IP4 0.0.0.0\r\n'; + + // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb. + caps.codecs.forEach(function(codec) { + sdp += SDPUtils.writeRtpMap(codec); + sdp += SDPUtils.writeFmtp(codec); + sdp += SDPUtils.writeRtcpFb(codec); + }); + // FIXME: add headerExtensions, fecMechanismş and rtcp. + sdp += 'a=rtcp-mux\r\n'; + return sdp; }; - - -/***/ }, -/* 186 */ -/***/ function(module, exports, __webpack_require__) { - - /* - * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. - */ - 'use strict'; - var logging = __webpack_require__(0).log; - // Expose public methods. - module.e = function() { - var constraintsToChrome_ = function(c) { - if (typeof c !== 'object' || c.mandatory || c.optional) { - return c; - } - var cc = {}; - Object.keys(c).forEach(function(key) { - if (key === 'require' || key === 'advanced' || key === 'mediaSource') { - return; - } - var r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]}; - if (r.exact !== undefined && typeof r.exact === 'number') { - r.min = r.max = r.exact; - } - var oldname_ = function(prefix, name) { - if (prefix) { - return prefix + name.charAt(0).toUpperCase() + name.slice(1); + // Parses the SDP media section and returns an array of + // RTCRtpEncodingParameters. + SDPUtils.parseRtpEncodingParameters = function(mediaSection) { + var encodingParameters = []; + var description = SDPUtils.parseRtpParameters(mediaSection); + var hasRed = description.fecMechanisms.indexOf('RED') !== -1; + var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1; + + // filter a=ssrc:... cname:, ignore PlanB-msid + var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') + .map(function(line) { + return SDPUtils.parseSsrcMedia(line); + }) + .filter(function(parts) { + return parts.attribute === 'cname'; + }); + var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc; + var secondarySsrc; + + var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID') + .map(function(line) { + var parts = line.split(' '); + parts.shift(); + return parts.map(function(part) { + return parseInt(part, 10); + }); + }); + if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) { + secondarySsrc = flows[0][1]; + } + + description.codecs.forEach(function(codec) { + if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) { + var encParam = { + ssrc: primarySsrc, + codecPayloadType: parseInt(codec.parameters.apt, 10), + rtx: { + payloadType: codec.payloadType, + ssrc: secondarySsrc } - return (name === 'deviceId') ? 'sourceId' : name; }; - if (r.ideal !== undefined) { - cc.optional = cc.optional || []; - var oc = {}; - if (typeof r.ideal === 'number') { - oc[oldname_('min', key)] = r.ideal; - cc.optional.push(oc); - oc = {}; - oc[oldname_('max', key)] = r.ideal; - cc.optional.push(oc); - } else { - oc[oldname_('', key)] = r.ideal; - cc.optional.push(oc); - } - } - if (r.exact !== undefined && typeof r.exact !== 'number') { - cc.mandatory = cc.mandatory || {}; - cc.mandatory[oldname_('', key)] = r.exact; - } else { - ['min', 'max'].forEach(function(mix) { - if (r[mix] !== undefined) { - cc.mandatory = cc.mandatory || {}; - cc.mandatory[oldname_(mix, key)] = r[mix]; - } - }); + encodingParameters.push(encParam); + if (hasRed) { + encParam = JSON.parse(JSON.stringify(encParam)); + encParam.fec = { + ssrc: secondarySsrc, + mechanism: hasUlpfec ? 'red+ulpfec' : 'red' + }; + encodingParameters.push(encParam); } - }); - if (c.advanced) { - cc.optional = (cc.optional || []).concat(c.advanced); } - return cc; - }; + }); + if (encodingParameters.length === 0 && primarySsrc) { + encodingParameters.push({ + ssrc: primarySsrc + }); + } - var getUserMedia_ = function(constraints, onSuccess, onError) { - if (constraints.audio) { - constraints.audio = constraintsToChrome_(constraints.audio); + // we support both b=AS and b=TIAS but interpret AS as TIAS. + var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b='); + if (bandwidth.length) { + if (bandwidth[0].indexOf('b=TIAS:') === 0) { + bandwidth = parseInt(bandwidth[0].substr(7), 10); + } else if (bandwidth[0].indexOf('b=AS:') === 0) { + bandwidth = parseInt(bandwidth[0].substr(5), 10); } - if (constraints.video) { - constraints.video = constraintsToChrome_(constraints.video); - } - logging('chrome: ' + JSON.stringify(constraints)); - return navigator.webkitGetUserMedia(constraints, onSuccess, onError); - }; - navigator.getUserMedia = getUserMedia_; - - // Returns the result of getUserMedia as a Promise. - var getUserMediaPromise_ = function(constraints) { - return new Promise(function(resolve, reject) { - navigator.getUserMedia(constraints, resolve, reject); + encodingParameters.forEach(function(params) { + params.maxBitrate = bandwidth; }); } + return encodingParameters; + }; - if (!navigator.mediaDevices) { - navigator.mediaDevices = {getUserMedia: getUserMediaPromise_, - enumerateDevices: function() { - return new Promise(function(resolve) { - var kinds = {audio: 'audioinput', video: 'videoinput'}; - return MediaStreamTrack.getSources(function(devices) { - resolve(devices.map(function(device) { - return {label: device.label, - kind: kinds[device.kind], - deviceId: device.id, - groupId: ''}; - })); - }); - }); - }}; - } + SDPUtils.writeSessionBoilerplate = function() { + // FIXME: sess-id should be an NTP timestamp. + return 'v=0\r\n' + + 'o=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\r\n' + + 's=-\r\n' + + 't=0 0\r\n'; + }; - // A shim for getUserMedia method on the mediaDevices object. - // TODO(KaptenJansson) remove once implemented in Chrome stable. - if (!navigator.mediaDevices.getUserMedia) { - navigator.mediaDevices.getUserMedia = function(constraints) { - return getUserMediaPromise_(constraints); - }; + SDPUtils.writeMediaSection = function(transceiver, caps, type, stream) { + var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps); + + // Map ICE parameters (ufrag, pwd) to SDP. + sdp += SDPUtils.writeIceParameters( + transceiver.iceGatherer.getLocalParameters()); + + // Map DTLS parameters to SDP. + sdp += SDPUtils.writeDtlsParameters( + transceiver.dtlsTransport.getLocalParameters(), + type === 'offer' ? 'actpass' : 'active'); + + sdp += 'a=mid:' + transceiver.mid + '\r\n'; + + if (transceiver.rtpSender && transceiver.rtpReceiver) { + sdp += 'a=sendrecv\r\n'; + } else if (transceiver.rtpSender) { + sdp += 'a=sendonly\r\n'; + } else if (transceiver.rtpReceiver) { + sdp += 'a=recvonly\r\n'; } else { - // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia - // function which returns a Promise, it does not accept spec-style - // constraints. - var origGetUserMedia = navigator.mediaDevices.getUserMedia. - bind(navigator.mediaDevices); - navigator.mediaDevices.getUserMedia = function(c) { - if (c) { - logging('spec: ' + JSON.stringify(c)); // whitespace for alignment - c.audio = constraintsToChrome_(c.audio); - c.video = constraintsToChrome_(c.video); - logging('chrome: ' + JSON.stringify(c)); - } - return origGetUserMedia(c); - }.bind(this); + sdp += 'a=inactive\r\n'; } - // Dummy devicechange event methods. - // TODO(KaptenJansson) remove once implemented in Chrome stable. - if (typeof navigator.mediaDevices.addEventListener === 'undefined') { - navigator.mediaDevices.addEventListener = function() { - logging('Dummy mediaDevices.addEventListener called.'); - }; + // FIXME: for RTX there might be multiple SSRCs. Not implemented in Edge yet. + if (transceiver.rtpSender) { + var msid = 'msid:' + stream.id + ' ' + + transceiver.rtpSender.track.id + '\r\n'; + sdp += 'a=' + msid; + sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc + + ' ' + msid; + } + // FIXME: this should be written by writeRtpDescription. + sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc + + ' cname:' + SDPUtils.localCName + '\r\n'; + return sdp; + }; + + // Gets the direction from the mediaSection or the sessionpart. + SDPUtils.getDirection = function(mediaSection, sessionpart) { + // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv. + var lines = SDPUtils.splitLines(mediaSection); + for (var i = 0; i < lines.length; i++) { + switch (lines[i]) { + case 'a=sendrecv': + case 'a=sendonly': + case 'a=recvonly': + case 'a=inactive': + return lines[i].substr(2); + default: + // FIXME: What should happen here? + } } - if (typeof navigator.mediaDevices.removeEventListener === 'undefined') { - navigator.mediaDevices.removeEventListener = function() { - logging('Dummy mediaDevices.removeEventListener called.'); - }; + if (sessionpart) { + return SDPUtils.getDirection(sessionpart); } + return 'sendrecv'; }; + + // Expose public methods. + module.e = SDPUtils; /***/ }, -/* 187 */ +/* 185 */ /***/ function(module, exports, __webpack_require__) { /* @@ -12570,385 +12649,575 @@ return /******/ (function(modules) { // webpackBootstrap * that can be found in the LICENSE file in the root of the source * tree. */ + /* eslint-env node */ + 'use strict'; - // SDP helpers. - var SDPUtils = {}; + // Shimming starts here. + (function() { + // Utils. + var logging = __webpack_require__(1).log; + var browserDetails = __webpack_require__(1).browserDetails; + // Export to the adapter global object visible in the browser. + module.e.browserDetails = browserDetails; + module.e.extractVersion = __webpack_require__(1).extractVersion; + module.e.disableLog = __webpack_require__(1).disableLog; - // Generate an alphanumeric identifier for cname or mids. - // TODO: use UUIDs instead? https://gist.github.com/jed/982883 - SDPUtils.generateIdentifier = function() { - return Math.random().toString(36).substr(2, 10); - }; + // Uncomment the line below if you want logging to occur, including logging + // for the switch statement below. Can also be turned on in the browser via + // adapter.disableLog(false), but then logging from the switch statement below + // will not appear. + // require('./utils').disableLog(false); - // The RTCP CNAME used by all peerconnections from the same JS. - SDPUtils.localCName = SDPUtils.generateIdentifier(); + // Browser shims. + var chromeShim = __webpack_require__(186) || null; + var edgeShim = __webpack_require__(188) || null; + var firefoxShim = __webpack_require__(190) || null; + var safariShim = __webpack_require__(192) || null; + // Shim browser if found. + switch (browserDetails.browser) { + case 'opera': // fallthrough as it uses chrome shims + case 'chrome': + if (!chromeShim || !chromeShim.shimPeerConnection) { + logging('Chrome shim is not included in this adapter release.'); + return; + } + logging('adapter.js shimming chrome.'); + // Export to the adapter global object visible in the browser. + module.e.browserShim = chromeShim; - // Splits SDP into lines, dealing with both CRLF and LF. - SDPUtils.splitLines = function(blob) { - return blob.trim().split('\n').map(function(line) { - return line.trim(); - }); - }; - // Splits SDP into sessionpart and mediasections. Ensures CRLF. - SDPUtils.splitSections = function(blob) { - var parts = blob.split('\r\nm='); - return parts.map(function(part, index) { - return (index > 0 ? 'm=' + part : part).trim() + '\r\n'; - }); - }; + chromeShim.shimGetUserMedia(); + chromeShim.shimMediaStream(); + chromeShim.shimSourceObject(); + chromeShim.shimPeerConnection(); + chromeShim.shimOnTrack(); + break; + case 'firefox': + if (!firefoxShim || !firefoxShim.shimPeerConnection) { + logging('Firefox shim is not included in this adapter release.'); + return; + } + logging('adapter.js shimming firefox.'); + // Export to the adapter global object visible in the browser. + module.e.browserShim = firefoxShim; - // Returns lines that start with a certain prefix. - SDPUtils.matchPrefix = function(blob, prefix) { - return SDPUtils.splitLines(blob).filter(function(line) { - return line.indexOf(prefix) === 0; - }); - }; + firefoxShim.shimGetUserMedia(); + firefoxShim.shimSourceObject(); + firefoxShim.shimPeerConnection(); + firefoxShim.shimOnTrack(); + break; + case 'edge': + if (!edgeShim || !edgeShim.shimPeerConnection) { + logging('MS edge shim is not included in this adapter release.'); + return; + } + logging('adapter.js shimming edge.'); + // Export to the adapter global object visible in the browser. + module.e.browserShim = edgeShim; - // Parses an ICE candidate line. Sample input: - // candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 rport 55996" - SDPUtils.parseCandidate = function(line) { - var parts; - // Parse both variants. - if (line.indexOf('a=candidate:') === 0) { - parts = line.substring(12).split(' '); - } else { - parts = line.substring(10).split(' '); + edgeShim.shimGetUserMedia(); + edgeShim.shimPeerConnection(); + break; + case 'safari': + if (!safariShim) { + logging('Safari shim is not included in this adapter release.'); + return; + } + logging('adapter.js shimming safari.'); + // Export to the adapter global object visible in the browser. + module.e.browserShim = safariShim; + + safariShim.shimGetUserMedia(); + break; + default: + logging('Unsupported browser!'); } + })(); + + +/***/ }, +/* 186 */ +/***/ function(module, exports, __webpack_require__) { + - var candidate = { - foundation: parts[0], - component: parts[1], - protocol: parts[2].toLowerCase(), - priority: parseInt(parts[3], 10), - ip: parts[4], - port: parseInt(parts[5], 10), - // skip parts[6] == 'typ' - type: parts[7] - }; + /* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ + /* eslint-env node */ + 'use strict'; + var logging = __webpack_require__(1).log; + var browserDetails = __webpack_require__(1).browserDetails; - for (var i = 8; i < parts.length; i += 2) { - switch (parts[i]) { - case 'raddr': - candidate.relatedAddress = parts[i + 1]; - break; - case 'rport': - candidate.relatedPort = parseInt(parts[i + 1], 10); - break; - case 'tcptype': - candidate.tcpType = parts[i + 1]; - break; - default: // Unknown extensions are silently ignored. - break; + var chromeShim = { + shimMediaStream: function() { + window.MediaStream = window.MediaStream || window.webkitMediaStream; + }, + + shimOnTrack: function() { + if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in + window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { + get: function() { + return this._ontrack; + }, + set: function(f) { + var self = this; + if (this._ontrack) { + this.removeEventListener('track', this._ontrack); + this.removeEventListener('addstream', this._ontrackpoly); + } + this.addEventListener('track', this._ontrack = f); + this.addEventListener('addstream', this._ontrackpoly = function(e) { + // onaddstream does not fire when a track is added to an existing + // stream. But stream.onaddtrack is implemented so we use that. + e.stream.addEventListener('addtrack', function(te) { + var event = new Event('track'); + event.track = te.track; + event.receiver = {track: te.track}; + event.streams = [e.stream]; + self.dispatchEvent(event); + }); + e.stream.getTracks().forEach(function(track) { + var event = new Event('track'); + event.track = track; + event.receiver = {track: track}; + event.streams = [e.stream]; + this.dispatchEvent(event); + }.bind(this)); + }.bind(this)); + } + }); } - } - return candidate; - }; + }, - // Translates a candidate object into SDP candidate attribute. - SDPUtils.writeCandidate = function(candidate) { - var sdp = []; - sdp.push(candidate.foundation); - sdp.push(candidate.component); - sdp.push(candidate.protocol.toUpperCase()); - sdp.push(candidate.priority); - sdp.push(candidate.ip); - sdp.push(candidate.port); + shimSourceObject: function() { + if (typeof window === 'object') { + if (window.HTMLMediaElement && + !('srcObject' in window.HTMLMediaElement.prototype)) { + // Shim the srcObject property, once, when HTMLMediaElement is found. + Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', { + get: function() { + return this._srcObject; + }, + set: function(stream) { + var self = this; + // Use _srcObject as a private property for this shim + this._srcObject = stream; + if (this.src) { + URL.revokeObjectURL(this.src); + } - var type = candidate.type; - sdp.push('typ'); - sdp.push(type); - if (type !== 'host' && candidate.relatedAddress && - candidate.relatedPort) { - sdp.push('raddr'); - sdp.push(candidate.relatedAddress); // was: relAddr - sdp.push('rport'); - sdp.push(candidate.relatedPort); // was: relPort - } - if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') { - sdp.push('tcptype'); - sdp.push(candidate.tcpType); - } - return 'candidate:' + sdp.join(' '); - }; + if (!stream) { + this.src = ''; + return; + } + this.src = URL.createObjectURL(stream); + // We need to recreate the blob url when a track is added or + // removed. Doing it manually since we want to avoid a recursion. + stream.addEventListener('addtrack', function() { + if (self.src) { + URL.revokeObjectURL(self.src); + } + self.src = URL.createObjectURL(stream); + }); + stream.addEventListener('removetrack', function() { + if (self.src) { + URL.revokeObjectURL(self.src); + } + self.src = URL.createObjectURL(stream); + }); + } + }); + } + } + }, - // Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input: - // a=rtpmap:111 opus/48000/2 - SDPUtils.parseRtpMap = function(line) { - var parts = line.substr(9).split(' '); - var parsed = { - payloadType: parseInt(parts.shift(), 10) // was: id - }; + shimPeerConnection: function() { + // The RTCPeerConnection object. + window.RTCPeerConnection = function(pcConfig, pcConstraints) { + // Translate iceTransportPolicy to iceTransports, + // see https://code.google.com/p/webrtc/issues/detail?id=4869 + logging('PeerConnection'); + if (pcConfig && pcConfig.iceTransportPolicy) { + pcConfig.iceTransports = pcConfig.iceTransportPolicy; + } - parts = parts[0].split('/'); + var pc = new webkitRTCPeerConnection(pcConfig, pcConstraints); + var origGetStats = pc.getStats.bind(pc); + pc.getStats = function(selector, successCallback, errorCallback) { + var self = this; + var args = arguments; - parsed.name = parts[0]; - parsed.clockRate = parseInt(parts[1], 10); // was: clockrate - parsed.numChannels = parts.length === 3 ? parseInt(parts[2], 10) : 1; // was: channels - return parsed; - }; + // If selector is a function then we are in the old style stats so just + // pass back the original getStats format to avoid breaking old users. + if (arguments.length > 0 && typeof selector === 'function') { + return origGetStats(selector, successCallback); + } - // Generate an a=rtpmap line from RTCRtpCodecCapability or RTCRtpCodecParameters. - SDPUtils.writeRtpMap = function(codec) { - var pt = codec.payloadType; - if (codec.preferredPayloadType !== undefined) { - pt = codec.preferredPayloadType; - } - return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate + - (codec.numChannels !== 1 ? '/' + codec.numChannels : '') + '\r\n'; - }; + var fixChromeStats_ = function(response) { + var standardReport = {}; + var reports = response.result(); + reports.forEach(function(report) { + var standardStats = { + id: report.id, + timestamp: report.timestamp, + type: report.type + }; + report.names().forEach(function(name) { + standardStats[name] = report.stat(name); + }); + standardReport[standardStats.id] = standardStats; + }); - // Parses an ftmp line, returns dictionary. Sample input: - // a=fmtp:96 vbr=on;cng=on - // Also deals with vbr=on; cng=on - SDPUtils.parseFmtp = function(line) { - var parsed = {}; - var kv; - var parts = line.substr(line.indexOf(' ') + 1).split(';'); - for (var j = 0; j < parts.length; j++) { - kv = parts[j].trim().split('='); - parsed[kv[0].trim()] = kv[1]; - } - return parsed; - }; + return standardReport; + }; - // Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters. - SDPUtils.writeFtmp = function(codec) { - var line = ''; - var pt = codec.payloadType; - if (codec.preferredPayloadType !== undefined) { - pt = codec.preferredPayloadType; - } - if (codec.parameters && codec.parameters.length) { - var params = []; - Object.keys(codec.parameters).forEach(function(param) { - params.push(param + '=' + codec.parameters[param]); - }); - line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\r\n'; - } - return line; - }; + // shim getStats with maplike support + var makeMapStats = function(stats, legacyStats) { + var map = new Map(Object.keys(stats).map(function(key) { + return[key, stats[key]]; + })); + legacyStats = legacyStats || stats; + Object.keys(legacyStats).forEach(function(key) { + map[key] = legacyStats[key]; + }); + return map; + }; - // Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input: - // a=rtcp-fb:98 nack rpsi - SDPUtils.parseRtcpFb = function(line) { - var parts = line.substr(line.indexOf(' ') + 1).split(' '); - return { - type: parts.shift(), - parameter: parts.join(' ') - }; - }; - // Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters. - SDPUtils.writeRtcpFb = function(codec) { - var lines = ''; - var pt = codec.payloadType; - if (codec.preferredPayloadType !== undefined) { - pt = codec.preferredPayloadType; - } - if (codec.rtcpFeedback && codec.rtcpFeedback.length) { - // FIXME: special handling for trr-int? - codec.rtcpFeedback.forEach(function(fb) { - lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + ' ' + fb.parameter + - '\r\n'; - }); - } - return lines; - }; + if (arguments.length >= 2) { + var successCallbackWrapper_ = function(response) { + args[1](makeMapStats(fixChromeStats_(response))); + }; - // Parses an RFC 5576 ssrc media attribute. Sample input: - // a=ssrc:3735928559 cname:something - SDPUtils.parseSsrcMedia = function(line) { - var sp = line.indexOf(' '); - var parts = { - ssrc: line.substr(7, sp - 7), - }; - var colon = line.indexOf(':', sp); - if (colon > -1) { - parts.attribute = line.substr(sp + 1, colon - sp - 1); - parts.value = line.substr(colon + 1); - } else { - parts.attribute = line.substr(sp + 1); - } - return parts; - }; + return origGetStats.apply(this, [successCallbackWrapper_, + arguments[0]]); + } - // Extracts DTLS parameters from SDP media section or sessionpart. - // FIXME: for consistency with other functions this should only - // get the fingerprint line as input. See also getIceParameters. - SDPUtils.getDtlsParameters = function(mediaSection, sessionpart) { - var lines = SDPUtils.splitLines(mediaSection); - lines = lines.concat(SDPUtils.splitLines(sessionpart)); // Search in session part, too. - var fpLine = lines.filter(function(line) { - return line.indexOf('a=fingerprint:') === 0; - })[0].substr(14); - // Note: a=setup line is ignored since we use the 'auto' role. - var dtlsParameters = { - role: 'auto', - fingerprints: [{ - algorithm: fpLine.split(' ')[0], - value: fpLine.split(' ')[1] - }] - }; - return dtlsParameters; - }; + // promise-support + return new Promise(function(resolve, reject) { + if (args.length === 1 && typeof selector === 'object') { + origGetStats.apply(self, [ + function(response) { + resolve(makeMapStats(fixChromeStats_(response))); + }, reject]); + } else { + // Preserve legacy chrome stats only on legacy access of stats obj + origGetStats.apply(self, [ + function(response) { + resolve(makeMapStats(fixChromeStats_(response), + response.result())); + }, reject]); + } + }).then(successCallback, errorCallback); + }; - // Serializes DTLS parameters to SDP. - SDPUtils.writeDtlsParameters = function(params, setupType) { - var sdp = 'a=setup:' + setupType + '\r\n'; - params.fingerprints.forEach(function(fp) { - sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\r\n'; - }); - return sdp; - }; - // Parses ICE information from SDP media section or sessionpart. - // FIXME: for consistency with other functions this should only - // get the ice-ufrag and ice-pwd lines as input. - SDPUtils.getIceParameters = function(mediaSection, sessionpart) { - var lines = SDPUtils.splitLines(mediaSection); - lines = lines.concat(SDPUtils.splitLines(sessionpart)); // Search in session part, too. - var iceParameters = { - usernameFragment: lines.filter(function(line) { - return line.indexOf('a=ice-ufrag:') === 0; - })[0].substr(12), - password: lines.filter(function(line) { - return line.indexOf('a=ice-pwd:') === 0; - })[0].substr(10) - }; - return iceParameters; - }; + return pc; + }; + window.RTCPeerConnection.prototype = webkitRTCPeerConnection.prototype; - // Serializes ICE parameters to SDP. - SDPUtils.writeIceParameters = function(params) { - return 'a=ice-ufrag:' + params.usernameFragment + '\r\n' + - 'a=ice-pwd:' + params.password + '\r\n'; - }; + // wrap static methods. Currently just generateCertificate. + if (webkitRTCPeerConnection.generateCertificate) { + Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { + get: function() { + return webkitRTCPeerConnection.generateCertificate; + } + }); + } - // Parses the SDP media section and returns RTCRtpParameters. - SDPUtils.parseRtpParameters = function(mediaSection) { - var description = { - codecs: [], - headerExtensions: [], - fecMechanisms: [], - rtcp: [] - }; - var lines = SDPUtils.splitLines(mediaSection); - var mline = lines[0].split(' '); - for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..] - var pt = mline[i]; - var rtpmapline = SDPUtils.matchPrefix( - mediaSection, 'a=rtpmap:' + pt + ' ')[0]; - if (rtpmapline) { - var codec = SDPUtils.parseRtpMap(rtpmapline); - var fmtps = SDPUtils.matchPrefix( - mediaSection, 'a=fmtp:' + pt + ' '); - // Only the first a=fmtp: is considered. - codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {}; - codec.rtcpFeedback = SDPUtils.matchPrefix( - mediaSection, 'a=rtcp-fb:' + pt + ' ') - .map(SDPUtils.parseRtcpFb); - description.codecs.push(codec); + // add promise support -- natively available in Chrome 51 + if (browserDetails.version < 51) { + ['createOffer', 'createAnswer'].forEach(function(method) { + var nativeMethod = webkitRTCPeerConnection.prototype[method]; + webkitRTCPeerConnection.prototype[method] = function() { + var self = this; + if (arguments.length < 1 || (arguments.length === 1 && + typeof arguments[0] === 'object')) { + var opts = arguments.length === 1 ? arguments[0] : undefined; + return new Promise(function(resolve, reject) { + nativeMethod.apply(self, [resolve, reject, opts]); + }); + } + return nativeMethod.apply(this, arguments); + }; + }); + + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'] + .forEach(function(method) { + var nativeMethod = webkitRTCPeerConnection.prototype[method]; + webkitRTCPeerConnection.prototype[method] = function() { + var args = arguments; + var self = this; + var promise = new Promise(function(resolve, reject) { + nativeMethod.apply(self, [args[0], resolve, reject]); + }); + if (args.length < 2) { + return promise; + } + return promise.then(function() { + args[1].apply(null, []); + }, + function(err) { + if (args.length >= 3) { + args[2].apply(null, [err]); + } + }); + }; + }); } - } - // FIXME: parse headerExtensions, fecMechanisms and rtcp. - return description; - }; - // Generates parts of the SDP media section describing the capabilities / parameters. - SDPUtils.writeRtpDescription = function(kind, caps) { - var sdp = ''; + // support for addIceCandidate(null) + var nativeAddIceCandidate = + RTCPeerConnection.prototype.addIceCandidate; + RTCPeerConnection.prototype.addIceCandidate = function() { + return arguments[0] === null ? Promise.resolve() + : nativeAddIceCandidate.apply(this, arguments); + }; - // Build the mline. - sdp += 'm=' + kind + ' '; - sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs. - sdp += ' UDP/TLS/RTP/SAVPF '; - sdp += caps.codecs.map(function(codec) { - if (codec.preferredPayloadType !== undefined) { - return codec.preferredPayloadType; + // shim implicit creation of RTCSessionDescription/RTCIceCandidate + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'] + .forEach(function(method) { + var nativeMethod = webkitRTCPeerConnection.prototype[method]; + webkitRTCPeerConnection.prototype[method] = function() { + arguments[0] = new ((method === 'addIceCandidate') ? + RTCIceCandidate : RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }; + }); + }, + + // Attach a media stream to an element. + attachMediaStream: function(element, stream) { + logging('DEPRECATED, attachMediaStream will soon be removed.'); + if (browserDetails.version >= 43) { + element.srcObject = stream; + } else if (typeof element.src !== 'undefined') { + element.src = URL.createObjectURL(stream); + } else { + logging('Error attaching stream to element.'); + } + }, + + reattachMediaStream: function(to, from) { + logging('DEPRECATED, reattachMediaStream will soon be removed.'); + if (browserDetails.version >= 43) { + to.srcObject = from.srcObject; + } else { + to.src = from.src; } - return codec.payloadType; - }).join(' ') + '\r\n'; + } + }; - sdp += 'c=IN IP4 0.0.0.0\r\n'; - sdp += 'a=rtcp:9 IN IP4 0.0.0.0\r\n'; - // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb. - caps.codecs.forEach(function(codec) { - sdp += SDPUtils.writeRtpMap(codec); - sdp += SDPUtils.writeFtmp(codec); - sdp += SDPUtils.writeRtcpFb(codec); - }); - // FIXME: add headerExtensions, fecMechanismş and rtcp. - sdp += 'a=rtcp-mux\r\n'; - return sdp; + // Expose public methods. + module.e = { + shimMediaStream: chromeShim.shimMediaStream, + shimOnTrack: chromeShim.shimOnTrack, + shimSourceObject: chromeShim.shimSourceObject, + shimPeerConnection: chromeShim.shimPeerConnection, + shimGetUserMedia: __webpack_require__(187), + attachMediaStream: chromeShim.attachMediaStream, + reattachMediaStream: chromeShim.reattachMediaStream }; + + +/***/ }, +/* 187 */ +/***/ function(module, exports, __webpack_require__) { + + /* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ + /* eslint-env node */ + 'use strict'; + var logging = __webpack_require__(1).log; - SDPUtils.writeSessionBoilerplate = function() { - // FIXME: sess-id should be an NTP timestamp. - return 'v=0\r\n' + - 'o=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\r\n' + - 's=-\r\n' + - 't=0 0\r\n'; - }; + // Expose public methods. + module.e = function() { + var constraintsToChrome_ = function(c) { + if (typeof c !== 'object' || c.mandatory || c.optional) { + return c; + } + var cc = {}; + Object.keys(c).forEach(function(key) { + if (key === 'require' || key === 'advanced' || key === 'mediaSource') { + return; + } + var r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]}; + if (r.exact !== undefined && typeof r.exact === 'number') { + r.min = r.max = r.exact; + } + var oldname_ = function(prefix, name) { + if (prefix) { + return prefix + name.charAt(0).toUpperCase() + name.slice(1); + } + return (name === 'deviceId') ? 'sourceId' : name; + }; + if (r.ideal !== undefined) { + cc.optional = cc.optional || []; + var oc = {}; + if (typeof r.ideal === 'number') { + oc[oldname_('min', key)] = r.ideal; + cc.optional.push(oc); + oc = {}; + oc[oldname_('max', key)] = r.ideal; + cc.optional.push(oc); + } else { + oc[oldname_('', key)] = r.ideal; + cc.optional.push(oc); + } + } + if (r.exact !== undefined && typeof r.exact !== 'number') { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_('', key)] = r.exact; + } else { + ['min', 'max'].forEach(function(mix) { + if (r[mix] !== undefined) { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_(mix, key)] = r[mix]; + } + }); + } + }); + if (c.advanced) { + cc.optional = (cc.optional || []).concat(c.advanced); + } + return cc; + }; - SDPUtils.writeMediaSection = function(transceiver, caps, type, stream) { - var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps); + var shimConstraints_ = function(constraints, func) { + constraints = JSON.parse(JSON.stringify(constraints)); + if (constraints && constraints.audio) { + constraints.audio = constraintsToChrome_(constraints.audio); + } + if (constraints && typeof constraints.video === 'object') { + // Shim facingMode for mobile, where it defaults to "user". + var face = constraints.video.facingMode; + face = face && ((typeof face === 'object') ? face : {ideal: face}); + + if ((face && (face.exact === 'user' || face.exact === 'environment' || + face.ideal === 'user' || face.ideal === 'environment')) && + !(navigator.mediaDevices.getSupportedConstraints && + navigator.mediaDevices.getSupportedConstraints().facingMode)) { + delete constraints.video.facingMode; + if (face.exact === 'environment' || face.ideal === 'environment') { + // Look for "back" in label, or use last cam (typically back cam). + return navigator.mediaDevices.enumerateDevices() + .then(function(devices) { + devices = devices.filter(function(d) { + return d.kind === 'videoinput'; + }); + var back = devices.find(function(d) { + return d.label.toLowerCase().indexOf('back') !== -1; + }) || (devices.length && devices[devices.length - 1]); + if (back) { + constraints.video.deviceId = face.exact ? {exact: back.deviceId} : + {ideal: back.deviceId}; + } + constraints.video = constraintsToChrome_(constraints.video); + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }); + } + } + constraints.video = constraintsToChrome_(constraints.video); + } + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }; - // Map ICE parameters (ufrag, pwd) to SDP. - sdp += SDPUtils.writeIceParameters( - transceiver.iceGatherer.getLocalParameters()); + var shimError_ = function(e) { + return { + name: { + PermissionDeniedError: 'NotAllowedError', + ConstraintNotSatisfiedError: 'OverconstrainedError' + }[e.name] || e.name, + message: e.message, + constraint: e.constraintName, + toString: function() { + return this.name + (this.message && ': ') + this.message; + } + }; + }; - // Map DTLS parameters to SDP. - sdp += SDPUtils.writeDtlsParameters( - transceiver.dtlsTransport.getLocalParameters(), - type === 'offer' ? 'actpass' : 'active'); + var getUserMedia_ = function(constraints, onSuccess, onError) { + shimConstraints_(constraints, function(c) { + navigator.webkitGetUserMedia(c, onSuccess, function(e) { + onError(shimError_(e)); + }); + }); + }; - sdp += 'a=mid:' + transceiver.mid + '\r\n'; + navigator.getUserMedia = getUserMedia_; - if (transceiver.rtpSender && transceiver.rtpReceiver) { - sdp += 'a=sendrecv\r\n'; - } else if (transceiver.rtpSender) { - sdp += 'a=sendonly\r\n'; - } else if (transceiver.rtpReceiver) { - sdp += 'a=recvonly\r\n'; - } else { - sdp += 'a=inactive\r\n'; + // Returns the result of getUserMedia as a Promise. + var getUserMediaPromise_ = function(constraints) { + return new Promise(function(resolve, reject) { + navigator.getUserMedia(constraints, resolve, reject); + }); + }; + + if (!navigator.mediaDevices) { + navigator.mediaDevices = { + getUserMedia: getUserMediaPromise_, + enumerateDevices: function() { + return new Promise(function(resolve) { + var kinds = {audio: 'audioinput', video: 'videoinput'}; + return MediaStreamTrack.getSources(function(devices) { + resolve(devices.map(function(device) { + return {label: device.label, + kind: kinds[device.kind], + deviceId: device.id, + groupId: ''}; + })); + }); + }); + } + }; } - // FIXME: for RTX there might be multiple SSRCs. Not implemented in Edge yet. - if (transceiver.rtpSender) { - var msid = 'msid:' + stream.id + ' ' + - transceiver.rtpSender.track.id + '\r\n'; - sdp += 'a=' + msid; - sdp += 'a=ssrc:' + transceiver.sendSsrc + ' ' + msid; + // A shim for getUserMedia method on the mediaDevices object. + // TODO(KaptenJansson) remove once implemented in Chrome stable. + if (!navigator.mediaDevices.getUserMedia) { + navigator.mediaDevices.getUserMedia = function(constraints) { + return getUserMediaPromise_(constraints); + }; + } else { + // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia + // function which returns a Promise, it does not accept spec-style + // constraints. + var origGetUserMedia = navigator.mediaDevices.getUserMedia. + bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function(cs) { + return shimConstraints_(cs, function(c) { + return origGetUserMedia(c).catch(function(e) { + return Promise.reject(shimError_(e)); + }); + }); + }; } - // FIXME: this should be written by writeRtpDescription. - sdp += 'a=ssrc:' + transceiver.sendSsrc + ' cname:' + - SDPUtils.localCName + '\r\n'; - return sdp; - }; - // Gets the direction from the mediaSection or the sessionpart. - SDPUtils.getDirection = function(mediaSection, sessionpart) { - // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv. - var lines = SDPUtils.splitLines(mediaSection); - for (var i = 0; i < lines.length; i++) { - switch (lines[i]) { - case 'a=sendrecv': - case 'a=sendonly': - case 'a=recvonly': - case 'a=inactive': - return lines[i].substr(2); - } + // Dummy devicechange event methods. + // TODO(KaptenJansson) remove once implemented in Chrome stable. + if (typeof navigator.mediaDevices.addEventListener === 'undefined') { + navigator.mediaDevices.addEventListener = function() { + logging('Dummy mediaDevices.addEventListener called.'); + }; } - if (sessionpart) { - return SDPUtils.getDirection(sessionpart); + if (typeof navigator.mediaDevices.removeEventListener === 'undefined') { + navigator.mediaDevices.removeEventListener = function() { + logging('Dummy mediaDevices.removeEventListener called.'); + }; } - return 'sendrecv'; }; - - // Expose public methods. - module.e = SDPUtils; /***/ }, @@ -12962,11 +13231,11 @@ return /******/ (function(modules) { // webpackBootstrap * that can be found in the LICENSE file in the root of the source * tree. */ + /* eslint-env node */ 'use strict'; - var SDPUtils = __webpack_require__(187); - var logging = __webpack_require__(0).log; - var browserDetails = __webpack_require__(0).browserDetails; + var SDPUtils = __webpack_require__(184); + var logging = __webpack_require__(1).log; var edgeShim = { shimPeerConnection: function() { @@ -12992,10 +13261,10 @@ return /******/ (function(modules) { // webpackBootstrap var self = this; var _eventTarget = document.createDocumentFragment(); - ['addEventListener', 'removeEventListener', 'dispatchEvent'].forEach( - function(method) { - self[method] = _eventTarget[method].bind(_eventTarget); - }); + ['addEventListener', 'removeEventListener', 'dispatchEvent'] + .forEach(function(method) { + self[method] = _eventTarget[method].bind(_eventTarget); + }); this.onicecandidate = null; this.onaddstream = null; @@ -13008,8 +13277,12 @@ return /******/ (function(modules) { // webpackBootstrap this.localStreams = []; this.remoteStreams = []; - this.getLocalStreams = function() { return self.localStreams; }; - this.getRemoteStreams = function() { return self.remoteStreams; }; + this.getLocalStreams = function() { + return self.localStreams; + }; + this.getRemoteStreams = function() { + return self.remoteStreams; + }; this.localDescription = new RTCSessionDescription({ type: '', @@ -13036,6 +13309,9 @@ return /******/ (function(modules) { // webpackBootstrap case 'none': // FIXME: remove once implementation and spec have added this. throw new TypeError('iceTransportPolicy "none" not supported'); + default: + // don't set iceTransportPolicy. + break; } } if (config && config.iceServers) { @@ -13045,9 +13321,10 @@ return /******/ (function(modules) { // webpackBootstrap this.iceOptions.iceServers = config.iceServers.filter(function(server) { if (server && server.urls) { server.urls = server.urls.filter(function(url) { - return url.indexOf('transport=udp') !== -1; + return url.indexOf('turn:') === 0 && + url.indexOf('transport=udp') !== -1; })[0]; - return true; + return !!server.urls; } return false; }); @@ -13066,27 +13343,37 @@ return /******/ (function(modules) { // webpackBootstrap window.RTCPeerConnection.prototype._emitBufferedCandidates = function() { var self = this; var sections = SDPUtils.splitSections(self.localDescription.sdp); - // FIXME: need to apply ice candidates in a way which is async but in-order + // FIXME: need to apply ice candidates in a way which is async but + // in-order this._localIceCandidatesBuffer.forEach(function(event) { - var end = !event.candidate || Object.keys(event.candidate).length == 0; + var end = !event.candidate || Object.keys(event.candidate).length === 0; if (end) { for (var j = 1; j < sections.length; j++) { - sections[j] += 'a=end-of-candidates\r\n'; + if (sections[j].indexOf('\r\na=end-of-candidates\r\n') === -1) { + sections[j] += 'a=end-of-candidates\r\n'; + } } - } else { + } else if (event.candidate.candidate.indexOf('typ endOfCandidates') + === -1) { sections[event.candidate.sdpMLineIndex + 1] += 'a=' + event.candidate.candidate + '\r\n'; } + self.localDescription.sdp = sections.join(''); self.dispatchEvent(event); if (self.onicecandidate !== null) { self.onicecandidate(event); } - if (!event.candidate) { - self.iceGatheringState = 'complete'; + if (!event.candidate && self.iceGatheringState !== 'complete') { + var complete = self.transceivers.every(function(transceiver) { + return transceiver.iceGatherer && + transceiver.iceGatherer.state === 'completed'; + }); + if (complete) { + self.iceGatheringState = 'complete'; + } } }); this._localIceCandidatesBuffer = []; - this.localDescription.sdp = sections.join(''); }; window.RTCPeerConnection.prototype.addStream = function(stream) { @@ -13104,138 +13391,153 @@ return /******/ (function(modules) { // webpackBootstrap } }; + window.RTCPeerConnection.prototype.getSenders = function() { + return this.transceivers.filter(function(transceiver) { + return !!transceiver.rtpSender; + }) + .map(function(transceiver) { + return transceiver.rtpSender; + }); + }; + + window.RTCPeerConnection.prototype.getReceivers = function() { + return this.transceivers.filter(function(transceiver) { + return !!transceiver.rtpReceiver; + }) + .map(function(transceiver) { + return transceiver.rtpReceiver; + }); + }; + // Determines the intersection of local and remote capabilities. window.RTCPeerConnection.prototype._getCommonCapabilities = function(localCapabilities, remoteCapabilities) { - var commonCapabilities = { - codecs: [], - headerExtensions: [], - fecMechanisms: [] - }; - localCapabilities.codecs.forEach(function(lCodec) { - for (var i = 0; i < remoteCapabilities.codecs.length; i++) { - var rCodec = remoteCapabilities.codecs[i]; - if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() && - lCodec.clockRate === rCodec.clockRate && - lCodec.numChannels === rCodec.numChannels) { - // push rCodec so we reply with offerer payload type - commonCapabilities.codecs.push(rCodec); - - // FIXME: also need to determine intersection between - // .rtcpFeedback and .parameters - break; - } - } - }); + var commonCapabilities = { + codecs: [], + headerExtensions: [], + fecMechanisms: [] + }; + localCapabilities.codecs.forEach(function(lCodec) { + for (var i = 0; i < remoteCapabilities.codecs.length; i++) { + var rCodec = remoteCapabilities.codecs[i]; + if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() && + lCodec.clockRate === rCodec.clockRate && + lCodec.numChannels === rCodec.numChannels) { + // push rCodec so we reply with offerer payload type + commonCapabilities.codecs.push(rCodec); + + // FIXME: also need to determine intersection between + // .rtcpFeedback and .parameters + break; + } + } + }); - localCapabilities.headerExtensions.forEach(function(lHeaderExtension) { - for (var i = 0; i < remoteCapabilities.headerExtensions.length; i++) { - var rHeaderExtension = remoteCapabilities.headerExtensions[i]; - if (lHeaderExtension.uri === rHeaderExtension.uri) { - commonCapabilities.headerExtensions.push(rHeaderExtension); - break; - } - } - }); + localCapabilities.headerExtensions + .forEach(function(lHeaderExtension) { + for (var i = 0; i < remoteCapabilities.headerExtensions.length; + i++) { + var rHeaderExtension = remoteCapabilities.headerExtensions[i]; + if (lHeaderExtension.uri === rHeaderExtension.uri) { + commonCapabilities.headerExtensions.push(rHeaderExtension); + break; + } + } + }); - // FIXME: fecMechanisms - return commonCapabilities; - }; + // FIXME: fecMechanisms + return commonCapabilities; + }; // Create ICE gatherer, ICE transport and DTLS transport. window.RTCPeerConnection.prototype._createIceAndDtlsTransports = function(mid, sdpMLineIndex) { - var self = this; - var iceGatherer = new RTCIceGatherer(self.iceOptions); - var iceTransport = new RTCIceTransport(iceGatherer); - iceGatherer.onlocalcandidate = function(evt) { - var event = new Event('icecandidate'); - event.candidate = {sdpMid: mid, sdpMLineIndex: sdpMLineIndex}; - - var cand = evt.candidate; - var end = !cand || Object.keys(cand).length === 0; - // Edge emits an empty object for RTCIceCandidateComplete‥ - if (end) { - // polyfill since RTCIceGatherer.state is not implemented in Edge 10547 yet. - if (iceGatherer.state === undefined) { - iceGatherer.state = 'completed'; - } + var self = this; + var iceGatherer = new RTCIceGatherer(self.iceOptions); + var iceTransport = new RTCIceTransport(iceGatherer); + iceGatherer.onlocalcandidate = function(evt) { + var event = new Event('icecandidate'); + event.candidate = {sdpMid: mid, sdpMLineIndex: sdpMLineIndex}; + + var cand = evt.candidate; + var end = !cand || Object.keys(cand).length === 0; + // Edge emits an empty object for RTCIceCandidateComplete‥ + if (end) { + // polyfill since RTCIceGatherer.state is not implemented in + // Edge 10547 yet. + if (iceGatherer.state === undefined) { + iceGatherer.state = 'completed'; + } - // Emit a candidate with type endOfCandidates to make the samples work. - // Edge requires addIceCandidate with this empty candidate to start checking. - // The real solution is to signal end-of-candidates to the other side when - // getting the null candidate but some apps (like the samples) don't do that. - event.candidate.candidate = - 'candidate:1 1 udp 1 0.0.0.0 9 typ endOfCandidates'; - } else { - // RTCIceCandidate doesn't have a component, needs to be added - cand.component = iceTransport.component === 'RTCP' ? 2 : 1; - event.candidate.candidate = SDPUtils.writeCandidate(cand); - } + // Emit a candidate with type endOfCandidates to make the samples + // work. Edge requires addIceCandidate with this empty candidate + // to start checking. The real solution is to signal + // end-of-candidates to the other side when getting the null + // candidate but some apps (like the samples) don't do that. + event.candidate.candidate = + 'candidate:1 1 udp 1 0.0.0.0 9 typ endOfCandidates'; + } else { + // RTCIceCandidate doesn't have a component, needs to be added + cand.component = iceTransport.component === 'RTCP' ? 2 : 1; + event.candidate.candidate = SDPUtils.writeCandidate(cand); + } - var complete = self.transceivers.every(function(transceiver) { - return transceiver.iceGatherer && - transceiver.iceGatherer.state === 'completed'; - }); - // update .localDescription with candidate and (potentially) end-of-candidates. - // To make this harder, the gatherer might emit candidates before localdescription - // is set. To make things worse, gather.getLocalCandidates still errors in - // Edge 10547 when no candidates have been gathered yet. - if (self.localDescription && self.localDescription.type !== '') { - var sections = SDPUtils.splitSections(self.localDescription.sdp); - sections[sdpMLineIndex + 1] += (!end ? 'a=' + event.candidate.candidate : - 'a=end-of-candidates') + '\r\n'; - self.localDescription.sdp = sections.join(''); - } - - // Emit candidate if localDescription is set. - // Also emits null candidate when all gatherers are complete. - switch(self.iceGatheringState) { - case 'new': - self._localIceCandidatesBuffer.push(event); - if (complete) { - self._localIceCandidatesBuffer.push(new Event('icecandidate')); - } - break; - case 'gathering': - self._emitBufferedCandidates(); - self.dispatchEvent(event); - if (self.onicecandidate !== null) { - self.onicecandidate(event); - } - if (complete) { - self.dispatchEvent(new Event('icecandidate')); - if (self.onicecandidate !== null) { - self.onicecandidate(new Event('icecandidate')); + var complete = self.transceivers.every(function(transceiver) { + return transceiver.iceGatherer && + transceiver.iceGatherer.state === 'completed'; + }); + + // Emit candidate if localDescription is set. + // Also emits null candidate when all gatherers are complete. + switch (self.iceGatheringState) { + case 'new': + self._localIceCandidatesBuffer.push(event); + if (end && complete) { + self._localIceCandidatesBuffer.push( + new Event('icecandidate')); + } + break; + case 'gathering': + self._emitBufferedCandidates(); + self.dispatchEvent(event); + if (self.onicecandidate !== null) { + self.onicecandidate(event); + } + if (complete) { + self.dispatchEvent(new Event('icecandidate')); + if (self.onicecandidate !== null) { + self.onicecandidate(new Event('icecandidate')); + } + self.iceGatheringState = 'complete'; + } + break; + case 'complete': + // should not happen... currently! + break; + default: // no-op. + break; } - self.iceGatheringState = 'complete'; - } - break; - case 'complete': - // should not happen... currently! - break; - } - }; - iceTransport.onicestatechange = function() { - self._updateConnectionState(); - }; + }; + iceTransport.onicestatechange = function() { + self._updateConnectionState(); + }; - var dtlsTransport = new RTCDtlsTransport(iceTransport); - dtlsTransport.ondtlsstatechange = function() { - self._updateConnectionState(); - }; - dtlsTransport.onerror = function() { - // onerror does not set state to failed by itself. - dtlsTransport.state = 'failed'; - self._updateConnectionState(); - }; + var dtlsTransport = new RTCDtlsTransport(iceTransport); + dtlsTransport.ondtlsstatechange = function() { + self._updateConnectionState(); + }; + dtlsTransport.onerror = function() { + // onerror does not set state to failed by itself. + dtlsTransport.state = 'failed'; + self._updateConnectionState(); + }; - return { - iceGatherer: iceGatherer, - iceTransport: iceTransport, - dtlsTransport: dtlsTransport - }; - }; + return { + iceGatherer: iceGatherer, + iceTransport: iceTransport, + dtlsTransport: dtlsTransport + }; + }; // Start the RTP Sender and Receiver for a transceiver. window.RTCPeerConnection.prototype._transceive = function(transceiver, @@ -13243,286 +13545,353 @@ return /******/ (function(modules) { // webpackBootstrap var params = this._getCommonCapabilities(transceiver.localCapabilities, transceiver.remoteCapabilities); if (send && transceiver.rtpSender) { - params.encodings = [{ - ssrc: transceiver.sendSsrc - }]; + params.encodings = transceiver.sendEncodingParameters; params.rtcp = { - cname: SDPUtils.localCName, - ssrc: transceiver.recvSsrc + cname: SDPUtils.localCName }; + if (transceiver.recvEncodingParameters.length) { + params.rtcp.ssrc = transceiver.recvEncodingParameters[0].ssrc; + } transceiver.rtpSender.send(params); } if (recv && transceiver.rtpReceiver) { - params.encodings = [{ - ssrc: transceiver.recvSsrc - }]; + params.encodings = transceiver.recvEncodingParameters; params.rtcp = { - cname: transceiver.cname, - ssrc: transceiver.sendSsrc + cname: transceiver.cname }; + if (transceiver.sendEncodingParameters.length) { + params.rtcp.ssrc = transceiver.sendEncodingParameters[0].ssrc; + } transceiver.rtpReceiver.receive(params); } }; window.RTCPeerConnection.prototype.setLocalDescription = function(description) { - var self = this; - if (description.type === 'offer') { - if (!this._pendingOffer) { - } else { - this.transceivers = this._pendingOffer; - delete this._pendingOffer; - } - } else if (description.type === 'answer') { - var sections = SDPUtils.splitSections(self.remoteDescription.sdp); - var sessionpart = sections.shift(); - sections.forEach(function(mediaSection, sdpMLineIndex) { - var transceiver = self.transceivers[sdpMLineIndex]; - var iceGatherer = transceiver.iceGatherer; - var iceTransport = transceiver.iceTransport; - var dtlsTransport = transceiver.dtlsTransport; - var localCapabilities = transceiver.localCapabilities; - var remoteCapabilities = transceiver.remoteCapabilities; - var rejected = mediaSection.split('\n', 1)[0] - .split(' ', 2)[1] === '0'; - - if (!rejected) { - var remoteIceParameters = SDPUtils.getIceParameters(mediaSection, - sessionpart); - iceTransport.start(iceGatherer, remoteIceParameters, 'controlled'); - - var remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection, - sessionpart); - dtlsTransport.start(remoteDtlsParameters); - - // Calculate intersection of capabilities. - var params = self._getCommonCapabilities(localCapabilities, - remoteCapabilities); - - // Start the RTCRtpSender. The RTCRtpReceiver for this transceiver - // has already been started in setRemoteDescription. - self._transceive(transceiver, - params.codecs.length > 0, - false); - } - }); - } + var self = this; + var sections; + var sessionpart; + if (description.type === 'offer') { + // FIXME: What was the purpose of this empty if statement? + // if (!this._pendingOffer) { + // } else { + if (this._pendingOffer) { + // VERY limited support for SDP munging. Limited to: + // * changing the order of codecs + sections = SDPUtils.splitSections(description.sdp); + sessionpart = sections.shift(); + sections.forEach(function(mediaSection, sdpMLineIndex) { + var caps = SDPUtils.parseRtpParameters(mediaSection); + self._pendingOffer[sdpMLineIndex].localCapabilities = caps; + }); + this.transceivers = this._pendingOffer; + delete this._pendingOffer; + } + } else if (description.type === 'answer') { + sections = SDPUtils.splitSections(self.remoteDescription.sdp); + sessionpart = sections.shift(); + var isIceLite = SDPUtils.matchPrefix(sessionpart, + 'a=ice-lite').length > 0; + sections.forEach(function(mediaSection, sdpMLineIndex) { + var transceiver = self.transceivers[sdpMLineIndex]; + var iceGatherer = transceiver.iceGatherer; + var iceTransport = transceiver.iceTransport; + var dtlsTransport = transceiver.dtlsTransport; + var localCapabilities = transceiver.localCapabilities; + var remoteCapabilities = transceiver.remoteCapabilities; + var rejected = mediaSection.split('\n', 1)[0] + .split(' ', 2)[1] === '0'; + + if (!rejected) { + var remoteIceParameters = SDPUtils.getIceParameters( + mediaSection, sessionpart); + if (isIceLite) { + var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:') + .map(function(cand) { + return SDPUtils.parseCandidate(cand); + }) + .filter(function(cand) { + return cand.component === '1'; + }); + // ice-lite only includes host candidates in the SDP so we can + // use setRemoteCandidates (which implies an + // RTCIceCandidateComplete) + iceTransport.setRemoteCandidates(cands); + } + iceTransport.start(iceGatherer, remoteIceParameters, + isIceLite ? 'controlling' : 'controlled'); - this.localDescription = { - type: description.type, - sdp: description.sdp - }; - switch (description.type) { - case 'offer': - this._updateSignalingState('have-local-offer'); - break; - case 'answer': - this._updateSignalingState('stable'); - break; - default: - throw new TypeError('unsupported type "' + description.type + '"'); - } + var remoteDtlsParameters = SDPUtils.getDtlsParameters( + mediaSection, sessionpart); + if (isIceLite) { + remoteDtlsParameters.role = 'server'; + } + dtlsTransport.start(remoteDtlsParameters); + + // Calculate intersection of capabilities. + var params = self._getCommonCapabilities(localCapabilities, + remoteCapabilities); - // If a success callback was provided, emit ICE candidates after it has been - // executed. Otherwise, emit callback after the Promise is resolved. - var hasCallback = arguments.length > 1 && - typeof arguments[1] === 'function'; - if (hasCallback) { - var cb = arguments[1]; - window.setTimeout(function() { - cb(); - if (self.iceGatheringState === 'new') { - self.iceGatheringState = 'gathering'; + // Start the RTCRtpSender. The RTCRtpReceiver for this + // transceiver has already been started in setRemoteDescription. + self._transceive(transceiver, + params.codecs.length > 0, + false); + } + }); } - self._emitBufferedCandidates(); - }, 0); - } - var p = Promise.resolve(); - p.then(function() { - if (!hasCallback) { - if (self.iceGatheringState === 'new') { - self.iceGatheringState = 'gathering'; + + this.localDescription = { + type: description.type, + sdp: description.sdp + }; + switch (description.type) { + case 'offer': + this._updateSignalingState('have-local-offer'); + break; + case 'answer': + this._updateSignalingState('stable'); + break; + default: + throw new TypeError('unsupported type "' + description.type + + '"'); } - // Usually candidates will be emitted earlier. - window.setTimeout(self._emitBufferedCandidates.bind(self), 500); - } - }); - return p; - }; + + // If a success callback was provided, emit ICE candidates after it + // has been executed. Otherwise, emit callback after the Promise is + // resolved. + var hasCallback = arguments.length > 1 && + typeof arguments[1] === 'function'; + if (hasCallback) { + var cb = arguments[1]; + window.setTimeout(function() { + cb(); + if (self.iceGatheringState === 'new') { + self.iceGatheringState = 'gathering'; + } + self._emitBufferedCandidates(); + }, 0); + } + var p = Promise.resolve(); + p.then(function() { + if (!hasCallback) { + if (self.iceGatheringState === 'new') { + self.iceGatheringState = 'gathering'; + } + // Usually candidates will be emitted earlier. + window.setTimeout(self._emitBufferedCandidates.bind(self), 500); + } + }); + return p; + }; window.RTCPeerConnection.prototype.setRemoteDescription = function(description) { - var self = this; - var stream = new MediaStream(); - var receiverList = []; - var sections = SDPUtils.splitSections(description.sdp); - var sessionpart = sections.shift(); - sections.forEach(function(mediaSection, sdpMLineIndex) { - var lines = SDPUtils.splitLines(mediaSection); - var mline = lines[0].substr(2).split(' '); - var kind = mline[0]; - var rejected = mline[1] === '0'; - var direction = SDPUtils.getDirection(mediaSection, sessionpart); - - var transceiver; - var iceGatherer; - var iceTransport; - var dtlsTransport; - var rtpSender; - var rtpReceiver; - var sendSsrc; - var recvSsrc; - var localCapabilities; - - var track; - // FIXME: ensure the mediaSection has rtcp-mux set. - var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection); - var remoteIceParameters; - var remoteDtlsParameters; - if (!rejected) { - remoteIceParameters = SDPUtils.getIceParameters(mediaSection, - sessionpart); - remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection, - sessionpart); - } - var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0].substr(6); - - var cname; - // Gets the first SSRC. Note that with RTX there might be multiple SSRCs. - var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') - .map(function(line) { - return SDPUtils.parseSsrcMedia(line); - }) - .filter(function(obj) { - return obj.attribute === 'cname'; - })[0]; - if (remoteSsrc) { - recvSsrc = parseInt(remoteSsrc.ssrc, 10); - cname = remoteSsrc.value; - } + var self = this; + var stream = new MediaStream(); + var receiverList = []; + var sections = SDPUtils.splitSections(description.sdp); + var sessionpart = sections.shift(); + var isIceLite = SDPUtils.matchPrefix(sessionpart, + 'a=ice-lite').length > 0; + sections.forEach(function(mediaSection, sdpMLineIndex) { + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].substr(2).split(' '); + var kind = mline[0]; + var rejected = mline[1] === '0'; + var direction = SDPUtils.getDirection(mediaSection, sessionpart); + + var transceiver; + var iceGatherer; + var iceTransport; + var dtlsTransport; + var rtpSender; + var rtpReceiver; + var sendEncodingParameters; + var recvEncodingParameters; + var localCapabilities; + + var track; + // FIXME: ensure the mediaSection has rtcp-mux set. + var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection); + var remoteIceParameters; + var remoteDtlsParameters; + if (!rejected) { + remoteIceParameters = SDPUtils.getIceParameters(mediaSection, + sessionpart); + remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection, + sessionpart); + remoteDtlsParameters.role = 'client'; + } + recvEncodingParameters = + SDPUtils.parseRtpEncodingParameters(mediaSection); + + var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:'); + if (mid.length) { + mid = mid[0].substr(6); + } else { + mid = SDPUtils.generateIdentifier(); + } - if (description.type === 'offer') { - var transports = self._createIceAndDtlsTransports(mid, sdpMLineIndex); + var cname; + // Gets the first SSRC. Note that with RTX there might be multiple + // SSRCs. + var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') + .map(function(line) { + return SDPUtils.parseSsrcMedia(line); + }) + .filter(function(obj) { + return obj.attribute === 'cname'; + })[0]; + if (remoteSsrc) { + cname = remoteSsrc.value; + } - localCapabilities = RTCRtpReceiver.getCapabilities(kind); - sendSsrc = (2 * sdpMLineIndex + 2) * 1001; + var isComplete = SDPUtils.matchPrefix(mediaSection, + 'a=end-of-candidates').length > 0; + var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:') + .map(function(cand) { + return SDPUtils.parseCandidate(cand); + }) + .filter(function(cand) { + return cand.component === '1'; + }); + if (description.type === 'offer' && !rejected) { + var transports = self._createIceAndDtlsTransports(mid, + sdpMLineIndex); + if (isComplete) { + transports.iceTransport.setRemoteCandidates(cands); + } - rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind); + localCapabilities = RTCRtpReceiver.getCapabilities(kind); + sendEncodingParameters = [{ + ssrc: (2 * sdpMLineIndex + 2) * 1001 + }]; + + rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind); + + track = rtpReceiver.track; + receiverList.push([track, rtpReceiver]); + // FIXME: not correct when there are multiple streams but that is + // not currently supported in this shim. + stream.addTrack(track); + + // FIXME: look at direction. + if (self.localStreams.length > 0 && + self.localStreams[0].getTracks().length >= sdpMLineIndex) { + // FIXME: actually more complicated, needs to match types etc + var localtrack = self.localStreams[0] + .getTracks()[sdpMLineIndex]; + rtpSender = new RTCRtpSender(localtrack, + transports.dtlsTransport); + } - track = rtpReceiver.track; - receiverList.push([track, rtpReceiver]); - // FIXME: not correct when there are multiple streams but that is - // not currently supported in this shim. - stream.addTrack(track); - - // FIXME: look at direction. - if (self.localStreams.length > 0 && - self.localStreams[0].getTracks().length >= sdpMLineIndex) { - // FIXME: actually more complicated, needs to match types etc - var localtrack = self.localStreams[0].getTracks()[sdpMLineIndex]; - rtpSender = new RTCRtpSender(localtrack, transports.dtlsTransport); - } + self.transceivers[sdpMLineIndex] = { + iceGatherer: transports.iceGatherer, + iceTransport: transports.iceTransport, + dtlsTransport: transports.dtlsTransport, + localCapabilities: localCapabilities, + remoteCapabilities: remoteCapabilities, + rtpSender: rtpSender, + rtpReceiver: rtpReceiver, + kind: kind, + mid: mid, + cname: cname, + sendEncodingParameters: sendEncodingParameters, + recvEncodingParameters: recvEncodingParameters + }; + // Start the RTCRtpReceiver now. The RTPSender is started in + // setLocalDescription. + self._transceive(self.transceivers[sdpMLineIndex], + false, + direction === 'sendrecv' || direction === 'sendonly'); + } else if (description.type === 'answer' && !rejected) { + transceiver = self.transceivers[sdpMLineIndex]; + iceGatherer = transceiver.iceGatherer; + iceTransport = transceiver.iceTransport; + dtlsTransport = transceiver.dtlsTransport; + rtpSender = transceiver.rtpSender; + rtpReceiver = transceiver.rtpReceiver; + sendEncodingParameters = transceiver.sendEncodingParameters; + localCapabilities = transceiver.localCapabilities; + + self.transceivers[sdpMLineIndex].recvEncodingParameters = + recvEncodingParameters; + self.transceivers[sdpMLineIndex].remoteCapabilities = + remoteCapabilities; + self.transceivers[sdpMLineIndex].cname = cname; + + if (isIceLite || isComplete) { + iceTransport.setRemoteCandidates(cands); + } + iceTransport.start(iceGatherer, remoteIceParameters, + 'controlling'); + dtlsTransport.start(remoteDtlsParameters); + + self._transceive(transceiver, + direction === 'sendrecv' || direction === 'recvonly', + direction === 'sendrecv' || direction === 'sendonly'); + + if (rtpReceiver && + (direction === 'sendrecv' || direction === 'sendonly')) { + track = rtpReceiver.track; + receiverList.push([track, rtpReceiver]); + stream.addTrack(track); + } else { + // FIXME: actually the receiver should be created later. + delete transceiver.rtpReceiver; + } + } + }); - self.transceivers[sdpMLineIndex] = { - iceGatherer: transports.iceGatherer, - iceTransport: transports.iceTransport, - dtlsTransport: transports.dtlsTransport, - localCapabilities: localCapabilities, - remoteCapabilities: remoteCapabilities, - rtpSender: rtpSender, - rtpReceiver: rtpReceiver, - kind: kind, - mid: mid, - cname: cname, - sendSsrc: sendSsrc, - recvSsrc: recvSsrc + this.remoteDescription = { + type: description.type, + sdp: description.sdp }; - // Start the RTCRtpReceiver now. The RTPSender is started in setLocalDescription. - self._transceive(self.transceivers[sdpMLineIndex], - false, - direction === 'sendrecv' || direction === 'sendonly'); - } else if (description.type === 'answer' && !rejected) { - transceiver = self.transceivers[sdpMLineIndex]; - iceGatherer = transceiver.iceGatherer; - iceTransport = transceiver.iceTransport; - dtlsTransport = transceiver.dtlsTransport; - rtpSender = transceiver.rtpSender; - rtpReceiver = transceiver.rtpReceiver; - sendSsrc = transceiver.sendSsrc; - //recvSsrc = transceiver.recvSsrc; - localCapabilities = transceiver.localCapabilities; - - self.transceivers[sdpMLineIndex].recvSsrc = recvSsrc; - self.transceivers[sdpMLineIndex].remoteCapabilities = - remoteCapabilities; - self.transceivers[sdpMLineIndex].cname = cname; - - iceTransport.start(iceGatherer, remoteIceParameters, 'controlling'); - dtlsTransport.start(remoteDtlsParameters); - - self._transceive(transceiver, - direction === 'sendrecv' || direction === 'recvonly', - direction === 'sendrecv' || direction === 'sendonly'); - - if (rtpReceiver && - (direction === 'sendrecv' || direction === 'sendonly')) { - track = rtpReceiver.track; - receiverList.push([track, rtpReceiver]); - stream.addTrack(track); - } else { - // FIXME: actually the receiver should be created later. - delete transceiver.rtpReceiver; + switch (description.type) { + case 'offer': + this._updateSignalingState('have-remote-offer'); + break; + case 'answer': + this._updateSignalingState('stable'); + break; + default: + throw new TypeError('unsupported type "' + description.type + + '"'); } - } - }); - - this.remoteDescription = { - type: description.type, - sdp: description.sdp - }; - switch (description.type) { - case 'offer': - this._updateSignalingState('have-remote-offer'); - break; - case 'answer': - this._updateSignalingState('stable'); - break; - default: - throw new TypeError('unsupported type "' + description.type + '"'); - } - if (stream.getTracks().length) { - self.remoteStreams.push(stream); - window.setTimeout(function() { - var event = new Event('addstream'); - event.stream = stream; - self.dispatchEvent(event); - if (self.onaddstream !== null) { + if (stream.getTracks().length) { + self.remoteStreams.push(stream); window.setTimeout(function() { - self.onaddstream(event); - }, 0); - } - - receiverList.forEach(function(item) { - var track = item[0]; - var receiver = item[1]; - var event = new Event('track'); - event.track = track; - event.receiver = receiver; - event.streams = [stream]; - self.dispatchEvent(event); - if (self.ontrack !== null) { + var event = new Event('addstream'); + event.stream = stream; + self.dispatchEvent(event); + if (self.onaddstream !== null) { window.setTimeout(function() { - self.ontrack(event); + self.onaddstream(event); }, 0); - } - }); - }, 0); - } - if (arguments.length > 1 && typeof arguments[1] === 'function') { - window.setTimeout(arguments[1], 0); - } - return Promise.resolve(); - }; + } + + receiverList.forEach(function(item) { + var track = item[0]; + var receiver = item[1]; + var trackEvent = new Event('track'); + trackEvent.track = track; + trackEvent.receiver = receiver; + trackEvent.streams = [stream]; + self.dispatchEvent(event); + if (self.ontrack !== null) { + window.setTimeout(function() { + self.ontrack(trackEvent); + }, 0); + } + }); + }, 0); + } + if (arguments.length > 1 && typeof arguments[1] === 'function') { + window.setTimeout(arguments[1], 0); + } + return Promise.resolve(); + }; window.RTCPeerConnection.prototype.close = function() { this.transceivers.forEach(function(transceiver) { @@ -13551,28 +13920,27 @@ return /******/ (function(modules) { // webpackBootstrap // Update the signaling state. window.RTCPeerConnection.prototype._updateSignalingState = function(newState) { - this.signalingState = newState; - var event = new Event('signalingstatechange'); - this.dispatchEvent(event); - if (this.onsignalingstatechange !== null) { - this.onsignalingstatechange(event); - } - }; + this.signalingState = newState; + var event = new Event('signalingstatechange'); + this.dispatchEvent(event); + if (this.onsignalingstatechange !== null) { + this.onsignalingstatechange(event); + } + }; // Determine whether to fire the negotiationneeded event. window.RTCPeerConnection.prototype._maybeFireNegotiationNeeded = function() { - // Fire away (for now). - var event = new Event('negotiationneeded'); - this.dispatchEvent(event); - if (this.onnegotiationneeded !== null) { - this.onnegotiationneeded(event); - } - }; + // Fire away (for now). + var event = new Event('negotiationneeded'); + this.dispatchEvent(event); + if (this.onnegotiationneeded !== null) { + this.onnegotiationneeded(event); + } + }; // Update the connection state. - window.RTCPeerConnection.prototype._updateConnectionState = - function() { + window.RTCPeerConnection.prototype._updateConnectionState = function() { var self = this; var newState; var states = { @@ -13589,18 +13957,18 @@ return /******/ (function(modules) { // webpackBootstrap states[transceiver.dtlsTransport.state]++; }); // ICETransport.completed and connected are the same for this purpose. - states['connected'] += states['completed']; + states.connected += states.completed; newState = 'new'; - if (states['failed'] > 0) { + if (states.failed > 0) { newState = 'failed'; - } else if (states['connecting'] > 0 || states['checking'] > 0) { + } else if (states.connecting > 0 || states.checking > 0) { newState = 'connecting'; - } else if (states['disconnected'] > 0) { + } else if (states.disconnected > 0) { newState = 'disconnected'; - } else if (states['new'] > 0) { + } else if (states.new > 0) { newState = 'new'; - } else if (states['connecting'] > 0 || states['completed'] > 0) { + } else if (states.connected > 0 || states.completed > 0) { newState = 'connected'; } @@ -13685,8 +14053,8 @@ return /******/ (function(modules) { // webpackBootstrap var sdp = SDPUtils.writeSessionBoilerplate(); var transceivers = []; tracks.forEach(function(mline, sdpMLineIndex) { - // For each track, create an ice gatherer, ice transport, dtls transport, - // potentially rtpsender and rtpreceiver. + // For each track, create an ice gatherer, ice transport, + // dtls transport, potentially rtpsender and rtpreceiver. var track = mline.track; var kind = mline.kind; var mid = SDPUtils.generateIdentifier(); @@ -13698,7 +14066,9 @@ return /******/ (function(modules) { // webpackBootstrap var rtpReceiver; // generate an ssrc now, to be used later in rtpSender.send - var sendSsrc = (2 * sdpMLineIndex + 1) * 1001; + var sendEncodingParameters = [{ + ssrc: (2 * sdpMLineIndex + 1) * 1001 + }]; if (track) { rtpSender = new RTCRtpSender(track, transports.dtlsTransport); } @@ -13717,8 +14087,8 @@ return /******/ (function(modules) { // webpackBootstrap rtpReceiver: rtpReceiver, kind: kind, mid: mid, - sendSsrc: sendSsrc, - recvSsrc: null + sendEncodingParameters: sendEncodingParameters, + recvEncodingParameters: null }; var transceiver = transceivers[sdpMLineIndex]; sdp += SDPUtils.writeMediaSection(transceiver, @@ -13738,12 +14108,6 @@ return /******/ (function(modules) { // webpackBootstrap window.RTCPeerConnection.prototype.createAnswer = function() { var self = this; - var answerOptions; - if (arguments.length === 1 && typeof arguments[0] !== 'function') { - answerOptions = arguments[0]; - } else if (arguments.length === 3) { - answerOptions = arguments[2]; - } var sdp = SDPUtils.writeSessionBoilerplate(); this.transceivers.forEach(function(transceiver) { @@ -13767,38 +14131,44 @@ return /******/ (function(modules) { // webpackBootstrap }; window.RTCPeerConnection.prototype.addIceCandidate = function(candidate) { - var mLineIndex = candidate.sdpMLineIndex; - if (candidate.sdpMid) { - for (var i = 0; i < this.transceivers.length; i++) { - if (this.transceivers[i].mid === candidate.sdpMid) { - mLineIndex = i; - break; + if (candidate === null) { + this.transceivers.forEach(function(transceiver) { + transceiver.iceTransport.addIceCandidate({}); + }); + } else { + var mLineIndex = candidate.sdpMLineIndex; + if (candidate.sdpMid) { + for (var i = 0; i < this.transceivers.length; i++) { + if (this.transceivers[i].mid === candidate.sdpMid) { + mLineIndex = i; + break; + } } } - } - var transceiver = this.transceivers[mLineIndex]; - if (transceiver) { - var cand = Object.keys(candidate.candidate).length > 0 ? - SDPUtils.parseCandidate(candidate.candidate) : {}; - // Ignore Chrome's invalid candidates since Edge does not like them. - if (cand.protocol === 'tcp' && cand.port === 0) { - return; - } - // Ignore RTCP candidates, we assume RTCP-MUX. - if (cand.component !== '1') { - return; - } - // A dirty hack to make samples work. - if (cand.type === 'endOfCandidates') { - cand = {}; - } - transceiver.iceTransport.addRemoteCandidate(cand); + var transceiver = this.transceivers[mLineIndex]; + if (transceiver) { + var cand = Object.keys(candidate.candidate).length > 0 ? + SDPUtils.parseCandidate(candidate.candidate) : {}; + // Ignore Chrome's invalid candidates since Edge does not like them. + if (cand.protocol === 'tcp' && cand.port === 0) { + return; + } + // Ignore RTCP candidates, we assume RTCP-MUX. + if (cand.component !== '1') { + return; + } + // A dirty hack to make samples work. + if (cand.type === 'endOfCandidates') { + cand = {}; + } + transceiver.iceTransport.addRemoteCandidate(cand); - // update the remoteDescription. - var sections = SDPUtils.splitSections(this.remoteDescription.sdp); - sections[mLineIndex + 1] += (cand.type ? candidate.candidate.trim() - : 'a=end-of-candidates') + '\r\n'; - this.remoteDescription.sdp = sections.join(''); + // update the remoteDescription. + var sections = SDPUtils.splitSections(this.remoteDescription.sdp); + sections[mLineIndex + 1] += (cand.type ? candidate.candidate.trim() + : 'a=end-of-candidates') + '\r\n'; + this.remoteDescription.sdp = sections.join(''); + } } if (arguments.length > 1 && typeof arguments[1] === 'function') { window.setTimeout(arguments[1], 0); @@ -13811,18 +14181,20 @@ return /******/ (function(modules) { // webpackBootstrap this.transceivers.forEach(function(transceiver) { ['rtpSender', 'rtpReceiver', 'iceGatherer', 'iceTransport', 'dtlsTransport'].forEach(function(method) { - if (transceiver[method]) { - promises.push(transceiver[method].getStats()); - } - }); + if (transceiver[method]) { + promises.push(transceiver[method].getStats()); + } + }); }); var cb = arguments.length > 1 && typeof arguments[1] === 'function' && arguments[1]; return new Promise(function(resolve) { - var results = {}; + // shim getStats with maplike support + var results = new Map(); Promise.all(promises).then(function(res) { res.forEach(function(result) { Object.keys(result).forEach(function(id) { + results.set(id, result[id]); results[id] = result[id]; }); }); @@ -13845,15 +14217,15 @@ return /******/ (function(modules) { // webpackBootstrap logging('DEPRECATED, reattachMediaStream will soon be removed.'); to.srcObject = from.srcObject; } - } + }; // Expose public methods. module.e = { shimPeerConnection: edgeShim.shimPeerConnection, + shimGetUserMedia: __webpack_require__(189), attachMediaStream: edgeShim.attachMediaStream, reattachMediaStream: edgeShim.reattachMediaStream - } - + }; /***/ }, @@ -13867,19 +14239,59 @@ return /******/ (function(modules) { // webpackBootstrap * that can be found in the LICENSE file in the root of the source * tree. */ + /* eslint-env node */ + 'use strict'; + + // Expose public methods. + module.e = function() { + var shimError_ = function(e) { + return { + name: {PermissionDeniedError: 'NotAllowedError'}[e.name] || e.name, + message: e.message, + constraint: e.constraint, + toString: function() { + return this.name; + } + }; + }; + + // getUserMedia error shim. + var origGetUserMedia = navigator.mediaDevices.getUserMedia. + bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function(c) { + return origGetUserMedia(c).catch(function(e) { + return Promise.reject(shimError_(e)); + }); + }; + }; + + +/***/ }, +/* 190 */ +/***/ function(module, exports, __webpack_require__) { + + /* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ + /* eslint-env node */ 'use strict'; - var logging = __webpack_require__(0).log; - var browserDetails = __webpack_require__(0).browserDetails; + var logging = __webpack_require__(1).log; + var browserDetails = __webpack_require__(1).browserDetails; var firefoxShim = { shimOnTrack: function() { if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in window.RTCPeerConnection.prototype)) { Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { - get: function() { return this._ontrack; }, + get: function() { + return this._ontrack; + }, set: function(f) { - var self = this; if (this._ontrack) { this.removeEventListener('track', this._ontrack); this.removeEventListener('addstream', this._ontrackpoly); @@ -13918,6 +14330,10 @@ return /******/ (function(modules) { // webpackBootstrap }, shimPeerConnection: function() { + if (typeof window !== 'object' || !(window.RTCPeerConnection || + window.mozRTCPeerConnection)) { + return; // probably media.peerconnection.enabled=false in about:config + } // The RTCPeerConnection object. if (!window.RTCPeerConnection) { window.RTCPeerConnection = function(pcConfig, pcConstraints) { @@ -13946,7 +14362,7 @@ return /******/ (function(modules) { // webpackBootstrap pcConfig.iceServers = newIceServers; } } - return new mozRTCPeerConnection(pcConfig, pcConstraints); // jscs:ignore requireCapitalizedConstructors + return new mozRTCPeerConnection(pcConfig, pcConstraints); }; window.RTCPeerConnection.prototype = mozRTCPeerConnection.prototype; @@ -13954,12 +14370,7 @@ return /******/ (function(modules) { // webpackBootstrap if (mozRTCPeerConnection.generateCertificate) { Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { get: function() { - if (arguments.length) { - return mozRTCPeerConnection.generateCertificate.apply(null, - arguments); - } else { - return mozRTCPeerConnection.generateCertificate; - } + return mozRTCPeerConnection.generateCertificate; } }); } @@ -13967,6 +14378,44 @@ return /******/ (function(modules) { // webpackBootstrap window.RTCSessionDescription = mozRTCSessionDescription; window.RTCIceCandidate = mozRTCIceCandidate; } + + // shim away need for obsolete RTCIceCandidate/RTCSessionDescription. + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'] + .forEach(function(method) { + var nativeMethod = RTCPeerConnection.prototype[method]; + RTCPeerConnection.prototype[method] = function() { + arguments[0] = new ((method === 'addIceCandidate') ? + RTCIceCandidate : RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }; + }); + + // support for addIceCandidate(null) + var nativeAddIceCandidate = + RTCPeerConnection.prototype.addIceCandidate; + RTCPeerConnection.prototype.addIceCandidate = function() { + return arguments[0] === null ? Promise.resolve() + : nativeAddIceCandidate.apply(this, arguments); + }; + + // shim getStats with maplike support + var makeMapStats = function(stats) { + var map = new Map(); + Object.keys(stats).forEach(function(key) { + map.set(key, stats[key]); + map[key] = stats[key]; + }); + return map; + }; + + var nativeGetStats = RTCPeerConnection.prototype.getStats; + RTCPeerConnection.prototype.getStats = function(selector, onSucc, onErr) { + return nativeGetStats.apply(this, [selector || null]) + .then(function(stats) { + return makeMapStats(stats); + }) + .then(onSucc, onErr); + }; }, shimGetUserMedia: function() { @@ -13978,7 +14427,8 @@ return /******/ (function(modules) { // webpackBootstrap } var require = []; Object.keys(c).forEach(function(key) { - if (key === 'require' || key === 'advanced' || key === 'mediaSource') { + if (key === 'require' || key === 'advanced' || + key === 'mediaSource') { return; } var r = c[key] = (typeof c[key] === 'object') ? @@ -14015,6 +14465,7 @@ return /******/ (function(modules) { // webpackBootstrap } return c; }; + constraints = JSON.parse(JSON.stringify(constraints)); if (browserDetails.version < 38) { logging('spec: ' + JSON.stringify(constraints)); if (constraints.audio) { @@ -14035,7 +14486,7 @@ return /******/ (function(modules) { // webpackBootstrap return new Promise(function(resolve, reject) { navigator.getUserMedia(constraints, resolve, reject); }); - } + }; // Shim for mediaDevices on older versions. if (!navigator.mediaDevices) { @@ -14046,14 +14497,14 @@ return /******/ (function(modules) { // webpackBootstrap } navigator.mediaDevices.enumerateDevices = navigator.mediaDevices.enumerateDevices || function() { - return new Promise(function(resolve) { - var infos = [ - {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''}, - {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''} - ]; - resolve(infos); - }); - }; + return new Promise(function(resolve) { + var infos = [ + {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''}, + {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''} + ]; + resolve(infos); + }); + }; if (browserDetails.version < 41) { // Work around http://bugzil.la/1169665 @@ -14080,21 +14531,21 @@ return /******/ (function(modules) { // webpackBootstrap logging('DEPRECATED, reattachMediaStream will soon be removed.'); to.srcObject = from.srcObject; } - } + }; // Expose public methods. module.e = { shimOnTrack: firefoxShim.shimOnTrack, shimSourceObject: firefoxShim.shimSourceObject, shimPeerConnection: firefoxShim.shimPeerConnection, - shimGetUserMedia: __webpack_require__(190), + shimGetUserMedia: __webpack_require__(191), attachMediaStream: firefoxShim.attachMediaStream, reattachMediaStream: firefoxShim.reattachMediaStream - } + }; /***/ }, -/* 190 */ +/* 191 */ /***/ function(module, exports, __webpack_require__) { /* @@ -14104,13 +14555,31 @@ return /******/ (function(modules) { // webpackBootstrap * that can be found in the LICENSE file in the root of the source * tree. */ + /* eslint-env node */ 'use strict'; - var logging = __webpack_require__(0).log; - var browserDetails = __webpack_require__(0).browserDetails; + var logging = __webpack_require__(1).log; + var browserDetails = __webpack_require__(1).browserDetails; // Expose public methods. module.e = function() { + var shimError_ = function(e) { + return { + name: { + SecurityError: 'NotAllowedError', + PermissionDeniedError: 'NotAllowedError' + }[e.name] || e.name, + message: { + 'The operation is insecure.': 'The request is not allowed by the ' + + 'user agent or the platform in the current context.' + }[e.message] || e.message, + constraint: e.constraint, + toString: function() { + return this.name + (this.message && ': ') + this.message; + } + }; + }; + // getUserMedia constraints shim. var getUserMedia_ = function(constraints, onSuccess, onError) { var constraintsToFF37_ = function(c) { @@ -14156,6 +14625,7 @@ return /******/ (function(modules) { // webpackBootstrap } return c; }; + constraints = JSON.parse(JSON.stringify(constraints)); if (browserDetails.version < 38) { logging('spec: ' + JSON.stringify(constraints)); if (constraints.audio) { @@ -14166,7 +14636,9 @@ return /******/ (function(modules) { // webpackBootstrap } logging('ff37: ' + JSON.stringify(constraints)); } - return navigator.mozGetUserMedia(constraints, onSuccess, onError); + return navigator.mozGetUserMedia(constraints, onSuccess, function(e) { + onError(shimError_(e)); + }); }; navigator.getUserMedia = getUserMedia_; @@ -14176,7 +14648,7 @@ return /******/ (function(modules) { // webpackBootstrap return new Promise(function(resolve, reject) { navigator.getUserMedia(constraints, resolve, reject); }); - } + }; // Shim for mediaDevices on older versions. if (!navigator.mediaDevices) { @@ -14187,14 +14659,14 @@ return /******/ (function(modules) { // webpackBootstrap } navigator.mediaDevices.enumerateDevices = navigator.mediaDevices.enumerateDevices || function() { - return new Promise(function(resolve) { - var infos = [ - {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''}, - {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''} - ]; - resolve(infos); - }); - }; + return new Promise(function(resolve) { + var infos = [ + {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''}, + {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''} + ]; + resolve(infos); + }); + }; if (browserDetails.version < 41) { // Work around http://bugzil.la/1169665 @@ -14209,29 +14681,78 @@ return /******/ (function(modules) { // webpackBootstrap }); }; } - } + if (browserDetails.version < 49) { + var origGetUserMedia = navigator.mediaDevices.getUserMedia. + bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function(c) { + return origGetUserMedia(c).catch(function(e) { + return Promise.reject(shimError_(e)); + }); + }; + } + }; /***/ }, -/* 191 */ +/* 192 */ +/***/ function(module, exports, __webpack_require__) { + + /* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ + 'use strict'; + var safariShim = { + // TODO: DrAlex, should be here, double check against LayoutTests + // shimOnTrack: function() { }, + + // TODO: DrAlex + // attachMediaStream: function(element, stream) { }, + // reattachMediaStream: function(to, from) { }, + + // TODO: once the back-end for the mac port is done, add. + // TODO: check for webkitGTK+ + // shimPeerConnection: function() { }, + + shimGetUserMedia: function() { + navigator.getUserMedia = navigator.webkitGetUserMedia; + } + }; + + // Expose public methods. + module.e = { + shimGetUserMedia: safariShim.shimGetUserMedia + // TODO + // shimOnTrack: safariShim.shimOnTrack, + // shimPeerConnection: safariShim.shimPeerConnection, + // attachMediaStream: safariShim.attachMediaStream, + // reattachMediaStream: safariShim.reattachMediaStream + }; + + +/***/ }, +/* 193 */ /***/ function(module, exports) { - module.e = __WEBPACK_EXTERNAL_MODULE_191__; + module.e = __WEBPACK_EXTERNAL_MODULE_193__; /***/ }, -/* 192 */ +/* 194 */ /***/ function(module, exports) { - module.e = __WEBPACK_EXTERNAL_MODULE_192__; + module.e = __WEBPACK_EXTERNAL_MODULE_194__; /***/ }, -/* 193 */ +/* 195 */ /***/ function(module, exports) { - module.e = __WEBPACK_EXTERNAL_MODULE_193__; + module.e = __WEBPACK_EXTERNAL_MODULE_195__; /***/ }, -/* 194 */ +/* 196 */ /***/ function(module, exports, __webpack_require__) { module.e = __webpack_require__(67); diff --git a/lib/quagga.js.map b/lib/quagga.js.map index 6e41afc..b07a47d 100644 --- a/lib/quagga.js.map +++ b/lib/quagga.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 71671e09c48eb75c35fb","webpack:///./~/webrtc-adapter/src/js/utils.js","webpack:///./~/lodash/isArray.js","webpack:///./~/lodash/isObject.js","webpack:///./~/lodash/_root.js","webpack:///./~/lodash/isObjectLike.js","webpack:///./src/reader/ean_reader.js","webpack:///./~/lodash/_Map.js","webpack:///./src/common/image_debug.js","webpack:///./src/reader/barcode_reader.js","webpack:///./~/gl-vec2/clone.js","webpack:///./~/lodash/isArguments.js","webpack:///./~/lodash/isFunction.js","webpack:///./~/lodash/merge.js","webpack:///./src/common/array_helper.js","webpack:///./~/lodash/_Stack.js","webpack:///./~/lodash/_assocIndexOf.js","webpack:///./~/lodash/_getNative.js","webpack:///./~/lodash/_isHostObject.js","webpack:///./~/lodash/_isIndex.js","webpack:///./~/lodash/_isKeyable.js","webpack:///./~/lodash/_nativeCreate.js","webpack:///./~/lodash/eq.js","webpack:///./~/lodash/isArrayLike.js","webpack:///./~/lodash/isLength.js","webpack:///./~/lodash/keys.js","webpack:///./src/common/cv_utils.js","webpack:///./src/common/image_wrapper.js","webpack:///./~/lodash/_Symbol.js","webpack:///./~/lodash/_arrayReduce.js","webpack:///./~/lodash/_copyObject.js","webpack:///./~/lodash/_isKey.js","webpack:///./~/lodash/_isPrototype.js","webpack:///./~/lodash/isArrayLikeObject.js","webpack:///./~/lodash/isString.js","webpack:///./~/lodash/isTypedArray.js","webpack:///./~/lodash/keysIn.js","webpack:///./src/analytics/result_collector.js","webpack:///./src/config/config.js","webpack:///./src/locator/tracer.js","webpack:///./src/reader/code_39_reader.js","webpack:///./~/gl-vec2/dot.js","webpack:///./~/lodash/_Uint8Array.js","webpack:///./~/lodash/_arrayEach.js","webpack:///./~/lodash/_assignMergeValue.js","webpack:///./~/lodash/_assignValue.js","webpack:///./~/lodash/_assocDelete.js","webpack:///./~/lodash/_assocGet.js","webpack:///./~/lodash/_assocHas.js","webpack:///./~/lodash/_assocSet.js","webpack:///./~/lodash/_baseCastPath.js","webpack:///./~/lodash/_baseFor.js","webpack:///./~/lodash/_baseGet.js","webpack:///./~/lodash/_baseHas.js","webpack:///./~/lodash/_baseIsEqual.js","webpack:///./~/lodash/_baseProperty.js","webpack:///./~/lodash/_cloneArrayBuffer.js","webpack:///./~/lodash/_copyArray.js","webpack:///./~/lodash/_equalArrays.js","webpack:///./~/lodash/_getTag.js","webpack:///./~/lodash/_hashHas.js","webpack:///./~/lodash/_indexKeys.js","webpack:///./~/lodash/_mapToArray.js","webpack:///./~/lodash/_setToArray.js","webpack:///./~/lodash/get.js","webpack:///./~/lodash/pick.js","webpack:///./~/lodash/rest.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/quagga.js","webpack:///./lib/frame_grabber.js","webpack:///./lib/input_stream.js","webpack:///./src/common/cluster.js","webpack:///./src/common/events.js","webpack:///./src/common/subImage.js","webpack:///./src/common/typedefs.js","webpack:///./src/config/config.node.js","webpack:///./src/decoder/barcode_decoder.js","webpack:///./src/decoder/bresenham.js","webpack:///./src/input/camera_access.js","webpack:///./src/locator/barcode_locator.js","webpack:///./src/locator/rasterizer.js","webpack:///./src/locator/skeletonizer.js","webpack:///./src/reader/codabar_reader.js","webpack:///./src/reader/code_128_reader.js","webpack:///./src/reader/code_39_vin_reader.js","webpack:///./src/reader/ean_2_reader.js","webpack:///./src/reader/ean_5_reader.js","webpack:///./src/reader/ean_8_reader.js","webpack:///./src/reader/i2of5_reader.js","webpack:///./src/reader/upc_e_reader.js","webpack:///./src/reader/upc_reader.js","webpack:///./src/scanner.js","webpack:///./~/gl-mat2/copy.js","webpack:///./~/gl-mat2/create.js","webpack:///./~/gl-mat2/invert.js","webpack:///./~/gl-vec2/scale.js","webpack:///./~/gl-vec2/transformMat2.js","webpack:///./~/gl-vec3/clone.js","webpack:///./~/lodash/_Hash.js","webpack:///./~/lodash/_MapCache.js","webpack:///./~/lodash/_Reflect.js","webpack:///./~/lodash/_Set.js","webpack:///./~/lodash/_WeakMap.js","webpack:///./~/lodash/_addMapEntry.js","webpack:///./~/lodash/_addSetEntry.js","webpack:///./~/lodash/_apply.js","webpack:///./~/lodash/_arrayMap.js","webpack:///./~/lodash/_arrayPush.js","webpack:///./~/lodash/_arraySome.js","webpack:///./~/lodash/_baseAssign.js","webpack:///./~/lodash/_baseClone.js","webpack:///./~/lodash/_baseCreate.js","webpack:///./~/lodash/_baseFlatten.js","webpack:///./~/lodash/_baseForIn.js","webpack:///./~/lodash/_baseForOwn.js","webpack:///./~/lodash/_baseHasIn.js","webpack:///./~/lodash/_baseIsEqualDeep.js","webpack:///./~/lodash/_baseIsMatch.js","webpack:///./~/lodash/_baseIteratee.js","webpack:///./~/lodash/_baseKeys.js","webpack:///./~/lodash/_baseKeysIn.js","webpack:///./~/lodash/_baseMatches.js","webpack:///./~/lodash/_baseMatchesProperty.js","webpack:///./~/lodash/_baseMerge.js","webpack:///./~/lodash/_baseMergeDeep.js","webpack:///./~/lodash/_basePick.js","webpack:///./~/lodash/_basePickBy.js","webpack:///./~/lodash/_basePropertyDeep.js","webpack:///./~/lodash/_baseSlice.js","webpack:///./~/lodash/_baseTimes.js","webpack:///./~/lodash/_baseToPairs.js","webpack:///./~/lodash/_checkGlobal.js","webpack:///./~/lodash/_cloneBuffer.js","webpack:///./~/lodash/_cloneMap.js","webpack:///./~/lodash/_cloneRegExp.js","webpack:///./~/lodash/_cloneSet.js","webpack:///./~/lodash/_cloneSymbol.js","webpack:///./~/lodash/_cloneTypedArray.js","webpack:///./~/lodash/_copyObjectWith.js","webpack:///./~/lodash/_copySymbols.js","webpack:///./~/lodash/_createAssigner.js","webpack:///./~/lodash/_createBaseFor.js","webpack:///./~/lodash/_equalByTag.js","webpack:///./~/lodash/_equalObjects.js","webpack:///./~/lodash/_getLength.js","webpack:///./~/lodash/_getMatchData.js","webpack:///./~/lodash/_getSymbols.js","webpack:///./~/lodash/_hasPath.js","webpack:///./~/lodash/_hashDelete.js","webpack:///./~/lodash/_hashGet.js","webpack:///./~/lodash/_hashSet.js","webpack:///./~/lodash/_initCloneArray.js","webpack:///./~/lodash/_initCloneByTag.js","webpack:///./~/lodash/_initCloneObject.js","webpack:///./~/lodash/_isIterateeCall.js","webpack:///./~/lodash/_isStrictComparable.js","webpack:///./~/lodash/_iteratorToArray.js","webpack:///./~/lodash/_mapClear.js","webpack:///./~/lodash/_mapDelete.js","webpack:///./~/lodash/_mapGet.js","webpack:///./~/lodash/_mapHas.js","webpack:///./~/lodash/_mapSet.js","webpack:///./~/lodash/_parent.js","webpack:///./~/lodash/_stackClear.js","webpack:///./~/lodash/_stackDelete.js","webpack:///./~/lodash/_stackGet.js","webpack:///./~/lodash/_stackHas.js","webpack:///./~/lodash/_stackSet.js","webpack:///./~/lodash/_stringToPath.js","webpack:///./~/lodash/constant.js","webpack:///./~/lodash/hasIn.js","webpack:///./~/lodash/identity.js","webpack:///./~/lodash/isBuffer.js","webpack:///./~/lodash/isEmpty.js","webpack:///./~/lodash/isNative.js","webpack:///./~/lodash/isPlainObject.js","webpack:///./~/lodash/isSymbol.js","webpack:///./~/lodash/last.js","webpack:///./~/lodash/omitBy.js","webpack:///./~/lodash/property.js","webpack:///./~/lodash/toInteger.js","webpack:///./~/lodash/toNumber.js","webpack:///./~/lodash/toPairs.js","webpack:///./~/lodash/toPlainObject.js","webpack:///./~/lodash/toString.js","webpack:///./~/webrtc-adapter/src/js/adapter_core.js","webpack:///./~/webrtc-adapter/src/js/chrome/chrome_shim.js","webpack:///./~/webrtc-adapter/src/js/chrome/getusermedia.js","webpack:///./~/webrtc-adapter/src/js/edge/edge_sdp.js","webpack:///./~/webrtc-adapter/src/js/edge/edge_shim.js","webpack:///./~/webrtc-adapter/src/js/firefox/firefox_shim.js","webpack:///./~/webrtc-adapter/src/js/firefox/getusermedia.js","webpack:///external \"get-pixels\"","webpack:///external \"ndarray\"","webpack:///external \"ndarray-linear-interpolate\""],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpGA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5BA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;SCxCgB;SAuBA;SA2CA;SAsBA;SAWA;SAgBA;SAiBA;SAkDA;SAQA;SA0CA;SAsGA;SA2BA;SA2BA;SAcA;SAcA;SASA;SA6BA;SAMA;SAKA;SAiCA;SAiBA;SA2BA;SAsBA;SAsCA;SAmCA;SAiDA;SAgCA;;AA5tBhB;;;;AACA;;;;;;AACA,KAAM,OAAO;AACT,YAAO,oBAAQ,CAAR,CAAP;EADE;AAGN,KAAM,OAAO;AACT,YAAO,oBAAQ,EAAR,CAAP;EADE;;;;;;;AASC,UAAS,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAwB;AAC3B,SAAI,OAAO;AACP,YAAG,CAAH;AACA,YAAG,CAAH;AACA,iBAAQ,kBAAW;AACf,oBAAO,KAAK,KAAL,CAAW,CAAC,KAAK,CAAL,EAAQ,KAAK,CAAL,CAAp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;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1EA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrDA;;;;;;AAEA,UAAS,QAAT,CAAkB,UAAlB,EAA8B,IAA9B,EAAoC;AAChC,SAAI,IAAJ,EAAU;AACN,gBAAO,KAAK,IAAL,CAAU,UAAU,IAAV,EAAgB;AAC7B,oBAAO,OAAO,IAAP,CAAY,IAAZ,EAAkB,KAAlB,CAAwB,UAAU,GAAV,EAAe;AAC1C,wBAAO,KAAK,GAAL,MAAc,WAAW,GAAX,CAAd,CADmC;cAAf,CAA/B,CAD6B;U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CA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1BA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;;AAEA;;;;;;;AChBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;;AAEA;AACA;AACA;AACA;AACA,YAAW,YAAY;AACvB,cAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1DA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvBA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,qBAAqB;AAChC;AACA,cAAa,OAAO;AACpB;AACA;AACA,kBAAiB;AACjB;AACA;AACA,WAAU;AACV;AACA;AACA,6BAA4B;AAC5B,EAAC;;AAED;;;;;;;ACzBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;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;;;;;;AChBA;;AAEA;AACA;AACA;AACA;AACA,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC1BA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,YAAW,OAAO;AAClB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACdA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;AChBA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACdA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;;AAEA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;;AAEA;AACA;;AAEA;;;;;;;ACLA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACNA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACNA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,EAAE;AACb,YAAW,KAAK;AAChB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;AClIA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtCA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7EA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5DA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjFA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG,IAAI;AACP;;AAEA;;;;;;;ACrBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACpBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;;;;;;;ACXA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,OAAO,WAAW;AAC7B,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA,yBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO,WAAW;AAC7B,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACpCA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACxBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjFA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;;;;;;;ACdA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvCA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;ACzEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;;;;;;;ACXA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA,2BAA0B,gBAAgB,gBAAgB,SAAS,GAAG,GAAG;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrDA;AACA;AACA;;AAEA;AACA,qCAAoC;;AAEpC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpDA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClBA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,uBAAuB;AAClC,cAAa,OAAO;AACpB;AACA;AACA,kBAAiB;AACjB;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;AC7BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA,OAAM,OAAO,OAAO,SAAS,EAAE,EAAE;AACjC,OAAM,OAAO,OAAO,SAAS,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3CA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1DA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,WAAU;AACV;AACA,cAAa,SAAS;AACtB,WAAU;AACV;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;AC1ED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAAyB,sBAAsB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qEAAoE;AACpE;AACA,yEAAwE;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,YAAW;AACX;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,UAAS;AACT;AACA,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA,sBAAqB;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6CAA4C;AAC5C,wEAAuE;AACvE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAoB;AACpB,2BAA0B;AAC1B;AACA;AACA;AACA,0DAAyD;AACzD,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,kDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAAyD;AACzD;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,kBAAkB,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACjYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAAyC,0BAA0B;AACnE,2CAA0C,2BAA2B;;AAErE;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,qBAAqB;AAC9C;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,sCAAsC;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA,wBAAuB,gDAAgD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,8BAA8B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACj4BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAAyB,sBAAsB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,gCAAgC;AAC3D;AACA;AACA,gCAA+B,wBAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,iCAAgC;AAChC,uCAAsC,EAAE;AACxC,0CAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,gEAAgE;AAC3E,YAAW;AACX;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,+BAA8B;AAC9B,qCAAoC,EAAE;AACtC,wCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,gEAAgE;AACzE,UAAS;AACT;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;;;;;AChHA,4C;;;;;;ACAA,4C;;;;;;ACAA,4C","file":"quagga.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"get-pixels\"), require(\"ndarray\"), require(\"ndarray-linear-interpolate\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"get-pixels\", \"ndarray\", \"ndarray-linear-interpolate\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quagga\"] = factory(require(\"get-pixels\"), require(\"ndarray\"), require(\"ndarray-linear-interpolate\"));\n\telse\n\t\troot[\"Quagga\"] = factory(root[\"get-pixels\"], root[\"ndarray\"], root[\"ndarray-linear-interpolate\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_191__, __WEBPACK_EXTERNAL_MODULE_192__, __WEBPACK_EXTERNAL_MODULE_193__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \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].e;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\te: {},\n \t\t\ti: moduleId,\n \t\t\tl: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.e, module, module.e, __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.e;\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// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 194);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 71671e09c48eb75c35fb\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\n\nvar logDisabled_ = false;\n\n// Utility methods.\nvar utils = {\n disableLog: function(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n logDisabled_ = bool;\n return (bool) ? 'adapter.js logging disabled' :\n 'adapter.js logging enabled';\n },\n\n log: function() {\n if (typeof window === 'object') {\n if (logDisabled_) {\n return;\n }\n console.log.apply(console, arguments);\n }\n },\n\n /**\n * Extract browser version out of the provided user agent string.\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\n extractVersion: function(uastring, expr, pos) {\n var match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n },\n\n /**\n * Browser detector.\n * @return {object} result containing browser, version and minVersion\n * properties.\n */\n detectBrowser: function() {\n // Returned result object.\n var result = {};\n result.browser = null;\n result.version = null;\n result.minVersion = null;\n\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a browser.';\n return result;\n } else if (navigator.mozGetUserMedia) {\n // Firefox.\n result.browser = 'firefox';\n result.version = this.extractVersion(navigator.userAgent,\n /Firefox\\/([0-9]+)\\./, 1);\n result.minVersion = 31;\n } else if (navigator.webkitGetUserMedia && window.webkitRTCPeerConnection) {\n // Chrome, Chromium, WebView, Opera and other WebKit browsers.\n result.browser = 'chrome';\n result.version = this.extractVersion(navigator.userAgent,\n /Chrom(e|ium)\\/([0-9]+)\\./, 2);\n result.minVersion = 38;\n } else if(navigator.mediaDevices &&\n navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)) {\n // Edge.\n result.browser = 'edge';\n result.version = this.extractVersion(navigator.userAgent,\n /Edge\\/(\\d+).(\\d+)$/, 2);\n result.minVersion = 10547;\n } else {\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n // Warn if version is less than minVersion.\n if (result.version < result.minVersion) {\n utils.log('Browser: ' + result.browser + ' Version: ' + result.version +\n ' < minimum supported version: ' + result.minVersion +\n '\\n some things might not work!');\n }\n\n return result;\n }\n};\n\n// Export.\nmodule.exports = {\n log: utils.log,\n disableLog: utils.disableLog,\n browserDetails: utils.detectBrowser(),\n extractVersion: utils.extractVersion\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/utils.js\n ** module id = 0\n ** module chunks = 0\n **/","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArray.js\n ** module id = 1\n ** module chunks = 0\n **/","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isObject.js\n ** module id = 2\n ** module chunks = 0\n **/","var checkGlobal = require('./_checkGlobal');\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\nmodule.exports = root;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_root.js\n ** module id = 3\n ** module chunks = 0\n **/","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isObjectLike.js\n ** module id = 4\n ** module chunks = 0\n **/","import BarcodeReader from './barcode_reader';\r\nimport {merge} from 'lodash';\r\n\r\nfunction EANReader(opts, supplements) {\r\n opts = merge(getDefaulConfig(), opts);\r\n BarcodeReader.call(this, opts, supplements);\r\n}\r\n\r\nfunction getDefaulConfig() {\r\n var config = {};\r\n\r\n Object.keys(EANReader.CONFIG_KEYS).forEach(function(key) {\r\n config[key] = EANReader.CONFIG_KEYS[key].default;\r\n });\r\n return config;\r\n}\r\n\r\nvar properties = {\r\n CODE_L_START: {value: 0},\r\n CODE_G_START: {value: 10},\r\n START_PATTERN: {value: [1, 1, 1]},\r\n STOP_PATTERN: {value: [1, 1, 1]},\r\n MIDDLE_PATTERN: {value: [1, 1, 1, 1, 1]},\r\n EXTENSION_START_PATTERN: {value: [1, 1, 2]},\r\n CODE_PATTERN: {value: [\r\n [3, 2, 1, 1],\r\n [2, 2, 2, 1],\r\n [2, 1, 2, 2],\r\n [1, 4, 1, 1],\r\n [1, 1, 3, 2],\r\n [1, 2, 3, 1],\r\n [1, 1, 1, 4],\r\n [1, 3, 1, 2],\r\n [1, 2, 1, 3],\r\n [3, 1, 1, 2],\r\n [1, 1, 2, 3],\r\n [1, 2, 2, 2],\r\n [2, 2, 1, 2],\r\n [1, 1, 4, 1],\r\n [2, 3, 1, 1],\r\n [1, 3, 2, 1],\r\n [4, 1, 1, 1],\r\n [2, 1, 3, 1],\r\n [3, 1, 2, 1],\r\n [2, 1, 1, 3]\r\n ]},\r\n CODE_FREQUENCY: {value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26]},\r\n SINGLE_CODE_ERROR: {value: 0.70},\r\n AVG_CODE_ERROR: {value: 0.48},\r\n FORMAT: {value: \"ean_13\", writeable: false}\r\n};\r\n\r\nEANReader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nEANReader.prototype.constructor = EANReader;\r\n\r\nEANReader.prototype._decodeCode = function(start, coderange) {\r\n var counter = [0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = start,\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: start,\r\n end: start\r\n },\r\n code,\r\n error;\r\n\r\n if (!coderange) {\r\n coderange = self.CODE_PATTERN.length;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n for (code = 0; code < coderange; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n bestMatch.end = i;\r\n if (bestMatch.error > self.AVG_CODE_ERROR) {\r\n return null;\r\n }\r\n return bestMatch;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findPattern = function(pattern, offset, isWhite, tryHarder, epsilon) {\r\n var counter = [],\r\n self = this,\r\n i,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n },\r\n error,\r\n j,\r\n sum;\r\n\r\n if (!offset) {\r\n offset = self._nextSet(self._row);\r\n }\r\n\r\n if (isWhite === undefined) {\r\n isWhite = false;\r\n }\r\n\r\n if (tryHarder === undefined) {\r\n tryHarder = true;\r\n }\r\n\r\n if ( epsilon === undefined) {\r\n epsilon = self.AVG_CODE_ERROR;\r\n }\r\n\r\n for ( i = 0; i < pattern.length; i++) {\r\n counter[i] = 0;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n error = self._matchPattern(counter, pattern);\r\n\r\n if (error < epsilon) {\r\n bestMatch.error = error;\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n return bestMatch;\r\n }\r\n if (tryHarder) {\r\n for ( j = 0; j < counter.length - 2; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[counter.length - 2] = 0;\r\n counter[counter.length - 1] = 0;\r\n counterPos--;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findStart = function() {\r\n var self = this,\r\n leadingWhitespaceStart,\r\n offset = self._nextSet(self._row),\r\n startInfo;\r\n\r\n while (!startInfo) {\r\n startInfo = self._findPattern(self.START_PATTERN, offset);\r\n if (!startInfo) {\r\n return null;\r\n }\r\n leadingWhitespaceStart = startInfo.start - (startInfo.end - startInfo.start);\r\n if (leadingWhitespaceStart >= 0) {\r\n if (self._matchRange(leadingWhitespaceStart, startInfo.start, 0)) {\r\n return startInfo;\r\n }\r\n }\r\n offset = startInfo.end;\r\n startInfo = null;\r\n }\r\n};\r\n\r\nEANReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + (endInfo.end - endInfo.start);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findEnd = function(offset, isWhite) {\r\n var self = this,\r\n endInfo = self._findPattern(self.STOP_PATTERN, offset, isWhite, false);\r\n\r\n return endInfo !== null ? self._verifyTrailingWhitespace(endInfo) : null;\r\n};\r\n\r\nEANReader.prototype._calculateFirstDigit = function(codeFrequency) {\r\n var i,\r\n self = this;\r\n\r\n for ( i = 0; i < self.CODE_FREQUENCY.length; i++) {\r\n if (codeFrequency === self.CODE_FREQUENCY[i]) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n codeFrequency = 0x0,\r\n firstDigit;\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end);\r\n if (!code) {\r\n return null;\r\n }\r\n if (code.code >= self.CODE_G_START) {\r\n code.code = code.code - self.CODE_G_START;\r\n codeFrequency |= 1 << (5 - i);\r\n } else {\r\n codeFrequency |= 0 << (5 - i);\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n\r\n firstDigit = self._calculateFirstDigit(codeFrequency);\r\n if (firstDigit === null) {\r\n return null;\r\n }\r\n result.unshift(firstDigit);\r\n\r\n code = self._findPattern(self.MIDDLE_PATTERN, code.end, true, false);\r\n if (code === null) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code);\r\n }\r\n\r\n return code;\r\n};\r\n\r\nEANReader.prototype._decode = function() {\r\n var startInfo,\r\n self = this,\r\n code,\r\n result = [],\r\n decodedCodes = [],\r\n resultInfo = {};\r\n\r\n startInfo = self._findStart();\r\n if (!startInfo) {\r\n return null;\r\n }\r\n code = {\r\n code: startInfo.code,\r\n start: startInfo.start,\r\n end: startInfo.end\r\n };\r\n decodedCodes.push(code);\r\n code = self._decodePayload(code, result, decodedCodes);\r\n if (!code) {\r\n return null;\r\n }\r\n code = self._findEnd(code.end, false);\r\n if (!code){\r\n return null;\r\n }\r\n\r\n decodedCodes.push(code);\r\n\r\n // Checksum\r\n if (!self._checksum(result)) {\r\n return null;\r\n }\r\n\r\n if (this.supplements.length > 0) {\r\n let ext = this._decodeExtensions(code.end);\r\n if (!ext) {\r\n return null;\r\n }\r\n let lastCode = ext.decodedCodes[ext.decodedCodes.length-1],\r\n endInfo = {\r\n start: lastCode.start + (((lastCode.end - lastCode.start) / 2) | 0),\r\n end: lastCode.end\r\n };\r\n if(!self._verifyTrailingWhitespace(endInfo)) {\r\n return null;\r\n }\r\n resultInfo = {\r\n supplement: ext,\r\n code: result.join(\"\") + ext.code\r\n }\r\n }\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: code.end,\r\n codeset: \"\",\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes,\r\n ...resultInfo\r\n };\r\n};\r\n\r\nEANReader.prototype._decodeExtensions = function(offset) {\r\n var i,\r\n start = this._nextSet(this._row, offset),\r\n startInfo = this._findPattern(this.EXTENSION_START_PATTERN, start, false, false),\r\n result;\r\n\r\n if (startInfo === null) {\r\n return null;\r\n }\r\n\r\n for (i = 0; i < this.supplements.length; i++) {\r\n result = this.supplements[i].decode(this._row, startInfo.end);\r\n if (result !== null) {\r\n return {\r\n code: result.code,\r\n start,\r\n startInfo,\r\n end: result.end,\r\n codeset: \"\",\r\n decodedCodes: result.decodedCodes\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._checksum = function(result) {\r\n var sum = 0, i;\r\n\r\n for ( i = result.length - 2; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n for ( i = result.length - 1; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n return sum % 10 === 0;\r\n};\r\n\r\nEANReader.CONFIG_KEYS = {\r\n supplements: {\r\n 'type': 'arrayOf(string)',\r\n 'default': [],\r\n 'description': 'Allowed extensions to be decoded (2 and/or 5)'\r\n }\r\n};\r\n\r\nexport default (EANReader);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_reader.js\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Map.js\n ** module id = 6\n ** module chunks = 0\n **/","export default {\r\n drawRect: function(pos, size, ctx, style){\r\n ctx.strokeStyle = style.color;\r\n ctx.fillStyle = style.color;\r\n ctx.lineWidth = 1;\r\n ctx.beginPath();\r\n ctx.strokeRect(pos.x, pos.y, size.x, size.y);\r\n },\r\n drawPath: function(path, def, ctx, style) {\r\n ctx.strokeStyle = style.color;\r\n ctx.fillStyle = style.color;\r\n ctx.lineWidth = style.lineWidth;\r\n ctx.beginPath();\r\n ctx.moveTo(path[0][def.x], path[0][def.y]);\r\n for (var j = 1; j < path.length; j++) {\r\n ctx.lineTo(path[j][def.x], path[j][def.y]);\r\n }\r\n ctx.closePath();\r\n ctx.stroke();\r\n },\r\n drawImage: function(imageData, size, ctx) {\r\n var canvasData = ctx.getImageData(0, 0, size.x, size.y),\r\n data = canvasData.data,\r\n imageDataPos = imageData.length,\r\n canvasDataPos = data.length,\r\n value;\r\n\r\n if (canvasDataPos / imageDataPos !== 4) {\r\n return false;\r\n }\r\n while (imageDataPos--){\r\n value = imageData[imageDataPos];\r\n data[--canvasDataPos] = 255;\r\n data[--canvasDataPos] = value;\r\n data[--canvasDataPos] = value;\r\n data[--canvasDataPos] = value;\r\n }\r\n ctx.putImageData(canvasData, 0, 0);\r\n return true;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/image_debug.js\n **/","function BarcodeReader(config, supplements) {\r\n this._row = [];\r\n this.config = config || {};\r\n this.supplements = supplements;\r\n return this;\r\n}\r\n\r\nBarcodeReader.prototype._nextUnset = function(line, start) {\r\n var i;\r\n\r\n if (start === undefined) {\r\n start = 0;\r\n }\r\n for (i = start; i < line.length; i++) {\r\n if (!line[i]) {\r\n return i;\r\n }\r\n }\r\n return line.length;\r\n};\r\n\r\nBarcodeReader.prototype._matchPattern = function(counter, code, maxSingleError) {\r\n var i,\r\n error = 0,\r\n singleError = 0,\r\n sum = 0,\r\n modulo = 0,\r\n barWidth,\r\n count,\r\n scaled;\r\n\r\n maxSingleError = maxSingleError || this.SINGLE_CODE_ERROR || 1;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n sum += counter[i];\r\n modulo += code[i];\r\n }\r\n if (sum < modulo) {\r\n return Number.MAX_VALUE;\r\n }\r\n barWidth = sum / modulo;\r\n maxSingleError *= barWidth;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n count = counter[i];\r\n scaled = code[i] * barWidth;\r\n singleError = Math.abs(count - scaled) / scaled;\r\n if (singleError > maxSingleError) {\r\n return Number.MAX_VALUE;\r\n }\r\n error += singleError;\r\n }\r\n return error / modulo;\r\n};\r\n\r\nBarcodeReader.prototype._nextSet = function(line, offset) {\r\n var i;\r\n\r\n offset = offset || 0;\r\n for (i = offset; i < line.length; i++) {\r\n if (line[i]) {\r\n return i;\r\n }\r\n }\r\n return line.length;\r\n};\r\n\r\nBarcodeReader.prototype._correctBars = function(counter, correction, indices) {\r\n var length = indices.length,\r\n tmp = 0;\r\n while(length--) {\r\n tmp = counter[indices[length]] * (1 - ((1 - correction) / 2));\r\n if (tmp > 1) {\r\n counter[indices[length]] = tmp;\r\n }\r\n }\r\n}\r\n\r\nBarcodeReader.prototype._matchTrace = function(cmpCounter, epsilon) {\r\n var counter = [],\r\n i,\r\n self = this,\r\n offset = self._nextSet(self._row),\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0\r\n },\r\n error;\r\n\r\n if (cmpCounter) {\r\n for ( i = 0; i < cmpCounter.length; i++) {\r\n counter.push(0);\r\n }\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n error = self._matchPattern(counter, cmpCounter);\r\n\r\n if (error < epsilon) {\r\n bestMatch.start = i - offset;\r\n bestMatch.end = i;\r\n bestMatch.counter = counter;\r\n return bestMatch;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n } else {\r\n counter.push(0);\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n counterPos++;\r\n counter.push(0);\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n }\r\n\r\n // if cmpCounter was not given\r\n bestMatch.start = offset;\r\n bestMatch.end = self._row.length - 1;\r\n bestMatch.counter = counter;\r\n return bestMatch;\r\n};\r\n\r\nBarcodeReader.prototype.decodePattern = function(pattern) {\r\n var self = this,\r\n result;\r\n\r\n self._row = pattern;\r\n result = self._decode();\r\n if (result === null) {\r\n self._row.reverse();\r\n result = self._decode();\r\n if (result) {\r\n result.direction = BarcodeReader.DIRECTION.REVERSE;\r\n result.start = self._row.length - result.start;\r\n result.end = self._row.length - result.end;\r\n }\r\n } else {\r\n result.direction = BarcodeReader.DIRECTION.FORWARD;\r\n }\r\n if (result) {\r\n result.format = self.FORMAT;\r\n }\r\n return result;\r\n};\r\n\r\nBarcodeReader.prototype._matchRange = function(start, end, value) {\r\n var i;\r\n\r\n start = start < 0 ? 0 : start;\r\n for (i = start; i < end; i++) {\r\n if (this._row[i] !== value) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nBarcodeReader.prototype._fillCounters = function(offset, end, isWhite) {\r\n var self = this,\r\n counterPos = 0,\r\n i,\r\n counters = [];\r\n\r\n isWhite = (typeof isWhite !== 'undefined') ? isWhite : true;\r\n offset = (typeof offset !== 'undefined') ? offset : self._nextUnset(self._row);\r\n end = end || self._row.length;\r\n\r\n counters[counterPos] = 0;\r\n for (i = offset; i < end; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counters[counterPos]++;\r\n } else {\r\n counterPos++;\r\n counters[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return counters;\r\n};\r\n\r\nObject.defineProperty(BarcodeReader.prototype, \"FORMAT\", {\r\n value: 'unknown',\r\n writeable: false\r\n});\r\n\r\nBarcodeReader.DIRECTION = {\r\n FORWARD: 1,\r\n REVERSE: -1\r\n};\r\n\r\nBarcodeReader.Exception = {\r\n StartNotFoundException: \"Start-Info was not found!\",\r\n CodeNotFoundException: \"Code could not be found!\",\r\n PatternNotFoundException: \"Pattern could not be found!\"\r\n};\r\n\r\nBarcodeReader.CONFIG_KEYS = {};\r\n\r\nexport default BarcodeReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/barcode_reader.js\n **/","module.exports = clone\n\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {vec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\nfunction clone(a) {\n var out = new Float32Array(2)\n out[0] = a[0]\n out[1] = a[1]\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/clone.js\n ** module id = 9\n ** module chunks = 0\n **/","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\nmodule.exports = isArguments;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArguments.js\n ** module id = 10\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isFunction.js\n ** module id = 11\n ** module chunks = 0\n **/","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable properties of source objects into the destination\n * object. Source properties that resolve to `undefined` are skipped if a\n * destination value exists. Array and plain object properties are merged\n * recursively.Other objects and value types are overridden by assignment.\n * Source objects are applied from left to right. Subsequent sources\n * overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/merge.js\n ** module id = 12\n ** module chunks = 0\n **/","export default {\r\n init: function(arr, val) {\r\n var l = arr.length;\r\n while (l--) {\r\n arr[l] = val;\r\n }\r\n },\r\n\r\n /**\r\n * Shuffles the content of an array\r\n * @return {Array} the array itself shuffled\r\n */\r\n shuffle: function(arr) {\r\n var i = arr.length - 1, j, x;\r\n for (i; i >= 0; i--) {\r\n j = Math.floor(Math.random() * i);\r\n x = arr[i];\r\n arr[i] = arr[j];\r\n arr[j] = x;\r\n }\r\n return arr;\r\n },\r\n\r\n toPointList: function(arr) {\r\n var i, j, row = [], rows = [];\r\n for ( i = 0; i < arr.length; i++) {\r\n row = [];\r\n for ( j = 0; j < arr[i].length; j++) {\r\n row[j] = arr[i][j];\r\n }\r\n rows[i] = \"[\" + row.join(\",\") + \"]\";\r\n }\r\n return \"[\" + rows.join(\",\\r\\n\") + \"]\";\r\n },\r\n\r\n /**\r\n * returns the elements which's score is bigger than the threshold\r\n * @return {Array} the reduced array\r\n */\r\n threshold: function(arr, threshold, scoreFunc) {\r\n var i, queue = [];\r\n for ( i = 0; i < arr.length; i++) {\r\n if (scoreFunc.apply(arr, [arr[i]]) >= threshold) {\r\n queue.push(arr[i]);\r\n }\r\n }\r\n return queue;\r\n },\r\n\r\n maxIndex: function(arr) {\r\n var i, max = 0;\r\n for ( i = 0; i < arr.length; i++) {\r\n if (arr[i] > arr[max]) {\r\n max = i;\r\n }\r\n }\r\n return max;\r\n },\r\n\r\n max: function(arr) {\r\n var i, max = 0;\r\n for ( i = 0; i < arr.length; i++) {\r\n if (arr[i] > max) {\r\n max = arr[i];\r\n }\r\n }\r\n return max;\r\n },\r\n\r\n sum: function(arr) {\r\n var length = arr.length,\r\n sum = 0;\r\n\r\n while (length--) {\r\n sum += arr[length];\r\n }\r\n return sum;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/array_helper.js\n **/","var stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction Stack(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = values[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add functions to the `Stack` cache.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Stack.js\n ** module id = 14\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/**\n * Gets the index at which the first occurrence of `key` is found in `array`\n * of key-value pairs.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocIndexOf.js\n ** module id = 15\n ** module chunks = 0\n **/","var isNative = require('./isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getNative.js\n ** module id = 16\n ** module chunks = 0\n **/","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\nmodule.exports = isHostObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isHostObject.js\n ** module id = 17\n ** module chunks = 0\n **/","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isIndex.js\n ** module id = 18\n ** module chunks = 0\n **/","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return type == 'number' || type == 'boolean' ||\n (type == 'string' && value != '__proto__') || value == null;\n}\n\nmodule.exports = isKeyable;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isKeyable.js\n ** module id = 19\n ** module chunks = 0\n **/","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_nativeCreate.js\n ** module id = 20\n ** module chunks = 0\n **/","/**\n * Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/eq.js\n ** module id = 21\n ** module chunks = 0\n **/","var getLength = require('./_getLength'),\n isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArrayLike.js\n ** module id = 22\n ** module chunks = 0\n **/","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isLength.js\n ** module id = 23\n ** module chunks = 0\n **/","var baseHas = require('./_baseHas'),\n baseKeys = require('./_baseKeys'),\n indexKeys = require('./_indexKeys'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n var isProto = isPrototype(object);\n if (!(isProto || isArrayLike(object))) {\n return baseKeys(object);\n }\n var indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n for (var key in object) {\n if (baseHas(object, key) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(isProto && key == 'constructor')) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/keys.js\n ** module id = 24\n ** module chunks = 0\n **/","import Cluster2 from './cluster';\r\nimport ArrayHelper from './array_helper';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone')\r\n};\r\nconst vec3 = {\r\n clone: require('gl-vec3/clone')\r\n};\r\n\r\n/**\r\n * @param x x-coordinate\r\n * @param y y-coordinate\r\n * @return ImageReference {x,y} Coordinate\r\n */\r\nexport function imageRef(x, y) {\r\n var that = {\r\n x: x,\r\n y: y,\r\n toVec2: function() {\r\n return vec2.clone([this.x, this.y]);\r\n },\r\n toVec3: function() {\r\n return vec3.clone([this.x, this.y, 1]);\r\n },\r\n round: function() {\r\n this.x = this.x > 0.0 ? Math.floor(this.x + 0.5) : Math.floor(this.x - 0.5);\r\n this.y = this.y > 0.0 ? Math.floor(this.y + 0.5) : Math.floor(this.y - 0.5);\r\n return this;\r\n }\r\n };\r\n return that;\r\n};\r\n\r\n/**\r\n * Computes an integral image of a given grayscale image.\r\n * @param imageDataContainer {ImageDataContainer} the image to be integrated\r\n */\r\nexport function computeIntegralImage2(imageWrapper, integralWrapper) {\r\n var imageData = imageWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0, posA = 0, posB = 0, posC = 0, posD = 0, x, y;\r\n\r\n // sum up first column\r\n posB = width;\r\n sum = 0;\r\n for ( y = 1; y < height; y++) {\r\n sum += imageData[posA];\r\n integralImageData[posB] += sum;\r\n posA += width;\r\n posB += width;\r\n }\r\n\r\n posA = 0;\r\n posB = 1;\r\n sum = 0;\r\n for ( x = 1; x < width; x++) {\r\n sum += imageData[posA];\r\n integralImageData[posB] += sum;\r\n posA++;\r\n posB++;\r\n }\r\n\r\n for ( y = 1; y < height; y++) {\r\n posA = y * width + 1;\r\n posB = (y - 1) * width + 1;\r\n posC = y * width;\r\n posD = (y - 1) * width;\r\n for ( x = 1; x < width; x++) {\r\n integralImageData[posA] +=\r\n imageData[posA] + integralImageData[posB] + integralImageData[posC] - integralImageData[posD];\r\n posA++;\r\n posB++;\r\n posC++;\r\n posD++;\r\n }\r\n }\r\n};\r\n\r\nexport function computeIntegralImage(imageWrapper, integralWrapper) {\r\n var imageData = imageWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0;\r\n\r\n // sum up first row\r\n for (var i = 0; i < width; i++) {\r\n sum += imageData[i];\r\n integralImageData[i] = sum;\r\n }\r\n\r\n for (var v = 1; v < height; v++) {\r\n sum = 0;\r\n for (var u = 0; u < width; u++) {\r\n sum += imageData[v * width + u];\r\n integralImageData[((v) * width) + u] = sum + integralImageData[(v - 1) * width + u];\r\n }\r\n }\r\n};\r\n\r\nexport function thresholdImage(imageWrapper, threshold, targetWrapper) {\r\n if (!targetWrapper) {\r\n targetWrapper = imageWrapper;\r\n }\r\n var imageData = imageWrapper.data, length = imageData.length, targetData = targetWrapper.data;\r\n\r\n while (length--) {\r\n targetData[length] = imageData[length] < threshold ? 1 : 0;\r\n }\r\n};\r\n\r\nexport function computeHistogram(imageWrapper, bitsPerPixel) {\r\n if (!bitsPerPixel) {\r\n bitsPerPixel = 8;\r\n }\r\n var imageData = imageWrapper.data,\r\n length = imageData.length,\r\n bitShift = 8 - bitsPerPixel,\r\n bucketCnt = 1 << bitsPerPixel,\r\n hist = new Int32Array(bucketCnt);\r\n\r\n while (length--) {\r\n hist[imageData[length] >> bitShift]++;\r\n }\r\n return hist;\r\n};\r\n\r\nexport function sharpenLine(line) {\r\n var i,\r\n length = line.length,\r\n left = line[0],\r\n center = line[1],\r\n right;\r\n\r\n for (i = 1; i < length - 1; i++) {\r\n right = line[i + 1];\r\n // -1 4 -1 kernel\r\n line[i - 1] = (((center * 2) - left - right)) & 255;\r\n left = center;\r\n center = right;\r\n }\r\n return line;\r\n};\r\n\r\nexport function determineOtsuThreshold(imageWrapper, bitsPerPixel) {\r\n if (!bitsPerPixel) {\r\n bitsPerPixel = 8;\r\n }\r\n var hist,\r\n threshold,\r\n bitShift = 8 - bitsPerPixel;\r\n\r\n function px(init, end) {\r\n var sum = 0, i;\r\n for ( i = init; i <= end; i++) {\r\n sum += hist[i];\r\n }\r\n return sum;\r\n }\r\n\r\n function mx(init, end) {\r\n var i, sum = 0;\r\n\r\n for ( i = init; i <= end; i++) {\r\n sum += i * hist[i];\r\n }\r\n\r\n return sum;\r\n }\r\n\r\n function determineThreshold() {\r\n var vet = [0], p1, p2, p12, k, m1, m2, m12,\r\n max = (1 << bitsPerPixel) - 1;\r\n\r\n hist = computeHistogram(imageWrapper, bitsPerPixel);\r\n for ( k = 1; k < max; k++) {\r\n p1 = px(0, k);\r\n p2 = px(k + 1, max);\r\n p12 = p1 * p2;\r\n if (p12 === 0) {\r\n p12 = 1;\r\n }\r\n m1 = mx(0, k) * p2;\r\n m2 = mx(k + 1, max) * p1;\r\n m12 = m1 - m2;\r\n vet[k] = m12 * m12 / p12;\r\n }\r\n return ArrayHelper.maxIndex(vet);\r\n }\r\n\r\n threshold = determineThreshold();\r\n return threshold << bitShift;\r\n};\r\n\r\nexport function otsuThreshold(imageWrapper, targetWrapper) {\r\n var threshold = determineOtsuThreshold(imageWrapper);\r\n\r\n thresholdImage(imageWrapper, threshold, targetWrapper);\r\n return threshold;\r\n};\r\n\r\n// local thresholding\r\nexport function computeBinaryImage(imageWrapper, integralWrapper, targetWrapper) {\r\n computeIntegralImage(imageWrapper, integralWrapper);\r\n\r\n if (!targetWrapper) {\r\n targetWrapper = imageWrapper;\r\n }\r\n var imageData = imageWrapper.data;\r\n var targetData = targetWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0, v, u, kernel = 3, A, B, C, D, avg, size = (kernel * 2 + 1) * (kernel * 2 + 1);\r\n\r\n // clear out top & bottom-border\r\n for ( v = 0; v <= kernel; v++) {\r\n for ( u = 0; u < width; u++) {\r\n targetData[((v) * width) + u] = 0;\r\n targetData[(((height - 1) - v) * width) + u] = 0;\r\n }\r\n }\r\n\r\n // clear out left & right border\r\n for ( v = kernel; v < height - kernel; v++) {\r\n for ( u = 0; u <= kernel; u++) {\r\n targetData[((v) * width) + u] = 0;\r\n targetData[((v) * width) + (width - 1 - u)] = 0;\r\n }\r\n }\r\n\r\n for ( v = kernel + 1; v < height - kernel - 1; v++) {\r\n for ( u = kernel + 1; u < width - kernel; u++) {\r\n A = integralImageData[(v - kernel - 1) * width + (u - kernel - 1)];\r\n B = integralImageData[(v - kernel - 1) * width + (u + kernel)];\r\n C = integralImageData[(v + kernel) * width + (u - kernel - 1)];\r\n D = integralImageData[(v + kernel) * width + (u + kernel)];\r\n sum = D - C - B + A;\r\n avg = sum / (size);\r\n targetData[v * width + u] = imageData[v * width + u] > (avg + 5) ? 0 : 1;\r\n }\r\n }\r\n};\r\n\r\nexport function cluster(points, threshold, property) {\r\n var i, k, cluster, point, clusters = [];\r\n\r\n if (!property) {\r\n property = \"rad\";\r\n }\r\n\r\n function addToCluster(newPoint) {\r\n var found = false;\r\n for ( k = 0; k < clusters.length; k++) {\r\n cluster = clusters[k];\r\n if (cluster.fits(newPoint)) {\r\n cluster.add(newPoint);\r\n found = true;\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n // iterate over each cloud\r\n for ( i = 0; i < points.length; i++) {\r\n point = Cluster2.createPoint(points[i], i, property);\r\n if (!addToCluster(point)) {\r\n clusters.push(Cluster2.create(point, threshold));\r\n }\r\n }\r\n return clusters;\r\n};\r\n\r\nexport const Tracer = {\r\n trace: function(points, vec) {\r\n var iteration, maxIterations = 10, top = [], result = [], centerPos = 0, currentPos = 0;\r\n\r\n function trace(idx, forward) {\r\n var from, to, toIdx, predictedPos, thresholdX = 1, thresholdY = Math.abs(vec[1] / 10), found = false;\r\n\r\n function match(pos, predicted) {\r\n if (pos.x > (predicted.x - thresholdX)\r\n && pos.x < (predicted.x + thresholdX)\r\n && pos.y > (predicted.y - thresholdY)\r\n && pos.y < (predicted.y + thresholdY)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // check if the next index is within the vec specifications\r\n // if not, check as long as the threshold is met\r\n\r\n from = points[idx];\r\n if (forward) {\r\n predictedPos = {\r\n x: from.x + vec[0],\r\n y: from.y + vec[1]\r\n };\r\n } else {\r\n predictedPos = {\r\n x: from.x - vec[0],\r\n y: from.y - vec[1]\r\n };\r\n }\r\n\r\n toIdx = forward ? idx + 1 : idx - 1;\r\n to = points[toIdx];\r\n while (to && ( found = match(to, predictedPos)) !== true && (Math.abs(to.y - from.y) < vec[1])) {\r\n toIdx = forward ? toIdx + 1 : toIdx - 1;\r\n to = points[toIdx];\r\n }\r\n\r\n return found ? toIdx : null;\r\n }\r\n\r\n for ( iteration = 0; iteration < maxIterations; iteration++) {\r\n // randomly select point to start with\r\n centerPos = Math.floor(Math.random() * points.length);\r\n\r\n // trace forward\r\n top = [];\r\n currentPos = centerPos;\r\n top.push(points[currentPos]);\r\n while (( currentPos = trace(currentPos, true)) !== null) {\r\n top.push(points[currentPos]);\r\n }\r\n if (centerPos > 0) {\r\n currentPos = centerPos;\r\n while (( currentPos = trace(currentPos, false)) !== null) {\r\n top.push(points[currentPos]);\r\n }\r\n }\r\n\r\n if (top.length > result.length) {\r\n result = top;\r\n }\r\n }\r\n return result;\r\n }\r\n};\r\n\r\nexport const DILATE = 1;\r\nexport const ERODE = 2;\r\n\r\nexport function dilate(inImageWrapper, outImageWrapper) {\r\n var v,\r\n u,\r\n inImageData = inImageWrapper.data,\r\n outImageData = outImageWrapper.data,\r\n height = inImageWrapper.size.y,\r\n width = inImageWrapper.size.x,\r\n sum,\r\n yStart1,\r\n yStart2,\r\n xStart1,\r\n xStart2;\r\n\r\n for ( v = 1; v < height - 1; v++) {\r\n for ( u = 1; u < width - 1; u++) {\r\n yStart1 = v - 1;\r\n yStart2 = v + 1;\r\n xStart1 = u - 1;\r\n xStart2 = u + 1;\r\n sum = inImageData[yStart1 * width + xStart1] + inImageData[yStart1 * width + xStart2] +\r\n inImageData[v * width + u] +\r\n inImageData[yStart2 * width + xStart1] + inImageData[yStart2 * width + xStart2];\r\n outImageData[v * width + u] = sum > 0 ? 1 : 0;\r\n }\r\n }\r\n};\r\n\r\nexport function erode(inImageWrapper, outImageWrapper) {\r\n var v,\r\n u,\r\n inImageData = inImageWrapper.data,\r\n outImageData = outImageWrapper.data,\r\n height = inImageWrapper.size.y,\r\n width = inImageWrapper.size.x,\r\n sum,\r\n yStart1,\r\n yStart2,\r\n xStart1,\r\n xStart2;\r\n\r\n for ( v = 1; v < height - 1; v++) {\r\n for ( u = 1; u < width - 1; u++) {\r\n yStart1 = v - 1;\r\n yStart2 = v + 1;\r\n xStart1 = u - 1;\r\n xStart2 = u + 1;\r\n sum = inImageData[yStart1 * width + xStart1] + inImageData[yStart1 * width + xStart2] +\r\n inImageData[v * width + u] +\r\n inImageData[yStart2 * width + xStart1] + inImageData[yStart2 * width + xStart2];\r\n outImageData[v * width + u] = sum === 5 ? 1 : 0;\r\n }\r\n }\r\n};\r\n\r\nexport function subtract(aImageWrapper, bImageWrapper, resultImageWrapper) {\r\n if (!resultImageWrapper) {\r\n resultImageWrapper = aImageWrapper;\r\n }\r\n var length = aImageWrapper.data.length,\r\n aImageData = aImageWrapper.data,\r\n bImageData = bImageWrapper.data,\r\n cImageData = resultImageWrapper.data;\r\n\r\n while (length--) {\r\n cImageData[length] = aImageData[length] - bImageData[length];\r\n }\r\n};\r\n\r\nexport function bitwiseOr(aImageWrapper, bImageWrapper, resultImageWrapper) {\r\n if (!resultImageWrapper) {\r\n resultImageWrapper = aImageWrapper;\r\n }\r\n var length = aImageWrapper.data.length,\r\n aImageData = aImageWrapper.data,\r\n bImageData = bImageWrapper.data,\r\n cImageData = resultImageWrapper.data;\r\n\r\n while (length--) {\r\n cImageData[length] = aImageData[length] || bImageData[length];\r\n }\r\n};\r\n\r\nexport function countNonZero(imageWrapper) {\r\n var length = imageWrapper.data.length, data = imageWrapper.data, sum = 0;\r\n\r\n while (length--) {\r\n sum += data[length];\r\n }\r\n return sum;\r\n};\r\n\r\nexport function topGeneric(list, top, scoreFunc) {\r\n var i, minIdx = 0, min = 0, queue = [], score, hit, pos;\r\n\r\n for ( i = 0; i < top; i++) {\r\n queue[i] = {\r\n score: 0,\r\n item: null\r\n };\r\n }\r\n\r\n for ( i = 0; i < list.length; i++) {\r\n score = scoreFunc.apply(this, [list[i]]);\r\n if (score > min) {\r\n hit = queue[minIdx];\r\n hit.score = score;\r\n hit.item = list[i];\r\n min = Number.MAX_VALUE;\r\n for ( pos = 0; pos < top; pos++) {\r\n if (queue[pos].score < min) {\r\n min = queue[pos].score;\r\n minIdx = pos;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return queue;\r\n};\r\n\r\nexport function grayArrayFromImage(htmlImage, offsetX, ctx, array) {\r\n ctx.drawImage(htmlImage, offsetX, 0, htmlImage.width, htmlImage.height);\r\n var ctxData = ctx.getImageData(offsetX, 0, htmlImage.width, htmlImage.height).data;\r\n computeGray(ctxData, array);\r\n};\r\n\r\nexport function grayArrayFromContext(ctx, size, offset, array) {\r\n var ctxData = ctx.getImageData(offset.x, offset.y, size.x, size.y).data;\r\n computeGray(ctxData, array);\r\n};\r\n\r\nexport function grayAndHalfSampleFromCanvasData(canvasData, size, outArray) {\r\n var topRowIdx = 0;\r\n var bottomRowIdx = size.x;\r\n var endIdx = Math.floor(canvasData.length / 4);\r\n var outWidth = size.x / 2;\r\n var outImgIdx = 0;\r\n var inWidth = size.x;\r\n var i;\r\n\r\n while (bottomRowIdx < endIdx) {\r\n for ( i = 0; i < outWidth; i++) {\r\n outArray[outImgIdx] = Math.floor((\r\n (0.299 * canvasData[topRowIdx * 4 + 0] +\r\n 0.587 * canvasData[topRowIdx * 4 + 1] +\r\n 0.114 * canvasData[topRowIdx * 4 + 2]) +\r\n (0.299 * canvasData[(topRowIdx + 1) * 4 + 0] +\r\n 0.587 * canvasData[(topRowIdx + 1) * 4 + 1] +\r\n 0.114 * canvasData[(topRowIdx + 1) * 4 + 2]) +\r\n (0.299 * canvasData[(bottomRowIdx) * 4 + 0] +\r\n 0.587 * canvasData[(bottomRowIdx) * 4 + 1] +\r\n 0.114 * canvasData[(bottomRowIdx) * 4 + 2]) +\r\n (0.299 * canvasData[(bottomRowIdx + 1) * 4 + 0] +\r\n 0.587 * canvasData[(bottomRowIdx + 1) * 4 + 1] +\r\n 0.114 * canvasData[(bottomRowIdx + 1) * 4 + 2])) / 4);\r\n outImgIdx++;\r\n topRowIdx = topRowIdx + 2;\r\n bottomRowIdx = bottomRowIdx + 2;\r\n }\r\n topRowIdx = topRowIdx + inWidth;\r\n bottomRowIdx = bottomRowIdx + inWidth;\r\n }\r\n};\r\n\r\nexport function computeGray(imageData, outArray, config) {\r\n var l = (imageData.length / 4) | 0,\r\n i,\r\n singleChannel = config && config.singleChannel === true;\r\n\r\n if (singleChannel) {\r\n for (i = 0; i < l; i++) {\r\n outArray[i] = imageData[i * 4 + 0];\r\n }\r\n } else {\r\n for (i = 0; i < l; i++) {\r\n outArray[i] = Math.floor(\r\n 0.299 * imageData[i * 4 + 0] + 0.587 * imageData[i * 4 + 1] + 0.114 * imageData[i * 4 + 2]);\r\n }\r\n }\r\n};\r\n\r\nexport function loadImageArray(src, callback, canvas) {\r\n if (!canvas) {\r\n canvas = document.createElement('canvas');\r\n }\r\n var img = new Image();\r\n img.callback = callback;\r\n img.onload = function() {\r\n canvas.width = this.width;\r\n canvas.height = this.height;\r\n var ctx = canvas.getContext('2d');\r\n ctx.drawImage(this, 0, 0);\r\n var array = new Uint8Array(this.width * this.height);\r\n ctx.drawImage(this, 0, 0);\r\n var data = ctx.getImageData(0, 0, this.width, this.height).data;\r\n computeGray(data, array);\r\n this.callback(array, {\r\n x: this.width,\r\n y: this.height\r\n }, this);\r\n };\r\n img.src = src;\r\n};\r\n\r\n/**\r\n * @param inImg {ImageWrapper} input image to be sampled\r\n * @param outImg {ImageWrapper} to be stored in\r\n */\r\nexport function halfSample(inImgWrapper, outImgWrapper) {\r\n var inImg = inImgWrapper.data;\r\n var inWidth = inImgWrapper.size.x;\r\n var outImg = outImgWrapper.data;\r\n var topRowIdx = 0;\r\n var bottomRowIdx = inWidth;\r\n var endIdx = inImg.length;\r\n var outWidth = inWidth / 2;\r\n var outImgIdx = 0;\r\n while (bottomRowIdx < endIdx) {\r\n for (var i = 0; i < outWidth; i++) {\r\n outImg[outImgIdx] = Math.floor(\r\n (inImg[topRowIdx] + inImg[topRowIdx + 1] + inImg[bottomRowIdx] + inImg[bottomRowIdx + 1]) / 4);\r\n outImgIdx++;\r\n topRowIdx = topRowIdx + 2;\r\n bottomRowIdx = bottomRowIdx + 2;\r\n }\r\n topRowIdx = topRowIdx + inWidth;\r\n bottomRowIdx = bottomRowIdx + inWidth;\r\n }\r\n};\r\n\r\nexport function hsv2rgb(hsv, rgb) {\r\n var h = hsv[0],\r\n s = hsv[1],\r\n v = hsv[2],\r\n c = v * s,\r\n x = c * (1 - Math.abs((h / 60) % 2 - 1)),\r\n m = v - c,\r\n r = 0,\r\n g = 0,\r\n b = 0;\r\n\r\n rgb = rgb || [0, 0, 0];\r\n\r\n if (h < 60) {\r\n r = c;\r\n g = x;\r\n } else if (h < 120) {\r\n r = x;\r\n g = c;\r\n } else if (h < 180) {\r\n g = c;\r\n b = x;\r\n } else if (h < 240) {\r\n g = x;\r\n b = c;\r\n } else if (h < 300) {\r\n r = x;\r\n b = c;\r\n } else if (h < 360) {\r\n r = c;\r\n b = x;\r\n }\r\n rgb[0] = ((r + m) * 255) | 0;\r\n rgb[1] = ((g + m) * 255) | 0;\r\n rgb[2] = ((b + m) * 255) | 0;\r\n return rgb;\r\n};\r\n\r\nexport function _computeDivisors(n) {\r\n var largeDivisors = [],\r\n divisors = [],\r\n i;\r\n\r\n for (i = 1; i < Math.sqrt(n) + 1; i++) {\r\n if (n % i === 0) {\r\n divisors.push(i);\r\n if (i !== n / i) {\r\n largeDivisors.unshift(Math.floor(n / i));\r\n }\r\n }\r\n }\r\n return divisors.concat(largeDivisors);\r\n};\r\n\r\nfunction _computeIntersection(arr1, arr2) {\r\n var i = 0,\r\n j = 0,\r\n result = [];\r\n\r\n while (i < arr1.length && j < arr2.length) {\r\n if (arr1[i] === arr2[j]) {\r\n result.push(arr1[i]);\r\n i++;\r\n j++;\r\n } else if (arr1[i] > arr2[j]) {\r\n j++;\r\n } else {\r\n i++;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nexport function calculatePatchSize(patchSize, imgSize) {\r\n var divisorsX = _computeDivisors(imgSize.x),\r\n divisorsY = _computeDivisors(imgSize.y),\r\n wideSide = Math.max(imgSize.x, imgSize.y),\r\n common = _computeIntersection(divisorsX, divisorsY),\r\n nrOfPatchesList = [8, 10, 15, 20, 32, 60, 80],\r\n nrOfPatchesMap = {\r\n \"x-small\": 5,\r\n \"small\": 4,\r\n \"medium\": 3,\r\n \"large\": 2,\r\n \"x-large\": 1\r\n },\r\n nrOfPatchesIdx = nrOfPatchesMap[patchSize] || nrOfPatchesMap.medium,\r\n nrOfPatches = nrOfPatchesList[nrOfPatchesIdx],\r\n desiredPatchSize = Math.floor(wideSide / nrOfPatches),\r\n optimalPatchSize;\r\n\r\n function findPatchSizeForDivisors(divisors) {\r\n var i = 0,\r\n found = divisors[Math.floor(divisors.length / 2)];\r\n\r\n while (i < (divisors.length - 1) && divisors[i] < desiredPatchSize) {\r\n i++;\r\n }\r\n if (i > 0) {\r\n if (Math.abs(divisors[i] - desiredPatchSize) > Math.abs(divisors[i - 1] - desiredPatchSize)) {\r\n found = divisors[i - 1];\r\n } else {\r\n found = divisors[i];\r\n }\r\n }\r\n if (desiredPatchSize / found < nrOfPatchesList[nrOfPatchesIdx + 1] / nrOfPatchesList[nrOfPatchesIdx] &&\r\n desiredPatchSize / found > nrOfPatchesList[nrOfPatchesIdx - 1] / nrOfPatchesList[nrOfPatchesIdx] ) {\r\n return {x: found, y: found};\r\n }\r\n return null;\r\n }\r\n\r\n optimalPatchSize = findPatchSizeForDivisors(common);\r\n if (!optimalPatchSize) {\r\n optimalPatchSize = findPatchSizeForDivisors(_computeDivisors(wideSide));\r\n if (!optimalPatchSize) {\r\n optimalPatchSize = findPatchSizeForDivisors((_computeDivisors(desiredPatchSize * nrOfPatches)));\r\n }\r\n }\r\n return optimalPatchSize;\r\n};\r\n\r\nexport function _parseCSSDimensionValues(value) {\r\n var dimension = {\r\n value: parseFloat(value),\r\n unit: value.indexOf(\"%\") === value.length - 1 ? \"%\" : \"%\"\r\n };\r\n\r\n return dimension;\r\n};\r\n\r\nexport const _dimensionsConverters = {\r\n top: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.height * (dimension.value / 100));\r\n }\r\n },\r\n right: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.width - (context.width * (dimension.value / 100)));\r\n }\r\n },\r\n bottom: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.height - (context.height * (dimension.value / 100)));\r\n }\r\n },\r\n left: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.width * (dimension.value / 100));\r\n }\r\n }\r\n};\r\n\r\nexport function computeImageArea(inputWidth, inputHeight, area) {\r\n var context = {width: inputWidth, height: inputHeight};\r\n\r\n var parsedArea = Object.keys(area).reduce(function(result, key) {\r\n var value = area[key],\r\n parsed = _parseCSSDimensionValues(value),\r\n calculated = _dimensionsConverters[key](parsed, context);\r\n\r\n result[key] = calculated;\r\n return result;\r\n }, {});\r\n\r\n return {\r\n sx: parsedArea.left,\r\n sy: parsedArea.top,\r\n sw: parsedArea.right - parsedArea.left,\r\n sh: parsedArea.bottom - parsedArea.top\r\n };\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/cv_utils.js\n **/","import SubImage from './subImage';\r\nimport {hsv2rgb} from '../common/cv_utils';\r\nimport ArrayHelper from '../common/array_helper';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n};\r\n\r\n/**\r\n * Represents a basic image combining the data and size.\r\n * In addition, some methods for manipulation are contained.\r\n * @param size {x,y} The size of the image in pixel\r\n * @param data {Array} If given, a flat array containing the pixel data\r\n * @param ArrayType {Type} If given, the desired DataType of the Array (may be typed/non-typed)\r\n * @param initialize {Boolean} Indicating if the array should be initialized on creation.\r\n * @returns {ImageWrapper}\r\n */\r\nfunction ImageWrapper(size, data, ArrayType, initialize) {\r\n if (!data) {\r\n if (ArrayType) {\r\n this.data = new ArrayType(size.x * size.y);\r\n if (ArrayType === Array && initialize) {\r\n ArrayHelper.init(this.data, 0);\r\n }\r\n } else {\r\n this.data = new Uint8Array(size.x * size.y);\r\n if (Uint8Array === Array && initialize) {\r\n ArrayHelper.init(this.data, 0);\r\n }\r\n }\r\n } else {\r\n this.data = data;\r\n }\r\n this.size = size;\r\n}\r\n\r\n/**\r\n * tests if a position is within the image with a given offset\r\n * @param imgRef {x, y} The location to test\r\n * @param border Number the padding value in pixel\r\n * @returns {Boolean} true if location inside the image's border, false otherwise\r\n * @see cvd/image.h\r\n */\r\nImageWrapper.prototype.inImageWithBorder = function(imgRef, border) {\r\n return (imgRef.x >= border)\r\n && (imgRef.y >= border)\r\n && (imgRef.x < (this.size.x - border))\r\n && (imgRef.y < (this.size.y - border));\r\n};\r\n\r\n/**\r\n * Performs bilinear sampling\r\n * @param inImg Image to extract sample from\r\n * @param x the x-coordinate\r\n * @param y the y-coordinate\r\n * @returns the sampled value\r\n * @see cvd/vision.h\r\n */\r\nImageWrapper.sample = function(inImg, x, y) {\r\n var lx = Math.floor(x);\r\n var ly = Math.floor(y);\r\n var w = inImg.size.x;\r\n var base = ly * inImg.size.x + lx;\r\n var a = inImg.data[base + 0];\r\n var b = inImg.data[base + 1];\r\n var c = inImg.data[base + w];\r\n var d = inImg.data[base + w + 1];\r\n var e = a - b;\r\n x -= lx;\r\n y -= ly;\r\n\r\n var result = Math.floor(x * (y * (e - c + d) - e) + y * (c - a) + a);\r\n return result;\r\n};\r\n\r\n/**\r\n * Initializes a given array. Sets each element to zero.\r\n * @param array {Array} The array to initialize\r\n */\r\nImageWrapper.clearArray = function(array) {\r\n var l = array.length;\r\n while (l--) {\r\n array[l] = 0;\r\n }\r\n};\r\n\r\n/**\r\n * Creates a {SubImage} from the current image ({this}).\r\n * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner)\r\n * @param size {ImageRef} The size of the resulting image\r\n * @returns {SubImage} A shared part of the original image\r\n */\r\nImageWrapper.prototype.subImage = function(from, size) {\r\n return new SubImage(from, size, this);\r\n};\r\n\r\n/**\r\n * Creates an {ImageWrapper) and copies the needed underlying image-data area\r\n * @param imageWrapper {ImageWrapper} The target {ImageWrapper} where the data should be copied\r\n * @param from {ImageRef} The location where to copy from (top-left location)\r\n */\r\nImageWrapper.prototype.subImageAsCopy = function(imageWrapper, from) {\r\n var sizeY = imageWrapper.size.y, sizeX = imageWrapper.size.x;\r\n var x, y;\r\n for ( x = 0; x < sizeX; x++) {\r\n for ( y = 0; y < sizeY; y++) {\r\n imageWrapper.data[y * sizeX + x] = this.data[(from.y + y) * this.size.x + from.x + x];\r\n }\r\n }\r\n};\r\n\r\nImageWrapper.prototype.copyTo = function(imageWrapper) {\r\n var length = this.data.length, srcData = this.data, dstData = imageWrapper.data;\r\n\r\n while (length--) {\r\n dstData[length] = srcData[length];\r\n }\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nImageWrapper.prototype.get = function(x, y) {\r\n return this.data[y * this.size.x + x];\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nImageWrapper.prototype.getSafe = function(x, y) {\r\n var i;\r\n\r\n if (!this.indexMapping) {\r\n this.indexMapping = {\r\n x: [],\r\n y: []\r\n };\r\n for (i = 0; i < this.size.x; i++) {\r\n this.indexMapping.x[i] = i;\r\n this.indexMapping.x[i + this.size.x] = i;\r\n }\r\n for (i = 0; i < this.size.y; i++) {\r\n this.indexMapping.y[i] = i;\r\n this.indexMapping.y[i + this.size.y] = i;\r\n }\r\n }\r\n return this.data[(this.indexMapping.y[y + this.size.y]) * this.size.x + this.indexMapping.x[x + this.size.x]];\r\n};\r\n\r\n/**\r\n * Sets a given pixel position in the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @param value {Number} The grayscale value to set\r\n * @returns {ImageWrapper} The Image itself (for possible chaining)\r\n */\r\nImageWrapper.prototype.set = function(x, y, value) {\r\n this.data[y * this.size.x + x] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets the border of the image (1 pixel) to zero\r\n */\r\nImageWrapper.prototype.zeroBorder = function() {\r\n var i, width = this.size.x, height = this.size.y, data = this.data;\r\n for ( i = 0; i < width; i++) {\r\n data[i] = data[(height - 1) * width + i] = 0;\r\n }\r\n for ( i = 1; i < height - 1; i++) {\r\n data[i * width] = data[i * width + (width - 1)] = 0;\r\n }\r\n};\r\n\r\n/**\r\n * Inverts a binary image in place\r\n */\r\nImageWrapper.prototype.invert = function() {\r\n var data = this.data, length = data.length;\r\n\r\n while (length--) {\r\n data[length] = data[length] ? 0 : 1;\r\n }\r\n};\r\n\r\nImageWrapper.prototype.convolve = function(kernel) {\r\n var x, y, kx, ky, kSize = (kernel.length / 2) | 0, accu = 0;\r\n for ( y = 0; y < this.size.y; y++) {\r\n for ( x = 0; x < this.size.x; x++) {\r\n accu = 0;\r\n for ( ky = -kSize; ky <= kSize; ky++) {\r\n for ( kx = -kSize; kx <= kSize; kx++) {\r\n accu += kernel[ky + kSize][kx + kSize] * this.getSafe(x + kx, y + ky);\r\n }\r\n }\r\n this.data[y * this.size.x + x] = accu;\r\n }\r\n }\r\n};\r\n\r\nImageWrapper.prototype.moments = function(labelcount) {\r\n var data = this.data,\r\n x,\r\n y,\r\n height = this.size.y,\r\n width = this.size.x,\r\n val,\r\n ysq,\r\n labelsum = [],\r\n i,\r\n label,\r\n mu11,\r\n mu02,\r\n mu20,\r\n x_,\r\n y_,\r\n tmp,\r\n result = [],\r\n PI = Math.PI,\r\n PI_4 = PI / 4;\r\n\r\n if (labelcount <= 0) {\r\n return result;\r\n }\r\n\r\n for ( i = 0; i < labelcount; i++) {\r\n labelsum[i] = {\r\n m00: 0,\r\n m01: 0,\r\n m10: 0,\r\n m11: 0,\r\n m02: 0,\r\n m20: 0,\r\n theta: 0,\r\n rad: 0\r\n };\r\n }\r\n\r\n for ( y = 0; y < height; y++) {\r\n ysq = y * y;\r\n for ( x = 0; x < width; x++) {\r\n val = data[y * width + x];\r\n if (val > 0) {\r\n label = labelsum[val - 1];\r\n label.m00 += 1;\r\n label.m01 += y;\r\n label.m10 += x;\r\n label.m11 += x * y;\r\n label.m02 += ysq;\r\n label.m20 += x * x;\r\n }\r\n }\r\n }\r\n\r\n for ( i = 0; i < labelcount; i++) {\r\n label = labelsum[i];\r\n if (!isNaN(label.m00) && label.m00 !== 0) {\r\n x_ = label.m10 / label.m00;\r\n y_ = label.m01 / label.m00;\r\n mu11 = label.m11 / label.m00 - x_ * y_;\r\n mu02 = label.m02 / label.m00 - y_ * y_;\r\n mu20 = label.m20 / label.m00 - x_ * x_;\r\n tmp = (mu02 - mu20) / (2 * mu11);\r\n tmp = 0.5 * Math.atan(tmp) + (mu11 >= 0 ? PI_4 : -PI_4 ) + PI;\r\n label.theta = (tmp * 180 / PI + 90) % 180 - 90;\r\n if (label.theta < 0) {\r\n label.theta += 180;\r\n }\r\n label.rad = tmp > PI ? tmp - PI : tmp;\r\n label.vec = vec2.clone([Math.cos(tmp), Math.sin(tmp)]);\r\n result.push(label);\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Displays the {ImageWrapper} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nImageWrapper.prototype.show = function(canvas, scale) {\r\n var ctx,\r\n frame,\r\n data,\r\n current,\r\n pixel,\r\n x,\r\n y;\r\n\r\n if (!scale) {\r\n scale = 1.0;\r\n }\r\n ctx = canvas.getContext('2d');\r\n canvas.width = this.size.x;\r\n canvas.height = this.size.y;\r\n frame = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n data = frame.data;\r\n current = 0;\r\n for (y = 0; y < this.size.y; y++) {\r\n for (x = 0; x < this.size.x; x++) {\r\n pixel = y * this.size.x + x;\r\n current = this.get(x, y) * scale;\r\n data[pixel * 4 + 0] = current;\r\n data[pixel * 4 + 1] = current;\r\n data[pixel * 4 + 2] = current;\r\n data[pixel * 4 + 3] = 255;\r\n }\r\n }\r\n //frame.data = data;\r\n ctx.putImageData(frame, 0, 0);\r\n};\r\n\r\n/**\r\n * Displays the {SubImage} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nImageWrapper.prototype.overlay = function(canvas, scale, from) {\r\n if (!scale || scale < 0 || scale > 360) {\r\n scale = 360;\r\n }\r\n var hsv = [0, 1, 1];\r\n var rgb = [0, 0, 0];\r\n var whiteRgb = [255, 255, 255];\r\n var blackRgb = [0, 0, 0];\r\n var result = [];\r\n var ctx = canvas.getContext('2d');\r\n var frame = ctx.getImageData(from.x, from.y, this.size.x, this.size.y);\r\n var data = frame.data;\r\n var length = this.data.length;\r\n while (length--) {\r\n hsv[0] = this.data[length] * scale;\r\n result = hsv[0] <= 0 ? whiteRgb : hsv[0] >= 360 ? blackRgb : hsv2rgb(hsv, rgb);\r\n data[length * 4 + 0] = result[0];\r\n data[length * 4 + 1] = result[1];\r\n data[length * 4 + 2] = result[2];\r\n data[length * 4 + 3] = 255;\r\n }\r\n ctx.putImageData(frame, from.x, from.y);\r\n};\r\n\r\nexport default ImageWrapper;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/image_wrapper.js\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Symbol.js\n ** module id = 27\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayReduce.js\n ** module id = 28\n ** module chunks = 0\n **/","var copyObjectWith = require('./_copyObjectWith');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object) {\n return copyObjectWith(source, props, object);\n}\n\nmodule.exports = copyObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyObject.js\n ** module id = 29\n ** module chunks = 0\n **/","var isArray = require('./isArray');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (typeof value == 'number') {\n return true;\n }\n return !isArray(value) &&\n (reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object)));\n}\n\nmodule.exports = isKey;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isKey.js\n ** module id = 30\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isPrototype.js\n ** module id = 31\n ** module chunks = 0\n **/","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object, else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArrayLikeObject.js\n ** module id = 32\n ** module chunks = 0\n **/","var isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isString.js\n ** module id = 33\n ** module chunks = 0\n **/","var isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isTypedArray.js\n ** module id = 34\n ** module chunks = 0\n **/","var baseKeysIn = require('./_baseKeysIn'),\n indexKeys = require('./_indexKeys'),\n isIndex = require('./_isIndex'),\n isPrototype = require('./_isPrototype');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n var index = -1,\n isProto = isPrototype(object),\n props = baseKeysIn(object),\n propsLength = props.length,\n indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n while (++index < propsLength) {\n var key = props[index];\n if (!(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/keysIn.js\n ** module id = 35\n ** module chunks = 0\n **/","import ImageDebug from '../common/image_debug';\r\n\r\nfunction contains(codeResult, list) {\r\n if (list) {\r\n return list.some(function (item) {\r\n return Object.keys(item).every(function (key) {\r\n return item[key] === codeResult[key];\r\n });\r\n });\r\n }\r\n return false;\r\n}\r\n\r\nfunction passesFilter(codeResult, filter) {\r\n if (typeof filter === 'function') {\r\n return filter(codeResult);\r\n }\r\n return true;\r\n}\r\n\r\nexport default {\r\n create: function(config) {\r\n var canvas = document.createElement(\"canvas\"),\r\n ctx = canvas.getContext(\"2d\"),\r\n results = [],\r\n capacity = config.capacity || 20,\r\n capture = config.capture === true;\r\n\r\n function matchesConstraints(codeResult) {\r\n return capacity\r\n && codeResult\r\n && !contains(codeResult, config.blacklist)\r\n && passesFilter(codeResult, config.filter);\r\n }\r\n\r\n return {\r\n addResult: function(data, imageSize, codeResult) {\r\n var result = {};\r\n\r\n if (matchesConstraints(codeResult)) {\r\n capacity--;\r\n result.codeResult = codeResult;\r\n if (capture) {\r\n canvas.width = imageSize.x;\r\n canvas.height = imageSize.y;\r\n ImageDebug.drawImage(data, imageSize, ctx);\r\n result.frame = canvas.toDataURL();\r\n }\r\n results.push(result);\r\n }\r\n },\r\n getResults: function() {\r\n return results;\r\n }\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/analytics/result_collector.js\n **/","let config;\r\n\r\nif (ENV.development){\r\n config = require('./config.dev.js');\r\n} else if (ENV.node) {\r\n config = require('./config.node.js');\r\n} else {\r\n config = require('./config.prod.js');\r\n}\r\n\r\nexport default config;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/config/config.js\n **/","/**\r\n * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization\r\n */\r\nvar Tracer = {\r\n searchDirections: [[0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [-1, -1], [-1, 0], [-1, 1]],\r\n create: function(imageWrapper, labelWrapper) {\r\n var imageData = imageWrapper.data,\r\n labelData = labelWrapper.data,\r\n searchDirections = this.searchDirections,\r\n width = imageWrapper.size.x,\r\n pos;\r\n\r\n function trace(current, color, label, edgelabel) {\r\n var i,\r\n y,\r\n x;\r\n\r\n for ( i = 0; i < 7; i++) {\r\n y = current.cy + searchDirections[current.dir][0];\r\n x = current.cx + searchDirections[current.dir][1];\r\n pos = y * width + x;\r\n if ((imageData[pos] === color) && ((labelData[pos] === 0) || (labelData[pos] === label))) {\r\n labelData[pos] = label;\r\n current.cy = y;\r\n current.cx = x;\r\n return true;\r\n } else {\r\n if (labelData[pos] === 0) {\r\n labelData[pos] = edgelabel;\r\n }\r\n current.dir = (current.dir + 1) % 8;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function vertex2D(x, y, dir) {\r\n return {\r\n dir: dir,\r\n x: x,\r\n y: y,\r\n next: null,\r\n prev: null\r\n };\r\n }\r\n\r\n function contourTracing(sy, sx, label, color, edgelabel) {\r\n var Fv = null,\r\n Cv,\r\n P,\r\n ldir,\r\n current = {\r\n cx: sx,\r\n cy: sy,\r\n dir: 0\r\n };\r\n\r\n if (trace(current, color, label, edgelabel)) {\r\n Fv = vertex2D(sx, sy, current.dir);\r\n Cv = Fv;\r\n ldir = current.dir;\r\n P = vertex2D(current.cx, current.cy, 0);\r\n P.prev = Cv;\r\n Cv.next = P;\r\n P.next = null;\r\n Cv = P;\r\n do {\r\n current.dir = (current.dir + 6) % 8;\r\n trace(current, color, label, edgelabel);\r\n if (ldir !== current.dir) {\r\n Cv.dir = current.dir;\r\n P = vertex2D(current.cx, current.cy, 0);\r\n P.prev = Cv;\r\n Cv.next = P;\r\n P.next = null;\r\n Cv = P;\r\n } else {\r\n Cv.dir = ldir;\r\n Cv.x = current.cx;\r\n Cv.y = current.cy;\r\n }\r\n ldir = current.dir;\r\n } while (current.cx !== sx || current.cy !== sy);\r\n Fv.prev = Cv.prev;\r\n Cv.prev.next = Fv;\r\n }\r\n return Fv;\r\n }\r\n\r\n return {\r\n trace: function(current, color, label, edgelabel) {\r\n return trace(current, color, label, edgelabel);\r\n },\r\n contourTracing: function(sy, sx, label, color, edgelabel) {\r\n return contourTracing(sy, sx, label, color, edgelabel);\r\n }\r\n };\r\n }\r\n};\r\n\r\nexport default (Tracer);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/tracer.js\n **/","import BarcodeReader from './barcode_reader';\r\nimport ArrayHelper from '../common/array_helper';\r\n\r\nfunction Code39Reader() {\r\n BarcodeReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n ALPHABETH_STRING: {value: \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%\"},\r\n ALPHABET: {value: [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,\r\n 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 45, 46, 32, 42, 36, 47, 43, 37]},\r\n CHARACTER_ENCODINGS: {value: [0x034, 0x121, 0x061, 0x160, 0x031, 0x130, 0x070, 0x025, 0x124, 0x064, 0x109, 0x049,\r\n 0x148, 0x019, 0x118, 0x058, 0x00D, 0x10C, 0x04C, 0x01C, 0x103, 0x043, 0x142, 0x013, 0x112, 0x052, 0x007, 0x106,\r\n 0x046, 0x016, 0x181, 0x0C1, 0x1C0, 0x091, 0x190, 0x0D0, 0x085, 0x184, 0x0C4, 0x094, 0x0A8, 0x0A2, 0x08A, 0x02A\r\n ]},\r\n ASTERISK: {value: 0x094},\r\n FORMAT: {value: \"code_39\", writeable: false}\r\n};\r\n\r\nCode39Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCode39Reader.prototype.constructor = Code39Reader;\r\n\r\nCode39Reader.prototype._toCounters = function(start, counter) {\r\n var self = this,\r\n numCounters = counter.length,\r\n end = self._row.length,\r\n isWhite = !self._row[start],\r\n i,\r\n counterPos = 0;\r\n\r\n ArrayHelper.init(counter, 0);\r\n\r\n for ( i = start; i < end; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n counterPos++;\r\n if (counterPos === numCounters) {\r\n break;\r\n } else {\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n }\r\n\r\n return counter;\r\n};\r\n\r\nCode39Reader.prototype._decode = function() {\r\n var self = this,\r\n counters = [0, 0, 0, 0, 0, 0, 0, 0, 0],\r\n result = [],\r\n start = self._findStart(),\r\n decodedChar,\r\n lastStart,\r\n pattern,\r\n nextStart;\r\n\r\n if (!start) {\r\n return null;\r\n }\r\n nextStart = self._nextSet(self._row, start.end);\r\n\r\n do {\r\n counters = self._toCounters(nextStart, counters);\r\n pattern = self._toPattern(counters);\r\n if (pattern < 0) {\r\n return null;\r\n }\r\n decodedChar = self._patternToChar(pattern);\r\n if (decodedChar < 0){\r\n return null;\r\n }\r\n result.push(decodedChar);\r\n lastStart = nextStart;\r\n nextStart += ArrayHelper.sum(counters);\r\n nextStart = self._nextSet(self._row, nextStart);\r\n } while (decodedChar !== '*');\r\n result.pop();\r\n\r\n if (!result.length) {\r\n return null;\r\n }\r\n\r\n if (!self._verifyTrailingWhitespace(lastStart, nextStart, counters)) {\r\n return null;\r\n }\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: start.start,\r\n end: nextStart,\r\n startInfo: start,\r\n decodedCodes: result\r\n };\r\n};\r\n\r\nCode39Reader.prototype._verifyTrailingWhitespace = function(lastStart, nextStart, counters) {\r\n var trailingWhitespaceEnd,\r\n patternSize = ArrayHelper.sum(counters);\r\n\r\n trailingWhitespaceEnd = nextStart - lastStart - patternSize;\r\n if ((trailingWhitespaceEnd * 3) >= patternSize) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nCode39Reader.prototype._patternToChar = function(pattern) {\r\n var i,\r\n self = this;\r\n\r\n for (i = 0; i < self.CHARACTER_ENCODINGS.length; i++) {\r\n if (self.CHARACTER_ENCODINGS[i] === pattern) {\r\n return String.fromCharCode(self.ALPHABET[i]);\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCode39Reader.prototype._findNextWidth = function(counters, current) {\r\n var i,\r\n minWidth = Number.MAX_VALUE;\r\n\r\n for (i = 0; i < counters.length; i++) {\r\n if (counters[i] < minWidth && counters[i] > current) {\r\n minWidth = counters[i];\r\n }\r\n }\r\n\r\n return minWidth;\r\n};\r\n\r\nCode39Reader.prototype._toPattern = function(counters) {\r\n var numCounters = counters.length,\r\n maxNarrowWidth = 0,\r\n numWideBars = numCounters,\r\n wideBarWidth = 0,\r\n self = this,\r\n pattern,\r\n i;\r\n\r\n while (numWideBars > 3) {\r\n maxNarrowWidth = self._findNextWidth(counters, maxNarrowWidth);\r\n numWideBars = 0;\r\n pattern = 0;\r\n for (i = 0; i < numCounters; i++) {\r\n if (counters[i] > maxNarrowWidth) {\r\n pattern |= 1 << (numCounters - 1 - i);\r\n numWideBars++;\r\n wideBarWidth += counters[i];\r\n }\r\n }\r\n\r\n if (numWideBars === 3) {\r\n for (i = 0; i < numCounters && numWideBars > 0; i++) {\r\n if (counters[i] > maxNarrowWidth) {\r\n numWideBars--;\r\n if ((counters[i] * 2) >= wideBarWidth) {\r\n return -1;\r\n }\r\n }\r\n }\r\n return pattern;\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCode39Reader.prototype._findStart = function() {\r\n var self = this,\r\n offset = self._nextSet(self._row),\r\n patternStart = offset,\r\n counter = [0, 0, 0, 0, 0, 0, 0, 0, 0],\r\n counterPos = 0,\r\n isWhite = false,\r\n i,\r\n j,\r\n whiteSpaceMustStart;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n // find start pattern\r\n if (self._toPattern(counter) === self.ASTERISK) {\r\n whiteSpaceMustStart = Math.floor(Math.max(0, patternStart - ((i - patternStart) / 4)));\r\n if (self._matchRange(whiteSpaceMustStart, patternStart, 0)) {\r\n return {\r\n start: patternStart,\r\n end: i\r\n };\r\n }\r\n }\r\n\r\n patternStart += counter[0] + counter[1];\r\n for ( j = 0; j < 7; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[7] = 0;\r\n counter[8] = 0;\r\n counterPos--;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport default Code39Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_39_reader.js\n **/","module.exports = dot\n\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1]\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/dot.js\n ** module id = 40\n ** module chunks = 0\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Uint8Array.js\n ** module id = 41\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayEach.js\n ** module id = 42\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (typeof key == 'number' && value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\nmodule.exports = assignMergeValue;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assignMergeValue.js\n ** module id = 43\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\nmodule.exports = assignValue;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assignValue.js\n ** module id = 44\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the associative array.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction assocDelete(array, key) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = array.length - 1;\n if (index == lastIndex) {\n array.pop();\n } else {\n splice.call(array, index, 1);\n }\n return true;\n}\n\nmodule.exports = assocDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocDelete.js\n ** module id = 45\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the associative array value for `key`.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction assocGet(array, key) {\n var index = assocIndexOf(array, key);\n return index < 0 ? undefined : array[index][1];\n}\n\nmodule.exports = assocGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocGet.js\n ** module id = 46\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if an associative array value for `key` exists.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction assocHas(array, key) {\n return assocIndexOf(array, key) > -1;\n}\n\nmodule.exports = assocHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocHas.js\n ** module id = 47\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the associative array `key` to `value`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n */\nfunction assocSet(array, key, value) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n array.push([key, value]);\n } else {\n array[index][1] = value;\n }\n}\n\nmodule.exports = assocSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocSet.js\n ** module id = 48\n ** module chunks = 0\n **/","var isArray = require('./isArray'),\n stringToPath = require('./_stringToPath');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction baseCastPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\nmodule.exports = baseCastPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseCastPath.js\n ** module id = 49\n ** module chunks = 0\n **/","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseFor.js\n ** module id = 50\n ** module chunks = 0\n **/","var baseCastPath = require('./_baseCastPath'),\n isKey = require('./_isKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path + ''] : baseCastPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[path[index++]];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseGet.js\n ** module id = 51\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n // that are composed entirely of index properties, return `false` for\n // `hasOwnProperty` checks of them.\n return hasOwnProperty.call(object, key) ||\n (typeof object == 'object' && key in object && getPrototypeOf(object) === null);\n}\n\nmodule.exports = baseHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseHas.js\n ** module id = 52\n ** module chunks = 0\n **/","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObject = require('./isObject'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsEqual.js\n ** module id = 53\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseProperty.js\n ** module id = 54\n ** module chunks = 0\n **/","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneArrayBuffer.js\n ** module id = 55\n ** module chunks = 0\n **/","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyArray.js\n ** module id = 56\n ** module chunks = 0\n **/","var arraySome = require('./_arraySome');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var index = -1,\n isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n isUnordered = bitmask & UNORDERED_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(array, other);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (isUnordered) {\n if (!arraySome(other, function(othValue) {\n return arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack);\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n return result;\n}\n\nmodule.exports = equalArrays;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalArrays.js\n ** module id = 57\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect maps, sets, and weakmaps. */\nvar mapCtorString = Map ? funcToString.call(Map) : '',\n setCtorString = Set ? funcToString.call(Set) : '',\n weakMapCtorString = WeakMap ? funcToString.call(WeakMap) : '';\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction getTag(value) {\n return objectToString.call(value);\n}\n\n// Fallback for IE 11 providing `toStringTag` values for maps, sets, and weakmaps.\nif ((Map && getTag(new Map) != mapTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : null,\n ctorString = typeof Ctor == 'function' ? funcToString.call(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case mapCtorString: return mapTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getTag.js\n ** module id = 58\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @param {Object} hash The hash to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(hash, key) {\n return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key);\n}\n\nmodule.exports = hashHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashHas.js\n ** module id = 59\n ** module chunks = 0\n **/","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isLength = require('./isLength'),\n isString = require('./isString');\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\nmodule.exports = indexKeys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_indexKeys.js\n ** module id = 60\n ** module chunks = 0\n **/","/**\n * Converts `map` to an array.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapToArray.js\n ** module id = 61\n ** module chunks = 0\n **/","/**\n * Converts `set` to an array.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_setToArray.js\n ** module id = 62\n ** module chunks = 0\n **/","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined` the `defaultValue` is used in its place.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/get.js\n ** module id = 63\n ** module chunks = 0\n **/","var baseFlatten = require('./_baseFlatten'),\n basePick = require('./_basePick'),\n rest = require('./rest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property names to pick, specified\n * individually or in arrays.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = rest(function(object, props) {\n return object == null ? {} : basePick(object, baseFlatten(props, 1));\n});\n\nmodule.exports = pick;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/pick.js\n ** module id = 64\n ** module chunks = 0\n **/","var apply = require('./_apply'),\n toInteger = require('./toInteger');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : toInteger(start), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, array);\n case 1: return func.call(this, args[0], array);\n case 2: return func.call(this, args[0], args[1], array);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = rest;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/rest.js\n ** module id = 65\n ** module chunks = 0\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tObject.defineProperty(module, \"exports\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.e; },\r\n\t\t\tset: function(v) { return module.e = v; }\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.l; }\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.i; }\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/buildin/module.js\n ** module id = 66\n ** module chunks = 0\n **/","import './common/typedefs';\r\nimport 'webrtc-adapter';\r\nimport createScanner from './scanner';\r\nimport ImageWrapper from './common/image_wrapper';\r\nimport ImageDebug from './common/image_debug';\r\nimport ResultCollector from './analytics/result_collector';\r\nimport Config from './config/config';\r\nimport {merge, pick, omitBy, isEmpty} from 'lodash';\r\n\r\n\r\nfunction fromImage(config, imageSrc, inputConfig = {}) {\r\n const staticImageConfig = {\r\n inputStream: {\r\n type: \"ImageStream\",\r\n sequence: false,\r\n size: 800,\r\n src: imageSrc\r\n },\r\n numOfWorkers: (ENV.development && config.debug) ? 0 : 1\r\n };\r\n config = merge(\r\n config,\r\n staticImageConfig,\r\n {numOfWorkers: typeof config.numOfWorkers === 'number' && config.numOfWorkers > 0 ? 1 : 0},\r\n {inputStream: omitBy(pick(config.inputStream, ['size', 'src']), isEmpty)},\r\n {inputStream: inputConfig});\r\n\r\n const scanner = createScanner();\r\n return {\r\n addEventListener(eventType, cb) {\r\n scanner.subscribe(eventType, cb);\r\n return this;\r\n },\r\n removeEventListener(eventType, cb) {\r\n scanner.unsubscribe(eventType, cb);\r\n return this;\r\n },\r\n start() {\r\n scanner.init(config, () => {\r\n scanner.start();\r\n });\r\n return this;\r\n },\r\n stop() {\r\n scanner.stop();\r\n return this;\r\n },\r\n toPromise() {\r\n return new Promise((resolve, reject) => {\r\n scanner.decodeSingle(config, (result) => {\r\n if (result.codeResult && result.codeResult.code) {\r\n return resolve(result);\r\n }\r\n return reject(result);\r\n });\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction fromVideo(config, source, inputConfig = {}) {\r\n // remember last instance\r\n // check if anything but the imagesrc has changed\r\n //\r\n let sourceConfig = {\r\n type: \"LiveStream\",\r\n constraints: {\r\n width: 640,\r\n height: 480,\r\n facingMode: \"environment\"\r\n }\r\n };\r\n\r\n /*if (source instanceof MediaStream) {\r\n // stream\r\n } else*/ if (source instanceof Element) {\r\n // video element\r\n } else if (typeof source === 'string') {\r\n // video source\r\n } else if (typeof source === 'object'\r\n && (typeof source.constraints !== 'undefined'\r\n || typeof source.area !== 'undefined')) {\r\n console.log(\"inputConfig\");\r\n inputConfig = source;\r\n } else if (!source) {\r\n // LiveStream\r\n }\r\n config = merge({}, config, {inputStream: sourceConfig}, {inputStream: inputConfig});\r\n console.log(config);\r\n const scanner = createScanner();\r\n return {\r\n addEventListener(eventType, cb) {\r\n scanner.subscribe(eventType, cb);\r\n return this;\r\n },\r\n removeEventListener(eventType, cb) {\r\n scanner.unsubscribe(eventType, cb);\r\n return this;\r\n },\r\n start() {\r\n scanner.init(config, (error) => {\r\n if (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n scanner.start();\r\n });\r\n return this;\r\n },\r\n stop() {\r\n scanner.stop();\r\n return this;\r\n }\r\n };\r\n}\r\n\r\nconst defaultScanner = createScanner();\r\n\r\nfunction setConfig(configuration = {}, key, config = {}) {\r\n var mergedConfig = merge({}, configuration, {[key]: config});\r\n return createApi(mergedConfig);\r\n}\r\n\r\nfunction createApi(configuration = Config) {\r\n return {\r\n fromImage(src, conf) {\r\n return fromImage(configuration, src, conf);\r\n },\r\n fromVideo(src, inputConfig) {\r\n return fromVideo(configuration, src, inputConfig);\r\n },\r\n decoder(conf) {\r\n return setConfig(configuration, \"decoder\", conf);\r\n },\r\n locator(conf) {\r\n return setConfig(configuration, \"locator\", conf);\r\n },\r\n config(conf) {\r\n return createApi(merge({}, configuration, conf));\r\n },\r\n registerResultCollector(resultCollector) {\r\n defaultScanner.registerResultCollector(resultCollector);\r\n },\r\n getCanvas() {\r\n return defaultScanner.canvas;\r\n },\r\n ImageWrapper,\r\n ImageDebug,\r\n ResultCollector,\r\n _worker: {\r\n createScanner\r\n }\r\n };\r\n}\r\nexport default createApi();\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/quagga.js\n **/","const CVUtils = require('../src/common/cv_utils'),\r\n Ndarray = require(\"ndarray\"),\r\n Interp2D = require(\"ndarray-linear-interpolate\").d2;\r\n\r\nvar FrameGrabber = {};\r\n\r\nFrameGrabber.create = function(inputStream) {\r\n var _that = {},\r\n _streamConfig = inputStream.getConfig(),\r\n _video_size = CVUtils.imageRef(inputStream.getRealWidth(), inputStream.getRealHeight()),\r\n _canvasSize = inputStream.getCanvasSize(),\r\n _size = CVUtils.imageRef(inputStream.getWidth(), inputStream.getHeight()),\r\n _topRight = inputStream.getTopRight(),\r\n _data = new Uint8Array(_size.x * _size.y),\r\n _grayData = new Uint8Array(_video_size.x * _video_size.y),\r\n _canvasData = new Uint8Array(_canvasSize.x * _canvasSize.y),\r\n _grayImageArray = Ndarray(_grayData, [_video_size.y, _video_size.x]).transpose(1, 0),\r\n _canvasImageArray = Ndarray(_canvasData, [_canvasSize.y, _canvasSize.x]).transpose(1, 0),\r\n _targetImageArray = _canvasImageArray.hi(_topRight.x + _size.x, _topRight.y + _size.y).lo(_topRight.x, _topRight.y),\r\n _stepSizeX = _video_size.x/_canvasSize.x,\r\n _stepSizeY = _video_size.y/_canvasSize.y;\r\n\r\n console.log(\"FrameGrabber\", JSON.stringify({\r\n videoSize: _grayImageArray.shape,\r\n canvasSize: _canvasImageArray.shape,\r\n stepSize: [_stepSizeX, _stepSizeY],\r\n size: _targetImageArray.shape,\r\n topRight: _topRight\r\n }));\r\n\r\n /**\r\n * Uses the given array as frame-buffer\r\n */\r\n _that.attachData = function(data) {\r\n _data = data;\r\n };\r\n\r\n /**\r\n * Returns the used frame-buffer\r\n */\r\n _that.getData = function() {\r\n return _data;\r\n };\r\n\r\n /**\r\n * Fetches a frame from the input-stream and puts into the frame-buffer.\r\n * The image-data is converted to gray-scale and then half-sampled if configured.\r\n */\r\n _that.grab = function() {\r\n var frame = inputStream.getFrame();\r\n\r\n if (frame) {\r\n this.scaleAndCrop(frame);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n _that.scaleAndCrop = function(frame) {\r\n var x,\r\n y;\r\n\r\n // 1. compute full-sized gray image\r\n CVUtils.computeGray(frame.data, _grayData);\r\n\r\n // 2. interpolate\r\n for (y = 0; y < _canvasSize.y; y++) {\r\n for (x = 0; x < _canvasSize.x; x++) {\r\n _canvasImageArray.set(x, y, (Interp2D(_grayImageArray, x * _stepSizeX, y * _stepSizeY)) | 0);\r\n }\r\n }\r\n\r\n // targetImageArray must be equal to targetSize\r\n if (_targetImageArray.shape[0] !== _size.x ||\r\n _targetImageArray.shape[1] !== _size.y) {\r\n throw new Error(\"Shapes do not match!\");\r\n }\r\n\r\n // 3. crop\r\n for (y = 0; y < _size.y; y++) {\r\n for (x = 0; x < _size.x; x++) {\r\n _data[y * _size.x + x] = _targetImageArray.get(x, y);\r\n }\r\n }\r\n },\r\n\r\n _that.getSize = function() {\r\n return _size;\r\n };\r\n\r\n return _that;\r\n};\r\n\r\nmodule.exports = FrameGrabber;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/frame_grabber.js\n **/","const GetPixels = require(\"get-pixels\");\r\n\r\nvar InputStream = {};\r\n\r\nInputStream.createImageStream = function() {\r\n var that = {};\r\n var _config = null;\r\n\r\n var width = 0,\r\n height = 0,\r\n frameIdx = 0,\r\n paused = true,\r\n loaded = false,\r\n frame = null,\r\n baseUrl,\r\n ended = false,\r\n size,\r\n calculatedWidth,\r\n calculatedHeight,\r\n _eventNames = ['canrecord', 'ended'],\r\n _eventHandlers = {},\r\n _topRight = {x: 0, y: 0},\r\n _canvasSize = {x: 0, y: 0};\r\n\r\n function loadImages() {\r\n loaded = false;\r\n GetPixels(baseUrl, function(err, pixels) {\r\n if (err) {\r\n console.log(err);\r\n exit(1);\r\n }\r\n loaded = true;\r\n console.log(pixels.shape);\r\n frame = pixels;\r\n width = pixels.shape[0];\r\n height = pixels.shape[1];\r\n calculatedWidth = _config.size ? width/height > 1 ? _config.size : Math.floor((width/height) * _config.size) : width;\r\n calculatedHeight = _config.size ? width/height > 1 ? Math.floor((height/width) * _config.size) : _config.size : height;\r\n\r\n _canvasSize.x = calculatedWidth;\r\n _canvasSize.y = calculatedHeight;\r\n\r\n setTimeout(function() {\r\n publishEvent(\"canrecord\", []);\r\n }, 0);\r\n });\r\n }\r\n\r\n function publishEvent(eventName, args) {\r\n var j,\r\n handlers = _eventHandlers[eventName];\r\n\r\n if (handlers && handlers.length > 0) {\r\n for ( j = 0; j < handlers.length; j++) {\r\n handlers[j].apply(that, args);\r\n }\r\n }\r\n }\r\n\r\n\r\n that.trigger = publishEvent;\r\n\r\n that.getWidth = function() {\r\n return calculatedWidth;\r\n };\r\n\r\n that.getHeight = function() {\r\n return calculatedHeight;\r\n };\r\n\r\n that.setWidth = function(width) {\r\n calculatedWidth = width;\r\n };\r\n\r\n that.setHeight = function(height) {\r\n calculatedHeight = height;\r\n };\r\n\r\n that.getRealWidth = function() {\r\n return width;\r\n };\r\n\r\n that.getRealHeight = function() {\r\n return height;\r\n };\r\n\r\n that.setInputStream = function(stream) {\r\n _config = stream;\r\n baseUrl = _config.src;\r\n size = 1;\r\n loadImages();\r\n };\r\n\r\n that.ended = function() {\r\n return ended;\r\n };\r\n\r\n that.setAttribute = function() {};\r\n\r\n that.getConfig = function() {\r\n return _config;\r\n };\r\n\r\n that.pause = function() {\r\n paused = true;\r\n };\r\n\r\n that.play = function() {\r\n paused = false;\r\n };\r\n\r\n that.setCurrentTime = function(time) {\r\n frameIdx = time;\r\n };\r\n\r\n that.addEventListener = function(event, f) {\r\n if (_eventNames.indexOf(event) !== -1) {\r\n if (!_eventHandlers[event]) {\r\n _eventHandlers[event] = [];\r\n }\r\n _eventHandlers[event].push(f);\r\n }\r\n };\r\n\r\n that.setTopRight = function(topRight) {\r\n _topRight.x = topRight.x;\r\n _topRight.y = topRight.y;\r\n };\r\n\r\n that.getTopRight = function() {\r\n return _topRight;\r\n };\r\n\r\n that.setCanvasSize = function(size) {\r\n _canvasSize.x = size.x;\r\n _canvasSize.y = size.y;\r\n };\r\n\r\n that.getCanvasSize = function() {\r\n return _canvasSize;\r\n };\r\n\r\n that.getFrame = function() {\r\n if (!loaded){\r\n return null;\r\n }\r\n return frame;\r\n };\r\n\r\n return that;\r\n};\r\n\r\nmodule.exports = InputStream;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/input_stream.js\n **/","const vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n dot: require('gl-vec2/dot')\r\n};\r\n\r\n/**\r\n * Creates a cluster for grouping similar orientations of datapoints\r\n */\r\nexport default {\r\n create: function(point, threshold) {\r\n var points = [],\r\n center = {\r\n rad: 0,\r\n vec: vec2.clone([0, 0])\r\n },\r\n pointMap = {};\r\n\r\n function init() {\r\n add(point);\r\n updateCenter();\r\n }\r\n\r\n function add(pointToAdd) {\r\n pointMap[pointToAdd.id] = pointToAdd;\r\n points.push(pointToAdd);\r\n }\r\n\r\n function updateCenter() {\r\n var i, sum = 0;\r\n for ( i = 0; i < points.length; i++) {\r\n sum += points[i].rad;\r\n }\r\n center.rad = sum / points.length;\r\n center.vec = vec2.clone([Math.cos(center.rad), Math.sin(center.rad)]);\r\n }\r\n\r\n init();\r\n\r\n return {\r\n add: function(pointToAdd) {\r\n if (!pointMap[pointToAdd.id]) {\r\n add(pointToAdd);\r\n updateCenter();\r\n }\r\n },\r\n fits: function(otherPoint) {\r\n // check cosine similarity to center-angle\r\n var similarity = Math.abs(vec2.dot(otherPoint.point.vec, center.vec));\r\n if (similarity > threshold) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n getPoints: function() {\r\n return points;\r\n },\r\n getCenter: function() {\r\n return center;\r\n }\r\n };\r\n },\r\n createPoint: function(newPoint, id, property) {\r\n return {\r\n rad: newPoint[property],\r\n point: newPoint,\r\n id: id\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/cluster.js\n **/","export default function createEventedElement() {\r\n var events = {};\r\n\r\n function getEvent(eventName) {\r\n if (!events[eventName]) {\r\n events[eventName] = {\r\n subscribers: []\r\n };\r\n }\r\n return events[eventName];\r\n }\r\n\r\n function clearEvents(){\r\n events = {};\r\n }\r\n\r\n function publishSubscription(subscription, data) {\r\n if (subscription.async) {\r\n setTimeout(function() {\r\n subscription.callback(data);\r\n }, 4);\r\n } else {\r\n subscription.callback(data);\r\n }\r\n }\r\n\r\n function subscribe(event, callback, async) {\r\n var subscription;\r\n\r\n if ( typeof callback === \"function\") {\r\n subscription = {\r\n callback: callback,\r\n async: async\r\n };\r\n } else {\r\n subscription = callback;\r\n if (!subscription.callback) {\r\n throw \"Callback was not specified on options\";\r\n }\r\n }\r\n\r\n getEvent(event).subscribers.push(subscription);\r\n }\r\n\r\n return {\r\n subscribe: function(event, callback, async) {\r\n return subscribe(event, callback, async);\r\n },\r\n publish: function(eventName, data) {\r\n var event = getEvent(eventName),\r\n subscribers = event.subscribers;\r\n\r\n event.subscribers = subscribers.filter(function(subscriber) {\r\n publishSubscription(subscriber, data);\r\n return !subscriber.once;\r\n });\r\n },\r\n once: function(event, callback, async) {\r\n subscribe(event, {\r\n callback: callback,\r\n async: async,\r\n once: true\r\n });\r\n },\r\n unsubscribe: function(eventName, callback) {\r\n var event;\r\n\r\n if (eventName) {\r\n event = getEvent(eventName);\r\n if (event && callback) {\r\n event.subscribers = event.subscribers.filter(function(subscriber){\r\n return subscriber.callback !== callback;\r\n });\r\n } else {\r\n event.subscribers = [];\r\n }\r\n } else {\r\n clearEvents();\r\n }\r\n }\r\n };\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/events.js\n **/","/**\r\n * Construct representing a part of another {ImageWrapper}. Shares data\r\n * between the parent and the child.\r\n * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner)\r\n * @param size {ImageRef} The size of the resulting image\r\n * @param I {ImageWrapper} The {ImageWrapper} to share from\r\n * @returns {SubImage} A shared part of the original image\r\n */\r\nfunction SubImage(from, size, I) {\r\n if (!I) {\r\n I = {\r\n data: null,\r\n size: size\r\n };\r\n }\r\n this.data = I.data;\r\n this.originalSize = I.size;\r\n this.I = I;\r\n\r\n this.from = from;\r\n this.size = size;\r\n}\r\n\r\n/**\r\n * Displays the {SubImage} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nSubImage.prototype.show = function(canvas, scale) {\r\n var ctx,\r\n frame,\r\n data,\r\n current,\r\n y,\r\n x,\r\n pixel;\r\n\r\n if (!scale) {\r\n scale = 1.0;\r\n }\r\n ctx = canvas.getContext('2d');\r\n canvas.width = this.size.x;\r\n canvas.height = this.size.y;\r\n frame = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n data = frame.data;\r\n current = 0;\r\n for (y = 0; y < this.size.y; y++) {\r\n for (x = 0; x < this.size.x; x++) {\r\n pixel = y * this.size.x + x;\r\n current = this.get(x, y) * scale;\r\n data[pixel * 4 + 0] = current;\r\n data[pixel * 4 + 1] = current;\r\n data[pixel * 4 + 2] = current;\r\n data[pixel * 4 + 3] = 255;\r\n }\r\n }\r\n frame.data = data;\r\n ctx.putImageData(frame, 0, 0);\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the {SubImage}\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nSubImage.prototype.get = function(x, y) {\r\n return this.data[(this.from.y + y) * this.originalSize.x + this.from.x + x];\r\n};\r\n\r\n/**\r\n * Updates the underlying data from a given {ImageWrapper}\r\n * @param image {ImageWrapper} The updated image\r\n */\r\nSubImage.prototype.updateData = function(image) {\r\n this.originalSize = image.size;\r\n this.data = image.data;\r\n};\r\n\r\n/**\r\n * Updates the position of the shared area\r\n * @param from {x,y} The new location\r\n * @returns {SubImage} returns {this} for possible chaining\r\n */\r\nSubImage.prototype.updateFrom = function(from) {\r\n this.from = from;\r\n return this;\r\n};\r\n\r\nexport default (SubImage);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/subImage.js\n **/","/*\r\n * typedefs.js\r\n * Normalizes browser-specific prefixes\r\n */\r\n\r\nif (typeof window !== 'undefined') {\r\n window.requestAnimFrame = (function () {\r\n return window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n window.msRequestAnimationFrame ||\r\n function (/* function FrameRequestCallback */ callback) {\r\n window.setTimeout(callback, 1000 / 60);\r\n };\r\n })();\r\n}\r\nMath.imul = Math.imul || function(a, b) {\r\n var ah = (a >>> 16) & 0xffff,\r\n al = a & 0xffff,\r\n bh = (b >>> 16) & 0xffff,\r\n bl = b & 0xffff;\r\n // the shift by 0 fixes the sign on the high part\r\n // the final |0 converts the unsigned value into a signed value\r\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/typedefs.js\n **/","module.exports = {\r\n inputStream: {\r\n type: \"ImageStream\",\r\n sequence: false,\r\n size: 800,\r\n area: {\r\n top: \"0%\",\r\n right: \"0%\",\r\n left: \"0%\",\r\n bottom: \"0%\"\r\n },\r\n singleChannel: false // true: only the red color-channel is read\r\n },\r\n locate: true,\r\n numOfWorkers: 0,\r\n decoder: {\r\n readers: [\r\n 'code_128_reader'\r\n ]\r\n },\r\n locator: {\r\n halfSample: true,\r\n patchSize: \"medium\" // x-small, small, medium, large, x-large\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/config/config.node.js\n **/","import Bresenham from './bresenham';\r\nimport ImageDebug from '../common/image_debug';\r\nimport Code128Reader from '../reader/code_128_reader';\r\nimport EANReader from '../reader/ean_reader';\r\nimport Code39Reader from '../reader/code_39_reader';\r\nimport Code39VINReader from '../reader/code_39_vin_reader';\r\nimport CodabarReader from '../reader/codabar_reader';\r\nimport UPCReader from '../reader/upc_reader';\r\nimport EAN8Reader from '../reader/ean_8_reader';\r\nimport EAN2Reader from '../reader/ean_2_reader';\r\nimport EAN5Reader from '../reader/ean_5_reader';\r\nimport UPCEReader from '../reader/upc_e_reader';\r\nimport I2of5Reader from '../reader/i2of5_reader';\r\n\r\nconst READERS = {\r\n code_128_reader: Code128Reader,\r\n ean_reader: EANReader,\r\n ean_5_reader: EAN5Reader,\r\n ean_2_reader: EAN2Reader,\r\n ean_8_reader: EAN8Reader,\r\n code_39_reader: Code39Reader,\r\n code_39_vin_reader: Code39VINReader,\r\n codabar_reader: CodabarReader,\r\n upc_reader: UPCReader,\r\n upc_e_reader: UPCEReader,\r\n i2of5_reader: I2of5Reader\r\n};\r\nexport default {\r\n create: function(config, inputImageWrapper) {\r\n var _canvas = {\r\n ctx: {\r\n frequency: null,\r\n pattern: null,\r\n overlay: null\r\n },\r\n dom: {\r\n frequency: null,\r\n pattern: null,\r\n overlay: null\r\n }\r\n },\r\n _barcodeReaders = [];\r\n\r\n initCanvas();\r\n initReaders();\r\n initConfig();\r\n\r\n function initCanvas() {\r\n if (ENV.development && typeof document !== 'undefined') {\r\n var $debug = document.querySelector(\"#debug.detection\");\r\n _canvas.dom.frequency = document.querySelector(\"canvas.frequency\");\r\n if (!_canvas.dom.frequency) {\r\n _canvas.dom.frequency = document.createElement(\"canvas\");\r\n _canvas.dom.frequency.className = \"frequency\";\r\n if ($debug) {\r\n $debug.appendChild(_canvas.dom.frequency);\r\n }\r\n }\r\n _canvas.ctx.frequency = _canvas.dom.frequency.getContext(\"2d\");\r\n\r\n _canvas.dom.pattern = document.querySelector(\"canvas.patternBuffer\");\r\n if (!_canvas.dom.pattern) {\r\n _canvas.dom.pattern = document.createElement(\"canvas\");\r\n _canvas.dom.pattern.className = \"patternBuffer\";\r\n if ($debug) {\r\n $debug.appendChild(_canvas.dom.pattern);\r\n }\r\n }\r\n _canvas.ctx.pattern = _canvas.dom.pattern.getContext(\"2d\");\r\n\r\n _canvas.dom.overlay = document.querySelector(\"canvas.drawingBuffer\");\r\n if (_canvas.dom.overlay) {\r\n _canvas.ctx.overlay = _canvas.dom.overlay.getContext(\"2d\");\r\n }\r\n }\r\n }\r\n\r\n function initReaders() {\r\n config.readers.forEach(function(readerConfig) {\r\n var reader,\r\n configuration = {},\r\n supplements = [];\r\n\r\n if (typeof readerConfig === 'object') {\r\n reader = readerConfig.format;\r\n configuration = readerConfig.config;\r\n } else if (typeof readerConfig === 'string') {\r\n reader = readerConfig;\r\n }\r\n if (ENV.development) {\r\n console.log(\"Before registering reader: \", reader);\r\n }\r\n if (configuration.supplements) {\r\n supplements = configuration\r\n .supplements.map((supplement) => {\r\n return new READERS[supplement]();\r\n });\r\n }\r\n _barcodeReaders.push(new READERS[reader](configuration, supplements));\r\n });\r\n if (ENV.development) {\r\n console.log(\"Registered Readers: \" + _barcodeReaders\r\n .map((reader) => JSON.stringify({format: reader.FORMAT, config: reader.config}))\r\n .join(', '));\r\n }\r\n }\r\n\r\n function initConfig() {\r\n if (ENV.development && typeof document !== 'undefined') {\r\n var i,\r\n vis = [{\r\n node: _canvas.dom.frequency,\r\n prop: config.debug.showFrequency\r\n }, {\r\n node: _canvas.dom.pattern,\r\n prop: config.debug.showPattern\r\n }];\r\n\r\n for (i = 0; i < vis.length; i++) {\r\n if (vis[i].prop === true) {\r\n vis[i].node.style.display = \"block\";\r\n } else {\r\n vis[i].node.style.display = \"none\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * extend the line on both ends\r\n * @param {Array} line\r\n * @param {Number} angle\r\n */\r\n function getExtendedLine(line, angle, ext) {\r\n function extendLine(amount) {\r\n var extension = {\r\n y: amount * Math.sin(angle),\r\n x: amount * Math.cos(angle)\r\n };\r\n\r\n line[0].y -= extension.y;\r\n line[0].x -= extension.x;\r\n line[1].y += extension.y;\r\n line[1].x += extension.x;\r\n }\r\n\r\n // check if inside image\r\n extendLine(ext);\r\n while (ext > 1 && (!inputImageWrapper.inImageWithBorder(line[0], 0)\r\n || !inputImageWrapper.inImageWithBorder(line[1], 0))) {\r\n ext -= Math.ceil(ext / 2);\r\n extendLine(-ext);\r\n }\r\n return line;\r\n }\r\n\r\n function getLine(box) {\r\n return [{\r\n x: (box[1][0] - box[0][0]) / 2 + box[0][0],\r\n y: (box[1][1] - box[0][1]) / 2 + box[0][1]\r\n }, {\r\n x: (box[3][0] - box[2][0]) / 2 + box[2][0],\r\n y: (box[3][1] - box[2][1]) / 2 + box[2][1]\r\n }];\r\n }\r\n\r\n function tryDecode(line) {\r\n var result = null,\r\n i,\r\n barcodeLine = Bresenham.getBarcodeLine(inputImageWrapper, line[0], line[1]);\r\n\r\n if (ENV.development && config.debug.showFrequency) {\r\n ImageDebug.drawPath(line, {x: 'x', y: 'y'}, _canvas.ctx.overlay, {color: 'red', lineWidth: 3});\r\n Bresenham.debug.printFrequency(barcodeLine.line, _canvas.dom.frequency);\r\n }\r\n\r\n Bresenham.toBinaryLine(barcodeLine);\r\n\r\n if (ENV.development && config.debug.showPattern) {\r\n Bresenham.debug.printPattern(barcodeLine.line, _canvas.dom.pattern);\r\n }\r\n\r\n for ( i = 0; i < _barcodeReaders.length && result === null; i++) {\r\n result = _barcodeReaders[i].decodePattern(barcodeLine.line);\r\n }\r\n if (result === null){\r\n return null;\r\n }\r\n return {\r\n codeResult: result,\r\n barcodeLine: barcodeLine\r\n };\r\n }\r\n\r\n /**\r\n * This method slices the given area apart and tries to detect a barcode-pattern\r\n * for each slice. It returns the decoded barcode, or null if nothing was found\r\n * @param {Array} box\r\n * @param {Array} line\r\n * @param {Number} lineAngle\r\n */\r\n function tryDecodeBruteForce(box, line, lineAngle) {\r\n var sideLength = Math.sqrt(Math.pow(box[1][0] - box[0][0], 2) + Math.pow((box[1][1] - box[0][1]), 2)),\r\n i,\r\n slices = 16,\r\n result = null,\r\n dir,\r\n extension,\r\n xdir = Math.sin(lineAngle),\r\n ydir = Math.cos(lineAngle);\r\n\r\n for ( i = 1; i < slices && result === null; i++) {\r\n // move line perpendicular to angle\r\n dir = sideLength / slices * i * (i % 2 === 0 ? -1 : 1);\r\n extension = {\r\n y: dir * xdir,\r\n x: dir * ydir\r\n };\r\n line[0].y += extension.x;\r\n line[0].x -= extension.y;\r\n line[1].y += extension.x;\r\n line[1].x -= extension.y;\r\n\r\n result = tryDecode(line);\r\n }\r\n return result;\r\n }\r\n\r\n function getLineLength(line) {\r\n return Math.sqrt(\r\n Math.pow(Math.abs(line[1].y - line[0].y), 2) +\r\n Math.pow(Math.abs(line[1].x - line[0].x), 2));\r\n }\r\n\r\n /**\r\n * With the help of the configured readers (Code128 or EAN) this function tries to detect a\r\n * valid barcode pattern within the given area.\r\n * @param {Object} box The area to search in\r\n * @returns {Object} the result {codeResult, line, angle, pattern, threshold}\r\n */\r\n function decodeFromBoundingBox(box) {\r\n var line,\r\n lineAngle,\r\n ctx = _canvas.ctx.overlay,\r\n result,\r\n lineLength;\r\n\r\n if (ENV.development) {\r\n if (config.debug.drawBoundingBox && ctx) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, ctx, {color: \"blue\", lineWidth: 2});\r\n }\r\n }\r\n\r\n line = getLine(box);\r\n lineLength = getLineLength(line);\r\n lineAngle = Math.atan2(line[1].y - line[0].y, line[1].x - line[0].x);\r\n line = getExtendedLine(line, lineAngle, Math.floor(lineLength * 0.1));\r\n if (line === null){\r\n return null;\r\n }\r\n\r\n result = tryDecode(line);\r\n if (result === null) {\r\n result = tryDecodeBruteForce(box, line, lineAngle);\r\n }\r\n\r\n if (result === null) {\r\n return null;\r\n }\r\n\r\n if (ENV.development && result && config.debug.drawScanline && ctx) {\r\n ImageDebug.drawPath(line, {x: 'x', y: 'y'}, ctx, {color: 'red', lineWidth: 3});\r\n }\r\n\r\n return {\r\n codeResult: result.codeResult,\r\n line: line,\r\n angle: lineAngle,\r\n pattern: result.barcodeLine.line,\r\n threshold: result.barcodeLine.threshold\r\n };\r\n }\r\n\r\n return {\r\n decodeFromBoundingBox: function(box) {\r\n return decodeFromBoundingBox(box);\r\n },\r\n decodeFromBoundingBoxes: function(boxes) {\r\n var i, result,\r\n barcodes = [],\r\n multiple = config.multiple;\r\n\r\n for ( i = 0; i < boxes.length; i++) {\r\n const box = boxes[i];\r\n result = decodeFromBoundingBox(box) || {};\r\n result.box = box;\r\n\r\n if (multiple) {\r\n barcodes.push(result);\r\n } else if (result.codeResult) {\r\n return result;\r\n }\r\n }\r\n\r\n if (multiple) {\r\n return {\r\n barcodes\r\n };\r\n }\r\n },\r\n setReaders: function(readers) {\r\n config.readers = readers;\r\n _barcodeReaders.length = 0;\r\n initReaders();\r\n }\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/decoder/barcode_decoder.js\n **/","var Bresenham = {};\r\n\r\nvar Slope = {\r\n DIR: {\r\n UP: 1,\r\n DOWN: -1\r\n }\r\n};\r\n/**\r\n * Scans a line of the given image from point p1 to p2 and returns a result object containing\r\n * gray-scale values (0-255) of the underlying pixels in addition to the min\r\n * and max values.\r\n * @param {Object} imageWrapper\r\n * @param {Object} p1 The start point {x,y}\r\n * @param {Object} p2 The end point {x,y}\r\n * @returns {line, min, max}\r\n */\r\nBresenham.getBarcodeLine = function(imageWrapper, p1, p2) {\r\n var x0 = p1.x | 0,\r\n y0 = p1.y | 0,\r\n x1 = p2.x | 0,\r\n y1 = p2.y | 0,\r\n steep = Math.abs(y1 - y0) > Math.abs(x1 - x0),\r\n deltax,\r\n deltay,\r\n error,\r\n ystep,\r\n y,\r\n tmp,\r\n x,\r\n line = [],\r\n imageData = imageWrapper.data,\r\n width = imageWrapper.size.x,\r\n sum = 0,\r\n val,\r\n min = 255,\r\n max = 0;\r\n\r\n function read(a, b) {\r\n val = imageData[b * width + a];\r\n sum += val;\r\n min = val < min ? val : min;\r\n max = val > max ? val : max;\r\n line.push(val);\r\n }\r\n\r\n if (steep) {\r\n tmp = x0;\r\n x0 = y0;\r\n y0 = tmp;\r\n\r\n tmp = x1;\r\n x1 = y1;\r\n y1 = tmp;\r\n }\r\n if (x0 > x1) {\r\n tmp = x0;\r\n x0 = x1;\r\n x1 = tmp;\r\n\r\n tmp = y0;\r\n y0 = y1;\r\n y1 = tmp;\r\n }\r\n deltax = x1 - x0;\r\n deltay = Math.abs(y1 - y0);\r\n error = (deltax / 2) | 0;\r\n y = y0;\r\n ystep = y0 < y1 ? 1 : -1;\r\n for ( x = x0; x < x1; x++) {\r\n if (steep){\r\n read(y, x);\r\n } else {\r\n read(x, y);\r\n }\r\n error = error - deltay;\r\n if (error < 0) {\r\n y = y + ystep;\r\n error = error + deltax;\r\n }\r\n }\r\n\r\n return {\r\n line: line,\r\n min: min,\r\n max: max\r\n };\r\n};\r\n\r\n/**\r\n * Converts the result from getBarcodeLine into a binary representation\r\n * also considering the frequency and slope of the signal for more robust results\r\n * @param {Object} result {line, min, max}\r\n */\r\nBresenham.toBinaryLine = function(result) {\r\n var min = result.min,\r\n max = result.max,\r\n line = result.line,\r\n slope,\r\n slope2,\r\n center = min + (max - min) / 2,\r\n extrema = [],\r\n currentDir,\r\n dir,\r\n threshold = (max - min) / 12,\r\n rThreshold = -threshold,\r\n i,\r\n j;\r\n\r\n // 1. find extrema\r\n currentDir = line[0] > center ? Slope.DIR.UP : Slope.DIR.DOWN;\r\n extrema.push({\r\n pos: 0,\r\n val: line[0]\r\n });\r\n for ( i = 0; i < line.length - 2; i++) {\r\n slope = (line[i + 1] - line[i]);\r\n slope2 = (line[i + 2] - line[i + 1]);\r\n if ((slope + slope2) < rThreshold && line[i + 1] < (center * 1.5)) {\r\n dir = Slope.DIR.DOWN;\r\n } else if ((slope + slope2) > threshold && line[i + 1] > (center * 0.5)) {\r\n dir = Slope.DIR.UP;\r\n } else {\r\n dir = currentDir;\r\n }\r\n\r\n if (currentDir !== dir) {\r\n extrema.push({\r\n pos: i,\r\n val: line[i]\r\n });\r\n currentDir = dir;\r\n }\r\n }\r\n extrema.push({\r\n pos: line.length,\r\n val: line[line.length - 1]\r\n });\r\n\r\n for ( j = extrema[0].pos; j < extrema[1].pos; j++) {\r\n line[j] = line[j] > center ? 0 : 1;\r\n }\r\n\r\n // iterate over extrema and convert to binary based on avg between minmax\r\n for ( i = 1; i < extrema.length - 1; i++) {\r\n if (extrema[i + 1].val > extrema[i].val) {\r\n threshold = (extrema[i].val + ((extrema[i + 1].val - extrema[i].val) / 3) * 2) | 0;\r\n } else {\r\n threshold = (extrema[i + 1].val + ((extrema[i].val - extrema[i + 1].val) / 3)) | 0;\r\n }\r\n\r\n for ( j = extrema[i].pos; j < extrema[i + 1].pos; j++) {\r\n line[j] = line[j] > threshold ? 0 : 1;\r\n }\r\n }\r\n\r\n return {\r\n line: line,\r\n threshold: threshold\r\n };\r\n};\r\n\r\n/**\r\n * Used for development only\r\n */\r\nBresenham.debug = {\r\n printFrequency: function(line, canvas) {\r\n var i,\r\n ctx = canvas.getContext(\"2d\");\r\n canvas.width = line.length;\r\n canvas.height = 256;\r\n\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"blue\";\r\n for ( i = 0; i < line.length; i++) {\r\n ctx.moveTo(i, 255);\r\n ctx.lineTo(i, 255 - line[i]);\r\n }\r\n ctx.stroke();\r\n ctx.closePath();\r\n },\r\n\r\n printPattern: function(line, canvas) {\r\n var ctx = canvas.getContext(\"2d\"), i;\r\n\r\n canvas.width = line.length;\r\n ctx.fillColor = \"black\";\r\n for ( i = 0; i < line.length; i++) {\r\n if (line[i] === 1) {\r\n ctx.fillRect(i, 0, 1, 100);\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default Bresenham;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/decoder/bresenham.js\n **/","import {merge, pick} from 'lodash';\r\n\r\nvar streamRef;\r\n\r\nfunction waitForVideo(video) {\r\n return new Promise((resolve, reject) => {\r\n let attempts = 10;\r\n\r\n function checkVideo() {\r\n if (attempts > 0) {\r\n if (video.videoWidth > 0 && video.videoHeight > 0) {\r\n if (ENV.development) {\r\n console.log(video.videoWidth + \"px x \" + video.videoHeight + \"px\");\r\n }\r\n resolve();\r\n } else {\r\n window.setTimeout(checkVideo, 500);\r\n }\r\n } else {\r\n reject('Unable to play video stream. Is webcam working?');\r\n }\r\n attempts--;\r\n }\r\n checkVideo();\r\n });\r\n}\r\n\r\n/**\r\n * Tries to attach the camera-stream to a given video-element\r\n * and calls the callback function when the content is ready\r\n * @param {Object} constraints\r\n * @param {Object} video\r\n */\r\nfunction initCamera(video, constraints) {\r\n return navigator.mediaDevices.getUserMedia(constraints)\r\n .then((stream) => {\r\n return new Promise((resolve, reject) => {\r\n streamRef = stream;\r\n video.src = window.URL.createObjectURL(stream);\r\n video.onloadedmetadata = (e) => {\r\n video.play();\r\n resolve();\r\n };\r\n });\r\n })\r\n .then(waitForVideo.bind(null, video));\r\n}\r\n\r\nfunction deprecatedConstraints(videoConstraints) {\r\n const normalized = pick(videoConstraints, [\"width\", \"height\", \"facingMode\",\r\n \"aspectRatio\", \"deviceId\"]);\r\n\r\n if (typeof videoConstraints[\"minAspectRatio\"] !== 'undefined' &&\r\n videoConstraints[\"minAspectRatio\"] > 0) {\r\n normalized[\"aspectRatio\"] = videoConstraints[\"minAspectRatio\"];\r\n console.log(\"WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead\");\r\n }\r\n if (typeof videoConstraints[\"facing\"] !== 'undefined') {\r\n normalized[\"facingMode\"] = videoConstraints[\"facing\"];\r\n console.log(\"WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'\");\r\n }\r\n return normalized;\r\n}\r\n\r\nfunction applyCameraFacing(facing, constraints) {\r\n if (typeof constraints.video.deviceId !== 'undefined' || !facing){\r\n return Promise.resolve(constraints);\r\n }\r\n if ( typeof MediaStreamTrack !== 'undefined' &&\r\n typeof MediaStreamTrack.getSources !== 'undefined') {\r\n return new Promise((resolve, reject) => {\r\n MediaStreamTrack.getSources((sourceInfos) => {\r\n const videoSource = sourceInfos.filter((sourceInfo) => (\r\n sourceInfo.kind === \"video\" && sourceInfo.facing === facing\r\n ))[0];\r\n if (videoSource) {\r\n return resolve(merge({}, constraints,\r\n {video: {deviceId: videoSource.id}}));\r\n }\r\n return resolve(constraints);\r\n });\r\n });\r\n }\r\n return Promise.resolve(merge({}, constraints, {video: {facingMode: facing}}));\r\n}\r\n\r\nfunction pickConstraints(videoConstraints) {\r\n const constraints = {\r\n audio: false,\r\n video: deprecatedConstraints(videoConstraints)\r\n };\r\n return applyCameraFacing(constraints.video.facingMode, constraints);\r\n}\r\n\r\nexport default {\r\n request: function(video, videoConstraints) {\r\n return pickConstraints(videoConstraints)\r\n .then(initCamera.bind(null, video));\r\n },\r\n release: function() {\r\n var tracks = streamRef && streamRef.getVideoTracks();\r\n if (tracks && tracks.length) {\r\n tracks[0].stop();\r\n }\r\n streamRef = null;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/input/camera_access.js\n **/","import ImageWrapper from '../common/image_wrapper';\r\nimport {\r\n calculatePatchSize,\r\n otsuThreshold,\r\n hsv2rgb,\r\n cluster,\r\n topGeneric,\r\n imageRef,\r\n halfSample,\r\n computeImageArea\r\n} from '../common/cv_utils';\r\nimport ArrayHelper from '../common/array_helper';\r\nimport ImageDebug from '../common/image_debug';\r\nimport Rasterizer from './rasterizer';\r\nimport Tracer from './tracer';\r\nimport skeletonizer from './skeletonizer';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n dot: require('gl-vec2/dot'),\r\n scale: require('gl-vec2/scale'),\r\n transformMat2: require('gl-vec2/transformMat2')\r\n};\r\nconst mat2 = {\r\n copy: require('gl-mat2/copy'),\r\n create: require('gl-mat2/create'),\r\n invert: require('gl-mat2/invert')\r\n};\r\n\r\nexport default function createLocator(inputImageWrapper, config) {\r\n var _config = config,\r\n _currentImageWrapper,\r\n _skelImageWrapper,\r\n _subImageWrapper,\r\n _labelImageWrapper,\r\n _patchGrid,\r\n _patchLabelGrid,\r\n _imageToPatchGrid,\r\n _binaryImageWrapper,\r\n _patchSize,\r\n _canvasContainer = {\r\n ctx: {\r\n binary: null\r\n },\r\n dom: {\r\n binary: null\r\n }\r\n },\r\n _numPatches = {x: 0, y: 0},\r\n _inputImageWrapper = inputImageWrapper,\r\n _skeletonizer;\r\n\r\n initBuffers();\r\n initCanvas();\r\n\r\n function initBuffers() {\r\n var skeletonImageData;\r\n\r\n if (_config.halfSample) {\r\n _currentImageWrapper = new ImageWrapper({\r\n x: _inputImageWrapper.size.x / 2 | 0,\r\n y: _inputImageWrapper.size.y / 2 | 0\r\n });\r\n } else {\r\n _currentImageWrapper = _inputImageWrapper;\r\n }\r\n\r\n _patchSize = calculatePatchSize(_config.patchSize, _currentImageWrapper.size);\r\n\r\n _numPatches.x = _currentImageWrapper.size.x / _patchSize.x | 0;\r\n _numPatches.y = _currentImageWrapper.size.y / _patchSize.y | 0;\r\n\r\n _binaryImageWrapper = new ImageWrapper(_currentImageWrapper.size, undefined, Uint8Array, false);\r\n\r\n _labelImageWrapper = new ImageWrapper(_patchSize, undefined, Array, true);\r\n\r\n skeletonImageData = new ArrayBuffer(64 * 1024);\r\n _subImageWrapper = new ImageWrapper(_patchSize,\r\n new Uint8Array(skeletonImageData, 0, _patchSize.x * _patchSize.y));\r\n _skelImageWrapper = new ImageWrapper(_patchSize,\r\n new Uint8Array(skeletonImageData, _patchSize.x * _patchSize.y * 3, _patchSize.x * _patchSize.y),\r\n undefined, true);\r\n _skeletonizer = skeletonizer((typeof window !== 'undefined') ? window : (typeof self !== 'undefined') ? self : global, {\r\n size: _patchSize.x\r\n }, skeletonImageData);\r\n\r\n _imageToPatchGrid = new ImageWrapper({\r\n x: (_currentImageWrapper.size.x / _subImageWrapper.size.x) | 0,\r\n y: (_currentImageWrapper.size.y / _subImageWrapper.size.y) | 0\r\n }, undefined, Array, true);\r\n _patchGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, undefined, true);\r\n _patchLabelGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, Int32Array, true);\r\n }\r\n\r\n function initCanvas() {\r\n if (_config.useWorker || typeof document === 'undefined') {\r\n return;\r\n }\r\n _canvasContainer.dom.binary = document.createElement(\"canvas\");\r\n _canvasContainer.dom.binary.className = \"binaryBuffer\";\r\n if (ENV.development && _config.debug.showCanvas === true) {\r\n document.querySelector(\"#debug\").appendChild(_canvasContainer.dom.binary);\r\n }\r\n _canvasContainer.ctx.binary = _canvasContainer.dom.binary.getContext(\"2d\");\r\n _canvasContainer.dom.binary.width = _binaryImageWrapper.size.x;\r\n _canvasContainer.dom.binary.height = _binaryImageWrapper.size.y;\r\n }\r\n\r\n /**\r\n * Creates a bounding box which encloses all the given patches\r\n * @returns {Array} The minimal bounding box\r\n */\r\n function boxFromPatches(patches) {\r\n var overAvg,\r\n i,\r\n j,\r\n patch,\r\n transMat,\r\n minx =\r\n _binaryImageWrapper.size.x,\r\n miny = _binaryImageWrapper.size.y,\r\n maxx = -_binaryImageWrapper.size.x,\r\n maxy = -_binaryImageWrapper.size.y,\r\n box,\r\n scale;\r\n\r\n // draw all patches which are to be taken into consideration\r\n overAvg = 0;\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n overAvg += patch.rad;\r\n if (ENV.development && _config.debug.showPatches) {\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: \"red\"});\r\n }\r\n }\r\n\r\n overAvg /= patches.length;\r\n overAvg = (overAvg * 180 / Math.PI + 90) % 180 - 90;\r\n if (overAvg < 0) {\r\n overAvg += 180;\r\n }\r\n\r\n overAvg = (180 - overAvg) * Math.PI / 180;\r\n transMat = mat2.copy(mat2.create(), [Math.cos(overAvg), Math.sin(overAvg), -Math.sin(overAvg), Math.cos(overAvg)]);\r\n\r\n // iterate over patches and rotate by angle\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n for ( j = 0; j < 4; j++) {\r\n vec2.transformMat2(patch.box[j], patch.box[j], transMat);\r\n }\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showTransformed) {\r\n ImageDebug.drawPath(patch.box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#99ff00', lineWidth: 2});\r\n }\r\n }\r\n\r\n // find bounding box\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n for ( j = 0; j < 4; j++) {\r\n if (patch.box[j][0] < minx) {\r\n minx = patch.box[j][0];\r\n }\r\n if (patch.box[j][0] > maxx) {\r\n maxx = patch.box[j][0];\r\n }\r\n if (patch.box[j][1] < miny) {\r\n miny = patch.box[j][1];\r\n }\r\n if (patch.box[j][1] > maxy) {\r\n maxy = patch.box[j][1];\r\n }\r\n }\r\n }\r\n\r\n box = [[minx, miny], [maxx, miny], [maxx, maxy], [minx, maxy]];\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showTransformedBox) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2});\r\n }\r\n\r\n scale = _config.halfSample ? 2 : 1;\r\n // reverse rotation;\r\n transMat = mat2.invert(transMat, transMat);\r\n for ( j = 0; j < 4; j++) {\r\n vec2.transformMat2(box[j], box[j], transMat);\r\n }\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showBB) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2});\r\n }\r\n\r\n for ( j = 0; j < 4; j++) {\r\n vec2.scale(box[j], box[j], scale);\r\n }\r\n\r\n return box;\r\n }\r\n\r\n /**\r\n * Creates a binary image of the current image\r\n */\r\n function binarizeImage() {\r\n otsuThreshold(_currentImageWrapper, _binaryImageWrapper);\r\n _binaryImageWrapper.zeroBorder();\r\n if (ENV.development && _config.debug.showCanvas) {\r\n _binaryImageWrapper.show(_canvasContainer.dom.binary, 255);\r\n }\r\n }\r\n\r\n /**\r\n * Iterate over the entire image\r\n * extract patches\r\n */\r\n function findPatches() {\r\n var i,\r\n j,\r\n x,\r\n y,\r\n moments,\r\n patchesFound = [],\r\n rasterizer,\r\n rasterResult,\r\n patch;\r\n for (i = 0; i < _numPatches.x; i++) {\r\n for (j = 0; j < _numPatches.y; j++) {\r\n x = _subImageWrapper.size.x * i;\r\n y = _subImageWrapper.size.y * j;\r\n\r\n // seperate parts\r\n skeletonize(x, y);\r\n\r\n // Rasterize, find individual bars\r\n _skelImageWrapper.zeroBorder();\r\n ArrayHelper.init(_labelImageWrapper.data, 0);\r\n rasterizer = Rasterizer.create(_skelImageWrapper, _labelImageWrapper);\r\n rasterResult = rasterizer.rasterize(0);\r\n\r\n if (ENV.development && _config.debug.showLabels) {\r\n _labelImageWrapper.overlay(_canvasContainer.dom.binary, Math.floor(360 / rasterResult.count),\r\n {x: x, y: y});\r\n }\r\n\r\n // calculate moments from the skeletonized patch\r\n moments = _labelImageWrapper.moments(rasterResult.count);\r\n\r\n // extract eligible patches\r\n patchesFound = patchesFound.concat(describePatch(moments, [i, j], x, y));\r\n }\r\n }\r\n\r\n if (ENV.development && _config.debug.showFoundPatches) {\r\n for ( i = 0; i < patchesFound.length; i++) {\r\n patch = patchesFound[i];\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"#99ff00\", lineWidth: 2});\r\n }\r\n }\r\n\r\n return patchesFound;\r\n }\r\n\r\n /**\r\n * Finds those connected areas which contain at least 6 patches\r\n * and returns them ordered DESC by the number of contained patches\r\n * @param {Number} maxLabel\r\n */\r\n function findBiggestConnectedAreas(maxLabel){\r\n var i,\r\n sum,\r\n labelHist = [],\r\n topLabels = [];\r\n\r\n for ( i = 0; i < maxLabel; i++) {\r\n labelHist.push(0);\r\n }\r\n sum = _patchLabelGrid.data.length;\r\n while (sum--) {\r\n if (_patchLabelGrid.data[sum] > 0) {\r\n labelHist[_patchLabelGrid.data[sum] - 1]++;\r\n }\r\n }\r\n\r\n labelHist = labelHist.map(function(val, idx) {\r\n return {\r\n val: val,\r\n label: idx + 1\r\n };\r\n });\r\n\r\n labelHist.sort(function(a, b) {\r\n return b.val - a.val;\r\n });\r\n\r\n // extract top areas with at least 6 patches present\r\n topLabels = labelHist.filter(function(el) {\r\n return el.val >= 5;\r\n });\r\n\r\n return topLabels;\r\n }\r\n\r\n /**\r\n *\r\n */\r\n function findBoxes(topLabels, maxLabel) {\r\n var i,\r\n j,\r\n sum,\r\n patches = [],\r\n patch,\r\n box,\r\n boxes = [],\r\n hsv = [0, 1, 1],\r\n rgb = [0, 0, 0];\r\n\r\n for ( i = 0; i < topLabels.length; i++) {\r\n sum = _patchLabelGrid.data.length;\r\n patches.length = 0;\r\n while (sum--) {\r\n if (_patchLabelGrid.data[sum] === topLabels[i].label) {\r\n patch = _imageToPatchGrid.data[sum];\r\n patches.push(patch);\r\n }\r\n }\r\n box = boxFromPatches(patches);\r\n if (box) {\r\n boxes.push(box);\r\n\r\n // draw patch-labels if requested\r\n if (ENV.development && _config.debug.showRemainingPatchLabels) {\r\n for ( j = 0; j < patches.length; j++) {\r\n patch = patches[j];\r\n hsv[0] = (topLabels[i].label / (maxLabel + 1)) * 360;\r\n hsv2rgb(hsv, rgb);\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"rgb(\" + rgb.join(\",\") + \")\", lineWidth: 2});\r\n }\r\n }\r\n }\r\n }\r\n return boxes;\r\n }\r\n\r\n /**\r\n * Find similar moments (via cluster)\r\n * @param {Object} moments\r\n */\r\n function similarMoments(moments) {\r\n var clusters = cluster(moments, 0.90);\r\n var topCluster = topGeneric(clusters, 1, function(e) {\r\n return e.getPoints().length;\r\n });\r\n var points = [], result = [];\r\n if (topCluster.length === 1) {\r\n points = topCluster[0].item.getPoints();\r\n for (var i = 0; i < points.length; i++) {\r\n result.push(points[i].point);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function skeletonize(x, y) {\r\n _binaryImageWrapper.subImageAsCopy(_subImageWrapper, imageRef(x, y));\r\n _skeletonizer.skeletonize();\r\n\r\n // Show skeleton if requested\r\n if (ENV.development && _config.debug.showSkeleton) {\r\n _skelImageWrapper.overlay(_canvasContainer.dom.binary, 360, imageRef(x, y));\r\n }\r\n }\r\n\r\n /**\r\n * Extracts and describes those patches which seem to contain a barcode pattern\r\n * @param {Array} moments\r\n * @param {Object} patchPos,\r\n * @param {Number} x\r\n * @param {Number} y\r\n * @returns {Array} list of patches\r\n */\r\n function describePatch(moments, patchPos, x, y) {\r\n var k,\r\n avg,\r\n eligibleMoments = [],\r\n matchingMoments,\r\n patch,\r\n patchesFound = [],\r\n minComponentWeight = Math.ceil(_patchSize.x / 3);\r\n\r\n if (moments.length >= 2) {\r\n // only collect moments which's area covers at least minComponentWeight pixels.\r\n for ( k = 0; k < moments.length; k++) {\r\n if (moments[k].m00 > minComponentWeight) {\r\n eligibleMoments.push(moments[k]);\r\n }\r\n }\r\n\r\n // if at least 2 moments are found which have at least minComponentWeights covered\r\n if (eligibleMoments.length >= 2) {\r\n matchingMoments = similarMoments(eligibleMoments);\r\n avg = 0;\r\n // determine the similarity of the moments\r\n for ( k = 0; k < matchingMoments.length; k++) {\r\n avg += matchingMoments[k].rad;\r\n }\r\n\r\n // Only two of the moments are allowed not to fit into the equation\r\n // add the patch to the set\r\n if (matchingMoments.length > 1\r\n && matchingMoments.length >= (eligibleMoments.length / 4) * 3\r\n && matchingMoments.length > moments.length / 4) {\r\n avg /= matchingMoments.length;\r\n patch = {\r\n index: patchPos[1] * _numPatches.x + patchPos[0],\r\n pos: {\r\n x: x,\r\n y: y\r\n },\r\n box: [\r\n vec2.clone([x, y]),\r\n vec2.clone([x + _subImageWrapper.size.x, y]),\r\n vec2.clone([x + _subImageWrapper.size.x, y + _subImageWrapper.size.y]),\r\n vec2.clone([x, y + _subImageWrapper.size.y])\r\n ],\r\n moments: matchingMoments,\r\n rad: avg,\r\n vec: vec2.clone([Math.cos(avg), Math.sin(avg)])\r\n };\r\n patchesFound.push(patch);\r\n }\r\n }\r\n }\r\n return patchesFound;\r\n }\r\n\r\n /**\r\n * finds patches which are connected and share the same orientation\r\n * @param {Object} patchesFound\r\n */\r\n function rasterizeAngularSimilarity(patchesFound) {\r\n var label = 0,\r\n threshold = 0.95,\r\n currIdx = 0,\r\n j,\r\n patch,\r\n hsv = [0, 1, 1],\r\n rgb = [0, 0, 0];\r\n\r\n function notYetProcessed() {\r\n var i;\r\n for ( i = 0; i < _patchLabelGrid.data.length; i++) {\r\n if (_patchLabelGrid.data[i] === 0 && _patchGrid.data[i] === 1) {\r\n return i;\r\n }\r\n }\r\n return _patchLabelGrid.length;\r\n }\r\n\r\n function trace(currentIdx) {\r\n var x,\r\n y,\r\n currentPatch,\r\n idx,\r\n dir,\r\n current = {\r\n x: currentIdx % _patchLabelGrid.size.x,\r\n y: (currentIdx / _patchLabelGrid.size.x) | 0\r\n },\r\n similarity;\r\n\r\n if (currentIdx < _patchLabelGrid.data.length) {\r\n currentPatch = _imageToPatchGrid.data[currentIdx];\r\n // assign label\r\n _patchLabelGrid.data[currentIdx] = label;\r\n for ( dir = 0; dir < Tracer.searchDirections.length; dir++) {\r\n y = current.y + Tracer.searchDirections[dir][0];\r\n x = current.x + Tracer.searchDirections[dir][1];\r\n idx = y * _patchLabelGrid.size.x + x;\r\n\r\n // continue if patch empty\r\n if (_patchGrid.data[idx] === 0) {\r\n _patchLabelGrid.data[idx] = Number.MAX_VALUE;\r\n continue;\r\n }\r\n\r\n if (_patchLabelGrid.data[idx] === 0) {\r\n similarity = Math.abs(vec2.dot(_imageToPatchGrid.data[idx].vec, currentPatch.vec));\r\n if (similarity > threshold) {\r\n trace(idx);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // prepare for finding the right patches\r\n ArrayHelper.init(_patchGrid.data, 0);\r\n ArrayHelper.init(_patchLabelGrid.data, 0);\r\n ArrayHelper.init(_imageToPatchGrid.data, null);\r\n\r\n for ( j = 0; j < patchesFound.length; j++) {\r\n patch = patchesFound[j];\r\n _imageToPatchGrid.data[patch.index] = patch;\r\n _patchGrid.data[patch.index] = 1;\r\n }\r\n\r\n // rasterize the patches found to determine area\r\n _patchGrid.zeroBorder();\r\n\r\n while (( currIdx = notYetProcessed()) < _patchLabelGrid.data.length) {\r\n label++;\r\n trace(currIdx);\r\n }\r\n\r\n // draw patch-labels if requested\r\n if (ENV.development && _config.debug.showPatchLabels) {\r\n for ( j = 0; j < _patchLabelGrid.data.length; j++) {\r\n if (_patchLabelGrid.data[j] > 0 && _patchLabelGrid.data[j] <= label) {\r\n patch = _imageToPatchGrid.data[j];\r\n hsv[0] = (_patchLabelGrid.data[j] / (label + 1)) * 360;\r\n hsv2rgb(hsv, rgb);\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"rgb(\" + rgb.join(\",\") + \")\", lineWidth: 2});\r\n }\r\n }\r\n }\r\n\r\n return label;\r\n }\r\n\r\n return {\r\n locate: function() {\r\n var patchesFound,\r\n topLabels,\r\n boxes;\r\n\r\n if (_config.halfSample) {\r\n halfSample(_inputImageWrapper, _currentImageWrapper);\r\n }\r\n\r\n binarizeImage();\r\n patchesFound = findPatches();\r\n // return unless 5% or more patches are found\r\n if (patchesFound.length < _numPatches.x * _numPatches.y * 0.05) {\r\n return null;\r\n }\r\n\r\n // rasterrize area by comparing angular similarity;\r\n var maxLabel = rasterizeAngularSimilarity(patchesFound);\r\n if (maxLabel < 1) {\r\n return null;\r\n }\r\n\r\n // search for area with the most patches (biggest connected area)\r\n topLabels = findBiggestConnectedAreas(maxLabel);\r\n if (topLabels.length === 0) {\r\n return null;\r\n }\r\n\r\n boxes = findBoxes(topLabels, maxLabel);\r\n return boxes;\r\n }\r\n }\r\n}\r\nexport function checkImageConstraints(inputStream, config) {\r\n var patchSize,\r\n width = inputStream.getWidth(),\r\n height = inputStream.getHeight(),\r\n halfSample = config.halfSample ? 0.5 : 1,\r\n size,\r\n area;\r\n\r\n // calculate width and height based on area\r\n if (inputStream.getConfig().area) {\r\n area = computeImageArea(width, height, inputStream.getConfig().area);\r\n inputStream.setTopRight({x: area.sx, y: area.sy});\r\n inputStream.setCanvasSize({x: width, y: height});\r\n width = area.sw;\r\n height = area.sh;\r\n }\r\n\r\n size = {\r\n x: Math.floor(width * halfSample),\r\n y: Math.floor(height * halfSample)\r\n };\r\n\r\n patchSize = calculatePatchSize(config.patchSize, size);\r\n if (ENV.development) {\r\n console.log(\"Patch-Size: \" + JSON.stringify(patchSize));\r\n }\r\n\r\n inputStream.setWidth(Math.floor(Math.floor(size.x / patchSize.x) * (1 / halfSample) * patchSize.x));\r\n inputStream.setHeight(Math.floor(Math.floor(size.y / patchSize.y) * (1 / halfSample) * patchSize.y));\r\n\r\n if ((inputStream.getWidth() % patchSize.x) === 0 && (inputStream.getHeight() % patchSize.y) === 0) {\r\n return true;\r\n }\r\n\r\n throw new Error(\"Image dimensions do not comply with the current settings: Width (\" +\r\n width + \" )and height (\" + height +\r\n \") must a multiple of \" + patchSize.x);\r\n}\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/barcode_locator.js\n **/","import Tracer from './tracer';\r\n\r\n/**\r\n * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization\r\n */\r\nvar Rasterizer = {\r\n createContour2D: function() {\r\n return {\r\n dir: null,\r\n index: null,\r\n firstVertex: null,\r\n insideContours: null,\r\n nextpeer: null,\r\n prevpeer: null\r\n };\r\n },\r\n CONTOUR_DIR: {\r\n CW_DIR: 0,\r\n CCW_DIR: 1,\r\n UNKNOWN_DIR: 2\r\n },\r\n DIR: {\r\n OUTSIDE_EDGE: -32767,\r\n INSIDE_EDGE: -32766\r\n },\r\n create: function(imageWrapper, labelWrapper) {\r\n var imageData = imageWrapper.data,\r\n labelData = labelWrapper.data,\r\n width = imageWrapper.size.x,\r\n height = imageWrapper.size.y,\r\n tracer = Tracer.create(imageWrapper, labelWrapper);\r\n\r\n return {\r\n rasterize: function(depthlabel) {\r\n var color,\r\n bc,\r\n lc,\r\n labelindex,\r\n cx,\r\n cy,\r\n colorMap = [],\r\n vertex,\r\n p,\r\n cc,\r\n sc,\r\n pos,\r\n connectedCount = 0,\r\n i;\r\n\r\n for ( i = 0; i < 400; i++) {\r\n colorMap[i] = 0;\r\n }\r\n\r\n colorMap[0] = imageData[0];\r\n cc = null;\r\n for ( cy = 1; cy < height - 1; cy++) {\r\n labelindex = 0;\r\n bc = colorMap[0];\r\n for ( cx = 1; cx < width - 1; cx++) {\r\n pos = cy * width + cx;\r\n if (labelData[pos] === 0) {\r\n color = imageData[pos];\r\n if (color !== bc) {\r\n if (labelindex === 0) {\r\n lc = connectedCount + 1;\r\n colorMap[lc] = color;\r\n bc = color;\r\n vertex = tracer.contourTracing(cy, cx, lc, color, Rasterizer.DIR.OUTSIDE_EDGE);\r\n if (vertex !== null) {\r\n connectedCount++;\r\n labelindex = lc;\r\n p = Rasterizer.createContour2D();\r\n p.dir = Rasterizer.CONTOUR_DIR.CW_DIR;\r\n p.index = labelindex;\r\n p.firstVertex = vertex;\r\n p.nextpeer = cc;\r\n p.insideContours = null;\r\n if (cc !== null) {\r\n cc.prevpeer = p;\r\n }\r\n cc = p;\r\n }\r\n } else {\r\n vertex = tracer\r\n .contourTracing(cy, cx, Rasterizer.DIR.INSIDE_EDGE, color, labelindex);\r\n if (vertex !== null) {\r\n p = Rasterizer.createContour2D();\r\n p.firstVertex = vertex;\r\n p.insideContours = null;\r\n if (depthlabel === 0) {\r\n p.dir = Rasterizer.CONTOUR_DIR.CCW_DIR;\r\n } else {\r\n p.dir = Rasterizer.CONTOUR_DIR.CW_DIR;\r\n }\r\n p.index = depthlabel;\r\n sc = cc;\r\n while ((sc !== null) && sc.index !== labelindex) {\r\n sc = sc.nextpeer;\r\n }\r\n if (sc !== null) {\r\n p.nextpeer = sc.insideContours;\r\n if (sc.insideContours !== null) {\r\n sc.insideContours.prevpeer = p;\r\n }\r\n sc.insideContours = p;\r\n }\r\n }\r\n }\r\n } else {\r\n labelData[pos] = labelindex;\r\n }\r\n } else if (labelData[pos] === Rasterizer.DIR.OUTSIDE_EDGE\r\n || labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) {\r\n labelindex = 0;\r\n if (labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) {\r\n bc = imageData[pos];\r\n } else {\r\n bc = colorMap[0];\r\n }\r\n } else {\r\n labelindex = labelData[pos];\r\n bc = colorMap[labelindex];\r\n }\r\n }\r\n }\r\n sc = cc;\r\n while (sc !== null) {\r\n sc.index = depthlabel;\r\n sc = sc.nextpeer;\r\n }\r\n return {\r\n cc: cc,\r\n count: connectedCount\r\n };\r\n },\r\n debug: {\r\n drawContour: function(canvas, firstContour) {\r\n var ctx = canvas.getContext(\"2d\"),\r\n pq = firstContour,\r\n iq,\r\n q,\r\n p;\r\n\r\n ctx.strokeStyle = \"red\";\r\n ctx.fillStyle = \"red\";\r\n ctx.lineWidth = 1;\r\n\r\n if (pq !== null) {\r\n iq = pq.insideContours;\r\n } else {\r\n iq = null;\r\n }\r\n\r\n while (pq !== null) {\r\n if (iq !== null) {\r\n q = iq;\r\n iq = iq.nextpeer;\r\n } else {\r\n q = pq;\r\n pq = pq.nextpeer;\r\n if (pq !== null) {\r\n iq = pq.insideContours;\r\n } else {\r\n iq = null;\r\n }\r\n }\r\n\r\n switch (q.dir) {\r\n case Rasterizer.CONTOUR_DIR.CW_DIR:\r\n ctx.strokeStyle = \"red\";\r\n break;\r\n case Rasterizer.CONTOUR_DIR.CCW_DIR:\r\n ctx.strokeStyle = \"blue\";\r\n break;\r\n case Rasterizer.CONTOUR_DIR.UNKNOWN_DIR:\r\n ctx.strokeStyle = \"green\";\r\n break;\r\n }\r\n\r\n p = q.firstVertex;\r\n ctx.beginPath();\r\n ctx.moveTo(p.x, p.y);\r\n do {\r\n p = p.next;\r\n ctx.lineTo(p.x, p.y);\r\n } while (p !== q.firstVertex);\r\n ctx.stroke();\r\n }\r\n }\r\n }\r\n };\r\n }\r\n};\r\n\r\nexport default Rasterizer;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/rasterizer.js\n **/","/* @preserve ASM BEGIN */\r\n/* eslint-disable eqeqeq*/\r\nfunction Skeletonizer(stdlib, foreign, buffer) {\r\n \"use asm\";\r\n\r\n var images = new stdlib.Uint8Array(buffer),\r\n size = foreign.size | 0,\r\n imul = stdlib.Math.imul;\r\n\r\n function erode(inImagePtr, outImagePtr) {\r\n inImagePtr = inImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var v = 0,\r\n u = 0,\r\n sum = 0,\r\n yStart1 = 0,\r\n yStart2 = 0,\r\n xStart1 = 0,\r\n xStart2 = 0,\r\n offset = 0;\r\n\r\n for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) {\r\n offset = (offset + size) | 0;\r\n for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) {\r\n yStart1 = (offset - size) | 0;\r\n yStart2 = (offset + size) | 0;\r\n xStart1 = (u - 1) | 0;\r\n xStart2 = (u + 1) | 0;\r\n sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0)\r\n + (images[(inImagePtr + offset + u) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0;\r\n if ((sum | 0) == (5 | 0)) {\r\n images[(outImagePtr + offset + u) | 0] = 1;\r\n } else {\r\n images[(outImagePtr + offset + u) | 0] = 0;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n\r\n function subtract(aImagePtr, bImagePtr, outImagePtr) {\r\n aImagePtr = aImagePtr | 0;\r\n bImagePtr = bImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(outImagePtr + length) | 0] =\r\n ((images[(aImagePtr + length) | 0] | 0) - (images[(bImagePtr + length) | 0] | 0)) | 0;\r\n }\r\n }\r\n\r\n function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {\r\n aImagePtr = aImagePtr | 0;\r\n bImagePtr = bImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(outImagePtr + length) | 0] =\r\n ((images[(aImagePtr + length) | 0] | 0) | (images[(bImagePtr + length) | 0] | 0)) | 0;\r\n }\r\n }\r\n\r\n function countNonZero(imagePtr) {\r\n imagePtr = imagePtr | 0;\r\n\r\n var sum = 0,\r\n length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n sum = ((sum | 0) + (images[(imagePtr + length) | 0] | 0)) | 0;\r\n }\r\n\r\n return (sum | 0);\r\n }\r\n\r\n function init(imagePtr, value) {\r\n imagePtr = imagePtr | 0;\r\n value = value | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(imagePtr + length) | 0] = value;\r\n }\r\n }\r\n\r\n function dilate(inImagePtr, outImagePtr) {\r\n inImagePtr = inImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var v = 0,\r\n u = 0,\r\n sum = 0,\r\n yStart1 = 0,\r\n yStart2 = 0,\r\n xStart1 = 0,\r\n xStart2 = 0,\r\n offset = 0;\r\n\r\n for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) {\r\n offset = (offset + size) | 0;\r\n for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) {\r\n yStart1 = (offset - size) | 0;\r\n yStart2 = (offset + size) | 0;\r\n xStart1 = (u - 1) | 0;\r\n xStart2 = (u + 1) | 0;\r\n sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0)\r\n + (images[(inImagePtr + offset + u) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0;\r\n if ((sum | 0) > (0 | 0)) {\r\n images[(outImagePtr + offset + u) | 0] = 1;\r\n } else {\r\n images[(outImagePtr + offset + u) | 0] = 0;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n\r\n function memcpy(srcImagePtr, dstImagePtr) {\r\n srcImagePtr = srcImagePtr | 0;\r\n dstImagePtr = dstImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(dstImagePtr + length) | 0] = (images[(srcImagePtr + length) | 0] | 0);\r\n }\r\n }\r\n\r\n function zeroBorder(imagePtr) {\r\n imagePtr = imagePtr | 0;\r\n\r\n var x = 0,\r\n y = 0;\r\n\r\n for ( x = 0; (x | 0) < ((size - 1) | 0); x = (x + 1) | 0) {\r\n images[(imagePtr + x) | 0] = 0;\r\n images[(imagePtr + y) | 0] = 0;\r\n y = ((y + size) - 1) | 0;\r\n images[(imagePtr + y) | 0] = 0;\r\n y = (y + 1) | 0;\r\n }\r\n for ( x = 0; (x | 0) < (size | 0); x = (x + 1) | 0) {\r\n images[(imagePtr + y) | 0] = 0;\r\n y = (y + 1) | 0;\r\n }\r\n }\r\n\r\n function skeletonize() {\r\n var subImagePtr = 0,\r\n erodedImagePtr = 0,\r\n tempImagePtr = 0,\r\n skelImagePtr = 0,\r\n sum = 0,\r\n done = 0;\r\n\r\n erodedImagePtr = imul(size, size) | 0;\r\n tempImagePtr = (erodedImagePtr + erodedImagePtr) | 0;\r\n skelImagePtr = (tempImagePtr + erodedImagePtr) | 0;\r\n\r\n // init skel-image\r\n init(skelImagePtr, 0);\r\n zeroBorder(subImagePtr);\r\n\r\n do {\r\n erode(subImagePtr, erodedImagePtr);\r\n dilate(erodedImagePtr, tempImagePtr);\r\n subtract(subImagePtr, tempImagePtr, tempImagePtr);\r\n bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);\r\n memcpy(erodedImagePtr, subImagePtr);\r\n sum = countNonZero(subImagePtr) | 0;\r\n done = ((sum | 0) == 0 | 0);\r\n } while (!done);\r\n }\r\n return {\r\n skeletonize: skeletonize\r\n };\r\n}\r\n/* @preserve ASM END */\r\nexport default Skeletonizer;\r\n/* eslint-enable eqeqeq*/\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/skeletonizer.js\n **/","import BarcodeReader from './barcode_reader';\r\n\r\nfunction CodabarReader() {\r\n BarcodeReader.call(this);\r\n this._counters = [];\r\n}\r\n\r\nvar properties = {\r\n ALPHABETH_STRING: {value: \"0123456789-$:/.+ABCD\"},\r\n ALPHABET: {value: [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 45, 36, 58, 47, 46, 43, 65, 66, 67, 68]},\r\n CHARACTER_ENCODINGS: {value: [0x003, 0x006, 0x009, 0x060, 0x012, 0x042, 0x021, 0x024, 0x030, 0x048, 0x00c, 0x018,\r\n 0x045, 0x051, 0x054, 0x015, 0x01A, 0x029, 0x00B, 0x00E]},\r\n START_END: {value: [0x01A, 0x029, 0x00B, 0x00E]},\r\n MIN_ENCODED_CHARS: {value: 4},\r\n MAX_ACCEPTABLE: {value: 2.0},\r\n PADDING: {value: 1.5},\r\n FORMAT: {value: \"codabar\", writeable: false}\r\n};\r\n\r\nCodabarReader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCodabarReader.prototype.constructor = CodabarReader;\r\n\r\nCodabarReader.prototype._decode = function() {\r\n var self = this,\r\n result = [],\r\n start,\r\n decodedChar,\r\n pattern,\r\n nextStart,\r\n end;\r\n\r\n this._counters = self._fillCounters();\r\n start = self._findStart();\r\n if (!start) {\r\n return null;\r\n }\r\n nextStart = start.startCounter;\r\n\r\n do {\r\n pattern = self._toPattern(nextStart);\r\n if (pattern < 0) {\r\n return null;\r\n }\r\n decodedChar = self._patternToChar(pattern);\r\n if (decodedChar < 0){\r\n return null;\r\n }\r\n result.push(decodedChar);\r\n nextStart += 8;\r\n if (result.length > 1 && self._isStartEnd(pattern)) {\r\n break;\r\n }\r\n } while (nextStart < self._counters.length);\r\n\r\n // verify end\r\n if ((result.length - 2) < self.MIN_ENCODED_CHARS || !self._isStartEnd(pattern)) {\r\n return null;\r\n }\r\n\r\n // verify end white space\r\n if (!self._verifyWhitespace(start.startCounter, nextStart - 8)){\r\n return null;\r\n }\r\n\r\n if (!self._validateResult(result, start.startCounter)){\r\n return null;\r\n }\r\n\r\n nextStart = nextStart > self._counters.length ? self._counters.length : nextStart;\r\n end = start.start + self._sumCounters(start.startCounter, nextStart - 8);\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: start.start,\r\n end: end,\r\n startInfo: start,\r\n decodedCodes: result\r\n };\r\n};\r\n\r\nCodabarReader.prototype._verifyWhitespace = function(startCounter, endCounter) {\r\n if ((startCounter - 1 <= 0)\r\n || this._counters[startCounter - 1] >= (this._calculatePatternLength(startCounter) / 2.0)) {\r\n if ((endCounter + 8 >= this._counters.length)\r\n || this._counters[endCounter + 7] >= (this._calculatePatternLength(endCounter) / 2.0)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nCodabarReader.prototype._calculatePatternLength = function(offset) {\r\n var i,\r\n sum = 0;\r\n\r\n for (i = offset; i < offset + 7; i++) {\r\n sum += this._counters[i];\r\n }\r\n\r\n return sum;\r\n};\r\n\r\nCodabarReader.prototype._thresholdResultPattern = function(result, startCounter){\r\n var self = this,\r\n categorization = {\r\n space: {\r\n narrow: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE},\r\n wide: {size: 0, counts: 0, min: 0, max: Number.MAX_VALUE}\r\n },\r\n bar: {\r\n narrow: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE},\r\n wide: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE}\r\n }\r\n },\r\n kind,\r\n cat,\r\n i,\r\n j,\r\n pos = startCounter,\r\n pattern;\r\n\r\n for (i = 0; i < result.length; i++){\r\n pattern = self._charToPattern(result[i]);\r\n for (j = 6; j >= 0; j--) {\r\n kind = (j & 1) === 2 ? categorization.bar : categorization.space;\r\n cat = (pattern & 1) === 1 ? kind.wide : kind.narrow;\r\n cat.size += self._counters[pos + j];\r\n cat.counts++;\r\n pattern >>= 1;\r\n }\r\n pos += 8;\r\n }\r\n\r\n [\"space\", \"bar\"].forEach(function(key) {\r\n var newkind = categorization[key];\r\n newkind.wide.min =\r\n Math.floor((newkind.narrow.size / newkind.narrow.counts + newkind.wide.size / newkind.wide.counts) / 2);\r\n newkind.narrow.max = Math.ceil(newkind.wide.min);\r\n newkind.wide.max = Math.ceil((newkind.wide.size * self.MAX_ACCEPTABLE + self.PADDING) / newkind.wide.counts);\r\n });\r\n\r\n return categorization;\r\n};\r\n\r\nCodabarReader.prototype._charToPattern = function(char) {\r\n var self = this,\r\n charCode = char.charCodeAt(0),\r\n i;\r\n\r\n for (i = 0; i < self.ALPHABET.length; i++) {\r\n if (self.ALPHABET[i] === charCode){\r\n return self.CHARACTER_ENCODINGS[i];\r\n }\r\n }\r\n return 0x0;\r\n};\r\n\r\nCodabarReader.prototype._validateResult = function(result, startCounter) {\r\n var self = this,\r\n thresholds = self._thresholdResultPattern(result, startCounter),\r\n i,\r\n j,\r\n kind,\r\n cat,\r\n size,\r\n pos = startCounter,\r\n pattern;\r\n\r\n for (i = 0; i < result.length; i++) {\r\n pattern = self._charToPattern(result[i]);\r\n for (j = 6; j >= 0; j--) {\r\n kind = (j & 1) === 0 ? thresholds.bar : thresholds.space;\r\n cat = (pattern & 1) === 1 ? kind.wide : kind.narrow;\r\n size = self._counters[pos + j];\r\n if (size < cat.min || size > cat.max) {\r\n return false;\r\n }\r\n pattern >>= 1;\r\n }\r\n pos += 8;\r\n }\r\n return true;\r\n};\r\n\r\nCodabarReader.prototype._patternToChar = function(pattern) {\r\n var i,\r\n self = this;\r\n\r\n for (i = 0; i < self.CHARACTER_ENCODINGS.length; i++) {\r\n if (self.CHARACTER_ENCODINGS[i] === pattern) {\r\n return String.fromCharCode(self.ALPHABET[i]);\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCodabarReader.prototype._computeAlternatingThreshold = function(offset, end) {\r\n var i,\r\n min = Number.MAX_VALUE,\r\n max = 0,\r\n counter;\r\n\r\n for (i = offset; i < end; i += 2){\r\n counter = this._counters[i];\r\n if (counter > max) {\r\n max = counter;\r\n }\r\n if (counter < min) {\r\n min = counter;\r\n }\r\n }\r\n\r\n return ((min + max) / 2.0) | 0;\r\n};\r\n\r\nCodabarReader.prototype._toPattern = function(offset) {\r\n var numCounters = 7,\r\n end = offset + numCounters,\r\n barThreshold,\r\n spaceThreshold,\r\n bitmask = 1 << (numCounters - 1),\r\n pattern = 0,\r\n i,\r\n threshold;\r\n\r\n if (end > this._counters.length) {\r\n return -1;\r\n }\r\n\r\n barThreshold = this._computeAlternatingThreshold(offset, end);\r\n spaceThreshold = this._computeAlternatingThreshold(offset + 1, end);\r\n\r\n for (i = 0; i < numCounters; i++){\r\n threshold = (i & 1) === 0 ? barThreshold : spaceThreshold;\r\n if (this._counters[offset + i] > threshold) {\r\n pattern |= bitmask;\r\n }\r\n bitmask >>= 1;\r\n }\r\n\r\n return pattern;\r\n};\r\n\r\nCodabarReader.prototype._isStartEnd = function(pattern) {\r\n var i;\r\n\r\n for (i = 0; i < this.START_END.length; i++) {\r\n if (this.START_END[i] === pattern) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nCodabarReader.prototype._sumCounters = function(start, end) {\r\n var i,\r\n sum = 0;\r\n\r\n for (i = start; i < end; i++) {\r\n sum += this._counters[i];\r\n }\r\n return sum;\r\n};\r\n\r\nCodabarReader.prototype._findStart = function() {\r\n var self = this,\r\n i,\r\n pattern,\r\n start = self._nextUnset(self._row),\r\n end;\r\n\r\n for (i = 1; i < this._counters.length; i++) {\r\n pattern = self._toPattern(i);\r\n if (pattern !== -1 && self._isStartEnd(pattern)) {\r\n // TODO: Look for whitespace ahead\r\n start += self._sumCounters(0, i);\r\n end = start + self._sumCounters(i, i + 8);\r\n return {\r\n start: start,\r\n end: end,\r\n startCounter: i,\r\n endCounter: i + 8\r\n };\r\n }\r\n }\r\n};\r\n\r\nexport default CodabarReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/codabar_reader.js\n **/","import BarcodeReader from './barcode_reader';\r\n\r\nfunction Code128Reader() {\r\n BarcodeReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n CODE_SHIFT: {value: 98},\r\n CODE_C: {value: 99},\r\n CODE_B: {value: 100},\r\n CODE_A: {value: 101},\r\n START_CODE_A: {value: 103},\r\n START_CODE_B: {value: 104},\r\n START_CODE_C: {value: 105},\r\n STOP_CODE: {value: 106},\r\n CODE_PATTERN: {value: [\r\n [2, 1, 2, 2, 2, 2],\r\n [2, 2, 2, 1, 2, 2],\r\n [2, 2, 2, 2, 2, 1],\r\n [1, 2, 1, 2, 2, 3],\r\n [1, 2, 1, 3, 2, 2],\r\n [1, 3, 1, 2, 2, 2],\r\n [1, 2, 2, 2, 1, 3],\r\n [1, 2, 2, 3, 1, 2],\r\n [1, 3, 2, 2, 1, 2],\r\n [2, 2, 1, 2, 1, 3],\r\n [2, 2, 1, 3, 1, 2],\r\n [2, 3, 1, 2, 1, 2],\r\n [1, 1, 2, 2, 3, 2],\r\n [1, 2, 2, 1, 3, 2],\r\n [1, 2, 2, 2, 3, 1],\r\n [1, 1, 3, 2, 2, 2],\r\n [1, 2, 3, 1, 2, 2],\r\n [1, 2, 3, 2, 2, 1],\r\n [2, 2, 3, 2, 1, 1],\r\n [2, 2, 1, 1, 3, 2],\r\n [2, 2, 1, 2, 3, 1],\r\n [2, 1, 3, 2, 1, 2],\r\n [2, 2, 3, 1, 1, 2],\r\n [3, 1, 2, 1, 3, 1],\r\n [3, 1, 1, 2, 2, 2],\r\n [3, 2, 1, 1, 2, 2],\r\n [3, 2, 1, 2, 2, 1],\r\n [3, 1, 2, 2, 1, 2],\r\n [3, 2, 2, 1, 1, 2],\r\n [3, 2, 2, 2, 1, 1],\r\n [2, 1, 2, 1, 2, 3],\r\n [2, 1, 2, 3, 2, 1],\r\n [2, 3, 2, 1, 2, 1],\r\n [1, 1, 1, 3, 2, 3],\r\n [1, 3, 1, 1, 2, 3],\r\n [1, 3, 1, 3, 2, 1],\r\n [1, 1, 2, 3, 1, 3],\r\n [1, 3, 2, 1, 1, 3],\r\n [1, 3, 2, 3, 1, 1],\r\n [2, 1, 1, 3, 1, 3],\r\n [2, 3, 1, 1, 1, 3],\r\n [2, 3, 1, 3, 1, 1],\r\n [1, 1, 2, 1, 3, 3],\r\n [1, 1, 2, 3, 3, 1],\r\n [1, 3, 2, 1, 3, 1],\r\n [1, 1, 3, 1, 2, 3],\r\n [1, 1, 3, 3, 2, 1],\r\n [1, 3, 3, 1, 2, 1],\r\n [3, 1, 3, 1, 2, 1],\r\n [2, 1, 1, 3, 3, 1],\r\n [2, 3, 1, 1, 3, 1],\r\n [2, 1, 3, 1, 1, 3],\r\n [2, 1, 3, 3, 1, 1],\r\n [2, 1, 3, 1, 3, 1],\r\n [3, 1, 1, 1, 2, 3],\r\n [3, 1, 1, 3, 2, 1],\r\n [3, 3, 1, 1, 2, 1],\r\n [3, 1, 2, 1, 1, 3],\r\n [3, 1, 2, 3, 1, 1],\r\n [3, 3, 2, 1, 1, 1],\r\n [3, 1, 4, 1, 1, 1],\r\n [2, 2, 1, 4, 1, 1],\r\n [4, 3, 1, 1, 1, 1],\r\n [1, 1, 1, 2, 2, 4],\r\n [1, 1, 1, 4, 2, 2],\r\n [1, 2, 1, 1, 2, 4],\r\n [1, 2, 1, 4, 2, 1],\r\n [1, 4, 1, 1, 2, 2],\r\n [1, 4, 1, 2, 2, 1],\r\n [1, 1, 2, 2, 1, 4],\r\n [1, 1, 2, 4, 1, 2],\r\n [1, 2, 2, 1, 1, 4],\r\n [1, 2, 2, 4, 1, 1],\r\n [1, 4, 2, 1, 1, 2],\r\n [1, 4, 2, 2, 1, 1],\r\n [2, 4, 1, 2, 1, 1],\r\n [2, 2, 1, 1, 1, 4],\r\n [4, 1, 3, 1, 1, 1],\r\n [2, 4, 1, 1, 1, 2],\r\n [1, 3, 4, 1, 1, 1],\r\n [1, 1, 1, 2, 4, 2],\r\n [1, 2, 1, 1, 4, 2],\r\n [1, 2, 1, 2, 4, 1],\r\n [1, 1, 4, 2, 1, 2],\r\n [1, 2, 4, 1, 1, 2],\r\n [1, 2, 4, 2, 1, 1],\r\n [4, 1, 1, 2, 1, 2],\r\n [4, 2, 1, 1, 1, 2],\r\n [4, 2, 1, 2, 1, 1],\r\n [2, 1, 2, 1, 4, 1],\r\n [2, 1, 4, 1, 2, 1],\r\n [4, 1, 2, 1, 2, 1],\r\n [1, 1, 1, 1, 4, 3],\r\n [1, 1, 1, 3, 4, 1],\r\n [1, 3, 1, 1, 4, 1],\r\n [1, 1, 4, 1, 1, 3],\r\n [1, 1, 4, 3, 1, 1],\r\n [4, 1, 1, 1, 1, 3],\r\n [4, 1, 1, 3, 1, 1],\r\n [1, 1, 3, 1, 4, 1],\r\n [1, 1, 4, 1, 3, 1],\r\n [3, 1, 1, 1, 4, 1],\r\n [4, 1, 1, 1, 3, 1],\r\n [2, 1, 1, 4, 1, 2],\r\n [2, 1, 1, 2, 1, 4],\r\n [2, 1, 1, 2, 3, 2],\r\n [2, 3, 3, 1, 1, 1, 2]\r\n ]},\r\n SINGLE_CODE_ERROR: {value: 0.64},\r\n AVG_CODE_ERROR: {value: 0.30},\r\n FORMAT: {value: \"code_128\", writeable: false},\r\n MODULE_INDICES: {value: {bar: [0, 2, 4], space: [1, 3, 5]}}\r\n};\r\n\r\nCode128Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCode128Reader.prototype.constructor = Code128Reader;\r\n\r\nCode128Reader.prototype._decodeCode = function(start, correction) {\r\n var counter = [0, 0, 0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = start,\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: start,\r\n end: start,\r\n correction: {\r\n bar: 1,\r\n space: 1\r\n }\r\n },\r\n code,\r\n error;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n if (correction) {\r\n self._correct(counter, correction);\r\n }\r\n for (code = 0; code < self.CODE_PATTERN.length; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n bestMatch.end = i;\r\n if (bestMatch.code === -1 || bestMatch.error > self.AVG_CODE_ERROR) {\r\n return null;\r\n }\r\n if (self.CODE_PATTERN[bestMatch.code]) {\r\n bestMatch.correction.bar = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.bar);\r\n bestMatch.correction.space = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.space);\r\n }\r\n return bestMatch;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nCode128Reader.prototype._correct = function(counter, correction) {\r\n this._correctBars(counter, correction.bar, this.MODULE_INDICES.bar);\r\n this._correctBars(counter, correction.space, this.MODULE_INDICES.space);\r\n};\r\n\r\nCode128Reader.prototype._findStart = function() {\r\n var counter = [0, 0, 0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = self._nextSet(self._row),\r\n isWhite = false,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0,\r\n correction: {\r\n bar: 1,\r\n space: 1\r\n }\r\n },\r\n code,\r\n error,\r\n j,\r\n sum;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n for (code = self.START_CODE_A; code <= self.START_CODE_C; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n if (bestMatch.error < self.AVG_CODE_ERROR) {\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n bestMatch.correction.bar = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.bar);\r\n bestMatch.correction.space = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.space);\r\n return bestMatch;\r\n }\r\n\r\n for ( j = 0; j < 4; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[4] = 0;\r\n counter[5] = 0;\r\n counterPos--;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nCode128Reader.prototype._decode = function() {\r\n var self = this,\r\n startInfo = self._findStart(),\r\n code = null,\r\n done = false,\r\n result = [],\r\n multiplier = 0,\r\n checksum = 0,\r\n codeset,\r\n rawResult = [],\r\n decodedCodes = [],\r\n shiftNext = false,\r\n unshift,\r\n removeLastCharacter = true;\r\n\r\n if (startInfo === null) {\r\n return null;\r\n }\r\n code = {\r\n code: startInfo.code,\r\n start: startInfo.start,\r\n end: startInfo.end,\r\n correction: {\r\n bar: startInfo.correction.bar,\r\n space: startInfo.correction.space\r\n }\r\n };\r\n decodedCodes.push(code);\r\n checksum = code.code;\r\n switch (code.code) {\r\n case self.START_CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.START_CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.START_CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n default:\r\n return null;\r\n }\r\n\r\n while (!done) {\r\n unshift = shiftNext;\r\n shiftNext = false;\r\n code = self._decodeCode(code.end, code.correction);\r\n if (code !== null) {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = true;\r\n }\r\n\r\n if (code.code !== self.STOP_CODE) {\r\n rawResult.push(code.code);\r\n multiplier++;\r\n checksum += multiplier * code.code;\r\n }\r\n decodedCodes.push(code);\r\n\r\n switch (codeset) {\r\n case self.CODE_A:\r\n if (code.code < 64) {\r\n result.push(String.fromCharCode(32 + code.code));\r\n } else if (code.code < 96) {\r\n result.push(String.fromCharCode(code.code - 64));\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_SHIFT:\r\n shiftNext = true;\r\n codeset = self.CODE_B;\r\n break;\r\n case self.CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n case self.CODE_B:\r\n if (code.code < 96) {\r\n result.push(String.fromCharCode(32 + code.code));\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_SHIFT:\r\n shiftNext = true;\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n case self.CODE_C:\r\n if (code.code < 100) {\r\n result.push(code.code < 10 ? \"0\" + code.code : code.code);\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n } else {\r\n done = true;\r\n }\r\n if (unshift) {\r\n codeset = codeset === self.CODE_A ? self.CODE_B : self.CODE_A;\r\n }\r\n }\r\n\r\n if (code === null) {\r\n return null;\r\n }\r\n\r\n code.end = self._nextUnset(self._row, code.end);\r\n if (!self._verifyTrailingWhitespace(code)){\r\n return null;\r\n }\r\n\r\n checksum -= multiplier * rawResult[rawResult.length - 1];\r\n if (checksum % 103 !== rawResult[rawResult.length - 1]) {\r\n return null;\r\n }\r\n\r\n if (!result.length) {\r\n return null;\r\n }\r\n\r\n // remove last code from result (checksum)\r\n if (removeLastCharacter) {\r\n result.splice(result.length - 1, 1);\r\n }\r\n\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: code.end,\r\n codeset: codeset,\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes,\r\n endInfo: code\r\n };\r\n};\r\n\r\n\r\nBarcodeReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nfunction calculateCorrection(expected, normalized, indices) {\r\n var length = indices.length,\r\n sumNormalized = 0,\r\n sumExpected = 0;\r\n\r\n while(length--) {\r\n sumExpected += expected[indices[length]];\r\n sumNormalized += normalized[indices[length]];\r\n }\r\n return sumExpected/sumNormalized;\r\n}\r\n\r\nexport default Code128Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_128_reader.js\n **/","import Code39Reader from './code_39_reader';\r\n\r\nfunction Code39VINReader() {\r\n Code39Reader.call(this);\r\n}\r\n\r\nvar patterns = {\r\n IOQ: /[IOQ]/g,\r\n AZ09: /[A-Z0-9]{17}/\r\n};\r\n\r\nCode39VINReader.prototype = Object.create(Code39Reader.prototype);\r\nCode39VINReader.prototype.constructor = Code39VINReader;\r\n\r\n// Cribbed from:\r\n// https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/client/result/VINResultParser.java\r\nCode39VINReader.prototype._decode = function() {\r\n var result = Code39Reader.prototype._decode.apply(this);\r\n if (!result) {\r\n return null;\r\n }\r\n\r\n var code = result.code;\r\n\r\n if (!code) {\r\n return null;\r\n }\r\n\r\n code = code.replace(patterns.IOQ, '');\r\n\r\n if (!code.match(patterns.AZ09)) {\r\n if (ENV.development) {\r\n console.log('Failed AZ09 pattern code:', code);\r\n }\r\n return null;\r\n }\r\n\r\n if (!this._checkChecksum(code)) {\r\n return null;\r\n }\r\n\r\n result.code = code;\r\n return result;\r\n};\r\n\r\nCode39VINReader.prototype._checkChecksum = function(code) {\r\n // TODO\r\n return !!code;\r\n};\r\n\r\nexport default Code39VINReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_39_vin_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN2Reader() {\r\n EANReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_2\", writeable: false}\r\n};\r\n\r\nEAN2Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN2Reader.prototype.constructor = EAN2Reader;\r\n\r\nEAN2Reader.prototype.decode = function(row, start) {\r\n this._row = row;\r\n var counters = [0, 0, 0, 0],\r\n codeFrequency = 0,\r\n i = 0,\r\n offset = start,\r\n end = this._row.length,\r\n code,\r\n result = [],\r\n decodedCodes = [];\r\n\r\n for (i = 0; i < 2 && offset < end; i++) {\r\n code = this._decodeCode(offset);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code % 10);\r\n if (code.code >= this.CODE_G_START) {\r\n codeFrequency |= 1 << (1 - i);\r\n }\r\n if (i != 1) {\r\n offset = this._nextSet(this._row, code.end);\r\n offset = this._nextUnset(this._row, offset);\r\n }\r\n }\r\n\r\n if (result.length != 2 || (parseInt(result.join(\"\")) % 4) !== codeFrequency) {\r\n return null;\r\n }\r\n return {\r\n code: result.join(\"\"),\r\n decodedCodes,\r\n end: code.end\r\n };\r\n};\r\n\r\nexport default EAN2Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_2_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN5Reader() {\r\n EANReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_5\", writeable: false}\r\n};\r\n\r\nconst CHECK_DIGIT_ENCODINGS = [24, 20, 18, 17, 12, 6, 3, 10, 9, 5];\r\n\r\nEAN5Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN5Reader.prototype.constructor = EAN5Reader;\r\n\r\nEAN5Reader.prototype.decode = function(row, start) {\r\n this._row = row;\r\n var counters = [0, 0, 0, 0],\r\n codeFrequency = 0,\r\n i = 0,\r\n offset = start,\r\n end = this._row.length,\r\n code,\r\n result = [],\r\n decodedCodes = [];\r\n\r\n for (i = 0; i < 5 && offset < end; i++) {\r\n code = this._decodeCode(offset);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code % 10);\r\n if (code.code >= this.CODE_G_START) {\r\n codeFrequency |= 1 << (4 - i);\r\n }\r\n if (i != 4) {\r\n offset = this._nextSet(this._row, code.end);\r\n offset = this._nextUnset(this._row, offset);\r\n }\r\n }\r\n\r\n if (result.length != 5) {\r\n return null;\r\n }\r\n\r\n if (extensionChecksum(result) !== determineCheckDigit(codeFrequency)) {\r\n return null;\r\n }\r\n return {\r\n code: result.join(\"\"),\r\n decodedCodes,\r\n end: code.end\r\n };\r\n};\r\n\r\nfunction determineCheckDigit(codeFrequency) {\r\n var i;\r\n for (i = 0; i < 10; i++) {\r\n if (codeFrequency === CHECK_DIGIT_ENCODINGS[i]) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n\r\nfunction extensionChecksum(result) {\r\n var length = result.length,\r\n sum = 0,\r\n i;\r\n\r\n for (i = length - 2; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n for (i = length - 1; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n return sum % 10;\r\n}\r\n\r\nexport default EAN5Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_5_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN8Reader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_8\", writeable: false}\r\n};\r\n\r\nEAN8Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN8Reader.prototype.constructor = EAN8Reader;\r\n\r\nEAN8Reader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this;\r\n\r\n for ( i = 0; i < 4; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n\r\n code = self._findPattern(self.MIDDLE_PATTERN, code.end, true, false);\r\n if (code === null) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n\r\n for ( i = 0; i < 4; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code);\r\n }\r\n\r\n return code;\r\n};\r\n\r\nexport default EAN8Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_8_reader.js\n **/","import BarcodeReader from './barcode_reader';\r\nimport {merge} from 'lodash';\r\n\r\nfunction I2of5Reader(opts) {\r\n opts = merge(getDefaulConfig(), opts);\r\n BarcodeReader.call(this, opts);\r\n this.barSpaceRatio = [1, 1];\r\n if (opts.normalizeBarSpaceWidth) {\r\n this.SINGLE_CODE_ERROR = 0.38;\r\n this.AVG_CODE_ERROR = 0.09;\r\n }\r\n}\r\n\r\nfunction getDefaulConfig() {\r\n var config = {};\r\n\r\n Object.keys(I2of5Reader.CONFIG_KEYS).forEach(function(key) {\r\n config[key] = I2of5Reader.CONFIG_KEYS[key].default;\r\n });\r\n return config;\r\n}\r\n\r\nvar N = 1,\r\n W = 3,\r\n properties = {\r\n START_PATTERN: {value: [N, N, N, N]},\r\n STOP_PATTERN: {value: [N, N, W]},\r\n CODE_PATTERN: {value: [\r\n [N, N, W, W, N],\r\n [W, N, N, N, W],\r\n [N, W, N, N, W],\r\n [W, W, N, N, N],\r\n [N, N, W, N, W],\r\n [W, N, W, N, N],\r\n [N, W, W, N, N],\r\n [N, N, N, W, W],\r\n [W, N, N, W, N],\r\n [N, W, N, W, N]\r\n ]},\r\n SINGLE_CODE_ERROR: {value: 0.78, writable: true},\r\n AVG_CODE_ERROR: {value: 0.38, writable: true},\r\n MAX_CORRECTION_FACTOR: {value: 5},\r\n FORMAT: {value: \"i2of5\"}\r\n };\r\n\r\nI2of5Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nI2of5Reader.prototype.constructor = I2of5Reader;\r\n\r\nI2of5Reader.prototype._matchPattern = function(counter, code) {\r\n if (this.config.normalizeBarSpaceWidth) {\r\n var i,\r\n counterSum = [0, 0],\r\n codeSum = [0, 0],\r\n correction = [0, 0],\r\n correctionRatio = this.MAX_CORRECTION_FACTOR,\r\n correctionRatioInverse = 1 / correctionRatio;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n counterSum[i % 2] += counter[i];\r\n codeSum[i % 2] += code[i];\r\n }\r\n correction[0] = codeSum[0] / counterSum[0];\r\n correction[1] = codeSum[1] / counterSum[1];\r\n\r\n correction[0] = Math.max(Math.min(correction[0], correctionRatio), correctionRatioInverse);\r\n correction[1] = Math.max(Math.min(correction[1], correctionRatio), correctionRatioInverse);\r\n this.barSpaceRatio = correction;\r\n for (i = 0; i < counter.length; i++) {\r\n counter[i] *= this.barSpaceRatio[i % 2];\r\n }\r\n }\r\n return BarcodeReader.prototype._matchPattern.call(this, counter, code);\r\n};\r\n\r\nI2of5Reader.prototype._findPattern = function(pattern, offset, isWhite, tryHarder) {\r\n var counter = [],\r\n self = this,\r\n i,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n },\r\n error,\r\n j,\r\n sum,\r\n normalized,\r\n epsilon = self.AVG_CODE_ERROR;\r\n\r\n isWhite = isWhite || false;\r\n tryHarder = tryHarder || false;\r\n\r\n if (!offset) {\r\n offset = self._nextSet(self._row);\r\n }\r\n\r\n for ( i = 0; i < pattern.length; i++) {\r\n counter[i] = 0;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n error = self._matchPattern(counter, pattern);\r\n if (error < epsilon) {\r\n bestMatch.error = error;\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n return bestMatch;\r\n }\r\n if (tryHarder) {\r\n for (j = 0; j < counter.length - 2; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[counter.length - 2] = 0;\r\n counter[counter.length - 1] = 0;\r\n counterPos--;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nI2of5Reader.prototype._findStart = function() {\r\n var self = this,\r\n leadingWhitespaceStart,\r\n offset = self._nextSet(self._row),\r\n startInfo,\r\n narrowBarWidth = 1;\r\n\r\n while (!startInfo) {\r\n startInfo = self._findPattern(self.START_PATTERN, offset, false, true);\r\n if (!startInfo) {\r\n return null;\r\n }\r\n narrowBarWidth = Math.floor((startInfo.end - startInfo.start) / 4);\r\n leadingWhitespaceStart = startInfo.start - narrowBarWidth * 10;\r\n if (leadingWhitespaceStart >= 0) {\r\n if (self._matchRange(leadingWhitespaceStart, startInfo.start, 0)) {\r\n return startInfo;\r\n }\r\n }\r\n offset = startInfo.end;\r\n startInfo = null;\r\n }\r\n};\r\n\r\nI2of5Reader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nI2of5Reader.prototype._findEnd = function() {\r\n var self = this,\r\n endInfo,\r\n tmp;\r\n\r\n self._row.reverse();\r\n endInfo = self._findPattern(self.STOP_PATTERN);\r\n self._row.reverse();\r\n\r\n if (endInfo === null) {\r\n return null;\r\n }\r\n\r\n // reverse numbers\r\n tmp = endInfo.start;\r\n endInfo.start = self._row.length - endInfo.end;\r\n endInfo.end = self._row.length - tmp;\r\n\r\n return endInfo !== null ? self._verifyTrailingWhitespace(endInfo) : null;\r\n};\r\n\r\nI2of5Reader.prototype._decodePair = function(counterPair) {\r\n var i,\r\n code,\r\n codes = [],\r\n self = this;\r\n\r\n for (i = 0; i < counterPair.length; i++) {\r\n code = self._decodeCode(counterPair[i]);\r\n if (!code) {\r\n return null;\r\n }\r\n codes.push(code);\r\n }\r\n return codes;\r\n};\r\n\r\nI2of5Reader.prototype._decodeCode = function(counter) {\r\n var j,\r\n self = this,\r\n sum = 0,\r\n normalized,\r\n error,\r\n epsilon = self.AVG_CODE_ERROR,\r\n code,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n };\r\n\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n for (code = 0; code < self.CODE_PATTERN.length; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n if (bestMatch.error < epsilon) {\r\n return bestMatch;\r\n }\r\n};\r\n\r\nI2of5Reader.prototype._decodePayload = function(counters, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n pos = 0,\r\n counterLength = counters.length,\r\n counterPair = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]],\r\n codes;\r\n\r\n while (pos < counterLength) {\r\n for (i = 0; i < 5; i++) {\r\n counterPair[0][i] = counters[pos] * this.barSpaceRatio[0];\r\n counterPair[1][i] = counters[pos + 1] * this.barSpaceRatio[1];\r\n pos += 2;\r\n }\r\n codes = self._decodePair(counterPair);\r\n if (!codes) {\r\n return null;\r\n }\r\n for (i = 0; i < codes.length; i++) {\r\n result.push(codes[i].code + \"\");\r\n decodedCodes.push(codes[i]);\r\n }\r\n }\r\n return codes;\r\n};\r\n\r\nI2of5Reader.prototype._verifyCounterLength = function(counters) {\r\n return (counters.length % 10 === 0);\r\n};\r\n\r\nI2of5Reader.prototype._decode = function() {\r\n var startInfo,\r\n endInfo,\r\n self = this,\r\n code,\r\n result = [],\r\n decodedCodes = [],\r\n counters;\r\n\r\n startInfo = self._findStart();\r\n if (!startInfo) {\r\n return null;\r\n }\r\n decodedCodes.push(startInfo);\r\n\r\n endInfo = self._findEnd();\r\n if (!endInfo) {\r\n return null;\r\n }\r\n\r\n counters = self._fillCounters(startInfo.end, endInfo.start, false);\r\n if (!self._verifyCounterLength(counters)) {\r\n return null;\r\n }\r\n code = self._decodePayload(counters, result, decodedCodes);\r\n if (!code) {\r\n return null;\r\n }\r\n if (result.length % 2 !== 0 ||\r\n result.length < 6) {\r\n return null;\r\n }\r\n\r\n decodedCodes.push(endInfo);\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: endInfo.end,\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes\r\n };\r\n};\r\n\r\nI2of5Reader.CONFIG_KEYS = {\r\n normalizeBarSpaceWidth: {\r\n 'type': 'boolean',\r\n 'default': false,\r\n 'description': 'If true, the reader tries to normalize the' +\r\n 'width-difference between bars and spaces'\r\n }\r\n};\r\n\r\nexport default I2of5Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/i2of5_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction UPCEReader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n CODE_FREQUENCY: {value: [\r\n [ 56, 52, 50, 49, 44, 38, 35, 42, 41, 37 ],\r\n [7, 11, 13, 14, 19, 25, 28, 21, 22, 26]]},\r\n STOP_PATTERN: { value: [1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7]},\r\n FORMAT: {value: \"upc_e\", writeable: false}\r\n};\r\n\r\nUPCEReader.prototype = Object.create(EANReader.prototype, properties);\r\nUPCEReader.prototype.constructor = UPCEReader;\r\n\r\nUPCEReader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n codeFrequency = 0x0;\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end);\r\n if (!code) {\r\n return null;\r\n }\r\n if (code.code >= self.CODE_G_START) {\r\n code.code = code.code - self.CODE_G_START;\r\n codeFrequency |= 1 << (5 - i);\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n if (!self._determineParity(codeFrequency, result)) {\r\n return null;\r\n }\r\n\r\n return code;\r\n};\r\n\r\nUPCEReader.prototype._determineParity = function(codeFrequency, result) {\r\n var i,\r\n nrSystem;\r\n\r\n for (nrSystem = 0; nrSystem < this.CODE_FREQUENCY.length; nrSystem++){\r\n for ( i = 0; i < this.CODE_FREQUENCY[nrSystem].length; i++) {\r\n if (codeFrequency === this.CODE_FREQUENCY[nrSystem][i]) {\r\n result.unshift(nrSystem);\r\n result.push(i);\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nUPCEReader.prototype._convertToUPCA = function(result) {\r\n var upca = [result[0]],\r\n lastDigit = result[result.length - 2];\r\n\r\n if (lastDigit <= 2) {\r\n upca = upca.concat(result.slice(1, 3))\r\n .concat([lastDigit, 0, 0, 0, 0])\r\n .concat(result.slice(3, 6));\r\n } else if (lastDigit === 3) {\r\n upca = upca.concat(result.slice(1, 4))\r\n .concat([0, 0, 0, 0, 0])\r\n .concat(result.slice(4, 6));\r\n } else if (lastDigit === 4) {\r\n upca = upca.concat(result.slice(1, 5))\r\n .concat([0, 0, 0, 0, 0, result[5]]);\r\n } else {\r\n upca = upca.concat(result.slice(1, 6))\r\n .concat([0, 0, 0, 0, lastDigit]);\r\n }\r\n\r\n upca.push(result[result.length - 1]);\r\n return upca;\r\n};\r\n\r\nUPCEReader.prototype._checksum = function(result) {\r\n return EANReader.prototype._checksum.call(this, this._convertToUPCA(result));\r\n};\r\n\r\nUPCEReader.prototype._findEnd = function(offset, isWhite) {\r\n isWhite = true;\r\n return EANReader.prototype._findEnd.call(this, offset, isWhite);\r\n};\r\n\r\nUPCEReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n};\r\n\r\nexport default UPCEReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/upc_e_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction UPCReader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"upc_a\", writeable: false}\r\n};\r\n\r\nUPCReader.prototype = Object.create(EANReader.prototype, properties);\r\nUPCReader.prototype.constructor = UPCReader;\r\n\r\nUPCReader.prototype._decode = function() {\r\n var result = EANReader.prototype._decode.call(this);\r\n\r\n if (result && result.code && result.code.length === 13 && result.code.charAt(0) === \"0\") {\r\n result.code = result.code.substring(1);\r\n return result;\r\n }\r\n return null;\r\n};\r\n\r\nexport default UPCReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/upc_reader.js\n **/","import ImageWrapper from './common/image_wrapper';\r\nimport createLocator, {checkImageConstraints} from './locator/barcode_locator';\r\nimport BarcodeDecoder from './decoder/barcode_decoder';\r\nimport createEventedElement from './common/events';\r\nimport CameraAccess from './input/camera_access';\r\nimport ImageDebug from './common/image_debug';\r\nimport ResultCollector from './analytics/result_collector';\r\nimport Config from './config/config';\r\nimport InputStream from 'input_stream';\r\nimport FrameGrabber from 'frame_grabber';\r\nimport {merge} from 'lodash';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone')\r\n};\r\n\r\n\r\nfunction createScanner() {\r\n var _inputStream,\r\n _framegrabber,\r\n _stopped,\r\n _canvasContainer = {\r\n ctx: {\r\n image: null,\r\n overlay: null\r\n },\r\n dom: {\r\n image: null,\r\n overlay: null\r\n }\r\n },\r\n _inputImageWrapper,\r\n _boxSize,\r\n _decoder,\r\n _workerPool = [],\r\n _onUIThread = true,\r\n _resultCollector,\r\n _config = {},\r\n _events = createEventedElement(),\r\n _locator;\r\n\r\n function initializeData(imageWrapper) {\r\n initBuffers(imageWrapper);\r\n _decoder = BarcodeDecoder.create(_config.decoder, _inputImageWrapper);\r\n }\r\n\r\n function initInputStream(cb) {\r\n var video;\r\n if (_config.inputStream.type === \"VideoStream\") {\r\n video = document.createElement(\"video\");\r\n _inputStream = InputStream.createVideoStream(video);\r\n } else if (_config.inputStream.type === \"ImageStream\") {\r\n _inputStream = InputStream.createImageStream();\r\n } else if (_config.inputStream.type === \"LiveStream\") {\r\n var $viewport = getViewPort();\r\n if ($viewport) {\r\n video = $viewport.querySelector(\"video\");\r\n if (!video) {\r\n video = document.createElement(\"video\");\r\n $viewport.appendChild(video);\r\n }\r\n }\r\n _inputStream = InputStream.createLiveStream(video);\r\n CameraAccess.request(video, _config.inputStream.constraints)\r\n .then(() => {\r\n _inputStream.trigger(\"canrecord\");\r\n }).catch((err) => {\r\n return cb(err);\r\n });\r\n }\r\n\r\n _inputStream.setAttribute(\"preload\", \"auto\");\r\n _inputStream.setAttribute(\"autoplay\", true);\r\n _inputStream.setInputStream(_config.inputStream);\r\n _inputStream.addEventListener(\"canrecord\", canRecord.bind(undefined, cb));\r\n }\r\n\r\n function getViewPort() {\r\n var target = _config.inputStream.target;\r\n // Check if target is already a DOM element\r\n if (target && target.nodeName && target.nodeType === 1) {\r\n return target;\r\n } else {\r\n // Use '#interactive.viewport' as a fallback selector (backwards compatibility)\r\n var selector = typeof target === 'string' ? target : '#interactive.viewport';\r\n return document.querySelector(selector);\r\n }\r\n }\r\n\r\n function canRecord(cb) {\r\n checkImageConstraints(_inputStream, _config.locator);\r\n initCanvas(_config);\r\n _framegrabber = FrameGrabber.create(_inputStream, _canvasContainer.dom.image);\r\n\r\n adjustWorkerPool(_config.numOfWorkers, function() {\r\n if (_config.numOfWorkers === 0) {\r\n initializeData();\r\n }\r\n ready(cb);\r\n });\r\n }\r\n\r\n function ready(cb){\r\n _inputStream.play();\r\n cb();\r\n }\r\n\r\n function initCanvas() {\r\n if (typeof document !== \"undefined\") {\r\n var $viewport = getViewPort();\r\n _canvasContainer.dom.image = document.querySelector(\"canvas.imgBuffer\");\r\n if (!_canvasContainer.dom.image) {\r\n _canvasContainer.dom.image = document.createElement(\"canvas\");\r\n _canvasContainer.dom.image.className = \"imgBuffer\";\r\n if ($viewport && _config.inputStream.type === \"ImageStream\") {\r\n $viewport.appendChild(_canvasContainer.dom.image);\r\n }\r\n }\r\n _canvasContainer.ctx.image = _canvasContainer.dom.image.getContext(\"2d\");\r\n _canvasContainer.dom.image.width = _inputStream.getCanvasSize().x;\r\n _canvasContainer.dom.image.height = _inputStream.getCanvasSize().y;\r\n\r\n _canvasContainer.dom.overlay = document.querySelector(\"canvas.drawingBuffer\");\r\n if (!_canvasContainer.dom.overlay) {\r\n _canvasContainer.dom.overlay = document.createElement(\"canvas\");\r\n _canvasContainer.dom.overlay.className = \"drawingBuffer\";\r\n if ($viewport) {\r\n $viewport.appendChild(_canvasContainer.dom.overlay);\r\n }\r\n }\r\n _canvasContainer.ctx.overlay = _canvasContainer.dom.overlay.getContext(\"2d\");\r\n _canvasContainer.dom.overlay.width = _inputStream.getCanvasSize().x;\r\n _canvasContainer.dom.overlay.height = _inputStream.getCanvasSize().y;\r\n }\r\n }\r\n\r\n function initBuffers(imageWrapper) {\r\n if (imageWrapper) {\r\n _inputImageWrapper = imageWrapper;\r\n } else {\r\n _inputImageWrapper = new ImageWrapper({\r\n x: _inputStream.getWidth(),\r\n y: _inputStream.getHeight()\r\n });\r\n }\r\n\r\n if (ENV.development) {\r\n console.log(_inputImageWrapper.size);\r\n }\r\n _boxSize = [\r\n vec2.clone([0, 0]),\r\n vec2.clone([0, _inputImageWrapper.size.y]),\r\n vec2.clone([_inputImageWrapper.size.x, _inputImageWrapper.size.y]),\r\n vec2.clone([_inputImageWrapper.size.x, 0])\r\n ];\r\n _locator = createLocator(_inputImageWrapper, _config.locator);\r\n }\r\n\r\n function getBoundingBoxes() {\r\n if (_config.locate) {\r\n return _locator.locate();\r\n } else {\r\n return [[\r\n vec2.clone(_boxSize[0]),\r\n vec2.clone(_boxSize[1]),\r\n vec2.clone(_boxSize[2]),\r\n vec2.clone(_boxSize[3])]];\r\n }\r\n }\r\n\r\n function transformResult(result) {\r\n var topRight = _inputStream.getTopRight(),\r\n xOffset = topRight.x,\r\n yOffset = topRight.y,\r\n i;\r\n\r\n if (xOffset === 0 && yOffset === 0) {\r\n return;\r\n }\r\n\r\n if (result.barcodes) {\r\n for (i = 0; i < result.barcodes.length; i++) {\r\n transformResult(result.barcodes[i]);\r\n }\r\n }\r\n\r\n if (result.line && result.line.length === 2) {\r\n moveLine(result.line);\r\n }\r\n\r\n if (result.box) {\r\n moveBox(result.box);\r\n }\r\n\r\n if (result.boxes && result.boxes.length > 0) {\r\n for (i = 0; i < result.boxes.length; i++) {\r\n moveBox(result.boxes[i]);\r\n }\r\n }\r\n\r\n function moveBox(box) {\r\n var corner = box.length;\r\n\r\n while (corner--) {\r\n box[corner][0] += xOffset;\r\n box[corner][1] += yOffset;\r\n }\r\n }\r\n\r\n function moveLine(line) {\r\n line[0].x += xOffset;\r\n line[0].y += yOffset;\r\n line[1].x += xOffset;\r\n line[1].y += yOffset;\r\n }\r\n }\r\n\r\n function addResult (result, imageData) {\r\n if (!imageData || !_resultCollector) {\r\n return;\r\n }\r\n\r\n if (result.barcodes) {\r\n result.barcodes.filter(barcode => barcode.codeResult)\r\n .forEach(barcode => addResult(barcode, imageData));\r\n } else if (result.codeResult) {\r\n _resultCollector.addResult(imageData, _inputStream.getCanvasSize(), result.codeResult);\r\n }\r\n }\r\n\r\n function hasCodeResult (result) {\r\n return result && (result.barcodes ?\r\n result.barcodes.some(barcode => barcode.codeResult) :\r\n result.codeResult);\r\n }\r\n\r\n function publishResult(result, imageData) {\r\n let resultToPublish = result;\r\n\r\n if (result && _onUIThread) {\r\n transformResult(result);\r\n addResult(result, imageData);\r\n resultToPublish = result.barcodes || result;\r\n }\r\n\r\n _events.publish(\"processed\", resultToPublish);\r\n if (hasCodeResult(result)) {\r\n _events.publish(\"detected\", resultToPublish);\r\n }\r\n }\r\n\r\n function locateAndDecode() {\r\n var result,\r\n boxes;\r\n\r\n boxes = getBoundingBoxes();\r\n if (boxes) {\r\n result = _decoder.decodeFromBoundingBoxes(boxes);\r\n result = result || {};\r\n result.boxes = boxes;\r\n publishResult(result, _inputImageWrapper.data);\r\n } else {\r\n publishResult();\r\n }\r\n }\r\n\r\n function update() {\r\n var availableWorker;\r\n\r\n if (_onUIThread) {\r\n if (_workerPool.length > 0) {\r\n availableWorker = _workerPool.filter(function(workerThread) {\r\n return !workerThread.busy;\r\n })[0];\r\n if (availableWorker) {\r\n _framegrabber.attachData(availableWorker.imageData);\r\n } else {\r\n return; // all workers are busy\r\n }\r\n } else {\r\n _framegrabber.attachData(_inputImageWrapper.data);\r\n }\r\n if (_framegrabber.grab()) {\r\n if (availableWorker) {\r\n availableWorker.busy = true;\r\n availableWorker.worker.postMessage({\r\n cmd: 'process',\r\n imageData: availableWorker.imageData\r\n }, [availableWorker.imageData.buffer]);\r\n } else {\r\n locateAndDecode();\r\n }\r\n }\r\n } else {\r\n locateAndDecode();\r\n }\r\n }\r\n\r\n function startContinuousUpdate() {\r\n var next = null,\r\n delay = 1000 / (_config.frequency || 60);\r\n\r\n _stopped = false;\r\n (function frame(timestamp) {\r\n next = next || timestamp;\r\n if (!_stopped) {\r\n if (timestamp >= next) {\r\n next += delay;\r\n update();\r\n }\r\n window.requestAnimFrame(frame);\r\n }\r\n }(performance.now()));\r\n }\r\n\r\n function start() {\r\n if (_onUIThread && _config.inputStream.type === \"LiveStream\") {\r\n startContinuousUpdate();\r\n } else {\r\n update();\r\n }\r\n }\r\n\r\n function initWorker(cb) {\r\n var blobURL,\r\n workerThread = {\r\n worker: undefined,\r\n imageData: new Uint8Array(_inputStream.getWidth() * _inputStream.getHeight()),\r\n busy: true\r\n };\r\n\r\n blobURL = generateWorkerBlob();\r\n workerThread.worker = new Worker(blobURL);\r\n\r\n workerThread.worker.onmessage = function(e) {\r\n if (e.data.event === 'initialized') {\r\n URL.revokeObjectURL(blobURL);\r\n workerThread.busy = false;\r\n workerThread.imageData = new Uint8Array(e.data.imageData);\r\n if (ENV.development) {\r\n console.log(\"Worker initialized\");\r\n }\r\n return cb(workerThread);\r\n } else if (e.data.event === 'processed') {\r\n workerThread.imageData = new Uint8Array(e.data.imageData);\r\n workerThread.busy = false;\r\n publishResult(e.data.result, workerThread.imageData);\r\n } else if (e.data.event === 'error') {\r\n if (ENV.development) {\r\n console.log(\"Worker error: \" + e.data.message);\r\n }\r\n }\r\n };\r\n\r\n workerThread.worker.postMessage({\r\n cmd: 'init',\r\n size: {x: _inputStream.getWidth(), y: _inputStream.getHeight()},\r\n imageData: workerThread.imageData,\r\n config: configForWorker(_config)\r\n }, [workerThread.imageData.buffer]);\r\n }\r\n\r\n function configForWorker(config) {\r\n return {\r\n ...config,\r\n inputStream: {\r\n ...config.inputStream,\r\n target: null\r\n }\r\n };\r\n }\r\n\r\n function workerInterface(factory) {\r\n /* eslint-disable no-undef*/\r\n if (factory) {\r\n var Quagga = factory().default;\r\n if (!Quagga) {\r\n self.postMessage({'event': 'error', message: 'Quagga could not be created'});\r\n return;\r\n }\r\n }\r\n var imageWrapper,\r\n scanner = Quagga._worker.createScanner();\r\n\r\n self.onmessage = function(e) {\r\n if (e.data.cmd === 'init') {\r\n var config = e.data.config;\r\n config.numOfWorkers = 0;\r\n imageWrapper = new Quagga.ImageWrapper({\r\n x: e.data.size.x,\r\n y: e.data.size.y\r\n }, new Uint8Array(e.data.imageData));\r\n scanner.init(config, ready, imageWrapper);\r\n scanner.subscribe(\"processed\", onProcessed);\r\n } else if (e.data.cmd === 'process') {\r\n imageWrapper.data = new Uint8Array(e.data.imageData);\r\n scanner.start();\r\n }\r\n };\r\n\r\n function onProcessed(result) {\r\n self.postMessage({\r\n 'event': 'processed',\r\n imageData: imageWrapper.data,\r\n result: result\r\n }, [imageWrapper.data.buffer]);\r\n }\r\n\r\n function ready() { // eslint-disable-line\r\n self.postMessage({'event': 'initialized', imageData: imageWrapper.data}, [imageWrapper.data.buffer]);\r\n }\r\n\r\n /* eslint-enable */\r\n }\r\n\r\n function generateWorkerBlob() {\r\n var blob,\r\n factorySource;\r\n\r\n /* jshint ignore:start */\r\n if (typeof __factorySource__ !== 'undefined') {\r\n factorySource = __factorySource__; // eslint-disable-line no-undef\r\n }\r\n /* jshint ignore:end */\r\n\r\n blob = new Blob(['(' + workerInterface.toString() + ')(' + factorySource + ');'],\r\n {type: 'text/javascript'});\r\n\r\n return window.URL.createObjectURL(blob);\r\n }\r\n\r\n function setReaders(readers) {\r\n if (_decoder) {\r\n _decoder.setReaders(readers);\r\n } else if (_onUIThread && _workerPool.length > 0) {\r\n _workerPool.forEach(function(workerThread) {\r\n workerThread.worker.postMessage({cmd: 'setReaders', readers: readers});\r\n });\r\n }\r\n }\r\n\r\n function adjustWorkerPool(capacity, cb) {\r\n const increaseBy = capacity - _workerPool.length;\r\n if (increaseBy === 0) {\r\n return cb && cb();\r\n }\r\n if (increaseBy < 0) {\r\n const workersToTerminate = _workerPool.slice(increaseBy);\r\n workersToTerminate.forEach(function(workerThread) {\r\n workerThread.worker.terminate();\r\n if (ENV.development) {\r\n console.log(\"Worker terminated!\");\r\n }\r\n });\r\n _workerPool = _workerPool.slice(0, increaseBy);\r\n return cb && cb();\r\n } else {\r\n for (var i = 0; i < increaseBy; i++) {\r\n initWorker(workerInitialized);\r\n }\r\n\r\n function workerInitialized(workerThread) {\r\n _workerPool.push(workerThread);\r\n if (_workerPool.length >= capacity){\r\n cb && cb();\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n init: function(config, cb, imageWrapper) {\r\n _config = merge({}, Config, config);\r\n\r\n if (imageWrapper) {\r\n _onUIThread = false;\r\n initializeData(imageWrapper);\r\n return cb();\r\n } else {\r\n initInputStream(cb);\r\n }\r\n },\r\n start: function() {\r\n start();\r\n },\r\n stop: function() {\r\n _stopped = true;\r\n adjustWorkerPool(0);\r\n if (_config.inputStream.type === \"LiveStream\") {\r\n CameraAccess.release();\r\n _inputStream.clearEventHandlers();\r\n }\r\n },\r\n pause: function() {\r\n _stopped = true;\r\n },\r\n subscribe(eventName, callback) {\r\n _events.subscribe(eventName, callback);\r\n },\r\n unsubscribe(eventName, callback) {\r\n _events.unsubscribe(eventName, callback);\r\n },\r\n registerResultCollector: function(resultCollector) {\r\n if (resultCollector && typeof resultCollector.addResult === 'function') {\r\n _resultCollector = resultCollector;\r\n }\r\n },\r\n decodeSingle: function(config, resultCallback) {\r\n this.init(config, () => {\r\n _events.once(\"processed\", (result) => {\r\n this.stop();\r\n resultCallback.call(null, result);\r\n }, true);\r\n start();\r\n });\r\n },\r\n canvas: _canvasContainer\r\n };\r\n}\r\n\r\nexport default createScanner;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/scanner.js\n **/","module.exports = copy\n\n/**\n * Copy the values from one mat2 to another\n *\n * @alias mat2.copy\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction copy(out, a) {\n out[0] = a[0]\n out[1] = a[1]\n out[2] = a[2]\n out[3] = a[3]\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/copy.js\n ** module id = 91\n ** module chunks = 0\n **/","module.exports = create\n\n/**\n * Creates a new identity mat2\n *\n * @alias mat2.create\n * @returns {mat2} a new 2x2 matrix\n */\nfunction create() {\n var out = new Float32Array(4)\n out[0] = 1\n out[1] = 0\n out[2] = 0\n out[3] = 1\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/create.js\n ** module id = 92\n ** module chunks = 0\n **/","module.exports = invert\n\n/**\n * Inverts a mat2\n *\n * @alias mat2.invert\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction invert(out, a) {\n var a0 = a[0]\n var a1 = a[1]\n var a2 = a[2]\n var a3 = a[3]\n var det = a0 * a3 - a2 * a1\n\n if (!det) return null\n det = 1.0 / det\n\n out[0] = a3 * det\n out[1] = -a1 * det\n out[2] = -a2 * det\n out[3] = a0 * det\n\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/invert.js\n ** module id = 93\n ** module chunks = 0\n **/","module.exports = scale\n\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\nfunction scale(out, a, b) {\n out[0] = a[0] * b\n out[1] = a[1] * b\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/scale.js\n ** module id = 94\n ** module chunks = 0\n **/","module.exports = transformMat2\n\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat2(out, a, m) {\n var x = a[0],\n y = a[1]\n out[0] = m[0] * x + m[2] * y\n out[1] = m[1] * x + m[3] * y\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/transformMat2.js\n ** module id = 95\n ** module chunks = 0\n **/","module.exports = clone;\n\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {vec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\nfunction clone(a) {\n var out = new Float32Array(3)\n out[0] = a[0]\n out[1] = a[1]\n out[2] = a[2]\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec3/clone.js\n ** module id = 96\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Creates an hash object.\n *\n * @private\n * @constructor\n * @returns {Object} Returns the new hash object.\n */\nfunction Hash() {}\n\n// Avoid inheriting from `Object.prototype` when possible.\nHash.prototype = nativeCreate ? nativeCreate(null) : objectProto;\n\nmodule.exports = Hash;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Hash.js\n ** module id = 97\n ** module chunks = 0\n **/","var mapClear = require('./_mapClear'),\n mapDelete = require('./_mapDelete'),\n mapGet = require('./_mapGet'),\n mapHas = require('./_mapHas'),\n mapSet = require('./_mapSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction MapCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = values[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add functions to the `MapCache`.\nMapCache.prototype.clear = mapClear;\nMapCache.prototype['delete'] = mapDelete;\nMapCache.prototype.get = mapGet;\nMapCache.prototype.has = mapHas;\nMapCache.prototype.set = mapSet;\n\nmodule.exports = MapCache;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_MapCache.js\n ** module id = 98\n ** module chunks = 0\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Reflect = root.Reflect;\n\nmodule.exports = Reflect;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Reflect.js\n ** module id = 99\n ** module chunks = 0\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Set.js\n ** module id = 100\n ** module chunks = 0\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_WeakMap.js\n ** module id = 101\n ** module chunks = 0\n **/","/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `Map#set` because it doesn't return the map instance in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\nmodule.exports = addMapEntry;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_addMapEntry.js\n ** module id = 102\n ** module chunks = 0\n **/","/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n set.add(value);\n return set;\n}\n\nmodule.exports = addSetEntry;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_addSetEntry.js\n ** module id = 103\n ** module chunks = 0\n **/","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n var length = args.length;\n switch (length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_apply.js\n ** module id = 104\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayMap.js\n ** module id = 105\n ** module chunks = 0\n **/","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayPush.js\n ** module id = 106\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check, else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arraySome.js\n ** module id = 107\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseAssign.js\n ** module id = 108\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseForOwn = require('./_baseForOwn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isHostObject = require('./_isHostObject'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[boolTag] =\ncloneableTags[dateTag] = cloneableTags[float32Tag] =\ncloneableTags[float64Tag] = cloneableTags[int8Tag] =\ncloneableTags[int16Tag] = cloneableTags[int32Tag] =\ncloneableTags[mapTag] = cloneableTags[numberTag] =\ncloneableTags[objectTag] = cloneableTags[regexpTag] =\ncloneableTags[setTag] = cloneableTags[stringTag] =\ncloneableTags[symbolTag] = cloneableTags[uint8Tag] =\ncloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] =\ncloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n result = baseAssign(result, value);\n return isFull ? copySymbols(value, result) : result;\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n // Recursively populate clone (susceptible to call stack limits).\n (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return (isFull && !isArr) ? copySymbols(value, result) : result;\n}\n\nmodule.exports = baseClone;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseClone.js\n ** module id = 109\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\nmodule.exports = baseCreate;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseCreate.js\n ** module id = 110\n ** module chunks = 0\n **/","var arrayPush = require('./_arrayPush'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, isStrict, result) {\n result || (result = []);\n\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && isArrayLikeObject(value) &&\n (isStrict || isArray(value) || isArguments(value))) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseFlatten.js\n ** module id = 111\n ** module chunks = 0\n **/","var baseFor = require('./_baseFor'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return object == null ? object : baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseForIn.js\n ** module id = 112\n ** module chunks = 0\n **/","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseForOwn.js\n ** module id = 113\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseHasIn.js\n ** module id = 114\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isHostObject = require('./_isHostObject'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for comparison styles. */\nvar PARTIAL_COMPARE_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n stack || (stack = new Stack);\n return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsEqualDeep.js\n ** module id = 115\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack,\n result = customizer ? customizer(objValue, srcValue, key, object, source, stack) : undefined;\n\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsMatch.js\n ** module id = 116\n ** module chunks = 0\n **/","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n var type = typeof value;\n if (type == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (type == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIteratee.js\n ** module id = 117\n ** module chunks = 0\n **/","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = Object.keys;\n\n/**\n * The base implementation of `_.keys` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n return nativeKeys(Object(object));\n}\n\nmodule.exports = baseKeys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseKeys.js\n ** module id = 118\n ** module chunks = 0\n **/","var Reflect = require('./_Reflect'),\n iteratorToArray = require('./_iteratorToArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar enumerate = Reflect ? Reflect.enumerate : undefined,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * The base implementation of `_.keysIn` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n object = object == null ? object : Object(object);\n\n var result = [];\n for (var key in object) {\n result.push(key);\n }\n return result;\n}\n\n// Fallback for IE < 9 with es6-shim.\nif (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) {\n baseKeysIn = function(object) {\n return iteratorToArray(enumerate(object));\n };\n}\n\nmodule.exports = baseKeysIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseKeysIn.js\n ** module id = 119\n ** module chunks = 0\n **/","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n var key = matchData[0][0],\n value = matchData[0][1];\n\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === value &&\n (value !== undefined || (key in Object(object)));\n };\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMatches.js\n ** module id = 120\n ** module chunks = 0\n **/","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMatchesProperty.js\n ** module id = 121\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignMergeValue = require('./_assignMergeValue'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isArray = require('./isArray'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n var props = (isArray(source) || isTypedArray(source))\n ? undefined\n : keysIn(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(object[key], srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n });\n}\n\nmodule.exports = baseMerge;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMerge.js\n ** module id = 122\n ** module chunks = 0\n **/","var assignMergeValue = require('./_assignMergeValue'),\n baseClone = require('./_baseClone'),\n copyArray = require('./_copyArray'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = object[key],\n srcValue = source[key],\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n newValue = srcValue;\n if (isArray(srcValue) || isTypedArray(srcValue)) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else {\n isCommon = false;\n newValue = baseClone(srcValue, !customizer);\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n isCommon = false;\n newValue = baseClone(srcValue, !customizer);\n }\n else {\n newValue = objValue;\n }\n }\n else {\n isCommon = false;\n }\n }\n stack.set(srcValue, newValue);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n }\n stack['delete'](srcValue);\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMergeDeep.js\n ** module id = 123\n ** module chunks = 0\n **/","var arrayReduce = require('./_arrayReduce');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property names.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property names to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n object = Object(object);\n return arrayReduce(props, function(result, key) {\n if (key in object) {\n result[key] = object[key];\n }\n return result;\n }, {});\n}\n\nmodule.exports = basePick;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePick.js\n ** module id = 124\n ** module chunks = 0\n **/","var baseForIn = require('./_baseForIn');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, predicate) {\n var result = {};\n baseForIn(object, function(value, key) {\n if (predicate(value, key)) {\n result[key] = value;\n }\n });\n return result;\n}\n\nmodule.exports = basePickBy;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePickBy.js\n ** module id = 125\n ** module chunks = 0\n **/","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePropertyDeep.js\n ** module id = 126\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseSlice.js\n ** module id = 127\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseTimes.js\n ** module id = 128\n ** module chunks = 0\n **/","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the new array of key-value pairs.\n */\nfunction baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n}\n\nmodule.exports = baseToPairs;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseToPairs.js\n ** module id = 129\n ** module chunks = 0\n **/","/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\nmodule.exports = checkGlobal;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_checkGlobal.js\n ** module id = 130\n ** module chunks = 0\n **/","/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneBuffer.js\n ** module id = 131\n ** module chunks = 0\n **/","var addMapEntry = require('./_addMapEntry'),\n arrayReduce = require('./_arrayReduce'),\n mapToArray = require('./_mapToArray');\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map) {\n return arrayReduce(mapToArray(map), addMapEntry, new map.constructor);\n}\n\nmodule.exports = cloneMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneMap.js\n ** module id = 132\n ** module chunks = 0\n **/","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneRegExp.js\n ** module id = 133\n ** module chunks = 0\n **/","var addSetEntry = require('./_addSetEntry'),\n arrayReduce = require('./_arrayReduce'),\n setToArray = require('./_setToArray');\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set) {\n return arrayReduce(setToArray(set), addSetEntry, new set.constructor);\n}\n\nmodule.exports = cloneSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneSet.js\n ** module id = 134\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneSymbol.js\n ** module id = 135\n ** module chunks = 0\n **/","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneTypedArray.js\n ** module id = 136\n ** module chunks = 0\n **/","var assignValue = require('./_assignValue');\n\n/**\n * This function is like `copyObject` except that it accepts a function to\n * customize copied values.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObjectWith(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : source[key];\n\n assignValue(object, key, newValue);\n }\n return object;\n}\n\nmodule.exports = copyObjectWith;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyObjectWith.js\n ** module id = 137\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copySymbols.js\n ** module id = 138\n ** module chunks = 0\n **/","var isIterateeCall = require('./_isIterateeCall'),\n rest = require('./rest');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return rest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = typeof customizer == 'function'\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_createAssigner.js\n ** module id = 139\n ** module chunks = 0\n **/","/**\n * Creates a base function for methods like `_.forIn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_createBaseFor.js\n ** module id = 140\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n // Coerce dates and booleans to numbers, dates to milliseconds and booleans\n // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.\n return +object == +other;\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case numberTag:\n // Treat `NaN` vs. `NaN` as equal.\n return (object != +object) ? other != +other : object == +other;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings primitives and string\n // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n // Recursively compare objects (susceptible to call stack limits).\n return equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask | UNORDERED_COMPARE_FLAG, stack.set(object, other));\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalByTag.js\n ** module id = 141\n ** module chunks = 0\n **/","var baseHas = require('./_baseHas'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for comparison styles. */\nvar PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : baseHas(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n return result;\n}\n\nmodule.exports = equalObjects;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalObjects.js\n ** module id = 142\n ** module chunks = 0\n **/","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getLength.js\n ** module id = 143\n ** module chunks = 0\n **/","var isStrictComparable = require('./_isStrictComparable'),\n toPairs = require('./toPairs');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = toPairs(object),\n length = result.length;\n\n while (length--) {\n result[length][2] = isStrictComparable(result[length][1]);\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getMatchData.js\n ** module id = 144\n ** module chunks = 0\n **/","/** Built-in value references. */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = getOwnPropertySymbols || function() {\n return [];\n};\n\nmodule.exports = getSymbols;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getSymbols.js\n ** module id = 145\n ** module chunks = 0\n **/","var baseCastPath = require('./_baseCastPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isKey = require('./_isKey'),\n isLength = require('./isLength'),\n isString = require('./isString'),\n last = require('./last'),\n parent = require('./_parent');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n if (object == null) {\n return false;\n }\n var result = hasFunc(object, path);\n if (!result && !isKey(path)) {\n path = baseCastPath(path);\n object = parent(object, path);\n if (object != null) {\n path = last(path);\n result = hasFunc(object, path);\n }\n }\n var length = object ? object.length : undefined;\n return result || (\n !!length && isLength(length) && isIndex(path, length) &&\n (isArray(object) || isString(object) || isArguments(object))\n );\n}\n\nmodule.exports = hasPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hasPath.js\n ** module id = 146\n ** module chunks = 0\n **/","var hashHas = require('./_hashHas');\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(hash, key) {\n return hashHas(hash, key) && delete hash[key];\n}\n\nmodule.exports = hashDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashDelete.js\n ** module id = 147\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @param {Object} hash The hash to query.\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(hash, key) {\n if (nativeCreate) {\n var result = hash[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(hash, key) ? hash[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashGet.js\n ** module id = 148\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n */\nfunction hashSet(hash, key, value) {\n hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n}\n\nmodule.exports = hashSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashSet.js\n ** module id = 149\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneArray.js\n ** module id = 150\n ** module chunks = 0\n **/","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneMap = require('./_cloneMap'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSet = require('./_cloneSet'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneByTag.js\n ** module id = 151\n ** module chunks = 0\n **/","var baseCreate = require('./_baseCreate'),\n isPrototype = require('./_isPrototype');\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototypeOf(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneObject.js\n ** module id = 152\n ** module chunks = 0\n **/","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isIterateeCall.js\n ** module id = 153\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isStrictComparable.js\n ** module id = 154\n ** module chunks = 0\n **/","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_iteratorToArray.js\n ** module id = 155\n ** module chunks = 0\n **/","var Hash = require('./_Hash'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': Map ? new Map : [],\n 'string': new Hash\n };\n}\n\nmodule.exports = mapClear;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapClear.js\n ** module id = 156\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocDelete = require('./_assocDelete'),\n hashDelete = require('./_hashDelete'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapDelete(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashDelete(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map['delete'](key) : assocDelete(data.map, key);\n}\n\nmodule.exports = mapDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapDelete.js\n ** module id = 157\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocGet = require('./_assocGet'),\n hashGet = require('./_hashGet'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapGet(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashGet(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.get(key) : assocGet(data.map, key);\n}\n\nmodule.exports = mapGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapGet.js\n ** module id = 158\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocHas = require('./_assocHas'),\n hashHas = require('./_hashHas'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapHas(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashHas(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.has(key) : assocHas(data.map, key);\n}\n\nmodule.exports = mapHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapHas.js\n ** module id = 159\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocSet = require('./_assocSet'),\n hashSet = require('./_hashSet'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache object.\n */\nfunction mapSet(key, value) {\n var data = this.__data__;\n if (isKeyable(key)) {\n hashSet(typeof key == 'string' ? data.string : data.hash, key, value);\n } else if (Map) {\n data.map.set(key, value);\n } else {\n assocSet(data.map, key, value);\n }\n return this;\n}\n\nmodule.exports = mapSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapSet.js\n ** module id = 160\n ** module chunks = 0\n **/","var baseSlice = require('./_baseSlice'),\n get = require('./get');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length == 1 ? object : get(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_parent.js\n ** module id = 161\n ** module chunks = 0\n **/","/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = { 'array': [], 'map': null };\n}\n\nmodule.exports = stackClear;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackClear.js\n ** module id = 162\n ** module chunks = 0\n **/","var assocDelete = require('./_assocDelete');\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocDelete(array, key) : data.map['delete'](key);\n}\n\nmodule.exports = stackDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackDelete.js\n ** module id = 163\n ** module chunks = 0\n **/","var assocGet = require('./_assocGet');\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocGet(array, key) : data.map.get(key);\n}\n\nmodule.exports = stackGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackGet.js\n ** module id = 164\n ** module chunks = 0\n **/","var assocHas = require('./_assocHas');\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocHas(array, key) : data.map.has(key);\n}\n\nmodule.exports = stackHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackHas.js\n ** module id = 165\n ** module chunks = 0\n **/","var MapCache = require('./_MapCache'),\n assocSet = require('./_assocSet');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache object.\n */\nfunction stackSet(key, value) {\n var data = this.__data__,\n array = data.array;\n\n if (array) {\n if (array.length < (LARGE_ARRAY_SIZE - 1)) {\n assocSet(array, key, value);\n } else {\n data.array = null;\n data.map = new MapCache(array);\n }\n }\n var map = data.map;\n if (map) {\n map.set(key, value);\n }\n return this;\n}\n\nmodule.exports = stackSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackSet.js\n ** module id = 166\n ** module chunks = 0\n **/","var toString = require('./toString');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nfunction stringToPath(string) {\n var result = [];\n toString(string).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n}\n\nmodule.exports = stringToPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stringToPath.js\n ** module id = 167\n ** module chunks = 0\n **/","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var getter = _.constant(object);\n *\n * getter() === object;\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/constant.js\n ** module id = 168\n ** module chunks = 0\n **/","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b.c');\n * // => true\n *\n * _.hasIn(object, ['a', 'b', 'c']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/hasIn.js\n ** module id = 169\n ** module chunks = 0\n **/","/**\n * This method returns the first argument given to it.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/identity.js\n ** module id = 170\n ** module chunks = 0\n **/","var constant = require('./constant'),\n root = require('./_root');\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = (freeModule && freeModule.exports === freeExports)\n ? freeExports\n : undefined;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = !Buffer ? constant(false) : function(value) {\n return value instanceof Buffer;\n};\n\nmodule.exports = isBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isBuffer.js\n ** module id = 171\n ** module chunks = 0\n **/","var isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isFunction = require('./isFunction'),\n isString = require('./isString');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty collection or object. A value is considered\n * empty if it's an `arguments` object, array, string, or jQuery-like collection\n * with a length of `0` or has no own enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (isArrayLike(value) &&\n (isArray(value) || isString(value) ||\n isFunction(value.splice) || isArguments(value))) {\n return !value.length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isEmpty.js\n ** module id = 172\n ** module chunks = 0\n **/","var isFunction = require('./isFunction'),\n isHostObject = require('./_isHostObject'),\n isObjectLike = require('./isObjectLike');\n\n/** Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(funcToString.call(value));\n }\n return isObjectLike(value) &&\n (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isNative.js\n ** module id = 173\n ** module chunks = 0\n **/","var isHostObject = require('./_isHostObject'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n var Ctor = proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isPlainObject.js\n ** module id = 174\n ** module chunks = 0\n **/","var isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isSymbol.js\n ** module id = 175\n ** module chunks = 0\n **/","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array ? array.length : 0;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/last.js\n ** module id = 176\n ** module chunks = 0\n **/","var baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable properties of `object` that `predicate`\n * doesn't return truthy for. The predicate is invoked with two arguments:\n * (value, key).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n predicate = baseIteratee(predicate);\n return basePickBy(object, function(value, key) {\n return !predicate(value, key);\n });\n}\n\nmodule.exports = omitBy;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/omitBy.js\n ** module id = 177\n ** module chunks = 0\n **/","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': { 'c': 2 } } },\n * { 'a': { 'b': { 'c': 1 } } }\n * ];\n *\n * _.map(objects, _.property('a.b.c'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(path) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/property.js\n ** module id = 178\n ** module chunks = 0\n **/","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This function is loosely based on [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3');\n * // => 3\n */\nfunction toInteger(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n var remainder = value % 1;\n return value === value ? (remainder ? value - remainder : value) : 0;\n}\n\nmodule.exports = toInteger;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toInteger.js\n ** module id = 179\n ** module chunks = 0\n **/","var isFunction = require('./isFunction'),\n isObject = require('./isObject');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3);\n * // => 3\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3');\n * // => 3\n */\nfunction toNumber(value) {\n if (isObject(value)) {\n var other = isFunction(value.valueOf) ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toNumber.js\n ** module id = 180\n ** module chunks = 0\n **/","var baseToPairs = require('./_baseToPairs'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable key-value pairs for `object` which\n * can be consumed by `_.fromPairs`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the new array of key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\nfunction toPairs(object) {\n return baseToPairs(object, keys(object));\n}\n\nmodule.exports = toPairs;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toPairs.js\n ** module id = 181\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toPlainObject.js\n ** module id = 182\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Converts `value` to a string if it's not one. An empty string is returned\n * for `null` and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (value == null) {\n return '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toString;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toString.js\n ** module id = 183\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\n\n// Shimming starts here.\n(function() {\n // Utils.\n var logging = require('./utils').log;\n var browserDetails = require('./utils').browserDetails;\n // Export to the adapter global object visible in the browser.\n module.exports.browserDetails = browserDetails;\n module.exports.extractVersion = require('./utils').extractVersion;\n module.exports.disableLog = require('./utils').disableLog;\n\n // Uncomment if you do not want any logging at all including the switch\n // statement below. Can also be turned off in the browser via\n // adapter.disableLog(true) but then logging from the switch statement below\n // will still appear.\n //require('./utils').disableLog(true);\n\n // Browser shims.\n var chromeShim = require('./chrome/chrome_shim') || null;\n var edgeShim = require('./edge/edge_shim') || null;\n var firefoxShim = require('./firefox/firefox_shim') || null;\n\n // Shim browser if found.\n switch (browserDetails.browser) {\n case 'chrome':\n if (!chromeShim || !chromeShim.shimPeerConnection) {\n logging('Chrome shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming chrome!');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = chromeShim;\n\n chromeShim.shimGetUserMedia();\n chromeShim.shimSourceObject();\n chromeShim.shimPeerConnection();\n chromeShim.shimOnTrack();\n break;\n case 'edge':\n if (!edgeShim || !edgeShim.shimPeerConnection) {\n logging('MS edge shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming edge!');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = edgeShim;\n\n edgeShim.shimPeerConnection();\n break;\n case 'firefox':\n if (!firefoxShim || !firefoxShim.shimPeerConnection) {\n logging('Firefox shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming firefox!');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = firefoxShim;\n\n firefoxShim.shimGetUserMedia();\n firefoxShim.shimSourceObject();\n firefoxShim.shimPeerConnection();\n firefoxShim.shimOnTrack();\n break;\n default:\n logging('Unsupported browser!');\n }\n})();\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/adapter_core.js\n ** module id = 184\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\nvar logging = require('../utils.js').log;\nvar browserDetails = require('../utils.js').browserDetails;\n\nvar chromeShim = {\n shimOnTrack: function() {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get: function() { return this._ontrack; },\n set: function(f) {\n var self = this;\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n this.removeEventListener('addstream', this._ontrackpoly);\n }\n this.addEventListener('track', this._ontrack = f);\n this.addEventListener('addstream', this._ontrackpoly = function(e) {\n // onaddstream does not fire when a track is added to an existing stream.\n // but stream.onaddtrack is implemented so we use that\n e.stream.addEventListener('addtrack', function(te) {\n var event = new Event('track');\n event.track = te.track;\n event.receiver = {track: te.track};\n event.streams = [e.stream];\n self.dispatchEvent(event);\n });\n e.stream.getTracks().forEach(function(track) {\n var event = new Event('track');\n event.track = track;\n event.receiver = {track: track};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n }.bind(this));\n }.bind(this));\n }\n });\n }\n },\n\n shimSourceObject: function() {\n if (typeof window === 'object') {\n if (window.HTMLMediaElement &&\n !('srcObject' in window.HTMLMediaElement.prototype)) {\n // Shim the srcObject property, once, when HTMLMediaElement is found.\n Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', {\n get: function() {\n return this._srcObject;\n },\n set: function(stream) {\n var self = this;\n // Use _srcObject as a private property for this shim\n this._srcObject = stream;\n if (this.src) {\n URL.revokeObjectURL(this.src);\n }\n\n if (!stream) {\n this.src = '';\n return;\n }\n this.src = URL.createObjectURL(stream);\n // We need to recreate the blob url when a track is added or removed.\n // Doing it manually since we want to avoid a recursion.\n stream.addEventListener('addtrack', function() {\n if (self.src) {\n URL.revokeObjectURL(self.src);\n }\n self.src = URL.createObjectURL(stream);\n });\n stream.addEventListener('removetrack', function() {\n if (self.src) {\n URL.revokeObjectURL(self.src);\n }\n self.src = URL.createObjectURL(stream);\n });\n }\n });\n }\n }\n },\n\n shimPeerConnection: function() {\n // The RTCPeerConnection object.\n window.RTCPeerConnection = function(pcConfig, pcConstraints) {\n // Translate iceTransportPolicy to iceTransports,\n // see https://code.google.com/p/webrtc/issues/detail?id=4869\n logging('PeerConnection');\n if (pcConfig && pcConfig.iceTransportPolicy) {\n pcConfig.iceTransports = pcConfig.iceTransportPolicy;\n }\n\n var pc = new webkitRTCPeerConnection(pcConfig, pcConstraints); // jscs:ignore requireCapitalizedConstructors\n var origGetStats = pc.getStats.bind(pc);\n pc.getStats = function(selector, successCallback, errorCallback) { // jshint ignore: line\n var self = this;\n var args = arguments;\n\n // If selector is a function then we are in the old style stats so just\n // pass back the original getStats format to avoid breaking old users.\n if (arguments.length > 0 && typeof selector === 'function') {\n return origGetStats(selector, successCallback);\n }\n\n var fixChromeStats_ = function(response) {\n var standardReport = {};\n var reports = response.result();\n reports.forEach(function(report) {\n var standardStats = {\n id: report.id,\n timestamp: report.timestamp,\n type: report.type\n };\n report.names().forEach(function(name) {\n standardStats[name] = report.stat(name);\n });\n standardReport[standardStats.id] = standardStats;\n });\n\n return standardReport;\n };\n\n if (arguments.length >= 2) {\n var successCallbackWrapper_ = function(response) {\n args[1](fixChromeStats_(response));\n };\n\n return origGetStats.apply(this, [successCallbackWrapper_, arguments[0]]);\n }\n\n // promise-support\n return new Promise(function(resolve, reject) {\n if (args.length === 1 && selector === null) {\n origGetStats.apply(self, [\n function(response) {\n resolve.apply(null, [fixChromeStats_(response)]);\n }, reject]);\n } else {\n origGetStats.apply(self, [resolve, reject]);\n }\n });\n };\n\n return pc;\n };\n window.RTCPeerConnection.prototype = webkitRTCPeerConnection.prototype;\n\n // wrap static methods. Currently just generateCertificate.\n if (webkitRTCPeerConnection.generateCertificate) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get: function() {\n if (arguments.length) {\n return webkitRTCPeerConnection.generateCertificate.apply(null,\n arguments);\n } else {\n return webkitRTCPeerConnection.generateCertificate;\n }\n }\n });\n }\n\n // add promise support\n ['createOffer', 'createAnswer'].forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n var self = this;\n if (arguments.length < 1 || (arguments.length === 1 &&\n typeof(arguments[0]) === 'object')) {\n var opts = arguments.length === 1 ? arguments[0] : undefined;\n return new Promise(function(resolve, reject) {\n nativeMethod.apply(self, [resolve, reject, opts]);\n });\n } else {\n return nativeMethod.apply(this, arguments);\n }\n };\n });\n\n ['setLocalDescription', 'setRemoteDescription',\n 'addIceCandidate'].forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n var args = arguments;\n var self = this;\n return new Promise(function(resolve, reject) {\n nativeMethod.apply(self, [args[0],\n function() {\n resolve();\n if (args.length >= 2) {\n args[1].apply(null, []);\n }\n },\n function(err) {\n reject(err);\n if (args.length >= 3) {\n args[2].apply(null, [err]);\n }\n }]\n );\n });\n };\n });\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n if (browserDetails.version >= 43) {\n element.srcObject = stream;\n } else if (typeof element.src !== 'undefined') {\n element.src = URL.createObjectURL(stream);\n } else {\n logging('Error attaching stream to element.');\n }\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n if (browserDetails.version >= 43) {\n to.srcObject = from.srcObject;\n } else {\n to.src = from.src;\n }\n }\n}\n\n\n// Expose public methods.\nmodule.exports = {\n shimOnTrack: chromeShim.shimOnTrack,\n shimSourceObject: chromeShim.shimSourceObject,\n shimPeerConnection: chromeShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia'),\n attachMediaStream: chromeShim.attachMediaStream,\n reattachMediaStream: chromeShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/chrome/chrome_shim.js\n ** module id = 185\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\nvar logging = require('../utils.js').log;\n\n// Expose public methods.\nmodule.exports = function() {\n var constraintsToChrome_ = function(c) {\n if (typeof c !== 'object' || c.mandatory || c.optional) {\n return c;\n }\n var cc = {};\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n var r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]};\n if (r.exact !== undefined && typeof r.exact === 'number') {\n r.min = r.max = r.exact;\n }\n var oldname_ = function(prefix, name) {\n if (prefix) {\n return prefix + name.charAt(0).toUpperCase() + name.slice(1);\n }\n return (name === 'deviceId') ? 'sourceId' : name;\n };\n if (r.ideal !== undefined) {\n cc.optional = cc.optional || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[oldname_('min', key)] = r.ideal;\n cc.optional.push(oc);\n oc = {};\n oc[oldname_('max', key)] = r.ideal;\n cc.optional.push(oc);\n } else {\n oc[oldname_('', key)] = r.ideal;\n cc.optional.push(oc);\n }\n }\n if (r.exact !== undefined && typeof r.exact !== 'number') {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_('', key)] = r.exact;\n } else {\n ['min', 'max'].forEach(function(mix) {\n if (r[mix] !== undefined) {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_(mix, key)] = r[mix];\n }\n });\n }\n });\n if (c.advanced) {\n cc.optional = (cc.optional || []).concat(c.advanced);\n }\n return cc;\n };\n\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n if (constraints.audio) {\n constraints.audio = constraintsToChrome_(constraints.audio);\n }\n if (constraints.video) {\n constraints.video = constraintsToChrome_(constraints.video);\n }\n logging('chrome: ' + JSON.stringify(constraints));\n return navigator.webkitGetUserMedia(constraints, onSuccess, onError);\n };\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n }\n\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {getUserMedia: getUserMediaPromise_,\n enumerateDevices: function() {\n return new Promise(function(resolve) {\n var kinds = {audio: 'audioinput', video: 'videoinput'};\n return MediaStreamTrack.getSources(function(devices) {\n resolve(devices.map(function(device) {\n return {label: device.label,\n kind: kinds[device.kind],\n deviceId: device.id,\n groupId: ''};\n }));\n });\n });\n }};\n }\n\n // A shim for getUserMedia method on the mediaDevices object.\n // TODO(KaptenJansson) remove once implemented in Chrome stable.\n if (!navigator.mediaDevices.getUserMedia) {\n navigator.mediaDevices.getUserMedia = function(constraints) {\n return getUserMediaPromise_(constraints);\n };\n } else {\n // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia\n // function which returns a Promise, it does not accept spec-style\n // constraints.\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n if (c) {\n logging('spec: ' + JSON.stringify(c)); // whitespace for alignment\n c.audio = constraintsToChrome_(c.audio);\n c.video = constraintsToChrome_(c.video);\n logging('chrome: ' + JSON.stringify(c));\n }\n return origGetUserMedia(c);\n }.bind(this);\n }\n\n // Dummy devicechange event methods.\n // TODO(KaptenJansson) remove once implemented in Chrome stable.\n if (typeof navigator.mediaDevices.addEventListener === 'undefined') {\n navigator.mediaDevices.addEventListener = function() {\n logging('Dummy mediaDevices.addEventListener called.');\n };\n }\n if (typeof navigator.mediaDevices.removeEventListener === 'undefined') {\n navigator.mediaDevices.removeEventListener = function() {\n logging('Dummy mediaDevices.removeEventListener called.');\n };\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/chrome/getusermedia.js\n ** module id = 186\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\n\n// SDP helpers.\nvar SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(function(line) {\n return line.trim();\n });\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n var parts = blob.split('\\r\\nm=');\n return parts.map(function(part, index) {\n return (index > 0 ? 'm=' + part : part).trim() + '\\r\\n';\n });\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(function(line) {\n return line.indexOf(prefix) === 0;\n });\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 rport 55996\"\nSDPUtils.parseCandidate = function(line) {\n var parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n var candidate = {\n foundation: parts[0],\n component: parts[1],\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7]\n };\n\n for (var i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n default: // Unknown extensions are silently ignored.\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\nSDPUtils.writeCandidate = function(candidate) {\n var sdp = [];\n sdp.push(candidate.foundation);\n sdp.push(candidate.component);\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.ip);\n sdp.push(candidate.port);\n\n var type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress); // was: relAddr\n sdp.push('rport');\n sdp.push(candidate.relatedPort); // was: relPort\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n var parts = line.substr(9).split(' ');\n var parsed = {\n payloadType: parseInt(parts.shift(), 10) // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n parsed.numChannels = parts.length === 3 ? parseInt(parts[2], 10) : 1; // was: channels\n return parsed;\n};\n\n// Generate an a=rtpmap line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (codec.numChannels !== 1 ? '/' + codec.numChannels : '') + '\\r\\n';\n};\n\n// Parses an ftmp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n var parsed = {};\n var kv;\n var parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (var j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFtmp = function(codec) {\n var line = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && codec.parameters.length) {\n var params = [];\n Object.keys(codec.parameters).forEach(function(param) {\n params.push(param + '=' + codec.parameters[param]);\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n var parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' ')\n };\n};\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n var lines = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(function(fb) {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + ' ' + fb.parameter +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses an RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n var sp = line.indexOf(' ');\n var parts = {\n ssrc: line.substr(7, sp - 7),\n };\n var colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.splitLines(mediaSection);\n lines = lines.concat(SDPUtils.splitLines(sessionpart)); // Search in session part, too.\n var fpLine = lines.filter(function(line) {\n return line.indexOf('a=fingerprint:') === 0;\n })[0].substr(14);\n // Note: a=setup line is ignored since we use the 'auto' role.\n var dtlsParameters = {\n role: 'auto',\n fingerprints: [{\n algorithm: fpLine.split(' ')[0],\n value: fpLine.split(' ')[1]\n }]\n };\n return dtlsParameters;\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n var sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(function(fp) {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.splitLines(mediaSection);\n lines = lines.concat(SDPUtils.splitLines(sessionpart)); // Search in session part, too.\n var iceParameters = {\n usernameFragment: lines.filter(function(line) {\n return line.indexOf('a=ice-ufrag:') === 0;\n })[0].substr(12),\n password: lines.filter(function(line) {\n return line.indexOf('a=ice-pwd:') === 0;\n })[0].substr(10)\n };\n return iceParameters;\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n return 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n var description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: []\n };\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n var pt = mline[i];\n var rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n var codec = SDPUtils.parseRtpMap(rtpmapline);\n var fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp: is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n }\n }\n // FIXME: parse headerExtensions, fecMechanisms and rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities / parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n var sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' UDP/TLS/RTP/SAVPF ';\n sdp += caps.codecs.map(function(codec) {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(function(codec) {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFtmp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n // FIXME: add headerExtensions, fecMechanismş and rtcp.\n sdp += 'a=rtcp-mux\\r\\n';\n return sdp;\n};\n\nSDPUtils.writeSessionBoilerplate = function() {\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\nSDPUtils.writeMediaSection = function(transceiver, caps, type, stream) {\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\n\n // Map ICE parameters (ufrag, pwd) to SDP.\n sdp += SDPUtils.writeIceParameters(\n transceiver.iceGatherer.getLocalParameters());\n\n // Map DTLS parameters to SDP.\n sdp += SDPUtils.writeDtlsParameters(\n transceiver.dtlsTransport.getLocalParameters(),\n type === 'offer' ? 'actpass' : 'active');\n\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\n\n if (transceiver.rtpSender && transceiver.rtpReceiver) {\n sdp += 'a=sendrecv\\r\\n';\n } else if (transceiver.rtpSender) {\n sdp += 'a=sendonly\\r\\n';\n } else if (transceiver.rtpReceiver) {\n sdp += 'a=recvonly\\r\\n';\n } else {\n sdp += 'a=inactive\\r\\n';\n }\n\n // FIXME: for RTX there might be multiple SSRCs. Not implemented in Edge yet.\n if (transceiver.rtpSender) {\n var msid = 'msid:' + stream.id + ' ' +\n transceiver.rtpSender.track.id + '\\r\\n';\n sdp += 'a=' + msid;\n sdp += 'a=ssrc:' + transceiver.sendSsrc + ' ' + msid;\n }\n // FIXME: this should be written by writeRtpDescription.\n sdp += 'a=ssrc:' + transceiver.sendSsrc + ' cname:' +\n SDPUtils.localCName + '\\r\\n';\n return sdp;\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n var lines = SDPUtils.splitLines(mediaSection);\n for (var i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substr(2);\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\n// Expose public methods.\nmodule.exports = SDPUtils;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/edge/edge_sdp.js\n ** module id = 187\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\n\nvar SDPUtils = require('./edge_sdp');\nvar logging = require('../utils').log;\nvar browserDetails = require('../utils').browserDetails;\n\nvar edgeShim = {\n shimPeerConnection: function() {\n if (window.RTCIceGatherer) {\n // ORTC defines an RTCIceCandidate object but no constructor.\n // Not implemented in Edge.\n if (!window.RTCIceCandidate) {\n window.RTCIceCandidate = function(args) {\n return args;\n };\n }\n // ORTC does not have a session description object but\n // other browsers (i.e. Chrome) that will support both PC and ORTC\n // in the future might have this defined already.\n if (!window.RTCSessionDescription) {\n window.RTCSessionDescription = function(args) {\n return args;\n };\n }\n }\n\n window.RTCPeerConnection = function(config) {\n var self = this;\n\n var _eventTarget = document.createDocumentFragment();\n ['addEventListener', 'removeEventListener', 'dispatchEvent'].forEach(\n function(method) {\n self[method] = _eventTarget[method].bind(_eventTarget);\n });\n\n this.onicecandidate = null;\n this.onaddstream = null;\n this.ontrack = null;\n this.onremovestream = null;\n this.onsignalingstatechange = null;\n this.oniceconnectionstatechange = null;\n this.onnegotiationneeded = null;\n this.ondatachannel = null;\n\n this.localStreams = [];\n this.remoteStreams = [];\n this.getLocalStreams = function() { return self.localStreams; };\n this.getRemoteStreams = function() { return self.remoteStreams; };\n\n this.localDescription = new RTCSessionDescription({\n type: '',\n sdp: ''\n });\n this.remoteDescription = new RTCSessionDescription({\n type: '',\n sdp: ''\n });\n this.signalingState = 'stable';\n this.iceConnectionState = 'new';\n this.iceGatheringState = 'new';\n\n this.iceOptions = {\n gatherPolicy: 'all',\n iceServers: []\n };\n if (config && config.iceTransportPolicy) {\n switch (config.iceTransportPolicy) {\n case 'all':\n case 'relay':\n this.iceOptions.gatherPolicy = config.iceTransportPolicy;\n break;\n case 'none':\n // FIXME: remove once implementation and spec have added this.\n throw new TypeError('iceTransportPolicy \"none\" not supported');\n }\n }\n if (config && config.iceServers) {\n // Edge does not like\n // 1) stun:\n // 2) turn: that does not have all of turn:host:port?transport=udp\n this.iceOptions.iceServers = config.iceServers.filter(function(server) {\n if (server && server.urls) {\n server.urls = server.urls.filter(function(url) {\n return url.indexOf('transport=udp') !== -1;\n })[0];\n return true;\n }\n return false;\n });\n }\n\n // per-track iceGathers, iceTransports, dtlsTransports, rtpSenders, ...\n // everything that is needed to describe a SDP m-line.\n this.transceivers = [];\n\n // since the iceGatherer is currently created in createOffer but we\n // must not emit candidates until after setLocalDescription we buffer\n // them in this array.\n this._localIceCandidatesBuffer = [];\n };\n\n window.RTCPeerConnection.prototype._emitBufferedCandidates = function() {\n var self = this;\n var sections = SDPUtils.splitSections(self.localDescription.sdp);\n // FIXME: need to apply ice candidates in a way which is async but in-order\n this._localIceCandidatesBuffer.forEach(function(event) {\n var end = !event.candidate || Object.keys(event.candidate).length == 0;\n if (end) {\n for (var j = 1; j < sections.length; j++) {\n sections[j] += 'a=end-of-candidates\\r\\n';\n }\n } else {\n sections[event.candidate.sdpMLineIndex + 1] +=\n 'a=' + event.candidate.candidate + '\\r\\n';\n }\n self.dispatchEvent(event);\n if (self.onicecandidate !== null) {\n self.onicecandidate(event);\n }\n if (!event.candidate) {\n self.iceGatheringState = 'complete';\n }\n });\n this._localIceCandidatesBuffer = [];\n this.localDescription.sdp = sections.join('');\n };\n\n window.RTCPeerConnection.prototype.addStream = function(stream) {\n // Clone is necessary for local demos mostly, attaching directly\n // to two different senders does not work (build 10547).\n this.localStreams.push(stream.clone());\n this._maybeFireNegotiationNeeded();\n };\n\n window.RTCPeerConnection.prototype.removeStream = function(stream) {\n var idx = this.localStreams.indexOf(stream);\n if (idx > -1) {\n this.localStreams.splice(idx, 1);\n this._maybeFireNegotiationNeeded();\n }\n };\n\n // Determines the intersection of local and remote capabilities.\n window.RTCPeerConnection.prototype._getCommonCapabilities =\n function(localCapabilities, remoteCapabilities) {\n var commonCapabilities = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: []\n };\n localCapabilities.codecs.forEach(function(lCodec) {\n for (var i = 0; i < remoteCapabilities.codecs.length; i++) {\n var rCodec = remoteCapabilities.codecs[i];\n if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() &&\n lCodec.clockRate === rCodec.clockRate &&\n lCodec.numChannels === rCodec.numChannels) {\n // push rCodec so we reply with offerer payload type\n commonCapabilities.codecs.push(rCodec);\n\n // FIXME: also need to determine intersection between\n // .rtcpFeedback and .parameters\n break;\n }\n }\n });\n\n localCapabilities.headerExtensions.forEach(function(lHeaderExtension) {\n for (var i = 0; i < remoteCapabilities.headerExtensions.length; i++) {\n var rHeaderExtension = remoteCapabilities.headerExtensions[i];\n if (lHeaderExtension.uri === rHeaderExtension.uri) {\n commonCapabilities.headerExtensions.push(rHeaderExtension);\n break;\n }\n }\n });\n\n // FIXME: fecMechanisms\n return commonCapabilities;\n };\n\n // Create ICE gatherer, ICE transport and DTLS transport.\n window.RTCPeerConnection.prototype._createIceAndDtlsTransports =\n function(mid, sdpMLineIndex) {\n var self = this;\n var iceGatherer = new RTCIceGatherer(self.iceOptions);\n var iceTransport = new RTCIceTransport(iceGatherer);\n iceGatherer.onlocalcandidate = function(evt) {\n var event = new Event('icecandidate');\n event.candidate = {sdpMid: mid, sdpMLineIndex: sdpMLineIndex};\n\n var cand = evt.candidate;\n var end = !cand || Object.keys(cand).length === 0;\n // Edge emits an empty object for RTCIceCandidateComplete‥\n if (end) {\n // polyfill since RTCIceGatherer.state is not implemented in Edge 10547 yet.\n if (iceGatherer.state === undefined) {\n iceGatherer.state = 'completed';\n }\n\n // Emit a candidate with type endOfCandidates to make the samples work.\n // Edge requires addIceCandidate with this empty candidate to start checking.\n // The real solution is to signal end-of-candidates to the other side when\n // getting the null candidate but some apps (like the samples) don't do that.\n event.candidate.candidate =\n 'candidate:1 1 udp 1 0.0.0.0 9 typ endOfCandidates';\n } else {\n // RTCIceCandidate doesn't have a component, needs to be added\n cand.component = iceTransport.component === 'RTCP' ? 2 : 1;\n event.candidate.candidate = SDPUtils.writeCandidate(cand);\n }\n\n var complete = self.transceivers.every(function(transceiver) {\n return transceiver.iceGatherer &&\n transceiver.iceGatherer.state === 'completed';\n });\n // update .localDescription with candidate and (potentially) end-of-candidates.\n // To make this harder, the gatherer might emit candidates before localdescription\n // is set. To make things worse, gather.getLocalCandidates still errors in\n // Edge 10547 when no candidates have been gathered yet.\n if (self.localDescription && self.localDescription.type !== '') {\n var sections = SDPUtils.splitSections(self.localDescription.sdp);\n sections[sdpMLineIndex + 1] += (!end ? 'a=' + event.candidate.candidate :\n 'a=end-of-candidates') + '\\r\\n';\n self.localDescription.sdp = sections.join('');\n }\n\n // Emit candidate if localDescription is set.\n // Also emits null candidate when all gatherers are complete.\n switch(self.iceGatheringState) {\n case 'new':\n self._localIceCandidatesBuffer.push(event);\n if (complete) {\n self._localIceCandidatesBuffer.push(new Event('icecandidate'));\n }\n break;\n case 'gathering':\n self._emitBufferedCandidates();\n self.dispatchEvent(event);\n if (self.onicecandidate !== null) {\n self.onicecandidate(event);\n }\n if (complete) {\n self.dispatchEvent(new Event('icecandidate'));\n if (self.onicecandidate !== null) {\n self.onicecandidate(new Event('icecandidate'));\n }\n self.iceGatheringState = 'complete';\n }\n break;\n case 'complete':\n // should not happen... currently!\n break;\n }\n };\n iceTransport.onicestatechange = function() {\n self._updateConnectionState();\n };\n\n var dtlsTransport = new RTCDtlsTransport(iceTransport);\n dtlsTransport.ondtlsstatechange = function() {\n self._updateConnectionState();\n };\n dtlsTransport.onerror = function() {\n // onerror does not set state to failed by itself.\n dtlsTransport.state = 'failed';\n self._updateConnectionState();\n };\n\n return {\n iceGatherer: iceGatherer,\n iceTransport: iceTransport,\n dtlsTransport: dtlsTransport\n };\n };\n\n // Start the RTP Sender and Receiver for a transceiver.\n window.RTCPeerConnection.prototype._transceive = function(transceiver,\n send, recv) {\n var params = this._getCommonCapabilities(transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n if (send && transceiver.rtpSender) {\n params.encodings = [{\n ssrc: transceiver.sendSsrc\n }];\n params.rtcp = {\n cname: SDPUtils.localCName,\n ssrc: transceiver.recvSsrc\n };\n transceiver.rtpSender.send(params);\n }\n if (recv && transceiver.rtpReceiver) {\n params.encodings = [{\n ssrc: transceiver.recvSsrc\n }];\n params.rtcp = {\n cname: transceiver.cname,\n ssrc: transceiver.sendSsrc\n };\n transceiver.rtpReceiver.receive(params);\n }\n };\n\n window.RTCPeerConnection.prototype.setLocalDescription =\n function(description) {\n var self = this;\n if (description.type === 'offer') {\n if (!this._pendingOffer) {\n } else {\n this.transceivers = this._pendingOffer;\n delete this._pendingOffer;\n }\n } else if (description.type === 'answer') {\n var sections = SDPUtils.splitSections(self.remoteDescription.sdp);\n var sessionpart = sections.shift();\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var transceiver = self.transceivers[sdpMLineIndex];\n var iceGatherer = transceiver.iceGatherer;\n var iceTransport = transceiver.iceTransport;\n var dtlsTransport = transceiver.dtlsTransport;\n var localCapabilities = transceiver.localCapabilities;\n var remoteCapabilities = transceiver.remoteCapabilities;\n var rejected = mediaSection.split('\\n', 1)[0]\n .split(' ', 2)[1] === '0';\n\n if (!rejected) {\n var remoteIceParameters = SDPUtils.getIceParameters(mediaSection,\n sessionpart);\n iceTransport.start(iceGatherer, remoteIceParameters, 'controlled');\n\n var remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection,\n sessionpart);\n dtlsTransport.start(remoteDtlsParameters);\n\n // Calculate intersection of capabilities.\n var params = self._getCommonCapabilities(localCapabilities,\n remoteCapabilities);\n\n // Start the RTCRtpSender. The RTCRtpReceiver for this transceiver\n // has already been started in setRemoteDescription.\n self._transceive(transceiver,\n params.codecs.length > 0,\n false);\n }\n });\n }\n\n this.localDescription = {\n type: description.type,\n sdp: description.sdp\n };\n switch (description.type) {\n case 'offer':\n this._updateSignalingState('have-local-offer');\n break;\n case 'answer':\n this._updateSignalingState('stable');\n break;\n default:\n throw new TypeError('unsupported type \"' + description.type + '\"');\n }\n\n // If a success callback was provided, emit ICE candidates after it has been\n // executed. Otherwise, emit callback after the Promise is resolved.\n var hasCallback = arguments.length > 1 &&\n typeof arguments[1] === 'function';\n if (hasCallback) {\n var cb = arguments[1];\n window.setTimeout(function() {\n cb();\n if (self.iceGatheringState === 'new') {\n self.iceGatheringState = 'gathering';\n }\n self._emitBufferedCandidates();\n }, 0);\n }\n var p = Promise.resolve();\n p.then(function() {\n if (!hasCallback) {\n if (self.iceGatheringState === 'new') {\n self.iceGatheringState = 'gathering';\n }\n // Usually candidates will be emitted earlier.\n window.setTimeout(self._emitBufferedCandidates.bind(self), 500);\n }\n });\n return p;\n };\n\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function(description) {\n var self = this;\n var stream = new MediaStream();\n var receiverList = [];\n var sections = SDPUtils.splitSections(description.sdp);\n var sessionpart = sections.shift();\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].substr(2).split(' ');\n var kind = mline[0];\n var rejected = mline[1] === '0';\n var direction = SDPUtils.getDirection(mediaSection, sessionpart);\n\n var transceiver;\n var iceGatherer;\n var iceTransport;\n var dtlsTransport;\n var rtpSender;\n var rtpReceiver;\n var sendSsrc;\n var recvSsrc;\n var localCapabilities;\n\n var track;\n // FIXME: ensure the mediaSection has rtcp-mux set.\n var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection);\n var remoteIceParameters;\n var remoteDtlsParameters;\n if (!rejected) {\n remoteIceParameters = SDPUtils.getIceParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection,\n sessionpart);\n }\n var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0].substr(6);\n\n var cname;\n // Gets the first SSRC. Note that with RTX there might be multiple SSRCs.\n var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(obj) {\n return obj.attribute === 'cname';\n })[0];\n if (remoteSsrc) {\n recvSsrc = parseInt(remoteSsrc.ssrc, 10);\n cname = remoteSsrc.value;\n }\n\n if (description.type === 'offer') {\n var transports = self._createIceAndDtlsTransports(mid, sdpMLineIndex);\n\n localCapabilities = RTCRtpReceiver.getCapabilities(kind);\n sendSsrc = (2 * sdpMLineIndex + 2) * 1001;\n\n rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind);\n\n track = rtpReceiver.track;\n receiverList.push([track, rtpReceiver]);\n // FIXME: not correct when there are multiple streams but that is\n // not currently supported in this shim.\n stream.addTrack(track);\n\n // FIXME: look at direction.\n if (self.localStreams.length > 0 &&\n self.localStreams[0].getTracks().length >= sdpMLineIndex) {\n // FIXME: actually more complicated, needs to match types etc\n var localtrack = self.localStreams[0].getTracks()[sdpMLineIndex];\n rtpSender = new RTCRtpSender(localtrack, transports.dtlsTransport);\n }\n\n self.transceivers[sdpMLineIndex] = {\n iceGatherer: transports.iceGatherer,\n iceTransport: transports.iceTransport,\n dtlsTransport: transports.dtlsTransport,\n localCapabilities: localCapabilities,\n remoteCapabilities: remoteCapabilities,\n rtpSender: rtpSender,\n rtpReceiver: rtpReceiver,\n kind: kind,\n mid: mid,\n cname: cname,\n sendSsrc: sendSsrc,\n recvSsrc: recvSsrc\n };\n // Start the RTCRtpReceiver now. The RTPSender is started in setLocalDescription.\n self._transceive(self.transceivers[sdpMLineIndex],\n false,\n direction === 'sendrecv' || direction === 'sendonly');\n } else if (description.type === 'answer' && !rejected) {\n transceiver = self.transceivers[sdpMLineIndex];\n iceGatherer = transceiver.iceGatherer;\n iceTransport = transceiver.iceTransport;\n dtlsTransport = transceiver.dtlsTransport;\n rtpSender = transceiver.rtpSender;\n rtpReceiver = transceiver.rtpReceiver;\n sendSsrc = transceiver.sendSsrc;\n //recvSsrc = transceiver.recvSsrc;\n localCapabilities = transceiver.localCapabilities;\n\n self.transceivers[sdpMLineIndex].recvSsrc = recvSsrc;\n self.transceivers[sdpMLineIndex].remoteCapabilities =\n remoteCapabilities;\n self.transceivers[sdpMLineIndex].cname = cname;\n\n iceTransport.start(iceGatherer, remoteIceParameters, 'controlling');\n dtlsTransport.start(remoteDtlsParameters);\n\n self._transceive(transceiver,\n direction === 'sendrecv' || direction === 'recvonly',\n direction === 'sendrecv' || direction === 'sendonly');\n\n if (rtpReceiver &&\n (direction === 'sendrecv' || direction === 'sendonly')) {\n track = rtpReceiver.track;\n receiverList.push([track, rtpReceiver]);\n stream.addTrack(track);\n } else {\n // FIXME: actually the receiver should be created later.\n delete transceiver.rtpReceiver;\n }\n }\n });\n\n this.remoteDescription = {\n type: description.type,\n sdp: description.sdp\n };\n switch (description.type) {\n case 'offer':\n this._updateSignalingState('have-remote-offer');\n break;\n case 'answer':\n this._updateSignalingState('stable');\n break;\n default:\n throw new TypeError('unsupported type \"' + description.type + '\"');\n }\n if (stream.getTracks().length) {\n self.remoteStreams.push(stream);\n window.setTimeout(function() {\n var event = new Event('addstream');\n event.stream = stream;\n self.dispatchEvent(event);\n if (self.onaddstream !== null) {\n window.setTimeout(function() {\n self.onaddstream(event);\n }, 0);\n }\n\n receiverList.forEach(function(item) {\n var track = item[0];\n var receiver = item[1];\n var event = new Event('track');\n event.track = track;\n event.receiver = receiver;\n event.streams = [stream];\n self.dispatchEvent(event);\n if (self.ontrack !== null) {\n window.setTimeout(function() {\n self.ontrack(event);\n }, 0);\n }\n });\n }, 0);\n }\n if (arguments.length > 1 && typeof arguments[1] === 'function') {\n window.setTimeout(arguments[1], 0);\n }\n return Promise.resolve();\n };\n\n window.RTCPeerConnection.prototype.close = function() {\n this.transceivers.forEach(function(transceiver) {\n /* not yet\n if (transceiver.iceGatherer) {\n transceiver.iceGatherer.close();\n }\n */\n if (transceiver.iceTransport) {\n transceiver.iceTransport.stop();\n }\n if (transceiver.dtlsTransport) {\n transceiver.dtlsTransport.stop();\n }\n if (transceiver.rtpSender) {\n transceiver.rtpSender.stop();\n }\n if (transceiver.rtpReceiver) {\n transceiver.rtpReceiver.stop();\n }\n });\n // FIXME: clean up tracks, local streams, remote streams, etc\n this._updateSignalingState('closed');\n };\n\n // Update the signaling state.\n window.RTCPeerConnection.prototype._updateSignalingState =\n function(newState) {\n this.signalingState = newState;\n var event = new Event('signalingstatechange');\n this.dispatchEvent(event);\n if (this.onsignalingstatechange !== null) {\n this.onsignalingstatechange(event);\n }\n };\n\n // Determine whether to fire the negotiationneeded event.\n window.RTCPeerConnection.prototype._maybeFireNegotiationNeeded =\n function() {\n // Fire away (for now).\n var event = new Event('negotiationneeded');\n this.dispatchEvent(event);\n if (this.onnegotiationneeded !== null) {\n this.onnegotiationneeded(event);\n }\n };\n\n // Update the connection state.\n window.RTCPeerConnection.prototype._updateConnectionState =\n function() {\n var self = this;\n var newState;\n var states = {\n 'new': 0,\n closed: 0,\n connecting: 0,\n checking: 0,\n connected: 0,\n completed: 0,\n failed: 0\n };\n this.transceivers.forEach(function(transceiver) {\n states[transceiver.iceTransport.state]++;\n states[transceiver.dtlsTransport.state]++;\n });\n // ICETransport.completed and connected are the same for this purpose.\n states['connected'] += states['completed'];\n\n newState = 'new';\n if (states['failed'] > 0) {\n newState = 'failed';\n } else if (states['connecting'] > 0 || states['checking'] > 0) {\n newState = 'connecting';\n } else if (states['disconnected'] > 0) {\n newState = 'disconnected';\n } else if (states['new'] > 0) {\n newState = 'new';\n } else if (states['connecting'] > 0 || states['completed'] > 0) {\n newState = 'connected';\n }\n\n if (newState !== self.iceConnectionState) {\n self.iceConnectionState = newState;\n var event = new Event('iceconnectionstatechange');\n this.dispatchEvent(event);\n if (this.oniceconnectionstatechange !== null) {\n this.oniceconnectionstatechange(event);\n }\n }\n };\n\n window.RTCPeerConnection.prototype.createOffer = function() {\n var self = this;\n if (this._pendingOffer) {\n throw new Error('createOffer called while there is a pending offer.');\n }\n var offerOptions;\n if (arguments.length === 1 && typeof arguments[0] !== 'function') {\n offerOptions = arguments[0];\n } else if (arguments.length === 3) {\n offerOptions = arguments[2];\n }\n\n var tracks = [];\n var numAudioTracks = 0;\n var numVideoTracks = 0;\n // Default to sendrecv.\n if (this.localStreams.length) {\n numAudioTracks = this.localStreams[0].getAudioTracks().length;\n numVideoTracks = this.localStreams[0].getVideoTracks().length;\n }\n // Determine number of audio and video tracks we need to send/recv.\n if (offerOptions) {\n // Reject Chrome legacy constraints.\n if (offerOptions.mandatory || offerOptions.optional) {\n throw new TypeError(\n 'Legacy mandatory/optional constraints not supported.');\n }\n if (offerOptions.offerToReceiveAudio !== undefined) {\n numAudioTracks = offerOptions.offerToReceiveAudio;\n }\n if (offerOptions.offerToReceiveVideo !== undefined) {\n numVideoTracks = offerOptions.offerToReceiveVideo;\n }\n }\n if (this.localStreams.length) {\n // Push local streams.\n this.localStreams[0].getTracks().forEach(function(track) {\n tracks.push({\n kind: track.kind,\n track: track,\n wantReceive: track.kind === 'audio' ?\n numAudioTracks > 0 : numVideoTracks > 0\n });\n if (track.kind === 'audio') {\n numAudioTracks--;\n } else if (track.kind === 'video') {\n numVideoTracks--;\n }\n });\n }\n // Create M-lines for recvonly streams.\n while (numAudioTracks > 0 || numVideoTracks > 0) {\n if (numAudioTracks > 0) {\n tracks.push({\n kind: 'audio',\n wantReceive: true\n });\n numAudioTracks--;\n }\n if (numVideoTracks > 0) {\n tracks.push({\n kind: 'video',\n wantReceive: true\n });\n numVideoTracks--;\n }\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate();\n var transceivers = [];\n tracks.forEach(function(mline, sdpMLineIndex) {\n // For each track, create an ice gatherer, ice transport, dtls transport,\n // potentially rtpsender and rtpreceiver.\n var track = mline.track;\n var kind = mline.kind;\n var mid = SDPUtils.generateIdentifier();\n\n var transports = self._createIceAndDtlsTransports(mid, sdpMLineIndex);\n\n var localCapabilities = RTCRtpSender.getCapabilities(kind);\n var rtpSender;\n var rtpReceiver;\n\n // generate an ssrc now, to be used later in rtpSender.send\n var sendSsrc = (2 * sdpMLineIndex + 1) * 1001;\n if (track) {\n rtpSender = new RTCRtpSender(track, transports.dtlsTransport);\n }\n\n if (mline.wantReceive) {\n rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind);\n }\n\n transceivers[sdpMLineIndex] = {\n iceGatherer: transports.iceGatherer,\n iceTransport: transports.iceTransport,\n dtlsTransport: transports.dtlsTransport,\n localCapabilities: localCapabilities,\n remoteCapabilities: null,\n rtpSender: rtpSender,\n rtpReceiver: rtpReceiver,\n kind: kind,\n mid: mid,\n sendSsrc: sendSsrc,\n recvSsrc: null\n };\n var transceiver = transceivers[sdpMLineIndex];\n sdp += SDPUtils.writeMediaSection(transceiver,\n transceiver.localCapabilities, 'offer', self.localStreams[0]);\n });\n\n this._pendingOffer = transceivers;\n var desc = new RTCSessionDescription({\n type: 'offer',\n sdp: sdp\n });\n if (arguments.length && typeof arguments[0] === 'function') {\n window.setTimeout(arguments[0], 0, desc);\n }\n return Promise.resolve(desc);\n };\n\n window.RTCPeerConnection.prototype.createAnswer = function() {\n var self = this;\n var answerOptions;\n if (arguments.length === 1 && typeof arguments[0] !== 'function') {\n answerOptions = arguments[0];\n } else if (arguments.length === 3) {\n answerOptions = arguments[2];\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate();\n this.transceivers.forEach(function(transceiver) {\n // Calculate intersection of capabilities.\n var commonCapabilities = self._getCommonCapabilities(\n transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n\n sdp += SDPUtils.writeMediaSection(transceiver, commonCapabilities,\n 'answer', self.localStreams[0]);\n });\n\n var desc = new RTCSessionDescription({\n type: 'answer',\n sdp: sdp\n });\n if (arguments.length && typeof arguments[0] === 'function') {\n window.setTimeout(arguments[0], 0, desc);\n }\n return Promise.resolve(desc);\n };\n\n window.RTCPeerConnection.prototype.addIceCandidate = function(candidate) {\n var mLineIndex = candidate.sdpMLineIndex;\n if (candidate.sdpMid) {\n for (var i = 0; i < this.transceivers.length; i++) {\n if (this.transceivers[i].mid === candidate.sdpMid) {\n mLineIndex = i;\n break;\n }\n }\n }\n var transceiver = this.transceivers[mLineIndex];\n if (transceiver) {\n var cand = Object.keys(candidate.candidate).length > 0 ?\n SDPUtils.parseCandidate(candidate.candidate) : {};\n // Ignore Chrome's invalid candidates since Edge does not like them.\n if (cand.protocol === 'tcp' && cand.port === 0) {\n return;\n }\n // Ignore RTCP candidates, we assume RTCP-MUX.\n if (cand.component !== '1') {\n return;\n }\n // A dirty hack to make samples work.\n if (cand.type === 'endOfCandidates') {\n cand = {};\n }\n transceiver.iceTransport.addRemoteCandidate(cand);\n\n // update the remoteDescription.\n var sections = SDPUtils.splitSections(this.remoteDescription.sdp);\n sections[mLineIndex + 1] += (cand.type ? candidate.candidate.trim()\n : 'a=end-of-candidates') + '\\r\\n';\n this.remoteDescription.sdp = sections.join('');\n }\n if (arguments.length > 1 && typeof arguments[1] === 'function') {\n window.setTimeout(arguments[1], 0);\n }\n return Promise.resolve();\n };\n\n window.RTCPeerConnection.prototype.getStats = function() {\n var promises = [];\n this.transceivers.forEach(function(transceiver) {\n ['rtpSender', 'rtpReceiver', 'iceGatherer', 'iceTransport',\n 'dtlsTransport'].forEach(function(method) {\n if (transceiver[method]) {\n promises.push(transceiver[method].getStats());\n }\n });\n });\n var cb = arguments.length > 1 && typeof arguments[1] === 'function' &&\n arguments[1];\n return new Promise(function(resolve) {\n var results = {};\n Promise.all(promises).then(function(res) {\n res.forEach(function(result) {\n Object.keys(result).forEach(function(id) {\n results[id] = result[id];\n });\n });\n if (cb) {\n window.setTimeout(cb, 0, results);\n }\n resolve(results);\n });\n });\n };\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n element.srcObject = stream;\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n to.srcObject = from.srcObject;\n }\n}\n\n// Expose public methods.\nmodule.exports = {\n shimPeerConnection: edgeShim.shimPeerConnection,\n attachMediaStream: edgeShim.attachMediaStream,\n reattachMediaStream: edgeShim.reattachMediaStream\n}\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/edge/edge_shim.js\n ** module id = 188\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\n\nvar logging = require('../utils').log;\nvar browserDetails = require('../utils').browserDetails;\n\nvar firefoxShim = {\n shimOnTrack: function() {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get: function() { return this._ontrack; },\n set: function(f) {\n var self = this;\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n this.removeEventListener('addstream', this._ontrackpoly);\n }\n this.addEventListener('track', this._ontrack = f);\n this.addEventListener('addstream', this._ontrackpoly = function(e) {\n e.stream.getTracks().forEach(function(track) {\n var event = new Event('track');\n event.track = track;\n event.receiver = {track: track};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n }.bind(this));\n }.bind(this));\n }\n });\n }\n },\n\n shimSourceObject: function() {\n // Firefox has supported mozSrcObject since FF22, unprefixed in 42.\n if (typeof window === 'object') {\n if (window.HTMLMediaElement &&\n !('srcObject' in window.HTMLMediaElement.prototype)) {\n // Shim the srcObject property, once, when HTMLMediaElement is found.\n Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', {\n get: function() {\n return this.mozSrcObject;\n },\n set: function(stream) {\n this.mozSrcObject = stream;\n }\n });\n }\n }\n },\n\n shimPeerConnection: function() {\n // The RTCPeerConnection object.\n if (!window.RTCPeerConnection) {\n window.RTCPeerConnection = function(pcConfig, pcConstraints) {\n if (browserDetails.version < 38) {\n // .urls is not supported in FF < 38.\n // create RTCIceServers with a single url.\n if (pcConfig && pcConfig.iceServers) {\n var newIceServers = [];\n for (var i = 0; i < pcConfig.iceServers.length; i++) {\n var server = pcConfig.iceServers[i];\n if (server.hasOwnProperty('urls')) {\n for (var j = 0; j < server.urls.length; j++) {\n var newServer = {\n url: server.urls[j]\n };\n if (server.urls[j].indexOf('turn') === 0) {\n newServer.username = server.username;\n newServer.credential = server.credential;\n }\n newIceServers.push(newServer);\n }\n } else {\n newIceServers.push(pcConfig.iceServers[i]);\n }\n }\n pcConfig.iceServers = newIceServers;\n }\n }\n return new mozRTCPeerConnection(pcConfig, pcConstraints); // jscs:ignore requireCapitalizedConstructors\n };\n window.RTCPeerConnection.prototype = mozRTCPeerConnection.prototype;\n\n // wrap static methods. Currently just generateCertificate.\n if (mozRTCPeerConnection.generateCertificate) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get: function() {\n if (arguments.length) {\n return mozRTCPeerConnection.generateCertificate.apply(null,\n arguments);\n } else {\n return mozRTCPeerConnection.generateCertificate;\n }\n }\n });\n }\n\n window.RTCSessionDescription = mozRTCSessionDescription;\n window.RTCIceCandidate = mozRTCIceCandidate;\n }\n },\n\n shimGetUserMedia: function() {\n // getUserMedia constraints shim.\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n var constraintsToFF37_ = function(c) {\n if (typeof c !== 'object' || c.require) {\n return c;\n }\n var require = [];\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n var r = c[key] = (typeof c[key] === 'object') ?\n c[key] : {ideal: c[key]};\n if (r.min !== undefined ||\n r.max !== undefined || r.exact !== undefined) {\n require.push(key);\n }\n if (r.exact !== undefined) {\n if (typeof r.exact === 'number') {\n r. min = r.max = r.exact;\n } else {\n c[key] = r.exact;\n }\n delete r.exact;\n }\n if (r.ideal !== undefined) {\n c.advanced = c.advanced || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[key] = {min: r.ideal, max: r.ideal};\n } else {\n oc[key] = r.ideal;\n }\n c.advanced.push(oc);\n delete r.ideal;\n if (!Object.keys(r).length) {\n delete c[key];\n }\n }\n });\n if (require.length) {\n c.require = require;\n }\n return c;\n };\n if (browserDetails.version < 38) {\n logging('spec: ' + JSON.stringify(constraints));\n if (constraints.audio) {\n constraints.audio = constraintsToFF37_(constraints.audio);\n }\n if (constraints.video) {\n constraints.video = constraintsToFF37_(constraints.video);\n }\n logging('ff37: ' + JSON.stringify(constraints));\n }\n return navigator.mozGetUserMedia(constraints, onSuccess, onError);\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n }\n\n // Shim for mediaDevices on older versions.\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {getUserMedia: getUserMediaPromise_,\n addEventListener: function() { },\n removeEventListener: function() { }\n };\n }\n navigator.mediaDevices.enumerateDevices =\n navigator.mediaDevices.enumerateDevices || function() {\n return new Promise(function(resolve) {\n var infos = [\n {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''},\n {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''}\n ];\n resolve(infos);\n });\n };\n\n if (browserDetails.version < 41) {\n // Work around http://bugzil.la/1169665\n var orgEnumerateDevices =\n navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices);\n navigator.mediaDevices.enumerateDevices = function() {\n return orgEnumerateDevices().then(undefined, function(e) {\n if (e.name === 'NotFoundError') {\n return [];\n }\n throw e;\n });\n };\n }\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n element.srcObject = stream;\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n to.srcObject = from.srcObject;\n }\n}\n\n// Expose public methods.\nmodule.exports = {\n shimOnTrack: firefoxShim.shimOnTrack,\n shimSourceObject: firefoxShim.shimSourceObject,\n shimPeerConnection: firefoxShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia'),\n attachMediaStream: firefoxShim.attachMediaStream,\n reattachMediaStream: firefoxShim.reattachMediaStream\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/firefox/firefox_shim.js\n ** module id = 189\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\n\nvar logging = require('../utils').log;\nvar browserDetails = require('../utils').browserDetails;\n\n// Expose public methods.\nmodule.exports = function() {\n // getUserMedia constraints shim.\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n var constraintsToFF37_ = function(c) {\n if (typeof c !== 'object' || c.require) {\n return c;\n }\n var require = [];\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n var r = c[key] = (typeof c[key] === 'object') ?\n c[key] : {ideal: c[key]};\n if (r.min !== undefined ||\n r.max !== undefined || r.exact !== undefined) {\n require.push(key);\n }\n if (r.exact !== undefined) {\n if (typeof r.exact === 'number') {\n r. min = r.max = r.exact;\n } else {\n c[key] = r.exact;\n }\n delete r.exact;\n }\n if (r.ideal !== undefined) {\n c.advanced = c.advanced || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[key] = {min: r.ideal, max: r.ideal};\n } else {\n oc[key] = r.ideal;\n }\n c.advanced.push(oc);\n delete r.ideal;\n if (!Object.keys(r).length) {\n delete c[key];\n }\n }\n });\n if (require.length) {\n c.require = require;\n }\n return c;\n };\n if (browserDetails.version < 38) {\n logging('spec: ' + JSON.stringify(constraints));\n if (constraints.audio) {\n constraints.audio = constraintsToFF37_(constraints.audio);\n }\n if (constraints.video) {\n constraints.video = constraintsToFF37_(constraints.video);\n }\n logging('ff37: ' + JSON.stringify(constraints));\n }\n return navigator.mozGetUserMedia(constraints, onSuccess, onError);\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n }\n\n // Shim for mediaDevices on older versions.\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {getUserMedia: getUserMediaPromise_,\n addEventListener: function() { },\n removeEventListener: function() { }\n };\n }\n navigator.mediaDevices.enumerateDevices =\n navigator.mediaDevices.enumerateDevices || function() {\n return new Promise(function(resolve) {\n var infos = [\n {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''},\n {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''}\n ];\n resolve(infos);\n });\n };\n\n if (browserDetails.version < 41) {\n // Work around http://bugzil.la/1169665\n var orgEnumerateDevices =\n navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices);\n navigator.mediaDevices.enumerateDevices = function() {\n return orgEnumerateDevices().then(undefined, function(e) {\n if (e.name === 'NotFoundError') {\n return [];\n }\n throw e;\n });\n };\n }\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/firefox/getusermedia.js\n ** module id = 190\n ** module chunks = 0\n **/","module.e = __WEBPACK_EXTERNAL_MODULE_191__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"get-pixels\"\n ** module id = 191\n ** module chunks = 0\n **/","module.e = __WEBPACK_EXTERNAL_MODULE_192__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"ndarray\"\n ** module id = 192\n ** module chunks = 0\n **/","module.e = __WEBPACK_EXTERNAL_MODULE_193__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"ndarray-linear-interpolate\"\n ** module id = 193\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 444a1cc281a5eab30b53","webpack:///./~/lodash/isArray.js","webpack:///./~/webrtc-adapter/src/js/utils.js","webpack:///./~/lodash/isObject.js","webpack:///./~/lodash/_root.js","webpack:///./~/lodash/isObjectLike.js","webpack:///./src/reader/ean_reader.js","webpack:///./~/lodash/_Map.js","webpack:///./src/common/image_debug.js","webpack:///./src/reader/barcode_reader.js","webpack:///./~/gl-vec2/clone.js","webpack:///./~/lodash/isArguments.js","webpack:///./~/lodash/isFunction.js","webpack:///./~/lodash/merge.js","webpack:///./src/common/array_helper.js","webpack:///./~/lodash/_Stack.js","webpack:///./~/lodash/_assocIndexOf.js","webpack:///./~/lodash/_getNative.js","webpack:///./~/lodash/_isHostObject.js","webpack:///./~/lodash/_isIndex.js","webpack:///./~/lodash/_isKeyable.js","webpack:///./~/lodash/_nativeCreate.js","webpack:///./~/lodash/eq.js","webpack:///./~/lodash/isArrayLike.js","webpack:///./~/lodash/isLength.js","webpack:///./~/lodash/keys.js","webpack:///./src/common/cv_utils.js","webpack:///./src/common/image_wrapper.js","webpack:///./~/lodash/_Symbol.js","webpack:///./~/lodash/_arrayReduce.js","webpack:///./~/lodash/_copyObject.js","webpack:///./~/lodash/_isKey.js","webpack:///./~/lodash/_isPrototype.js","webpack:///./~/lodash/isArrayLikeObject.js","webpack:///./~/lodash/isString.js","webpack:///./~/lodash/isTypedArray.js","webpack:///./~/lodash/keysIn.js","webpack:///./src/analytics/result_collector.js","webpack:///./src/config/config.js","webpack:///./src/locator/tracer.js","webpack:///./src/reader/code_39_reader.js","webpack:///./~/gl-vec2/dot.js","webpack:///./~/lodash/_Uint8Array.js","webpack:///./~/lodash/_arrayEach.js","webpack:///./~/lodash/_assignMergeValue.js","webpack:///./~/lodash/_assignValue.js","webpack:///./~/lodash/_assocDelete.js","webpack:///./~/lodash/_assocGet.js","webpack:///./~/lodash/_assocHas.js","webpack:///./~/lodash/_assocSet.js","webpack:///./~/lodash/_baseCastPath.js","webpack:///./~/lodash/_baseFor.js","webpack:///./~/lodash/_baseGet.js","webpack:///./~/lodash/_baseHas.js","webpack:///./~/lodash/_baseIsEqual.js","webpack:///./~/lodash/_baseProperty.js","webpack:///./~/lodash/_cloneArrayBuffer.js","webpack:///./~/lodash/_copyArray.js","webpack:///./~/lodash/_equalArrays.js","webpack:///./~/lodash/_getTag.js","webpack:///./~/lodash/_hashHas.js","webpack:///./~/lodash/_indexKeys.js","webpack:///./~/lodash/_mapToArray.js","webpack:///./~/lodash/_setToArray.js","webpack:///./~/lodash/get.js","webpack:///./~/lodash/pick.js","webpack:///./~/lodash/rest.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/quagga.js","webpack:///./lib/frame_grabber.js","webpack:///./lib/input_stream.js","webpack:///./src/common/cluster.js","webpack:///./src/common/events.js","webpack:///./src/common/subImage.js","webpack:///./src/common/typedefs.js","webpack:///./src/config/config.node.js","webpack:///./src/decoder/barcode_decoder.js","webpack:///./src/decoder/bresenham.js","webpack:///./src/input/camera_access.js","webpack:///./src/locator/barcode_locator.js","webpack:///./src/locator/rasterizer.js","webpack:///./src/locator/skeletonizer.js","webpack:///./src/reader/codabar_reader.js","webpack:///./src/reader/code_128_reader.js","webpack:///./src/reader/code_39_vin_reader.js","webpack:///./src/reader/ean_2_reader.js","webpack:///./src/reader/ean_5_reader.js","webpack:///./src/reader/ean_8_reader.js","webpack:///./src/reader/i2of5_reader.js","webpack:///./src/reader/upc_e_reader.js","webpack:///./src/reader/upc_reader.js","webpack:///./src/scanner.js","webpack:///./~/gl-mat2/copy.js","webpack:///./~/gl-mat2/create.js","webpack:///./~/gl-mat2/invert.js","webpack:///./~/gl-vec2/scale.js","webpack:///./~/gl-vec2/transformMat2.js","webpack:///./~/gl-vec3/clone.js","webpack:///./~/lodash/_Hash.js","webpack:///./~/lodash/_MapCache.js","webpack:///./~/lodash/_Reflect.js","webpack:///./~/lodash/_Set.js","webpack:///./~/lodash/_WeakMap.js","webpack:///./~/lodash/_addMapEntry.js","webpack:///./~/lodash/_addSetEntry.js","webpack:///./~/lodash/_apply.js","webpack:///./~/lodash/_arrayMap.js","webpack:///./~/lodash/_arrayPush.js","webpack:///./~/lodash/_arraySome.js","webpack:///./~/lodash/_baseAssign.js","webpack:///./~/lodash/_baseClone.js","webpack:///./~/lodash/_baseCreate.js","webpack:///./~/lodash/_baseFlatten.js","webpack:///./~/lodash/_baseForIn.js","webpack:///./~/lodash/_baseForOwn.js","webpack:///./~/lodash/_baseHasIn.js","webpack:///./~/lodash/_baseIsEqualDeep.js","webpack:///./~/lodash/_baseIsMatch.js","webpack:///./~/lodash/_baseIteratee.js","webpack:///./~/lodash/_baseKeys.js","webpack:///./~/lodash/_baseKeysIn.js","webpack:///./~/lodash/_baseMatches.js","webpack:///./~/lodash/_baseMatchesProperty.js","webpack:///./~/lodash/_baseMerge.js","webpack:///./~/lodash/_baseMergeDeep.js","webpack:///./~/lodash/_basePick.js","webpack:///./~/lodash/_basePickBy.js","webpack:///./~/lodash/_basePropertyDeep.js","webpack:///./~/lodash/_baseSlice.js","webpack:///./~/lodash/_baseTimes.js","webpack:///./~/lodash/_baseToPairs.js","webpack:///./~/lodash/_checkGlobal.js","webpack:///./~/lodash/_cloneBuffer.js","webpack:///./~/lodash/_cloneMap.js","webpack:///./~/lodash/_cloneRegExp.js","webpack:///./~/lodash/_cloneSet.js","webpack:///./~/lodash/_cloneSymbol.js","webpack:///./~/lodash/_cloneTypedArray.js","webpack:///./~/lodash/_copyObjectWith.js","webpack:///./~/lodash/_copySymbols.js","webpack:///./~/lodash/_createAssigner.js","webpack:///./~/lodash/_createBaseFor.js","webpack:///./~/lodash/_equalByTag.js","webpack:///./~/lodash/_equalObjects.js","webpack:///./~/lodash/_getLength.js","webpack:///./~/lodash/_getMatchData.js","webpack:///./~/lodash/_getSymbols.js","webpack:///./~/lodash/_hasPath.js","webpack:///./~/lodash/_hashDelete.js","webpack:///./~/lodash/_hashGet.js","webpack:///./~/lodash/_hashSet.js","webpack:///./~/lodash/_initCloneArray.js","webpack:///./~/lodash/_initCloneByTag.js","webpack:///./~/lodash/_initCloneObject.js","webpack:///./~/lodash/_isIterateeCall.js","webpack:///./~/lodash/_isStrictComparable.js","webpack:///./~/lodash/_iteratorToArray.js","webpack:///./~/lodash/_mapClear.js","webpack:///./~/lodash/_mapDelete.js","webpack:///./~/lodash/_mapGet.js","webpack:///./~/lodash/_mapHas.js","webpack:///./~/lodash/_mapSet.js","webpack:///./~/lodash/_parent.js","webpack:///./~/lodash/_stackClear.js","webpack:///./~/lodash/_stackDelete.js","webpack:///./~/lodash/_stackGet.js","webpack:///./~/lodash/_stackHas.js","webpack:///./~/lodash/_stackSet.js","webpack:///./~/lodash/_stringToPath.js","webpack:///./~/lodash/constant.js","webpack:///./~/lodash/hasIn.js","webpack:///./~/lodash/identity.js","webpack:///./~/lodash/isBuffer.js","webpack:///./~/lodash/isEmpty.js","webpack:///./~/lodash/isNative.js","webpack:///./~/lodash/isPlainObject.js","webpack:///./~/lodash/isSymbol.js","webpack:///./~/lodash/last.js","webpack:///./~/lodash/omitBy.js","webpack:///./~/lodash/property.js","webpack:///./~/lodash/toInteger.js","webpack:///./~/lodash/toNumber.js","webpack:///./~/lodash/toPairs.js","webpack:///./~/lodash/toPlainObject.js","webpack:///./~/lodash/toString.js","webpack:///./~/sdp/sdp.js","webpack:///./~/webrtc-adapter/src/js/adapter_core.js","webpack:///./~/webrtc-adapter/src/js/chrome/chrome_shim.js","webpack:///./~/webrtc-adapter/src/js/chrome/getusermedia.js","webpack:///./~/webrtc-adapter/src/js/edge/edge_shim.js","webpack:///./~/webrtc-adapter/src/js/edge/getusermedia.js","webpack:///./~/webrtc-adapter/src/js/firefox/firefox_shim.js","webpack:///./~/webrtc-adapter/src/js/firefox/getusermedia.js","webpack:///./~/webrtc-adapter/src/js/safari/safari_shim.js","webpack:///external \"get-pixels\"","webpack:///external \"ndarray\"","webpack:///external \"ndarray-linear-interpolate\""],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,cAAa,QAAQ;AACrB,eAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,eAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAA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A;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;;AAEA;AACA;;AAEA;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;SCxCgB;SAuBA;SA2CA;SAsBA;SAWA;SAgBA;SAiBA;SAkDA;SAQA;SA0CA;SAsGA;SA2BA;SA2BA;SAcA;SAcA;SASA;SA6BA;SAMA;SAKA;SAiCA;SAiBA;SA2BA;SAsBA;SAsCA;SAmCA;SAiDA;SAgCA;;AA5tBhB;;;;AACA;;;;;;AACA,KAAM,OAAO;AACT,YAAO,oBAAQ,CAAR,CAAP;EADE;AAGN,KAAM,OAAO;AACT,YAAO,oBAA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EA;;;;;;;ACvBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1EA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrDA;;;;;;AAEA,UAAS,QAAT,CAAkB,UAAlB,EAA8B,IAA9B,EAAoC;AAC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YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClBA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1BA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;;AAEA;;;;;;;AChBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;;AAEA;AACA;AACA;AACA;AACA,YAAW,YAAY;AACvB,cAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1DA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvBA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,qBAAqB;AAChC;AACA,cAAa,OAAO;AACpB;AACA;AACA,kBAAiB;AACjB;AACA;AACA,WAAU;AACV;AACA;AACA,6BAA4B;AAC5B,EAAC;;AAED;;;;;;;ACzBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;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AACpB,yBAAQ,IAAR,CAAa,WAAb,EAA0B,UAAC,MAAD,EAAY;AAClC,2BAAK,IAAL,GADkC;AAElC,oCAAe,IAAf,CAAoB,IAApB,EAA0B,MAA1B,EAFkC;kBAAZ,EAGvB,IAHH,EADoB;AAKpB,0BALoB;cAAN,CAAlB,CAD2C;UAAjC;AASd,iBAAQ,gBAAR;MA9CJ,CApcqB;EAAzB;;mBAsfe,c;;;;;;ACtgBf;;AAEA;AACA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;;AAEA;AACA;AACA;AACA;AACA,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC1BA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,YAAW,OAAO;AAClB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACdA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;AChBA;;AAEA;AACA;AACA;AACA,YAAW,KAAK;AAChB,cAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACdA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;;AAEA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;;AAEA;AACA;;AAEA;;;;;;;ACLA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACNA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACNA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,EAAE;AACb,YAAW,KAAK;AAChB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,QAAQ;AACnB,YAAW,QAAQ;AACnB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;AClIA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtCA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7EA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5DA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA6C,eAAe;AAC5D;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjFA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG,IAAI;AACP;;AAEA;;;;;;;ACrBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACpBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACjBA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;;;;;;;ACXA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,OAAO,WAAW;AAC7B,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA,yBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;AC/BA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO,WAAW;AAC7B,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;ACpCA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACxBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjFA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;;AAEA;;;;;;;ACdA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvCA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,EAAE;AACb;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;ACzEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACdA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;;;;;;;ACXA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;AClBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA,2BAA0B,gBAAgB,gBAAgB,SAAS,GAAG,GAAG;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrDA;AACA;AACA;;AAEA;AACA,qCAAoC;;AAEpC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpDA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACjEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AClBA;AACA;;AAEA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,uBAAuB;AAClC,cAAa,OAAO;AACpB;AACA;AACA,kBAAiB;AACjB;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;AC7BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA,OAAM,OAAO,OAAO,SAAS,EAAE,EAAE;AACjC,OAAM,OAAO,OAAO,SAAS,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7BA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3CA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC1DA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,SAAS;AACtB,WAAU;AACV;AACA,cAAa,SAAS;AACtB,WAAU;AACV;AACA;AACA;AACA;;AAEA;;;;;;;AC9BA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7CA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAoB;AACpB,2BAA0B;AAC1B;AACA;AACA;AACA,0DAAyD;AACzD,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,kDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,kBAAkB,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC1eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;AC1FD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,YAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf,YAAW;AACX;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D,YAAY;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,0DAAyD,qBAAqB;AAC9E,0DAAyD;AACzD;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,sCAAsC;AACjE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;;AAEf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA,gBAAe;AACf,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sDAAqD;AACrD,UAAS;AACT,QAAO;AACP;AACA;AACA,0BAAyB,8BAA8B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACz+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa,yCAAyC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA,QAAO;AACP;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,gCAAgC;AAC3D;AACA;AACA,gCAA+B,wBAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,iCAAgC;AAChC,uCAAsC,EAAE;AACxC,0CAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,gEAAgE;AAC/E,gBAAe;AACf;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,+BAA8B;AAC9B,qCAAoC,EAAE;AACtC,wCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,gEAAgE;AAC7E,cAAa;AACb;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;;;;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,EAAE;;AAEhC;AACA,oDAAmD,EAAE;AACrD,+CAA8C,EAAE;;AAEhD;AACA;AACA,sCAAqC,EAAE;;AAEvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjCA,4C;;;;;;ACAA,4C;;;;;;ACAA,4C","file":"quagga.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"get-pixels\"), require(\"ndarray\"), require(\"ndarray-linear-interpolate\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"get-pixels\", \"ndarray\", \"ndarray-linear-interpolate\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quagga\"] = factory(require(\"get-pixels\"), require(\"ndarray\"), require(\"ndarray-linear-interpolate\"));\n\telse\n\t\troot[\"Quagga\"] = factory(root[\"get-pixels\"], root[\"ndarray\"], root[\"ndarray-linear-interpolate\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_193__, __WEBPACK_EXTERNAL_MODULE_194__, __WEBPACK_EXTERNAL_MODULE_195__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \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].e;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\te: {},\n \t\t\ti: moduleId,\n \t\t\tl: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.e, module, module.e, __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.e;\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// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 196);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 444a1cc281a5eab30b53\n **/","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type {Function}\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArray.js\n ** module id = 0\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar logDisabled_ = true;\n\n// Utility methods.\nvar utils = {\n disableLog: function(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n logDisabled_ = bool;\n return (bool) ? 'adapter.js logging disabled' :\n 'adapter.js logging enabled';\n },\n\n log: function() {\n if (typeof window === 'object') {\n if (logDisabled_) {\n return;\n }\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\n console.log.apply(console, arguments);\n }\n }\n },\n\n /**\n * Extract browser version out of the provided user agent string.\n *\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\n extractVersion: function(uastring, expr, pos) {\n var match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n },\n\n /**\n * Browser detector.\n *\n * @return {object} result containing browser, version and minVersion\n * properties.\n */\n detectBrowser: function() {\n // Returned result object.\n var result = {};\n result.browser = null;\n result.version = null;\n result.minVersion = null;\n\n // Fail early if it's not a browser\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a browser.';\n return result;\n }\n\n // Firefox.\n if (navigator.mozGetUserMedia) {\n result.browser = 'firefox';\n result.version = this.extractVersion(navigator.userAgent,\n /Firefox\\/([0-9]+)\\./, 1);\n result.minVersion = 31;\n\n // all webkit-based browsers\n } else if (navigator.webkitGetUserMedia) {\n // Chrome, Chromium, Webview, Opera, all use the chrome shim for now\n if (window.webkitRTCPeerConnection) {\n result.browser = 'chrome';\n result.version = this.extractVersion(navigator.userAgent,\n /Chrom(e|ium)\\/([0-9]+)\\./, 2);\n result.minVersion = 38;\n\n // Safari or unknown webkit-based\n // for the time being Safari has support for MediaStreams but not webRTC\n } else {\n // Safari UA substrings of interest for reference:\n // - webkit version: AppleWebKit/602.1.25 (also used in Op,Cr)\n // - safari UI version: Version/9.0.3 (unique to Safari)\n // - safari UI webkit version: Safari/601.4.4 (also used in Op,Cr)\n //\n // if the webkit version and safari UI webkit versions are equals,\n // ... this is a stable version.\n //\n // only the internal webkit version is important today to know if\n // media streams are supported\n //\n if (navigator.userAgent.match(/Version\\/(\\d+).(\\d+)/)) {\n result.browser = 'safari';\n result.version = this.extractVersion(navigator.userAgent,\n /AppleWebKit\\/([0-9]+)\\./, 1);\n result.minVersion = 602;\n\n // unknown webkit-based browser\n } else {\n result.browser = 'Unsupported webkit-based browser ' +\n 'with GUM support but no WebRTC support.';\n return result;\n }\n }\n\n // Edge.\n } else if (navigator.mediaDevices &&\n navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)) {\n result.browser = 'edge';\n result.version = this.extractVersion(navigator.userAgent,\n /Edge\\/(\\d+).(\\d+)$/, 2);\n result.minVersion = 10547;\n\n // Default fallthrough: not supported.\n } else {\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n // Warn if version is less than minVersion.\n if (result.version < result.minVersion) {\n utils.log('Browser: ' + result.browser + ' Version: ' + result.version +\n ' < minimum supported version: ' + result.minVersion +\n '\\n some things might not work!');\n }\n\n return result;\n }\n};\n\n// Export.\nmodule.exports = {\n log: utils.log,\n disableLog: utils.disableLog,\n browserDetails: utils.detectBrowser(),\n extractVersion: utils.extractVersion\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/utils.js\n ** module id = 1\n ** module chunks = 0\n **/","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isObject.js\n ** module id = 2\n ** module chunks = 0\n **/","var checkGlobal = require('./_checkGlobal');\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);\n\n/** Detect free variable `self`. */\nvar freeSelf = checkGlobal(objectTypes[typeof self] && self);\n\n/** Detect free variable `window`. */\nvar freeWindow = checkGlobal(objectTypes[typeof window] && window);\n\n/** Detect `this` as the global object. */\nvar thisGlobal = checkGlobal(objectTypes[typeof this] && this);\n\n/**\n * Used as a reference to the global object.\n *\n * The `this` value is used if it's the global object to avoid Greasemonkey's\n * restricted `window` object, otherwise the `window` object is used.\n */\nvar root = freeGlobal ||\n ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||\n freeSelf || thisGlobal || Function('return this')();\n\nmodule.exports = root;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_root.js\n ** module id = 3\n ** module chunks = 0\n **/","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isObjectLike.js\n ** module id = 4\n ** module chunks = 0\n **/","import BarcodeReader from './barcode_reader';\r\nimport {merge} from 'lodash';\r\n\r\nfunction EANReader(opts, supplements) {\r\n opts = merge(getDefaulConfig(), opts);\r\n BarcodeReader.call(this, opts, supplements);\r\n}\r\n\r\nfunction getDefaulConfig() {\r\n var config = {};\r\n\r\n Object.keys(EANReader.CONFIG_KEYS).forEach(function(key) {\r\n config[key] = EANReader.CONFIG_KEYS[key].default;\r\n });\r\n return config;\r\n}\r\n\r\nvar properties = {\r\n CODE_L_START: {value: 0},\r\n CODE_G_START: {value: 10},\r\n START_PATTERN: {value: [1, 1, 1]},\r\n STOP_PATTERN: {value: [1, 1, 1]},\r\n MIDDLE_PATTERN: {value: [1, 1, 1, 1, 1]},\r\n EXTENSION_START_PATTERN: {value: [1, 1, 2]},\r\n CODE_PATTERN: {value: [\r\n [3, 2, 1, 1],\r\n [2, 2, 2, 1],\r\n [2, 1, 2, 2],\r\n [1, 4, 1, 1],\r\n [1, 1, 3, 2],\r\n [1, 2, 3, 1],\r\n [1, 1, 1, 4],\r\n [1, 3, 1, 2],\r\n [1, 2, 1, 3],\r\n [3, 1, 1, 2],\r\n [1, 1, 2, 3],\r\n [1, 2, 2, 2],\r\n [2, 2, 1, 2],\r\n [1, 1, 4, 1],\r\n [2, 3, 1, 1],\r\n [1, 3, 2, 1],\r\n [4, 1, 1, 1],\r\n [2, 1, 3, 1],\r\n [3, 1, 2, 1],\r\n [2, 1, 1, 3]\r\n ]},\r\n CODE_FREQUENCY: {value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26]},\r\n SINGLE_CODE_ERROR: {value: 0.70},\r\n AVG_CODE_ERROR: {value: 0.48},\r\n FORMAT: {value: \"ean_13\", writeable: false}\r\n};\r\n\r\nEANReader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nEANReader.prototype.constructor = EANReader;\r\n\r\nEANReader.prototype._decodeCode = function(start, coderange) {\r\n var counter = [0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = start,\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: start,\r\n end: start\r\n },\r\n code,\r\n error;\r\n\r\n if (!coderange) {\r\n coderange = self.CODE_PATTERN.length;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n for (code = 0; code < coderange; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n bestMatch.end = i;\r\n if (bestMatch.error > self.AVG_CODE_ERROR) {\r\n return null;\r\n }\r\n return bestMatch;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findPattern = function(pattern, offset, isWhite, tryHarder, epsilon) {\r\n var counter = [],\r\n self = this,\r\n i,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n },\r\n error,\r\n j,\r\n sum;\r\n\r\n if (!offset) {\r\n offset = self._nextSet(self._row);\r\n }\r\n\r\n if (isWhite === undefined) {\r\n isWhite = false;\r\n }\r\n\r\n if (tryHarder === undefined) {\r\n tryHarder = true;\r\n }\r\n\r\n if ( epsilon === undefined) {\r\n epsilon = self.AVG_CODE_ERROR;\r\n }\r\n\r\n for ( i = 0; i < pattern.length; i++) {\r\n counter[i] = 0;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n error = self._matchPattern(counter, pattern);\r\n\r\n if (error < epsilon) {\r\n bestMatch.error = error;\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n return bestMatch;\r\n }\r\n if (tryHarder) {\r\n for ( j = 0; j < counter.length - 2; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[counter.length - 2] = 0;\r\n counter[counter.length - 1] = 0;\r\n counterPos--;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findStart = function() {\r\n var self = this,\r\n leadingWhitespaceStart,\r\n offset = self._nextSet(self._row),\r\n startInfo;\r\n\r\n while (!startInfo) {\r\n startInfo = self._findPattern(self.START_PATTERN, offset);\r\n if (!startInfo) {\r\n return null;\r\n }\r\n leadingWhitespaceStart = startInfo.start - (startInfo.end - startInfo.start);\r\n if (leadingWhitespaceStart >= 0) {\r\n if (self._matchRange(leadingWhitespaceStart, startInfo.start, 0)) {\r\n return startInfo;\r\n }\r\n }\r\n offset = startInfo.end;\r\n startInfo = null;\r\n }\r\n};\r\n\r\nEANReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + (endInfo.end - endInfo.start);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._findEnd = function(offset, isWhite) {\r\n var self = this,\r\n endInfo = self._findPattern(self.STOP_PATTERN, offset, isWhite, false);\r\n\r\n return endInfo !== null ? self._verifyTrailingWhitespace(endInfo) : null;\r\n};\r\n\r\nEANReader.prototype._calculateFirstDigit = function(codeFrequency) {\r\n var i,\r\n self = this;\r\n\r\n for ( i = 0; i < self.CODE_FREQUENCY.length; i++) {\r\n if (codeFrequency === self.CODE_FREQUENCY[i]) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n codeFrequency = 0x0,\r\n firstDigit;\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end);\r\n if (!code) {\r\n return null;\r\n }\r\n if (code.code >= self.CODE_G_START) {\r\n code.code = code.code - self.CODE_G_START;\r\n codeFrequency |= 1 << (5 - i);\r\n } else {\r\n codeFrequency |= 0 << (5 - i);\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n\r\n firstDigit = self._calculateFirstDigit(codeFrequency);\r\n if (firstDigit === null) {\r\n return null;\r\n }\r\n result.unshift(firstDigit);\r\n\r\n code = self._findPattern(self.MIDDLE_PATTERN, code.end, true, false);\r\n if (code === null) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code);\r\n }\r\n\r\n return code;\r\n};\r\n\r\nEANReader.prototype._decode = function() {\r\n var startInfo,\r\n self = this,\r\n code,\r\n result = [],\r\n decodedCodes = [],\r\n resultInfo = {};\r\n\r\n startInfo = self._findStart();\r\n if (!startInfo) {\r\n return null;\r\n }\r\n code = {\r\n code: startInfo.code,\r\n start: startInfo.start,\r\n end: startInfo.end\r\n };\r\n decodedCodes.push(code);\r\n code = self._decodePayload(code, result, decodedCodes);\r\n if (!code) {\r\n return null;\r\n }\r\n code = self._findEnd(code.end, false);\r\n if (!code){\r\n return null;\r\n }\r\n\r\n decodedCodes.push(code);\r\n\r\n // Checksum\r\n if (!self._checksum(result)) {\r\n return null;\r\n }\r\n\r\n if (this.supplements.length > 0) {\r\n let ext = this._decodeExtensions(code.end);\r\n if (!ext) {\r\n return null;\r\n }\r\n let lastCode = ext.decodedCodes[ext.decodedCodes.length-1],\r\n endInfo = {\r\n start: lastCode.start + (((lastCode.end - lastCode.start) / 2) | 0),\r\n end: lastCode.end\r\n };\r\n if(!self._verifyTrailingWhitespace(endInfo)) {\r\n return null;\r\n }\r\n resultInfo = {\r\n supplement: ext,\r\n code: result.join(\"\") + ext.code\r\n }\r\n }\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: code.end,\r\n codeset: \"\",\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes,\r\n ...resultInfo\r\n };\r\n};\r\n\r\nEANReader.prototype._decodeExtensions = function(offset) {\r\n var i,\r\n start = this._nextSet(this._row, offset),\r\n startInfo = this._findPattern(this.EXTENSION_START_PATTERN, start, false, false),\r\n result;\r\n\r\n if (startInfo === null) {\r\n return null;\r\n }\r\n\r\n for (i = 0; i < this.supplements.length; i++) {\r\n result = this.supplements[i].decode(this._row, startInfo.end);\r\n if (result !== null) {\r\n return {\r\n code: result.code,\r\n start,\r\n startInfo,\r\n end: result.end,\r\n codeset: \"\",\r\n decodedCodes: result.decodedCodes\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nEANReader.prototype._checksum = function(result) {\r\n var sum = 0, i;\r\n\r\n for ( i = result.length - 2; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n for ( i = result.length - 1; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n return sum % 10 === 0;\r\n};\r\n\r\nEANReader.CONFIG_KEYS = {\r\n supplements: {\r\n 'type': 'arrayOf(string)',\r\n 'default': [],\r\n 'description': 'Allowed extensions to be decoded (2 and/or 5)'\r\n }\r\n};\r\n\r\nexport default (EANReader);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_reader.js\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Map.js\n ** module id = 6\n ** module chunks = 0\n **/","export default {\r\n drawRect: function(pos, size, ctx, style){\r\n ctx.strokeStyle = style.color;\r\n ctx.fillStyle = style.color;\r\n ctx.lineWidth = 1;\r\n ctx.beginPath();\r\n ctx.strokeRect(pos.x, pos.y, size.x, size.y);\r\n },\r\n drawPath: function(path, def, ctx, style) {\r\n ctx.strokeStyle = style.color;\r\n ctx.fillStyle = style.color;\r\n ctx.lineWidth = style.lineWidth;\r\n ctx.beginPath();\r\n ctx.moveTo(path[0][def.x], path[0][def.y]);\r\n for (var j = 1; j < path.length; j++) {\r\n ctx.lineTo(path[j][def.x], path[j][def.y]);\r\n }\r\n ctx.closePath();\r\n ctx.stroke();\r\n },\r\n drawImage: function(imageData, size, ctx) {\r\n var canvasData = ctx.getImageData(0, 0, size.x, size.y),\r\n data = canvasData.data,\r\n imageDataPos = imageData.length,\r\n canvasDataPos = data.length,\r\n value;\r\n\r\n if (canvasDataPos / imageDataPos !== 4) {\r\n return false;\r\n }\r\n while (imageDataPos--){\r\n value = imageData[imageDataPos];\r\n data[--canvasDataPos] = 255;\r\n data[--canvasDataPos] = value;\r\n data[--canvasDataPos] = value;\r\n data[--canvasDataPos] = value;\r\n }\r\n ctx.putImageData(canvasData, 0, 0);\r\n return true;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/image_debug.js\n **/","function BarcodeReader(config, supplements) {\r\n this._row = [];\r\n this.config = config || {};\r\n this.supplements = supplements;\r\n return this;\r\n}\r\n\r\nBarcodeReader.prototype._nextUnset = function(line, start) {\r\n var i;\r\n\r\n if (start === undefined) {\r\n start = 0;\r\n }\r\n for (i = start; i < line.length; i++) {\r\n if (!line[i]) {\r\n return i;\r\n }\r\n }\r\n return line.length;\r\n};\r\n\r\nBarcodeReader.prototype._matchPattern = function(counter, code, maxSingleError) {\r\n var i,\r\n error = 0,\r\n singleError = 0,\r\n sum = 0,\r\n modulo = 0,\r\n barWidth,\r\n count,\r\n scaled;\r\n\r\n maxSingleError = maxSingleError || this.SINGLE_CODE_ERROR || 1;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n sum += counter[i];\r\n modulo += code[i];\r\n }\r\n if (sum < modulo) {\r\n return Number.MAX_VALUE;\r\n }\r\n barWidth = sum / modulo;\r\n maxSingleError *= barWidth;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n count = counter[i];\r\n scaled = code[i] * barWidth;\r\n singleError = Math.abs(count - scaled) / scaled;\r\n if (singleError > maxSingleError) {\r\n return Number.MAX_VALUE;\r\n }\r\n error += singleError;\r\n }\r\n return error / modulo;\r\n};\r\n\r\nBarcodeReader.prototype._nextSet = function(line, offset) {\r\n var i;\r\n\r\n offset = offset || 0;\r\n for (i = offset; i < line.length; i++) {\r\n if (line[i]) {\r\n return i;\r\n }\r\n }\r\n return line.length;\r\n};\r\n\r\nBarcodeReader.prototype._correctBars = function(counter, correction, indices) {\r\n var length = indices.length,\r\n tmp = 0;\r\n while(length--) {\r\n tmp = counter[indices[length]] * (1 - ((1 - correction) / 2));\r\n if (tmp > 1) {\r\n counter[indices[length]] = tmp;\r\n }\r\n }\r\n}\r\n\r\nBarcodeReader.prototype._matchTrace = function(cmpCounter, epsilon) {\r\n var counter = [],\r\n i,\r\n self = this,\r\n offset = self._nextSet(self._row),\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0\r\n },\r\n error;\r\n\r\n if (cmpCounter) {\r\n for ( i = 0; i < cmpCounter.length; i++) {\r\n counter.push(0);\r\n }\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n error = self._matchPattern(counter, cmpCounter);\r\n\r\n if (error < epsilon) {\r\n bestMatch.start = i - offset;\r\n bestMatch.end = i;\r\n bestMatch.counter = counter;\r\n return bestMatch;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n } else {\r\n counter.push(0);\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n counterPos++;\r\n counter.push(0);\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n }\r\n\r\n // if cmpCounter was not given\r\n bestMatch.start = offset;\r\n bestMatch.end = self._row.length - 1;\r\n bestMatch.counter = counter;\r\n return bestMatch;\r\n};\r\n\r\nBarcodeReader.prototype.decodePattern = function(pattern) {\r\n var self = this,\r\n result;\r\n\r\n self._row = pattern;\r\n result = self._decode();\r\n if (result === null) {\r\n self._row.reverse();\r\n result = self._decode();\r\n if (result) {\r\n result.direction = BarcodeReader.DIRECTION.REVERSE;\r\n result.start = self._row.length - result.start;\r\n result.end = self._row.length - result.end;\r\n }\r\n } else {\r\n result.direction = BarcodeReader.DIRECTION.FORWARD;\r\n }\r\n if (result) {\r\n result.format = self.FORMAT;\r\n }\r\n return result;\r\n};\r\n\r\nBarcodeReader.prototype._matchRange = function(start, end, value) {\r\n var i;\r\n\r\n start = start < 0 ? 0 : start;\r\n for (i = start; i < end; i++) {\r\n if (this._row[i] !== value) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nBarcodeReader.prototype._fillCounters = function(offset, end, isWhite) {\r\n var self = this,\r\n counterPos = 0,\r\n i,\r\n counters = [];\r\n\r\n isWhite = (typeof isWhite !== 'undefined') ? isWhite : true;\r\n offset = (typeof offset !== 'undefined') ? offset : self._nextUnset(self._row);\r\n end = end || self._row.length;\r\n\r\n counters[counterPos] = 0;\r\n for (i = offset; i < end; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counters[counterPos]++;\r\n } else {\r\n counterPos++;\r\n counters[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return counters;\r\n};\r\n\r\nObject.defineProperty(BarcodeReader.prototype, \"FORMAT\", {\r\n value: 'unknown',\r\n writeable: false\r\n});\r\n\r\nBarcodeReader.DIRECTION = {\r\n FORWARD: 1,\r\n REVERSE: -1\r\n};\r\n\r\nBarcodeReader.Exception = {\r\n StartNotFoundException: \"Start-Info was not found!\",\r\n CodeNotFoundException: \"Code could not be found!\",\r\n PatternNotFoundException: \"Pattern could not be found!\"\r\n};\r\n\r\nBarcodeReader.CONFIG_KEYS = {};\r\n\r\nexport default BarcodeReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/barcode_reader.js\n **/","module.exports = clone\n\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {vec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\nfunction clone(a) {\n var out = new Float32Array(2)\n out[0] = a[0]\n out[1] = a[1]\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/clone.js\n ** module id = 9\n ** module chunks = 0\n **/","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\nmodule.exports = isArguments;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArguments.js\n ** module id = 10\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8 which returns 'object' for typed array and weak map constructors,\n // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isFunction.js\n ** module id = 11\n ** module chunks = 0\n **/","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable properties of source objects into the destination\n * object. Source properties that resolve to `undefined` are skipped if a\n * destination value exists. Array and plain object properties are merged\n * recursively.Other objects and value types are overridden by assignment.\n * Source objects are applied from left to right. Subsequent sources\n * overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/merge.js\n ** module id = 12\n ** module chunks = 0\n **/","export default {\r\n init: function(arr, val) {\r\n var l = arr.length;\r\n while (l--) {\r\n arr[l] = val;\r\n }\r\n },\r\n\r\n /**\r\n * Shuffles the content of an array\r\n * @return {Array} the array itself shuffled\r\n */\r\n shuffle: function(arr) {\r\n var i = arr.length - 1, j, x;\r\n for (i; i >= 0; i--) {\r\n j = Math.floor(Math.random() * i);\r\n x = arr[i];\r\n arr[i] = arr[j];\r\n arr[j] = x;\r\n }\r\n return arr;\r\n },\r\n\r\n toPointList: function(arr) {\r\n var i, j, row = [], rows = [];\r\n for ( i = 0; i < arr.length; i++) {\r\n row = [];\r\n for ( j = 0; j < arr[i].length; j++) {\r\n row[j] = arr[i][j];\r\n }\r\n rows[i] = \"[\" + row.join(\",\") + \"]\";\r\n }\r\n return \"[\" + rows.join(\",\\r\\n\") + \"]\";\r\n },\r\n\r\n /**\r\n * returns the elements which's score is bigger than the threshold\r\n * @return {Array} the reduced array\r\n */\r\n threshold: function(arr, threshold, scoreFunc) {\r\n var i, queue = [];\r\n for ( i = 0; i < arr.length; i++) {\r\n if (scoreFunc.apply(arr, [arr[i]]) >= threshold) {\r\n queue.push(arr[i]);\r\n }\r\n }\r\n return queue;\r\n },\r\n\r\n maxIndex: function(arr) {\r\n var i, max = 0;\r\n for ( i = 0; i < arr.length; i++) {\r\n if (arr[i] > arr[max]) {\r\n max = i;\r\n }\r\n }\r\n return max;\r\n },\r\n\r\n max: function(arr) {\r\n var i, max = 0;\r\n for ( i = 0; i < arr.length; i++) {\r\n if (arr[i] > max) {\r\n max = arr[i];\r\n }\r\n }\r\n return max;\r\n },\r\n\r\n sum: function(arr) {\r\n var length = arr.length,\r\n sum = 0;\r\n\r\n while (length--) {\r\n sum += arr[length];\r\n }\r\n return sum;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/array_helper.js\n **/","var stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction Stack(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = values[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add functions to the `Stack` cache.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Stack.js\n ** module id = 14\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/**\n * Gets the index at which the first occurrence of `key` is found in `array`\n * of key-value pairs.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocIndexOf.js\n ** module id = 15\n ** module chunks = 0\n **/","var isNative = require('./isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getNative.js\n ** module id = 16\n ** module chunks = 0\n **/","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\nmodule.exports = isHostObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isHostObject.js\n ** module id = 17\n ** module chunks = 0\n **/","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isIndex.js\n ** module id = 18\n ** module chunks = 0\n **/","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return type == 'number' || type == 'boolean' ||\n (type == 'string' && value != '__proto__') || value == null;\n}\n\nmodule.exports = isKeyable;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isKeyable.js\n ** module id = 19\n ** module chunks = 0\n **/","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_nativeCreate.js\n ** module id = 20\n ** module chunks = 0\n **/","/**\n * Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var other = { 'user': 'fred' };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/eq.js\n ** module id = 21\n ** module chunks = 0\n **/","var getLength = require('./_getLength'),\n isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value)) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArrayLike.js\n ** module id = 22\n ** module chunks = 0\n **/","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isLength.js\n ** module id = 23\n ** module chunks = 0\n **/","var baseHas = require('./_baseHas'),\n baseKeys = require('./_baseKeys'),\n indexKeys = require('./_indexKeys'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n var isProto = isPrototype(object);\n if (!(isProto || isArrayLike(object))) {\n return baseKeys(object);\n }\n var indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n for (var key in object) {\n if (baseHas(object, key) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(isProto && key == 'constructor')) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/keys.js\n ** module id = 24\n ** module chunks = 0\n **/","import Cluster2 from './cluster';\r\nimport ArrayHelper from './array_helper';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone')\r\n};\r\nconst vec3 = {\r\n clone: require('gl-vec3/clone')\r\n};\r\n\r\n/**\r\n * @param x x-coordinate\r\n * @param y y-coordinate\r\n * @return ImageReference {x,y} Coordinate\r\n */\r\nexport function imageRef(x, y) {\r\n var that = {\r\n x: x,\r\n y: y,\r\n toVec2: function() {\r\n return vec2.clone([this.x, this.y]);\r\n },\r\n toVec3: function() {\r\n return vec3.clone([this.x, this.y, 1]);\r\n },\r\n round: function() {\r\n this.x = this.x > 0.0 ? Math.floor(this.x + 0.5) : Math.floor(this.x - 0.5);\r\n this.y = this.y > 0.0 ? Math.floor(this.y + 0.5) : Math.floor(this.y - 0.5);\r\n return this;\r\n }\r\n };\r\n return that;\r\n};\r\n\r\n/**\r\n * Computes an integral image of a given grayscale image.\r\n * @param imageDataContainer {ImageDataContainer} the image to be integrated\r\n */\r\nexport function computeIntegralImage2(imageWrapper, integralWrapper) {\r\n var imageData = imageWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0, posA = 0, posB = 0, posC = 0, posD = 0, x, y;\r\n\r\n // sum up first column\r\n posB = width;\r\n sum = 0;\r\n for ( y = 1; y < height; y++) {\r\n sum += imageData[posA];\r\n integralImageData[posB] += sum;\r\n posA += width;\r\n posB += width;\r\n }\r\n\r\n posA = 0;\r\n posB = 1;\r\n sum = 0;\r\n for ( x = 1; x < width; x++) {\r\n sum += imageData[posA];\r\n integralImageData[posB] += sum;\r\n posA++;\r\n posB++;\r\n }\r\n\r\n for ( y = 1; y < height; y++) {\r\n posA = y * width + 1;\r\n posB = (y - 1) * width + 1;\r\n posC = y * width;\r\n posD = (y - 1) * width;\r\n for ( x = 1; x < width; x++) {\r\n integralImageData[posA] +=\r\n imageData[posA] + integralImageData[posB] + integralImageData[posC] - integralImageData[posD];\r\n posA++;\r\n posB++;\r\n posC++;\r\n posD++;\r\n }\r\n }\r\n};\r\n\r\nexport function computeIntegralImage(imageWrapper, integralWrapper) {\r\n var imageData = imageWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0;\r\n\r\n // sum up first row\r\n for (var i = 0; i < width; i++) {\r\n sum += imageData[i];\r\n integralImageData[i] = sum;\r\n }\r\n\r\n for (var v = 1; v < height; v++) {\r\n sum = 0;\r\n for (var u = 0; u < width; u++) {\r\n sum += imageData[v * width + u];\r\n integralImageData[((v) * width) + u] = sum + integralImageData[(v - 1) * width + u];\r\n }\r\n }\r\n};\r\n\r\nexport function thresholdImage(imageWrapper, threshold, targetWrapper) {\r\n if (!targetWrapper) {\r\n targetWrapper = imageWrapper;\r\n }\r\n var imageData = imageWrapper.data, length = imageData.length, targetData = targetWrapper.data;\r\n\r\n while (length--) {\r\n targetData[length] = imageData[length] < threshold ? 1 : 0;\r\n }\r\n};\r\n\r\nexport function computeHistogram(imageWrapper, bitsPerPixel) {\r\n if (!bitsPerPixel) {\r\n bitsPerPixel = 8;\r\n }\r\n var imageData = imageWrapper.data,\r\n length = imageData.length,\r\n bitShift = 8 - bitsPerPixel,\r\n bucketCnt = 1 << bitsPerPixel,\r\n hist = new Int32Array(bucketCnt);\r\n\r\n while (length--) {\r\n hist[imageData[length] >> bitShift]++;\r\n }\r\n return hist;\r\n};\r\n\r\nexport function sharpenLine(line) {\r\n var i,\r\n length = line.length,\r\n left = line[0],\r\n center = line[1],\r\n right;\r\n\r\n for (i = 1; i < length - 1; i++) {\r\n right = line[i + 1];\r\n // -1 4 -1 kernel\r\n line[i - 1] = (((center * 2) - left - right)) & 255;\r\n left = center;\r\n center = right;\r\n }\r\n return line;\r\n};\r\n\r\nexport function determineOtsuThreshold(imageWrapper, bitsPerPixel) {\r\n if (!bitsPerPixel) {\r\n bitsPerPixel = 8;\r\n }\r\n var hist,\r\n threshold,\r\n bitShift = 8 - bitsPerPixel;\r\n\r\n function px(init, end) {\r\n var sum = 0, i;\r\n for ( i = init; i <= end; i++) {\r\n sum += hist[i];\r\n }\r\n return sum;\r\n }\r\n\r\n function mx(init, end) {\r\n var i, sum = 0;\r\n\r\n for ( i = init; i <= end; i++) {\r\n sum += i * hist[i];\r\n }\r\n\r\n return sum;\r\n }\r\n\r\n function determineThreshold() {\r\n var vet = [0], p1, p2, p12, k, m1, m2, m12,\r\n max = (1 << bitsPerPixel) - 1;\r\n\r\n hist = computeHistogram(imageWrapper, bitsPerPixel);\r\n for ( k = 1; k < max; k++) {\r\n p1 = px(0, k);\r\n p2 = px(k + 1, max);\r\n p12 = p1 * p2;\r\n if (p12 === 0) {\r\n p12 = 1;\r\n }\r\n m1 = mx(0, k) * p2;\r\n m2 = mx(k + 1, max) * p1;\r\n m12 = m1 - m2;\r\n vet[k] = m12 * m12 / p12;\r\n }\r\n return ArrayHelper.maxIndex(vet);\r\n }\r\n\r\n threshold = determineThreshold();\r\n return threshold << bitShift;\r\n};\r\n\r\nexport function otsuThreshold(imageWrapper, targetWrapper) {\r\n var threshold = determineOtsuThreshold(imageWrapper);\r\n\r\n thresholdImage(imageWrapper, threshold, targetWrapper);\r\n return threshold;\r\n};\r\n\r\n// local thresholding\r\nexport function computeBinaryImage(imageWrapper, integralWrapper, targetWrapper) {\r\n computeIntegralImage(imageWrapper, integralWrapper);\r\n\r\n if (!targetWrapper) {\r\n targetWrapper = imageWrapper;\r\n }\r\n var imageData = imageWrapper.data;\r\n var targetData = targetWrapper.data;\r\n var width = imageWrapper.size.x;\r\n var height = imageWrapper.size.y;\r\n var integralImageData = integralWrapper.data;\r\n var sum = 0, v, u, kernel = 3, A, B, C, D, avg, size = (kernel * 2 + 1) * (kernel * 2 + 1);\r\n\r\n // clear out top & bottom-border\r\n for ( v = 0; v <= kernel; v++) {\r\n for ( u = 0; u < width; u++) {\r\n targetData[((v) * width) + u] = 0;\r\n targetData[(((height - 1) - v) * width) + u] = 0;\r\n }\r\n }\r\n\r\n // clear out left & right border\r\n for ( v = kernel; v < height - kernel; v++) {\r\n for ( u = 0; u <= kernel; u++) {\r\n targetData[((v) * width) + u] = 0;\r\n targetData[((v) * width) + (width - 1 - u)] = 0;\r\n }\r\n }\r\n\r\n for ( v = kernel + 1; v < height - kernel - 1; v++) {\r\n for ( u = kernel + 1; u < width - kernel; u++) {\r\n A = integralImageData[(v - kernel - 1) * width + (u - kernel - 1)];\r\n B = integralImageData[(v - kernel - 1) * width + (u + kernel)];\r\n C = integralImageData[(v + kernel) * width + (u - kernel - 1)];\r\n D = integralImageData[(v + kernel) * width + (u + kernel)];\r\n sum = D - C - B + A;\r\n avg = sum / (size);\r\n targetData[v * width + u] = imageData[v * width + u] > (avg + 5) ? 0 : 1;\r\n }\r\n }\r\n};\r\n\r\nexport function cluster(points, threshold, property) {\r\n var i, k, cluster, point, clusters = [];\r\n\r\n if (!property) {\r\n property = \"rad\";\r\n }\r\n\r\n function addToCluster(newPoint) {\r\n var found = false;\r\n for ( k = 0; k < clusters.length; k++) {\r\n cluster = clusters[k];\r\n if (cluster.fits(newPoint)) {\r\n cluster.add(newPoint);\r\n found = true;\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n // iterate over each cloud\r\n for ( i = 0; i < points.length; i++) {\r\n point = Cluster2.createPoint(points[i], i, property);\r\n if (!addToCluster(point)) {\r\n clusters.push(Cluster2.create(point, threshold));\r\n }\r\n }\r\n return clusters;\r\n};\r\n\r\nexport const Tracer = {\r\n trace: function(points, vec) {\r\n var iteration, maxIterations = 10, top = [], result = [], centerPos = 0, currentPos = 0;\r\n\r\n function trace(idx, forward) {\r\n var from, to, toIdx, predictedPos, thresholdX = 1, thresholdY = Math.abs(vec[1] / 10), found = false;\r\n\r\n function match(pos, predicted) {\r\n if (pos.x > (predicted.x - thresholdX)\r\n && pos.x < (predicted.x + thresholdX)\r\n && pos.y > (predicted.y - thresholdY)\r\n && pos.y < (predicted.y + thresholdY)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // check if the next index is within the vec specifications\r\n // if not, check as long as the threshold is met\r\n\r\n from = points[idx];\r\n if (forward) {\r\n predictedPos = {\r\n x: from.x + vec[0],\r\n y: from.y + vec[1]\r\n };\r\n } else {\r\n predictedPos = {\r\n x: from.x - vec[0],\r\n y: from.y - vec[1]\r\n };\r\n }\r\n\r\n toIdx = forward ? idx + 1 : idx - 1;\r\n to = points[toIdx];\r\n while (to && ( found = match(to, predictedPos)) !== true && (Math.abs(to.y - from.y) < vec[1])) {\r\n toIdx = forward ? toIdx + 1 : toIdx - 1;\r\n to = points[toIdx];\r\n }\r\n\r\n return found ? toIdx : null;\r\n }\r\n\r\n for ( iteration = 0; iteration < maxIterations; iteration++) {\r\n // randomly select point to start with\r\n centerPos = Math.floor(Math.random() * points.length);\r\n\r\n // trace forward\r\n top = [];\r\n currentPos = centerPos;\r\n top.push(points[currentPos]);\r\n while (( currentPos = trace(currentPos, true)) !== null) {\r\n top.push(points[currentPos]);\r\n }\r\n if (centerPos > 0) {\r\n currentPos = centerPos;\r\n while (( currentPos = trace(currentPos, false)) !== null) {\r\n top.push(points[currentPos]);\r\n }\r\n }\r\n\r\n if (top.length > result.length) {\r\n result = top;\r\n }\r\n }\r\n return result;\r\n }\r\n};\r\n\r\nexport const DILATE = 1;\r\nexport const ERODE = 2;\r\n\r\nexport function dilate(inImageWrapper, outImageWrapper) {\r\n var v,\r\n u,\r\n inImageData = inImageWrapper.data,\r\n outImageData = outImageWrapper.data,\r\n height = inImageWrapper.size.y,\r\n width = inImageWrapper.size.x,\r\n sum,\r\n yStart1,\r\n yStart2,\r\n xStart1,\r\n xStart2;\r\n\r\n for ( v = 1; v < height - 1; v++) {\r\n for ( u = 1; u < width - 1; u++) {\r\n yStart1 = v - 1;\r\n yStart2 = v + 1;\r\n xStart1 = u - 1;\r\n xStart2 = u + 1;\r\n sum = inImageData[yStart1 * width + xStart1] + inImageData[yStart1 * width + xStart2] +\r\n inImageData[v * width + u] +\r\n inImageData[yStart2 * width + xStart1] + inImageData[yStart2 * width + xStart2];\r\n outImageData[v * width + u] = sum > 0 ? 1 : 0;\r\n }\r\n }\r\n};\r\n\r\nexport function erode(inImageWrapper, outImageWrapper) {\r\n var v,\r\n u,\r\n inImageData = inImageWrapper.data,\r\n outImageData = outImageWrapper.data,\r\n height = inImageWrapper.size.y,\r\n width = inImageWrapper.size.x,\r\n sum,\r\n yStart1,\r\n yStart2,\r\n xStart1,\r\n xStart2;\r\n\r\n for ( v = 1; v < height - 1; v++) {\r\n for ( u = 1; u < width - 1; u++) {\r\n yStart1 = v - 1;\r\n yStart2 = v + 1;\r\n xStart1 = u - 1;\r\n xStart2 = u + 1;\r\n sum = inImageData[yStart1 * width + xStart1] + inImageData[yStart1 * width + xStart2] +\r\n inImageData[v * width + u] +\r\n inImageData[yStart2 * width + xStart1] + inImageData[yStart2 * width + xStart2];\r\n outImageData[v * width + u] = sum === 5 ? 1 : 0;\r\n }\r\n }\r\n};\r\n\r\nexport function subtract(aImageWrapper, bImageWrapper, resultImageWrapper) {\r\n if (!resultImageWrapper) {\r\n resultImageWrapper = aImageWrapper;\r\n }\r\n var length = aImageWrapper.data.length,\r\n aImageData = aImageWrapper.data,\r\n bImageData = bImageWrapper.data,\r\n cImageData = resultImageWrapper.data;\r\n\r\n while (length--) {\r\n cImageData[length] = aImageData[length] - bImageData[length];\r\n }\r\n};\r\n\r\nexport function bitwiseOr(aImageWrapper, bImageWrapper, resultImageWrapper) {\r\n if (!resultImageWrapper) {\r\n resultImageWrapper = aImageWrapper;\r\n }\r\n var length = aImageWrapper.data.length,\r\n aImageData = aImageWrapper.data,\r\n bImageData = bImageWrapper.data,\r\n cImageData = resultImageWrapper.data;\r\n\r\n while (length--) {\r\n cImageData[length] = aImageData[length] || bImageData[length];\r\n }\r\n};\r\n\r\nexport function countNonZero(imageWrapper) {\r\n var length = imageWrapper.data.length, data = imageWrapper.data, sum = 0;\r\n\r\n while (length--) {\r\n sum += data[length];\r\n }\r\n return sum;\r\n};\r\n\r\nexport function topGeneric(list, top, scoreFunc) {\r\n var i, minIdx = 0, min = 0, queue = [], score, hit, pos;\r\n\r\n for ( i = 0; i < top; i++) {\r\n queue[i] = {\r\n score: 0,\r\n item: null\r\n };\r\n }\r\n\r\n for ( i = 0; i < list.length; i++) {\r\n score = scoreFunc.apply(this, [list[i]]);\r\n if (score > min) {\r\n hit = queue[minIdx];\r\n hit.score = score;\r\n hit.item = list[i];\r\n min = Number.MAX_VALUE;\r\n for ( pos = 0; pos < top; pos++) {\r\n if (queue[pos].score < min) {\r\n min = queue[pos].score;\r\n minIdx = pos;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return queue;\r\n};\r\n\r\nexport function grayArrayFromImage(htmlImage, offsetX, ctx, array) {\r\n ctx.drawImage(htmlImage, offsetX, 0, htmlImage.width, htmlImage.height);\r\n var ctxData = ctx.getImageData(offsetX, 0, htmlImage.width, htmlImage.height).data;\r\n computeGray(ctxData, array);\r\n};\r\n\r\nexport function grayArrayFromContext(ctx, size, offset, array) {\r\n var ctxData = ctx.getImageData(offset.x, offset.y, size.x, size.y).data;\r\n computeGray(ctxData, array);\r\n};\r\n\r\nexport function grayAndHalfSampleFromCanvasData(canvasData, size, outArray) {\r\n var topRowIdx = 0;\r\n var bottomRowIdx = size.x;\r\n var endIdx = Math.floor(canvasData.length / 4);\r\n var outWidth = size.x / 2;\r\n var outImgIdx = 0;\r\n var inWidth = size.x;\r\n var i;\r\n\r\n while (bottomRowIdx < endIdx) {\r\n for ( i = 0; i < outWidth; i++) {\r\n outArray[outImgIdx] = Math.floor((\r\n (0.299 * canvasData[topRowIdx * 4 + 0] +\r\n 0.587 * canvasData[topRowIdx * 4 + 1] +\r\n 0.114 * canvasData[topRowIdx * 4 + 2]) +\r\n (0.299 * canvasData[(topRowIdx + 1) * 4 + 0] +\r\n 0.587 * canvasData[(topRowIdx + 1) * 4 + 1] +\r\n 0.114 * canvasData[(topRowIdx + 1) * 4 + 2]) +\r\n (0.299 * canvasData[(bottomRowIdx) * 4 + 0] +\r\n 0.587 * canvasData[(bottomRowIdx) * 4 + 1] +\r\n 0.114 * canvasData[(bottomRowIdx) * 4 + 2]) +\r\n (0.299 * canvasData[(bottomRowIdx + 1) * 4 + 0] +\r\n 0.587 * canvasData[(bottomRowIdx + 1) * 4 + 1] +\r\n 0.114 * canvasData[(bottomRowIdx + 1) * 4 + 2])) / 4);\r\n outImgIdx++;\r\n topRowIdx = topRowIdx + 2;\r\n bottomRowIdx = bottomRowIdx + 2;\r\n }\r\n topRowIdx = topRowIdx + inWidth;\r\n bottomRowIdx = bottomRowIdx + inWidth;\r\n }\r\n};\r\n\r\nexport function computeGray(imageData, outArray, config) {\r\n var l = (imageData.length / 4) | 0,\r\n i,\r\n singleChannel = config && config.singleChannel === true;\r\n\r\n if (singleChannel) {\r\n for (i = 0; i < l; i++) {\r\n outArray[i] = imageData[i * 4 + 0];\r\n }\r\n } else {\r\n for (i = 0; i < l; i++) {\r\n outArray[i] = Math.floor(\r\n 0.299 * imageData[i * 4 + 0] + 0.587 * imageData[i * 4 + 1] + 0.114 * imageData[i * 4 + 2]);\r\n }\r\n }\r\n};\r\n\r\nexport function loadImageArray(src, callback, canvas) {\r\n if (!canvas) {\r\n canvas = document.createElement('canvas');\r\n }\r\n var img = new Image();\r\n img.callback = callback;\r\n img.onload = function() {\r\n canvas.width = this.width;\r\n canvas.height = this.height;\r\n var ctx = canvas.getContext('2d');\r\n ctx.drawImage(this, 0, 0);\r\n var array = new Uint8Array(this.width * this.height);\r\n ctx.drawImage(this, 0, 0);\r\n var data = ctx.getImageData(0, 0, this.width, this.height).data;\r\n computeGray(data, array);\r\n this.callback(array, {\r\n x: this.width,\r\n y: this.height\r\n }, this);\r\n };\r\n img.src = src;\r\n};\r\n\r\n/**\r\n * @param inImg {ImageWrapper} input image to be sampled\r\n * @param outImg {ImageWrapper} to be stored in\r\n */\r\nexport function halfSample(inImgWrapper, outImgWrapper) {\r\n var inImg = inImgWrapper.data;\r\n var inWidth = inImgWrapper.size.x;\r\n var outImg = outImgWrapper.data;\r\n var topRowIdx = 0;\r\n var bottomRowIdx = inWidth;\r\n var endIdx = inImg.length;\r\n var outWidth = inWidth / 2;\r\n var outImgIdx = 0;\r\n while (bottomRowIdx < endIdx) {\r\n for (var i = 0; i < outWidth; i++) {\r\n outImg[outImgIdx] = Math.floor(\r\n (inImg[topRowIdx] + inImg[topRowIdx + 1] + inImg[bottomRowIdx] + inImg[bottomRowIdx + 1]) / 4);\r\n outImgIdx++;\r\n topRowIdx = topRowIdx + 2;\r\n bottomRowIdx = bottomRowIdx + 2;\r\n }\r\n topRowIdx = topRowIdx + inWidth;\r\n bottomRowIdx = bottomRowIdx + inWidth;\r\n }\r\n};\r\n\r\nexport function hsv2rgb(hsv, rgb) {\r\n var h = hsv[0],\r\n s = hsv[1],\r\n v = hsv[2],\r\n c = v * s,\r\n x = c * (1 - Math.abs((h / 60) % 2 - 1)),\r\n m = v - c,\r\n r = 0,\r\n g = 0,\r\n b = 0;\r\n\r\n rgb = rgb || [0, 0, 0];\r\n\r\n if (h < 60) {\r\n r = c;\r\n g = x;\r\n } else if (h < 120) {\r\n r = x;\r\n g = c;\r\n } else if (h < 180) {\r\n g = c;\r\n b = x;\r\n } else if (h < 240) {\r\n g = x;\r\n b = c;\r\n } else if (h < 300) {\r\n r = x;\r\n b = c;\r\n } else if (h < 360) {\r\n r = c;\r\n b = x;\r\n }\r\n rgb[0] = ((r + m) * 255) | 0;\r\n rgb[1] = ((g + m) * 255) | 0;\r\n rgb[2] = ((b + m) * 255) | 0;\r\n return rgb;\r\n};\r\n\r\nexport function _computeDivisors(n) {\r\n var largeDivisors = [],\r\n divisors = [],\r\n i;\r\n\r\n for (i = 1; i < Math.sqrt(n) + 1; i++) {\r\n if (n % i === 0) {\r\n divisors.push(i);\r\n if (i !== n / i) {\r\n largeDivisors.unshift(Math.floor(n / i));\r\n }\r\n }\r\n }\r\n return divisors.concat(largeDivisors);\r\n};\r\n\r\nfunction _computeIntersection(arr1, arr2) {\r\n var i = 0,\r\n j = 0,\r\n result = [];\r\n\r\n while (i < arr1.length && j < arr2.length) {\r\n if (arr1[i] === arr2[j]) {\r\n result.push(arr1[i]);\r\n i++;\r\n j++;\r\n } else if (arr1[i] > arr2[j]) {\r\n j++;\r\n } else {\r\n i++;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nexport function calculatePatchSize(patchSize, imgSize) {\r\n var divisorsX = _computeDivisors(imgSize.x),\r\n divisorsY = _computeDivisors(imgSize.y),\r\n wideSide = Math.max(imgSize.x, imgSize.y),\r\n common = _computeIntersection(divisorsX, divisorsY),\r\n nrOfPatchesList = [8, 10, 15, 20, 32, 60, 80],\r\n nrOfPatchesMap = {\r\n \"x-small\": 5,\r\n \"small\": 4,\r\n \"medium\": 3,\r\n \"large\": 2,\r\n \"x-large\": 1\r\n },\r\n nrOfPatchesIdx = nrOfPatchesMap[patchSize] || nrOfPatchesMap.medium,\r\n nrOfPatches = nrOfPatchesList[nrOfPatchesIdx],\r\n desiredPatchSize = Math.floor(wideSide / nrOfPatches),\r\n optimalPatchSize;\r\n\r\n function findPatchSizeForDivisors(divisors) {\r\n var i = 0,\r\n found = divisors[Math.floor(divisors.length / 2)];\r\n\r\n while (i < (divisors.length - 1) && divisors[i] < desiredPatchSize) {\r\n i++;\r\n }\r\n if (i > 0) {\r\n if (Math.abs(divisors[i] - desiredPatchSize) > Math.abs(divisors[i - 1] - desiredPatchSize)) {\r\n found = divisors[i - 1];\r\n } else {\r\n found = divisors[i];\r\n }\r\n }\r\n if (desiredPatchSize / found < nrOfPatchesList[nrOfPatchesIdx + 1] / nrOfPatchesList[nrOfPatchesIdx] &&\r\n desiredPatchSize / found > nrOfPatchesList[nrOfPatchesIdx - 1] / nrOfPatchesList[nrOfPatchesIdx] ) {\r\n return {x: found, y: found};\r\n }\r\n return null;\r\n }\r\n\r\n optimalPatchSize = findPatchSizeForDivisors(common);\r\n if (!optimalPatchSize) {\r\n optimalPatchSize = findPatchSizeForDivisors(_computeDivisors(wideSide));\r\n if (!optimalPatchSize) {\r\n optimalPatchSize = findPatchSizeForDivisors((_computeDivisors(desiredPatchSize * nrOfPatches)));\r\n }\r\n }\r\n return optimalPatchSize;\r\n};\r\n\r\nexport function _parseCSSDimensionValues(value) {\r\n var dimension = {\r\n value: parseFloat(value),\r\n unit: value.indexOf(\"%\") === value.length - 1 ? \"%\" : \"%\"\r\n };\r\n\r\n return dimension;\r\n};\r\n\r\nexport const _dimensionsConverters = {\r\n top: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.height * (dimension.value / 100));\r\n }\r\n },\r\n right: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.width - (context.width * (dimension.value / 100)));\r\n }\r\n },\r\n bottom: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.height - (context.height * (dimension.value / 100)));\r\n }\r\n },\r\n left: function(dimension, context) {\r\n if (dimension.unit === \"%\") {\r\n return Math.floor(context.width * (dimension.value / 100));\r\n }\r\n }\r\n};\r\n\r\nexport function computeImageArea(inputWidth, inputHeight, area) {\r\n var context = {width: inputWidth, height: inputHeight};\r\n\r\n var parsedArea = Object.keys(area).reduce(function(result, key) {\r\n var value = area[key],\r\n parsed = _parseCSSDimensionValues(value),\r\n calculated = _dimensionsConverters[key](parsed, context);\r\n\r\n result[key] = calculated;\r\n return result;\r\n }, {});\r\n\r\n return {\r\n sx: parsedArea.left,\r\n sy: parsedArea.top,\r\n sw: parsedArea.right - parsedArea.left,\r\n sh: parsedArea.bottom - parsedArea.top\r\n };\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/cv_utils.js\n **/","import SubImage from './subImage';\r\nimport {hsv2rgb} from '../common/cv_utils';\r\nimport ArrayHelper from '../common/array_helper';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n};\r\n\r\n/**\r\n * Represents a basic image combining the data and size.\r\n * In addition, some methods for manipulation are contained.\r\n * @param size {x,y} The size of the image in pixel\r\n * @param data {Array} If given, a flat array containing the pixel data\r\n * @param ArrayType {Type} If given, the desired DataType of the Array (may be typed/non-typed)\r\n * @param initialize {Boolean} Indicating if the array should be initialized on creation.\r\n * @returns {ImageWrapper}\r\n */\r\nfunction ImageWrapper(size, data, ArrayType, initialize) {\r\n if (!data) {\r\n if (ArrayType) {\r\n this.data = new ArrayType(size.x * size.y);\r\n if (ArrayType === Array && initialize) {\r\n ArrayHelper.init(this.data, 0);\r\n }\r\n } else {\r\n this.data = new Uint8Array(size.x * size.y);\r\n if (Uint8Array === Array && initialize) {\r\n ArrayHelper.init(this.data, 0);\r\n }\r\n }\r\n } else {\r\n this.data = data;\r\n }\r\n this.size = size;\r\n}\r\n\r\n/**\r\n * tests if a position is within the image with a given offset\r\n * @param imgRef {x, y} The location to test\r\n * @param border Number the padding value in pixel\r\n * @returns {Boolean} true if location inside the image's border, false otherwise\r\n * @see cvd/image.h\r\n */\r\nImageWrapper.prototype.inImageWithBorder = function(imgRef, border) {\r\n return (imgRef.x >= border)\r\n && (imgRef.y >= border)\r\n && (imgRef.x < (this.size.x - border))\r\n && (imgRef.y < (this.size.y - border));\r\n};\r\n\r\n/**\r\n * Performs bilinear sampling\r\n * @param inImg Image to extract sample from\r\n * @param x the x-coordinate\r\n * @param y the y-coordinate\r\n * @returns the sampled value\r\n * @see cvd/vision.h\r\n */\r\nImageWrapper.sample = function(inImg, x, y) {\r\n var lx = Math.floor(x);\r\n var ly = Math.floor(y);\r\n var w = inImg.size.x;\r\n var base = ly * inImg.size.x + lx;\r\n var a = inImg.data[base + 0];\r\n var b = inImg.data[base + 1];\r\n var c = inImg.data[base + w];\r\n var d = inImg.data[base + w + 1];\r\n var e = a - b;\r\n x -= lx;\r\n y -= ly;\r\n\r\n var result = Math.floor(x * (y * (e - c + d) - e) + y * (c - a) + a);\r\n return result;\r\n};\r\n\r\n/**\r\n * Initializes a given array. Sets each element to zero.\r\n * @param array {Array} The array to initialize\r\n */\r\nImageWrapper.clearArray = function(array) {\r\n var l = array.length;\r\n while (l--) {\r\n array[l] = 0;\r\n }\r\n};\r\n\r\n/**\r\n * Creates a {SubImage} from the current image ({this}).\r\n * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner)\r\n * @param size {ImageRef} The size of the resulting image\r\n * @returns {SubImage} A shared part of the original image\r\n */\r\nImageWrapper.prototype.subImage = function(from, size) {\r\n return new SubImage(from, size, this);\r\n};\r\n\r\n/**\r\n * Creates an {ImageWrapper) and copies the needed underlying image-data area\r\n * @param imageWrapper {ImageWrapper} The target {ImageWrapper} where the data should be copied\r\n * @param from {ImageRef} The location where to copy from (top-left location)\r\n */\r\nImageWrapper.prototype.subImageAsCopy = function(imageWrapper, from) {\r\n var sizeY = imageWrapper.size.y, sizeX = imageWrapper.size.x;\r\n var x, y;\r\n for ( x = 0; x < sizeX; x++) {\r\n for ( y = 0; y < sizeY; y++) {\r\n imageWrapper.data[y * sizeX + x] = this.data[(from.y + y) * this.size.x + from.x + x];\r\n }\r\n }\r\n};\r\n\r\nImageWrapper.prototype.copyTo = function(imageWrapper) {\r\n var length = this.data.length, srcData = this.data, dstData = imageWrapper.data;\r\n\r\n while (length--) {\r\n dstData[length] = srcData[length];\r\n }\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nImageWrapper.prototype.get = function(x, y) {\r\n return this.data[y * this.size.x + x];\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nImageWrapper.prototype.getSafe = function(x, y) {\r\n var i;\r\n\r\n if (!this.indexMapping) {\r\n this.indexMapping = {\r\n x: [],\r\n y: []\r\n };\r\n for (i = 0; i < this.size.x; i++) {\r\n this.indexMapping.x[i] = i;\r\n this.indexMapping.x[i + this.size.x] = i;\r\n }\r\n for (i = 0; i < this.size.y; i++) {\r\n this.indexMapping.y[i] = i;\r\n this.indexMapping.y[i + this.size.y] = i;\r\n }\r\n }\r\n return this.data[(this.indexMapping.y[y + this.size.y]) * this.size.x + this.indexMapping.x[x + this.size.x]];\r\n};\r\n\r\n/**\r\n * Sets a given pixel position in the image\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @param value {Number} The grayscale value to set\r\n * @returns {ImageWrapper} The Image itself (for possible chaining)\r\n */\r\nImageWrapper.prototype.set = function(x, y, value) {\r\n this.data[y * this.size.x + x] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets the border of the image (1 pixel) to zero\r\n */\r\nImageWrapper.prototype.zeroBorder = function() {\r\n var i, width = this.size.x, height = this.size.y, data = this.data;\r\n for ( i = 0; i < width; i++) {\r\n data[i] = data[(height - 1) * width + i] = 0;\r\n }\r\n for ( i = 1; i < height - 1; i++) {\r\n data[i * width] = data[i * width + (width - 1)] = 0;\r\n }\r\n};\r\n\r\n/**\r\n * Inverts a binary image in place\r\n */\r\nImageWrapper.prototype.invert = function() {\r\n var data = this.data, length = data.length;\r\n\r\n while (length--) {\r\n data[length] = data[length] ? 0 : 1;\r\n }\r\n};\r\n\r\nImageWrapper.prototype.convolve = function(kernel) {\r\n var x, y, kx, ky, kSize = (kernel.length / 2) | 0, accu = 0;\r\n for ( y = 0; y < this.size.y; y++) {\r\n for ( x = 0; x < this.size.x; x++) {\r\n accu = 0;\r\n for ( ky = -kSize; ky <= kSize; ky++) {\r\n for ( kx = -kSize; kx <= kSize; kx++) {\r\n accu += kernel[ky + kSize][kx + kSize] * this.getSafe(x + kx, y + ky);\r\n }\r\n }\r\n this.data[y * this.size.x + x] = accu;\r\n }\r\n }\r\n};\r\n\r\nImageWrapper.prototype.moments = function(labelcount) {\r\n var data = this.data,\r\n x,\r\n y,\r\n height = this.size.y,\r\n width = this.size.x,\r\n val,\r\n ysq,\r\n labelsum = [],\r\n i,\r\n label,\r\n mu11,\r\n mu02,\r\n mu20,\r\n x_,\r\n y_,\r\n tmp,\r\n result = [],\r\n PI = Math.PI,\r\n PI_4 = PI / 4;\r\n\r\n if (labelcount <= 0) {\r\n return result;\r\n }\r\n\r\n for ( i = 0; i < labelcount; i++) {\r\n labelsum[i] = {\r\n m00: 0,\r\n m01: 0,\r\n m10: 0,\r\n m11: 0,\r\n m02: 0,\r\n m20: 0,\r\n theta: 0,\r\n rad: 0\r\n };\r\n }\r\n\r\n for ( y = 0; y < height; y++) {\r\n ysq = y * y;\r\n for ( x = 0; x < width; x++) {\r\n val = data[y * width + x];\r\n if (val > 0) {\r\n label = labelsum[val - 1];\r\n label.m00 += 1;\r\n label.m01 += y;\r\n label.m10 += x;\r\n label.m11 += x * y;\r\n label.m02 += ysq;\r\n label.m20 += x * x;\r\n }\r\n }\r\n }\r\n\r\n for ( i = 0; i < labelcount; i++) {\r\n label = labelsum[i];\r\n if (!isNaN(label.m00) && label.m00 !== 0) {\r\n x_ = label.m10 / label.m00;\r\n y_ = label.m01 / label.m00;\r\n mu11 = label.m11 / label.m00 - x_ * y_;\r\n mu02 = label.m02 / label.m00 - y_ * y_;\r\n mu20 = label.m20 / label.m00 - x_ * x_;\r\n tmp = (mu02 - mu20) / (2 * mu11);\r\n tmp = 0.5 * Math.atan(tmp) + (mu11 >= 0 ? PI_4 : -PI_4 ) + PI;\r\n label.theta = (tmp * 180 / PI + 90) % 180 - 90;\r\n if (label.theta < 0) {\r\n label.theta += 180;\r\n }\r\n label.rad = tmp > PI ? tmp - PI : tmp;\r\n label.vec = vec2.clone([Math.cos(tmp), Math.sin(tmp)]);\r\n result.push(label);\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Displays the {ImageWrapper} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nImageWrapper.prototype.show = function(canvas, scale) {\r\n var ctx,\r\n frame,\r\n data,\r\n current,\r\n pixel,\r\n x,\r\n y;\r\n\r\n if (!scale) {\r\n scale = 1.0;\r\n }\r\n ctx = canvas.getContext('2d');\r\n canvas.width = this.size.x;\r\n canvas.height = this.size.y;\r\n frame = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n data = frame.data;\r\n current = 0;\r\n for (y = 0; y < this.size.y; y++) {\r\n for (x = 0; x < this.size.x; x++) {\r\n pixel = y * this.size.x + x;\r\n current = this.get(x, y) * scale;\r\n data[pixel * 4 + 0] = current;\r\n data[pixel * 4 + 1] = current;\r\n data[pixel * 4 + 2] = current;\r\n data[pixel * 4 + 3] = 255;\r\n }\r\n }\r\n //frame.data = data;\r\n ctx.putImageData(frame, 0, 0);\r\n};\r\n\r\n/**\r\n * Displays the {SubImage} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nImageWrapper.prototype.overlay = function(canvas, scale, from) {\r\n if (!scale || scale < 0 || scale > 360) {\r\n scale = 360;\r\n }\r\n var hsv = [0, 1, 1];\r\n var rgb = [0, 0, 0];\r\n var whiteRgb = [255, 255, 255];\r\n var blackRgb = [0, 0, 0];\r\n var result = [];\r\n var ctx = canvas.getContext('2d');\r\n var frame = ctx.getImageData(from.x, from.y, this.size.x, this.size.y);\r\n var data = frame.data;\r\n var length = this.data.length;\r\n while (length--) {\r\n hsv[0] = this.data[length] * scale;\r\n result = hsv[0] <= 0 ? whiteRgb : hsv[0] >= 360 ? blackRgb : hsv2rgb(hsv, rgb);\r\n data[length * 4 + 0] = result[0];\r\n data[length * 4 + 1] = result[1];\r\n data[length * 4 + 2] = result[2];\r\n data[length * 4 + 3] = 255;\r\n }\r\n ctx.putImageData(frame, from.x, from.y);\r\n};\r\n\r\nexport default ImageWrapper;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/image_wrapper.js\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Symbol.js\n ** module id = 27\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayReduce.js\n ** module id = 28\n ** module chunks = 0\n **/","var copyObjectWith = require('./_copyObjectWith');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object) {\n return copyObjectWith(source, props, object);\n}\n\nmodule.exports = copyObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyObject.js\n ** module id = 29\n ** module chunks = 0\n **/","var isArray = require('./isArray');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (typeof value == 'number') {\n return true;\n }\n return !isArray(value) &&\n (reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object)));\n}\n\nmodule.exports = isKey;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isKey.js\n ** module id = 30\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isPrototype.js\n ** module id = 31\n ** module chunks = 0\n **/","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object, else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isArrayLikeObject.js\n ** module id = 32\n ** module chunks = 0\n **/","var isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isString.js\n ** module id = 33\n ** module chunks = 0\n **/","var isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isTypedArray.js\n ** module id = 34\n ** module chunks = 0\n **/","var baseKeysIn = require('./_baseKeysIn'),\n indexKeys = require('./_indexKeys'),\n isIndex = require('./_isIndex'),\n isPrototype = require('./_isPrototype');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n var index = -1,\n isProto = isPrototype(object),\n props = baseKeysIn(object),\n propsLength = props.length,\n indexes = indexKeys(object),\n skipIndexes = !!indexes,\n result = indexes || [],\n length = result.length;\n\n while (++index < propsLength) {\n var key = props[index];\n if (!(skipIndexes && (key == 'length' || isIndex(key, length))) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/keysIn.js\n ** module id = 35\n ** module chunks = 0\n **/","import ImageDebug from '../common/image_debug';\r\n\r\nfunction contains(codeResult, list) {\r\n if (list) {\r\n return list.some(function (item) {\r\n return Object.keys(item).every(function (key) {\r\n return item[key] === codeResult[key];\r\n });\r\n });\r\n }\r\n return false;\r\n}\r\n\r\nfunction passesFilter(codeResult, filter) {\r\n if (typeof filter === 'function') {\r\n return filter(codeResult);\r\n }\r\n return true;\r\n}\r\n\r\nexport default {\r\n create: function(config) {\r\n var canvas = document.createElement(\"canvas\"),\r\n ctx = canvas.getContext(\"2d\"),\r\n results = [],\r\n capacity = config.capacity || 20,\r\n capture = config.capture === true;\r\n\r\n function matchesConstraints(codeResult) {\r\n return capacity\r\n && codeResult\r\n && !contains(codeResult, config.blacklist)\r\n && passesFilter(codeResult, config.filter);\r\n }\r\n\r\n return {\r\n addResult: function(data, imageSize, codeResult) {\r\n var result = {};\r\n\r\n if (matchesConstraints(codeResult)) {\r\n capacity--;\r\n result.codeResult = codeResult;\r\n if (capture) {\r\n canvas.width = imageSize.x;\r\n canvas.height = imageSize.y;\r\n ImageDebug.drawImage(data, imageSize, ctx);\r\n result.frame = canvas.toDataURL();\r\n }\r\n results.push(result);\r\n }\r\n },\r\n getResults: function() {\r\n return results;\r\n }\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/analytics/result_collector.js\n **/","let config;\r\n\r\nif (ENV.development){\r\n config = require('./config.dev.js');\r\n} else if (ENV.node) {\r\n config = require('./config.node.js');\r\n} else {\r\n config = require('./config.prod.js');\r\n}\r\n\r\nexport default config;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/config/config.js\n **/","/**\r\n * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization\r\n */\r\nvar Tracer = {\r\n searchDirections: [[0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [-1, -1], [-1, 0], [-1, 1]],\r\n create: function(imageWrapper, labelWrapper) {\r\n var imageData = imageWrapper.data,\r\n labelData = labelWrapper.data,\r\n searchDirections = this.searchDirections,\r\n width = imageWrapper.size.x,\r\n pos;\r\n\r\n function trace(current, color, label, edgelabel) {\r\n var i,\r\n y,\r\n x;\r\n\r\n for ( i = 0; i < 7; i++) {\r\n y = current.cy + searchDirections[current.dir][0];\r\n x = current.cx + searchDirections[current.dir][1];\r\n pos = y * width + x;\r\n if ((imageData[pos] === color) && ((labelData[pos] === 0) || (labelData[pos] === label))) {\r\n labelData[pos] = label;\r\n current.cy = y;\r\n current.cx = x;\r\n return true;\r\n } else {\r\n if (labelData[pos] === 0) {\r\n labelData[pos] = edgelabel;\r\n }\r\n current.dir = (current.dir + 1) % 8;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function vertex2D(x, y, dir) {\r\n return {\r\n dir: dir,\r\n x: x,\r\n y: y,\r\n next: null,\r\n prev: null\r\n };\r\n }\r\n\r\n function contourTracing(sy, sx, label, color, edgelabel) {\r\n var Fv = null,\r\n Cv,\r\n P,\r\n ldir,\r\n current = {\r\n cx: sx,\r\n cy: sy,\r\n dir: 0\r\n };\r\n\r\n if (trace(current, color, label, edgelabel)) {\r\n Fv = vertex2D(sx, sy, current.dir);\r\n Cv = Fv;\r\n ldir = current.dir;\r\n P = vertex2D(current.cx, current.cy, 0);\r\n P.prev = Cv;\r\n Cv.next = P;\r\n P.next = null;\r\n Cv = P;\r\n do {\r\n current.dir = (current.dir + 6) % 8;\r\n trace(current, color, label, edgelabel);\r\n if (ldir !== current.dir) {\r\n Cv.dir = current.dir;\r\n P = vertex2D(current.cx, current.cy, 0);\r\n P.prev = Cv;\r\n Cv.next = P;\r\n P.next = null;\r\n Cv = P;\r\n } else {\r\n Cv.dir = ldir;\r\n Cv.x = current.cx;\r\n Cv.y = current.cy;\r\n }\r\n ldir = current.dir;\r\n } while (current.cx !== sx || current.cy !== sy);\r\n Fv.prev = Cv.prev;\r\n Cv.prev.next = Fv;\r\n }\r\n return Fv;\r\n }\r\n\r\n return {\r\n trace: function(current, color, label, edgelabel) {\r\n return trace(current, color, label, edgelabel);\r\n },\r\n contourTracing: function(sy, sx, label, color, edgelabel) {\r\n return contourTracing(sy, sx, label, color, edgelabel);\r\n }\r\n };\r\n }\r\n};\r\n\r\nexport default (Tracer);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/tracer.js\n **/","import BarcodeReader from './barcode_reader';\r\nimport ArrayHelper from '../common/array_helper';\r\n\r\nfunction Code39Reader() {\r\n BarcodeReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n ALPHABETH_STRING: {value: \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%\"},\r\n ALPHABET: {value: [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,\r\n 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 45, 46, 32, 42, 36, 47, 43, 37]},\r\n CHARACTER_ENCODINGS: {value: [0x034, 0x121, 0x061, 0x160, 0x031, 0x130, 0x070, 0x025, 0x124, 0x064, 0x109, 0x049,\r\n 0x148, 0x019, 0x118, 0x058, 0x00D, 0x10C, 0x04C, 0x01C, 0x103, 0x043, 0x142, 0x013, 0x112, 0x052, 0x007, 0x106,\r\n 0x046, 0x016, 0x181, 0x0C1, 0x1C0, 0x091, 0x190, 0x0D0, 0x085, 0x184, 0x0C4, 0x094, 0x0A8, 0x0A2, 0x08A, 0x02A\r\n ]},\r\n ASTERISK: {value: 0x094},\r\n FORMAT: {value: \"code_39\", writeable: false}\r\n};\r\n\r\nCode39Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCode39Reader.prototype.constructor = Code39Reader;\r\n\r\nCode39Reader.prototype._toCounters = function(start, counter) {\r\n var self = this,\r\n numCounters = counter.length,\r\n end = self._row.length,\r\n isWhite = !self._row[start],\r\n i,\r\n counterPos = 0;\r\n\r\n ArrayHelper.init(counter, 0);\r\n\r\n for ( i = start; i < end; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n counterPos++;\r\n if (counterPos === numCounters) {\r\n break;\r\n } else {\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n }\r\n\r\n return counter;\r\n};\r\n\r\nCode39Reader.prototype._decode = function() {\r\n var self = this,\r\n counters = [0, 0, 0, 0, 0, 0, 0, 0, 0],\r\n result = [],\r\n start = self._findStart(),\r\n decodedChar,\r\n lastStart,\r\n pattern,\r\n nextStart;\r\n\r\n if (!start) {\r\n return null;\r\n }\r\n nextStart = self._nextSet(self._row, start.end);\r\n\r\n do {\r\n counters = self._toCounters(nextStart, counters);\r\n pattern = self._toPattern(counters);\r\n if (pattern < 0) {\r\n return null;\r\n }\r\n decodedChar = self._patternToChar(pattern);\r\n if (decodedChar < 0){\r\n return null;\r\n }\r\n result.push(decodedChar);\r\n lastStart = nextStart;\r\n nextStart += ArrayHelper.sum(counters);\r\n nextStart = self._nextSet(self._row, nextStart);\r\n } while (decodedChar !== '*');\r\n result.pop();\r\n\r\n if (!result.length) {\r\n return null;\r\n }\r\n\r\n if (!self._verifyTrailingWhitespace(lastStart, nextStart, counters)) {\r\n return null;\r\n }\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: start.start,\r\n end: nextStart,\r\n startInfo: start,\r\n decodedCodes: result\r\n };\r\n};\r\n\r\nCode39Reader.prototype._verifyTrailingWhitespace = function(lastStart, nextStart, counters) {\r\n var trailingWhitespaceEnd,\r\n patternSize = ArrayHelper.sum(counters);\r\n\r\n trailingWhitespaceEnd = nextStart - lastStart - patternSize;\r\n if ((trailingWhitespaceEnd * 3) >= patternSize) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nCode39Reader.prototype._patternToChar = function(pattern) {\r\n var i,\r\n self = this;\r\n\r\n for (i = 0; i < self.CHARACTER_ENCODINGS.length; i++) {\r\n if (self.CHARACTER_ENCODINGS[i] === pattern) {\r\n return String.fromCharCode(self.ALPHABET[i]);\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCode39Reader.prototype._findNextWidth = function(counters, current) {\r\n var i,\r\n minWidth = Number.MAX_VALUE;\r\n\r\n for (i = 0; i < counters.length; i++) {\r\n if (counters[i] < minWidth && counters[i] > current) {\r\n minWidth = counters[i];\r\n }\r\n }\r\n\r\n return minWidth;\r\n};\r\n\r\nCode39Reader.prototype._toPattern = function(counters) {\r\n var numCounters = counters.length,\r\n maxNarrowWidth = 0,\r\n numWideBars = numCounters,\r\n wideBarWidth = 0,\r\n self = this,\r\n pattern,\r\n i;\r\n\r\n while (numWideBars > 3) {\r\n maxNarrowWidth = self._findNextWidth(counters, maxNarrowWidth);\r\n numWideBars = 0;\r\n pattern = 0;\r\n for (i = 0; i < numCounters; i++) {\r\n if (counters[i] > maxNarrowWidth) {\r\n pattern |= 1 << (numCounters - 1 - i);\r\n numWideBars++;\r\n wideBarWidth += counters[i];\r\n }\r\n }\r\n\r\n if (numWideBars === 3) {\r\n for (i = 0; i < numCounters && numWideBars > 0; i++) {\r\n if (counters[i] > maxNarrowWidth) {\r\n numWideBars--;\r\n if ((counters[i] * 2) >= wideBarWidth) {\r\n return -1;\r\n }\r\n }\r\n }\r\n return pattern;\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCode39Reader.prototype._findStart = function() {\r\n var self = this,\r\n offset = self._nextSet(self._row),\r\n patternStart = offset,\r\n counter = [0, 0, 0, 0, 0, 0, 0, 0, 0],\r\n counterPos = 0,\r\n isWhite = false,\r\n i,\r\n j,\r\n whiteSpaceMustStart;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n // find start pattern\r\n if (self._toPattern(counter) === self.ASTERISK) {\r\n whiteSpaceMustStart = Math.floor(Math.max(0, patternStart - ((i - patternStart) / 4)));\r\n if (self._matchRange(whiteSpaceMustStart, patternStart, 0)) {\r\n return {\r\n start: patternStart,\r\n end: i\r\n };\r\n }\r\n }\r\n\r\n patternStart += counter[0] + counter[1];\r\n for ( j = 0; j < 7; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[7] = 0;\r\n counter[8] = 0;\r\n counterPos--;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport default Code39Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_39_reader.js\n **/","module.exports = dot\n\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot(a, b) {\n return a[0] * b[0] + a[1] * b[1]\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/dot.js\n ** module id = 40\n ** module chunks = 0\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Uint8Array.js\n ** module id = 41\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayEach.js\n ** module id = 42\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (typeof key == 'number' && value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\nmodule.exports = assignMergeValue;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assignMergeValue.js\n ** module id = 43\n ** module chunks = 0\n **/","var eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\nmodule.exports = assignValue;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assignValue.js\n ** module id = 44\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the associative array.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction assocDelete(array, key) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = array.length - 1;\n if (index == lastIndex) {\n array.pop();\n } else {\n splice.call(array, index, 1);\n }\n return true;\n}\n\nmodule.exports = assocDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocDelete.js\n ** module id = 45\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the associative array value for `key`.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction assocGet(array, key) {\n var index = assocIndexOf(array, key);\n return index < 0 ? undefined : array[index][1];\n}\n\nmodule.exports = assocGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocGet.js\n ** module id = 46\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if an associative array value for `key` exists.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction assocHas(array, key) {\n return assocIndexOf(array, key) > -1;\n}\n\nmodule.exports = assocHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocHas.js\n ** module id = 47\n ** module chunks = 0\n **/","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the associative array `key` to `value`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n */\nfunction assocSet(array, key, value) {\n var index = assocIndexOf(array, key);\n if (index < 0) {\n array.push([key, value]);\n } else {\n array[index][1] = value;\n }\n}\n\nmodule.exports = assocSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_assocSet.js\n ** module id = 48\n ** module chunks = 0\n **/","var isArray = require('./isArray'),\n stringToPath = require('./_stringToPath');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction baseCastPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\nmodule.exports = baseCastPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseCastPath.js\n ** module id = 49\n ** module chunks = 0\n **/","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseFor.js\n ** module id = 50\n ** module chunks = 0\n **/","var baseCastPath = require('./_baseCastPath'),\n isKey = require('./_isKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path + ''] : baseCastPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[path[index++]];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseGet.js\n ** module id = 51\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n // Avoid a bug in IE 10-11 where objects with a [[Prototype]] of `null`,\n // that are composed entirely of index properties, return `false` for\n // `hasOwnProperty` checks of them.\n return hasOwnProperty.call(object, key) ||\n (typeof object == 'object' && key in object && getPrototypeOf(object) === null);\n}\n\nmodule.exports = baseHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseHas.js\n ** module id = 52\n ** module chunks = 0\n **/","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObject = require('./isObject'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsEqual.js\n ** module id = 53\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseProperty.js\n ** module id = 54\n ** module chunks = 0\n **/","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneArrayBuffer.js\n ** module id = 55\n ** module chunks = 0\n **/","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyArray.js\n ** module id = 56\n ** module chunks = 0\n **/","var arraySome = require('./_arraySome');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var index = -1,\n isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n isUnordered = bitmask & UNORDERED_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(array, other);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (isUnordered) {\n if (!arraySome(other, function(othValue) {\n return arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack);\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n return result;\n}\n\nmodule.exports = equalArrays;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalArrays.js\n ** module id = 57\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect maps, sets, and weakmaps. */\nvar mapCtorString = Map ? funcToString.call(Map) : '',\n setCtorString = Set ? funcToString.call(Set) : '',\n weakMapCtorString = WeakMap ? funcToString.call(WeakMap) : '';\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction getTag(value) {\n return objectToString.call(value);\n}\n\n// Fallback for IE 11 providing `toStringTag` values for maps, sets, and weakmaps.\nif ((Map && getTag(new Map) != mapTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : null,\n ctorString = typeof Ctor == 'function' ? funcToString.call(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case mapCtorString: return mapTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getTag.js\n ** module id = 58\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @param {Object} hash The hash to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(hash, key) {\n return nativeCreate ? hash[key] !== undefined : hasOwnProperty.call(hash, key);\n}\n\nmodule.exports = hashHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashHas.js\n ** module id = 59\n ** module chunks = 0\n **/","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isLength = require('./isLength'),\n isString = require('./isString');\n\n/**\n * Creates an array of index keys for `object` values of arrays,\n * `arguments` objects, and strings, otherwise `null` is returned.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array|null} Returns index keys, else `null`.\n */\nfunction indexKeys(object) {\n var length = object ? object.length : undefined;\n if (isLength(length) &&\n (isArray(object) || isString(object) || isArguments(object))) {\n return baseTimes(length, String);\n }\n return null;\n}\n\nmodule.exports = indexKeys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_indexKeys.js\n ** module id = 60\n ** module chunks = 0\n **/","/**\n * Converts `map` to an array.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapToArray.js\n ** module id = 61\n ** module chunks = 0\n **/","/**\n * Converts `set` to an array.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_setToArray.js\n ** module id = 62\n ** module chunks = 0\n **/","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined` the `defaultValue` is used in its place.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/get.js\n ** module id = 63\n ** module chunks = 0\n **/","var baseFlatten = require('./_baseFlatten'),\n basePick = require('./_basePick'),\n rest = require('./rest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property names to pick, specified\n * individually or in arrays.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = rest(function(object, props) {\n return object == null ? {} : basePick(object, baseFlatten(props, 1));\n});\n\nmodule.exports = pick;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/pick.js\n ** module id = 64\n ** module chunks = 0\n **/","var apply = require('./_apply'),\n toInteger = require('./toInteger');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : toInteger(start), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, array);\n case 1: return func.call(this, args[0], array);\n case 2: return func.call(this, args[0], args[1], array);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = rest;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/rest.js\n ** module id = 65\n ** module chunks = 0\n **/","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tObject.defineProperty(module, \"exports\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.e; },\r\n\t\t\tset: function(v) { return module.e = v; }\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.l; }\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: false,\r\n\t\t\tget: function() { return module.i; }\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/buildin/module.js\n ** module id = 66\n ** module chunks = 0\n **/","import './common/typedefs';\r\nimport 'webrtc-adapter';\r\nimport createScanner from './scanner';\r\nimport ImageWrapper from './common/image_wrapper';\r\nimport ImageDebug from './common/image_debug';\r\nimport ResultCollector from './analytics/result_collector';\r\nimport Config from './config/config';\r\nimport {merge, pick, omitBy, isEmpty} from 'lodash';\r\n\r\nfunction fromImage(config, imageSrc, inputConfig = {}) {\r\n const staticImageConfig = {\r\n inputStream: {\r\n type: \"ImageStream\",\r\n sequence: false,\r\n size: 800,\r\n src: imageSrc\r\n },\r\n numOfWorkers: (ENV.development && config.debug) ? 0 : 1\r\n };\r\n config = merge(\r\n config,\r\n staticImageConfig,\r\n {numOfWorkers: typeof config.numOfWorkers === 'number' && config.numOfWorkers > 0 ? 1 : 0},\r\n {inputStream: omitBy(pick(config.inputStream, ['size', 'src']), isEmpty)},\r\n {inputStream: inputConfig});\r\n\r\n const scanner = createScanner();\r\n return {\r\n addEventListener(eventType, cb) {\r\n scanner.subscribe(eventType, cb);\r\n return this;\r\n },\r\n removeEventListener(eventType, cb) {\r\n scanner.unsubscribe(eventType, cb);\r\n return this;\r\n },\r\n start() {\r\n scanner.init(config, () => {\r\n scanner.start();\r\n });\r\n return this;\r\n },\r\n stop() {\r\n scanner.stop();\r\n return this;\r\n },\r\n toPromise() {\r\n return new Promise((resolve, reject) => {\r\n scanner.decodeSingle(config, (result) => {\r\n if (result && result.codeResult && result.codeResult.code) {\r\n return resolve(result);\r\n }\r\n return reject(result);\r\n });\r\n });\r\n }\r\n };\r\n}\r\n\r\nfunction fromVideo(config, source, inputConfig = {}) {\r\n // remember last instance\r\n // check if anything but the imagesrc has changed\r\n //\r\n let sourceConfig = {\r\n type: \"LiveStream\",\r\n constraints: {\r\n width: 640,\r\n height: 480,\r\n facingMode: \"environment\"\r\n }\r\n };\r\n\r\n /*if (source instanceof MediaStream) {\r\n // stream\r\n } else*/ if (source instanceof Element) {\r\n // video element\r\n } else if (typeof source === 'string') {\r\n // video source\r\n } else if (typeof source === 'object'\r\n && (typeof source.constraints !== 'undefined'\r\n || typeof source.area !== 'undefined')) {\r\n inputConfig = source;\r\n } else if (!source) {\r\n // LiveStream\r\n }\r\n config = merge({}, config, {inputStream: sourceConfig}, {inputStream: inputConfig});\r\n console.log(config);\r\n const scanner = createScanner();\r\n return {\r\n addEventListener(eventType, cb) {\r\n scanner.subscribe(eventType, cb);\r\n return this;\r\n },\r\n removeEventListener(eventType, cb) {\r\n scanner.unsubscribe(eventType, cb);\r\n return this;\r\n },\r\n start() {\r\n scanner.init(config, (error) => {\r\n if (error) {\r\n console.log(error);\r\n throw error;\r\n }\r\n scanner.start();\r\n });\r\n return this;\r\n },\r\n stop() {\r\n scanner.stop();\r\n return this;\r\n }\r\n };\r\n}\r\n\r\nconst defaultScanner = createScanner();\r\n\r\nfunction setConfig(configuration = {}, key, config = {}) {\r\n var mergedConfig = merge({}, configuration, {[key]: config});\r\n return createApi(mergedConfig);\r\n}\r\n\r\nfunction createApi(configuration = Config) {\r\n return {\r\n fromImage(src, conf) {\r\n return fromImage(configuration, src, conf);\r\n },\r\n fromVideo(src, inputConfig) {\r\n return fromVideo(configuration, src, inputConfig);\r\n },\r\n decoder(conf) {\r\n return setConfig(configuration, \"decoder\", conf);\r\n },\r\n locator(conf) {\r\n return setConfig(configuration, \"locator\", conf);\r\n },\r\n config(conf) {\r\n return createApi(merge({}, configuration, conf));\r\n },\r\n registerResultCollector(resultCollector) {\r\n defaultScanner.registerResultCollector(resultCollector);\r\n },\r\n getCanvas() {\r\n return defaultScanner.canvas;\r\n },\r\n ImageWrapper,\r\n ImageDebug,\r\n ResultCollector,\r\n _worker: {\r\n createScanner\r\n }\r\n };\r\n}\r\nexport default createApi();\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/quagga.js\n **/","const CVUtils = require('../src/common/cv_utils'),\r\n Ndarray = require(\"ndarray\"),\r\n Interp2D = require(\"ndarray-linear-interpolate\").d2;\r\n\r\nvar FrameGrabber = {};\r\n\r\nFrameGrabber.create = function(inputStream) {\r\n var _that = {},\r\n _streamConfig = inputStream.getConfig(),\r\n _video_size = CVUtils.imageRef(inputStream.getRealWidth(), inputStream.getRealHeight()),\r\n _canvasSize = inputStream.getCanvasSize(),\r\n _size = CVUtils.imageRef(inputStream.getWidth(), inputStream.getHeight()),\r\n _topRight = inputStream.getTopRight(),\r\n _data = new Uint8Array(_size.x * _size.y),\r\n _grayData = new Uint8Array(_video_size.x * _video_size.y),\r\n _canvasData = new Uint8Array(_canvasSize.x * _canvasSize.y),\r\n _grayImageArray = Ndarray(_grayData, [_video_size.y, _video_size.x]).transpose(1, 0),\r\n _canvasImageArray = Ndarray(_canvasData, [_canvasSize.y, _canvasSize.x]).transpose(1, 0),\r\n _targetImageArray = _canvasImageArray.hi(_topRight.x + _size.x, _topRight.y + _size.y).lo(_topRight.x, _topRight.y),\r\n _stepSizeX = _video_size.x/_canvasSize.x,\r\n _stepSizeY = _video_size.y/_canvasSize.y;\r\n\r\n console.log(\"FrameGrabber\", JSON.stringify({\r\n videoSize: _grayImageArray.shape,\r\n canvasSize: _canvasImageArray.shape,\r\n stepSize: [_stepSizeX, _stepSizeY],\r\n size: _targetImageArray.shape,\r\n topRight: _topRight\r\n }));\r\n\r\n /**\r\n * Uses the given array as frame-buffer\r\n */\r\n _that.attachData = function(data) {\r\n _data = data;\r\n };\r\n\r\n /**\r\n * Returns the used frame-buffer\r\n */\r\n _that.getData = function() {\r\n return _data;\r\n };\r\n\r\n /**\r\n * Fetches a frame from the input-stream and puts into the frame-buffer.\r\n * The image-data is converted to gray-scale and then half-sampled if configured.\r\n */\r\n _that.grab = function() {\r\n var frame = inputStream.getFrame();\r\n\r\n if (frame) {\r\n this.scaleAndCrop(frame);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n _that.scaleAndCrop = function(frame) {\r\n var x,\r\n y;\r\n\r\n // 1. compute full-sized gray image\r\n CVUtils.computeGray(frame.data, _grayData);\r\n\r\n // 2. interpolate\r\n for (y = 0; y < _canvasSize.y; y++) {\r\n for (x = 0; x < _canvasSize.x; x++) {\r\n _canvasImageArray.set(x, y, (Interp2D(_grayImageArray, x * _stepSizeX, y * _stepSizeY)) | 0);\r\n }\r\n }\r\n\r\n // targetImageArray must be equal to targetSize\r\n if (_targetImageArray.shape[0] !== _size.x ||\r\n _targetImageArray.shape[1] !== _size.y) {\r\n throw new Error(\"Shapes do not match!\");\r\n }\r\n\r\n // 3. crop\r\n for (y = 0; y < _size.y; y++) {\r\n for (x = 0; x < _size.x; x++) {\r\n _data[y * _size.x + x] = _targetImageArray.get(x, y);\r\n }\r\n }\r\n },\r\n\r\n _that.getSize = function() {\r\n return _size;\r\n };\r\n\r\n return _that;\r\n};\r\n\r\nmodule.exports = FrameGrabber;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/frame_grabber.js\n **/","const GetPixels = require(\"get-pixels\");\r\n\r\nvar InputStream = {};\r\n\r\nInputStream.createImageStream = function() {\r\n var that = {};\r\n var _config = null;\r\n\r\n var width = 0,\r\n height = 0,\r\n frameIdx = 0,\r\n paused = true,\r\n loaded = false,\r\n frame = null,\r\n baseUrl,\r\n ended = false,\r\n size,\r\n calculatedWidth,\r\n calculatedHeight,\r\n _eventNames = ['canrecord', 'ended'],\r\n _eventHandlers = {},\r\n _topRight = {x: 0, y: 0},\r\n _canvasSize = {x: 0, y: 0};\r\n\r\n function loadImages() {\r\n loaded = false;\r\n GetPixels(baseUrl, function(err, pixels) {\r\n if (err) {\r\n console.log(err);\r\n exit(1);\r\n }\r\n loaded = true;\r\n console.log(pixels.shape);\r\n frame = pixels;\r\n width = pixels.shape[0];\r\n height = pixels.shape[1];\r\n calculatedWidth = _config.size ? width/height > 1 ? _config.size : Math.floor((width/height) * _config.size) : width;\r\n calculatedHeight = _config.size ? width/height > 1 ? Math.floor((height/width) * _config.size) : _config.size : height;\r\n\r\n _canvasSize.x = calculatedWidth;\r\n _canvasSize.y = calculatedHeight;\r\n\r\n setTimeout(function() {\r\n publishEvent(\"canrecord\", []);\r\n }, 0);\r\n });\r\n }\r\n\r\n function publishEvent(eventName, args) {\r\n var j,\r\n handlers = _eventHandlers[eventName];\r\n\r\n if (handlers && handlers.length > 0) {\r\n for ( j = 0; j < handlers.length; j++) {\r\n handlers[j].apply(that, args);\r\n }\r\n }\r\n }\r\n\r\n\r\n that.trigger = publishEvent;\r\n\r\n that.getWidth = function() {\r\n return calculatedWidth;\r\n };\r\n\r\n that.getHeight = function() {\r\n return calculatedHeight;\r\n };\r\n\r\n that.setWidth = function(width) {\r\n calculatedWidth = width;\r\n };\r\n\r\n that.setHeight = function(height) {\r\n calculatedHeight = height;\r\n };\r\n\r\n that.getRealWidth = function() {\r\n return width;\r\n };\r\n\r\n that.getRealHeight = function() {\r\n return height;\r\n };\r\n\r\n that.setInputStream = function(stream) {\r\n _config = stream;\r\n baseUrl = _config.src;\r\n size = 1;\r\n loadImages();\r\n };\r\n\r\n that.ended = function() {\r\n return ended;\r\n };\r\n\r\n that.setAttribute = function() {};\r\n\r\n that.getConfig = function() {\r\n return _config;\r\n };\r\n\r\n that.pause = function() {\r\n paused = true;\r\n };\r\n\r\n that.play = function() {\r\n paused = false;\r\n };\r\n\r\n that.setCurrentTime = function(time) {\r\n frameIdx = time;\r\n };\r\n\r\n that.addEventListener = function(event, f) {\r\n if (_eventNames.indexOf(event) !== -1) {\r\n if (!_eventHandlers[event]) {\r\n _eventHandlers[event] = [];\r\n }\r\n _eventHandlers[event].push(f);\r\n }\r\n };\r\n\r\n that.setTopRight = function(topRight) {\r\n _topRight.x = topRight.x;\r\n _topRight.y = topRight.y;\r\n };\r\n\r\n that.getTopRight = function() {\r\n return _topRight;\r\n };\r\n\r\n that.setCanvasSize = function(size) {\r\n _canvasSize.x = size.x;\r\n _canvasSize.y = size.y;\r\n };\r\n\r\n that.getCanvasSize = function() {\r\n return _canvasSize;\r\n };\r\n\r\n that.getFrame = function() {\r\n if (!loaded){\r\n return null;\r\n }\r\n return frame;\r\n };\r\n\r\n return that;\r\n};\r\n\r\nmodule.exports = InputStream;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./lib/input_stream.js\n **/","const vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n dot: require('gl-vec2/dot')\r\n};\r\n\r\n/**\r\n * Creates a cluster for grouping similar orientations of datapoints\r\n */\r\nexport default {\r\n create: function(point, threshold) {\r\n var points = [],\r\n center = {\r\n rad: 0,\r\n vec: vec2.clone([0, 0])\r\n },\r\n pointMap = {};\r\n\r\n function init() {\r\n add(point);\r\n updateCenter();\r\n }\r\n\r\n function add(pointToAdd) {\r\n pointMap[pointToAdd.id] = pointToAdd;\r\n points.push(pointToAdd);\r\n }\r\n\r\n function updateCenter() {\r\n var i, sum = 0;\r\n for ( i = 0; i < points.length; i++) {\r\n sum += points[i].rad;\r\n }\r\n center.rad = sum / points.length;\r\n center.vec = vec2.clone([Math.cos(center.rad), Math.sin(center.rad)]);\r\n }\r\n\r\n init();\r\n\r\n return {\r\n add: function(pointToAdd) {\r\n if (!pointMap[pointToAdd.id]) {\r\n add(pointToAdd);\r\n updateCenter();\r\n }\r\n },\r\n fits: function(otherPoint) {\r\n // check cosine similarity to center-angle\r\n var similarity = Math.abs(vec2.dot(otherPoint.point.vec, center.vec));\r\n if (similarity > threshold) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n getPoints: function() {\r\n return points;\r\n },\r\n getCenter: function() {\r\n return center;\r\n }\r\n };\r\n },\r\n createPoint: function(newPoint, id, property) {\r\n return {\r\n rad: newPoint[property],\r\n point: newPoint,\r\n id: id\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/cluster.js\n **/","export default function createEventedElement() {\r\n var events = {};\r\n\r\n function getEvent(eventName) {\r\n if (!events[eventName]) {\r\n events[eventName] = {\r\n subscribers: []\r\n };\r\n }\r\n return events[eventName];\r\n }\r\n\r\n function clearEvents(){\r\n events = {};\r\n }\r\n\r\n function publishSubscription(subscription, data) {\r\n if (subscription.async) {\r\n setTimeout(function() {\r\n subscription.callback(data);\r\n }, 4);\r\n } else {\r\n subscription.callback(data);\r\n }\r\n }\r\n\r\n function subscribe(event, callback, async) {\r\n var subscription;\r\n\r\n if ( typeof callback === \"function\") {\r\n subscription = {\r\n callback: callback,\r\n async: async\r\n };\r\n } else {\r\n subscription = callback;\r\n if (!subscription.callback) {\r\n throw \"Callback was not specified on options\";\r\n }\r\n }\r\n\r\n getEvent(event).subscribers.push(subscription);\r\n }\r\n\r\n return {\r\n subscribe: function(event, callback, async) {\r\n return subscribe(event, callback, async);\r\n },\r\n publish: function(eventName, data) {\r\n var event = getEvent(eventName),\r\n subscribers = event.subscribers;\r\n\r\n // Publish one-time subscriptions\r\n subscribers.filter(function(subscriber) {\r\n return !!subscriber.once;\r\n }).forEach((subscriber) => {\r\n publishSubscription(subscriber, data);\r\n });\r\n\r\n // remove them from the subscriber\r\n event.subscribers = subscribers.filter(function(subscriber) {\r\n return !subscriber.once;\r\n });\r\n\r\n // publish the rest\r\n event.subscribers.forEach((subscriber) => {\r\n publishSubscription(subscriber, data);\r\n });\r\n },\r\n once: function(event, callback, async) {\r\n subscribe(event, {\r\n callback: callback,\r\n async: async,\r\n once: true\r\n });\r\n },\r\n unsubscribe: function(eventName, callback) {\r\n var event;\r\n\r\n if (eventName) {\r\n event = getEvent(eventName);\r\n if (event && callback) {\r\n event.subscribers = event.subscribers.filter(function(subscriber){\r\n return subscriber.callback !== callback;\r\n });\r\n } else {\r\n event.subscribers = [];\r\n }\r\n } else {\r\n clearEvents();\r\n }\r\n }\r\n };\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/events.js\n **/","/**\r\n * Construct representing a part of another {ImageWrapper}. Shares data\r\n * between the parent and the child.\r\n * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner)\r\n * @param size {ImageRef} The size of the resulting image\r\n * @param I {ImageWrapper} The {ImageWrapper} to share from\r\n * @returns {SubImage} A shared part of the original image\r\n */\r\nfunction SubImage(from, size, I) {\r\n if (!I) {\r\n I = {\r\n data: null,\r\n size: size\r\n };\r\n }\r\n this.data = I.data;\r\n this.originalSize = I.size;\r\n this.I = I;\r\n\r\n this.from = from;\r\n this.size = size;\r\n}\r\n\r\n/**\r\n * Displays the {SubImage} in a given canvas\r\n * @param canvas {Canvas} The canvas element to write to\r\n * @param scale {Number} Scale which is applied to each pixel-value\r\n */\r\nSubImage.prototype.show = function(canvas, scale) {\r\n var ctx,\r\n frame,\r\n data,\r\n current,\r\n y,\r\n x,\r\n pixel;\r\n\r\n if (!scale) {\r\n scale = 1.0;\r\n }\r\n ctx = canvas.getContext('2d');\r\n canvas.width = this.size.x;\r\n canvas.height = this.size.y;\r\n frame = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n data = frame.data;\r\n current = 0;\r\n for (y = 0; y < this.size.y; y++) {\r\n for (x = 0; x < this.size.x; x++) {\r\n pixel = y * this.size.x + x;\r\n current = this.get(x, y) * scale;\r\n data[pixel * 4 + 0] = current;\r\n data[pixel * 4 + 1] = current;\r\n data[pixel * 4 + 2] = current;\r\n data[pixel * 4 + 3] = 255;\r\n }\r\n }\r\n frame.data = data;\r\n ctx.putImageData(frame, 0, 0);\r\n};\r\n\r\n/**\r\n * Retrieves a given pixel position from the {SubImage}\r\n * @param x {Number} The x-position\r\n * @param y {Number} The y-position\r\n * @returns {Number} The grayscale value at the pixel-position\r\n */\r\nSubImage.prototype.get = function(x, y) {\r\n return this.data[(this.from.y + y) * this.originalSize.x + this.from.x + x];\r\n};\r\n\r\n/**\r\n * Updates the underlying data from a given {ImageWrapper}\r\n * @param image {ImageWrapper} The updated image\r\n */\r\nSubImage.prototype.updateData = function(image) {\r\n this.originalSize = image.size;\r\n this.data = image.data;\r\n};\r\n\r\n/**\r\n * Updates the position of the shared area\r\n * @param from {x,y} The new location\r\n * @returns {SubImage} returns {this} for possible chaining\r\n */\r\nSubImage.prototype.updateFrom = function(from) {\r\n this.from = from;\r\n return this;\r\n};\r\n\r\nexport default (SubImage);\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/subImage.js\n **/","/*\r\n * typedefs.js\r\n * Normalizes browser-specific prefixes\r\n */\r\n\r\nif (typeof window !== 'undefined') {\r\n window.requestAnimFrame = (function () {\r\n return window.requestAnimationFrame ||\r\n window.webkitRequestAnimationFrame ||\r\n window.mozRequestAnimationFrame ||\r\n window.oRequestAnimationFrame ||\r\n window.msRequestAnimationFrame ||\r\n function (/* function FrameRequestCallback */ callback) {\r\n window.setTimeout(callback, 1000 / 60);\r\n };\r\n })();\r\n}\r\nMath.imul = Math.imul || function(a, b) {\r\n var ah = (a >>> 16) & 0xffff,\r\n al = a & 0xffff,\r\n bh = (b >>> 16) & 0xffff,\r\n bl = b & 0xffff;\r\n // the shift by 0 fixes the sign on the high part\r\n // the final |0 converts the unsigned value into a signed value\r\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/common/typedefs.js\n **/","module.exports = {\r\n inputStream: {\r\n type: \"ImageStream\",\r\n sequence: false,\r\n size: 800,\r\n area: {\r\n top: \"0%\",\r\n right: \"0%\",\r\n left: \"0%\",\r\n bottom: \"0%\"\r\n },\r\n singleChannel: false // true: only the red color-channel is read\r\n },\r\n locate: true,\r\n numOfWorkers: 0,\r\n decoder: {\r\n readers: [\r\n 'code_128_reader'\r\n ]\r\n },\r\n locator: {\r\n halfSample: true,\r\n patchSize: \"medium\" // x-small, small, medium, large, x-large\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/config/config.node.js\n **/","import Bresenham from './bresenham';\r\nimport ImageDebug from '../common/image_debug';\r\nimport Code128Reader from '../reader/code_128_reader';\r\nimport EANReader from '../reader/ean_reader';\r\nimport Code39Reader from '../reader/code_39_reader';\r\nimport Code39VINReader from '../reader/code_39_vin_reader';\r\nimport CodabarReader from '../reader/codabar_reader';\r\nimport UPCReader from '../reader/upc_reader';\r\nimport EAN8Reader from '../reader/ean_8_reader';\r\nimport EAN2Reader from '../reader/ean_2_reader';\r\nimport EAN5Reader from '../reader/ean_5_reader';\r\nimport UPCEReader from '../reader/upc_e_reader';\r\nimport I2of5Reader from '../reader/i2of5_reader';\r\n\r\nconst READERS = {\r\n code_128_reader: Code128Reader,\r\n ean_reader: EANReader,\r\n ean_5_reader: EAN5Reader,\r\n ean_2_reader: EAN2Reader,\r\n ean_8_reader: EAN8Reader,\r\n code_39_reader: Code39Reader,\r\n code_39_vin_reader: Code39VINReader,\r\n codabar_reader: CodabarReader,\r\n upc_reader: UPCReader,\r\n upc_e_reader: UPCEReader,\r\n i2of5_reader: I2of5Reader\r\n};\r\nexport default {\r\n create: function(config, inputImageWrapper) {\r\n var _canvas = {\r\n ctx: {\r\n frequency: null,\r\n pattern: null,\r\n overlay: null\r\n },\r\n dom: {\r\n frequency: null,\r\n pattern: null,\r\n overlay: null\r\n }\r\n },\r\n _barcodeReaders = [];\r\n\r\n initCanvas();\r\n initReaders();\r\n initConfig();\r\n\r\n function initCanvas() {\r\n if (ENV.development && typeof document !== 'undefined') {\r\n var $debug = document.querySelector(\"#debug.detection\");\r\n _canvas.dom.frequency = document.querySelector(\"canvas.frequency\");\r\n if (!_canvas.dom.frequency) {\r\n _canvas.dom.frequency = document.createElement(\"canvas\");\r\n _canvas.dom.frequency.className = \"frequency\";\r\n if ($debug) {\r\n $debug.appendChild(_canvas.dom.frequency);\r\n }\r\n }\r\n _canvas.ctx.frequency = _canvas.dom.frequency.getContext(\"2d\");\r\n\r\n _canvas.dom.pattern = document.querySelector(\"canvas.patternBuffer\");\r\n if (!_canvas.dom.pattern) {\r\n _canvas.dom.pattern = document.createElement(\"canvas\");\r\n _canvas.dom.pattern.className = \"patternBuffer\";\r\n if ($debug) {\r\n $debug.appendChild(_canvas.dom.pattern);\r\n }\r\n }\r\n _canvas.ctx.pattern = _canvas.dom.pattern.getContext(\"2d\");\r\n\r\n _canvas.dom.overlay = document.querySelector(\"canvas.drawingBuffer\");\r\n if (_canvas.dom.overlay) {\r\n _canvas.ctx.overlay = _canvas.dom.overlay.getContext(\"2d\");\r\n }\r\n }\r\n }\r\n\r\n function initReaders() {\r\n config.readers.forEach(function(readerConfig) {\r\n var reader,\r\n configuration = {},\r\n supplements = [];\r\n\r\n if (typeof readerConfig === 'object') {\r\n reader = readerConfig.format;\r\n configuration = readerConfig.config;\r\n } else if (typeof readerConfig === 'string') {\r\n reader = readerConfig;\r\n }\r\n if (ENV.development) {\r\n console.log(\"Before registering reader: \", reader);\r\n }\r\n if (configuration.supplements) {\r\n supplements = configuration\r\n .supplements.map((supplement) => {\r\n return new READERS[supplement]();\r\n });\r\n }\r\n _barcodeReaders.push(new READERS[reader](configuration, supplements));\r\n });\r\n if (ENV.development) {\r\n console.log(\"Registered Readers: \" + _barcodeReaders\r\n .map((reader) => JSON.stringify({format: reader.FORMAT, config: reader.config}))\r\n .join(', '));\r\n }\r\n }\r\n\r\n function initConfig() {\r\n if (ENV.development && typeof document !== 'undefined') {\r\n var i,\r\n vis = [{\r\n node: _canvas.dom.frequency,\r\n prop: config.debug.showFrequency\r\n }, {\r\n node: _canvas.dom.pattern,\r\n prop: config.debug.showPattern\r\n }];\r\n\r\n for (i = 0; i < vis.length; i++) {\r\n if (vis[i].prop === true) {\r\n vis[i].node.style.display = \"block\";\r\n } else {\r\n vis[i].node.style.display = \"none\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * extend the line on both ends\r\n * @param {Array} line\r\n * @param {Number} angle\r\n */\r\n function getExtendedLine(line, angle, ext) {\r\n function extendLine(amount) {\r\n var extension = {\r\n y: amount * Math.sin(angle),\r\n x: amount * Math.cos(angle)\r\n };\r\n\r\n line[0].y -= extension.y;\r\n line[0].x -= extension.x;\r\n line[1].y += extension.y;\r\n line[1].x += extension.x;\r\n }\r\n\r\n // check if inside image\r\n extendLine(ext);\r\n while (ext > 1 && (!inputImageWrapper.inImageWithBorder(line[0], 0)\r\n || !inputImageWrapper.inImageWithBorder(line[1], 0))) {\r\n ext -= Math.ceil(ext / 2);\r\n extendLine(-ext);\r\n }\r\n return line;\r\n }\r\n\r\n function getLine(box) {\r\n return [{\r\n x: (box[1][0] - box[0][0]) / 2 + box[0][0],\r\n y: (box[1][1] - box[0][1]) / 2 + box[0][1]\r\n }, {\r\n x: (box[3][0] - box[2][0]) / 2 + box[2][0],\r\n y: (box[3][1] - box[2][1]) / 2 + box[2][1]\r\n }];\r\n }\r\n\r\n function tryDecode(line) {\r\n var result = null,\r\n i,\r\n barcodeLine = Bresenham.getBarcodeLine(inputImageWrapper, line[0], line[1]);\r\n\r\n if (ENV.development && config.debug.showFrequency) {\r\n ImageDebug.drawPath(line, {x: 'x', y: 'y'}, _canvas.ctx.overlay, {color: 'red', lineWidth: 3});\r\n Bresenham.debug.printFrequency(barcodeLine.line, _canvas.dom.frequency);\r\n }\r\n\r\n Bresenham.toBinaryLine(barcodeLine);\r\n\r\n if (ENV.development && config.debug.showPattern) {\r\n Bresenham.debug.printPattern(barcodeLine.line, _canvas.dom.pattern);\r\n }\r\n\r\n for ( i = 0; i < _barcodeReaders.length && result === null; i++) {\r\n result = _barcodeReaders[i].decodePattern(barcodeLine.line);\r\n }\r\n if (result === null){\r\n return null;\r\n }\r\n return {\r\n codeResult: result,\r\n barcodeLine: barcodeLine\r\n };\r\n }\r\n\r\n /**\r\n * This method slices the given area apart and tries to detect a barcode-pattern\r\n * for each slice. It returns the decoded barcode, or null if nothing was found\r\n * @param {Array} box\r\n * @param {Array} line\r\n * @param {Number} lineAngle\r\n */\r\n function tryDecodeBruteForce(box, line, lineAngle) {\r\n var sideLength = Math.sqrt(Math.pow(box[1][0] - box[0][0], 2) + Math.pow((box[1][1] - box[0][1]), 2)),\r\n i,\r\n slices = 16,\r\n result = null,\r\n dir,\r\n extension,\r\n xdir = Math.sin(lineAngle),\r\n ydir = Math.cos(lineAngle);\r\n\r\n for ( i = 1; i < slices && result === null; i++) {\r\n // move line perpendicular to angle\r\n dir = sideLength / slices * i * (i % 2 === 0 ? -1 : 1);\r\n extension = {\r\n y: dir * xdir,\r\n x: dir * ydir\r\n };\r\n line[0].y += extension.x;\r\n line[0].x -= extension.y;\r\n line[1].y += extension.x;\r\n line[1].x -= extension.y;\r\n\r\n result = tryDecode(line);\r\n }\r\n return result;\r\n }\r\n\r\n function getLineLength(line) {\r\n return Math.sqrt(\r\n Math.pow(Math.abs(line[1].y - line[0].y), 2) +\r\n Math.pow(Math.abs(line[1].x - line[0].x), 2));\r\n }\r\n\r\n /**\r\n * With the help of the configured readers (Code128 or EAN) this function tries to detect a\r\n * valid barcode pattern within the given area.\r\n * @param {Object} box The area to search in\r\n * @returns {Object} the result {codeResult, line, angle, pattern, threshold}\r\n */\r\n function decodeFromBoundingBox(box) {\r\n var line,\r\n lineAngle,\r\n ctx = _canvas.ctx.overlay,\r\n result,\r\n lineLength;\r\n\r\n if (ENV.development) {\r\n if (config.debug.drawBoundingBox && ctx) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, ctx, {color: \"blue\", lineWidth: 2});\r\n }\r\n }\r\n\r\n line = getLine(box);\r\n lineLength = getLineLength(line);\r\n lineAngle = Math.atan2(line[1].y - line[0].y, line[1].x - line[0].x);\r\n line = getExtendedLine(line, lineAngle, Math.floor(lineLength * 0.1));\r\n if (line === null){\r\n return null;\r\n }\r\n\r\n result = tryDecode(line);\r\n if (result === null) {\r\n result = tryDecodeBruteForce(box, line, lineAngle);\r\n }\r\n\r\n if (result === null) {\r\n return null;\r\n }\r\n\r\n if (ENV.development && result && config.debug.drawScanline && ctx) {\r\n ImageDebug.drawPath(line, {x: 'x', y: 'y'}, ctx, {color: 'red', lineWidth: 3});\r\n }\r\n\r\n return {\r\n codeResult: result.codeResult,\r\n line: line,\r\n angle: lineAngle,\r\n pattern: result.barcodeLine.line,\r\n threshold: result.barcodeLine.threshold\r\n };\r\n }\r\n\r\n return {\r\n decodeFromBoundingBox: function(box) {\r\n return decodeFromBoundingBox(box);\r\n },\r\n decodeFromBoundingBoxes: function(boxes) {\r\n var i, result,\r\n barcodes = [],\r\n multiple = config.multiple;\r\n\r\n for ( i = 0; i < boxes.length; i++) {\r\n const box = boxes[i];\r\n result = decodeFromBoundingBox(box) || {};\r\n result.box = box;\r\n\r\n if (multiple) {\r\n barcodes.push(result);\r\n } else if (result.codeResult) {\r\n return result;\r\n }\r\n }\r\n\r\n if (multiple) {\r\n return {\r\n barcodes\r\n };\r\n }\r\n },\r\n setReaders: function(readers) {\r\n config.readers = readers;\r\n _barcodeReaders.length = 0;\r\n initReaders();\r\n }\r\n };\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/decoder/barcode_decoder.js\n **/","var Bresenham = {};\r\n\r\nvar Slope = {\r\n DIR: {\r\n UP: 1,\r\n DOWN: -1\r\n }\r\n};\r\n/**\r\n * Scans a line of the given image from point p1 to p2 and returns a result object containing\r\n * gray-scale values (0-255) of the underlying pixels in addition to the min\r\n * and max values.\r\n * @param {Object} imageWrapper\r\n * @param {Object} p1 The start point {x,y}\r\n * @param {Object} p2 The end point {x,y}\r\n * @returns {line, min, max}\r\n */\r\nBresenham.getBarcodeLine = function(imageWrapper, p1, p2) {\r\n var x0 = p1.x | 0,\r\n y0 = p1.y | 0,\r\n x1 = p2.x | 0,\r\n y1 = p2.y | 0,\r\n steep = Math.abs(y1 - y0) > Math.abs(x1 - x0),\r\n deltax,\r\n deltay,\r\n error,\r\n ystep,\r\n y,\r\n tmp,\r\n x,\r\n line = [],\r\n imageData = imageWrapper.data,\r\n width = imageWrapper.size.x,\r\n sum = 0,\r\n val,\r\n min = 255,\r\n max = 0;\r\n\r\n function read(a, b) {\r\n val = imageData[b * width + a];\r\n sum += val;\r\n min = val < min ? val : min;\r\n max = val > max ? val : max;\r\n line.push(val);\r\n }\r\n\r\n if (steep) {\r\n tmp = x0;\r\n x0 = y0;\r\n y0 = tmp;\r\n\r\n tmp = x1;\r\n x1 = y1;\r\n y1 = tmp;\r\n }\r\n if (x0 > x1) {\r\n tmp = x0;\r\n x0 = x1;\r\n x1 = tmp;\r\n\r\n tmp = y0;\r\n y0 = y1;\r\n y1 = tmp;\r\n }\r\n deltax = x1 - x0;\r\n deltay = Math.abs(y1 - y0);\r\n error = (deltax / 2) | 0;\r\n y = y0;\r\n ystep = y0 < y1 ? 1 : -1;\r\n for ( x = x0; x < x1; x++) {\r\n if (steep){\r\n read(y, x);\r\n } else {\r\n read(x, y);\r\n }\r\n error = error - deltay;\r\n if (error < 0) {\r\n y = y + ystep;\r\n error = error + deltax;\r\n }\r\n }\r\n\r\n return {\r\n line: line,\r\n min: min,\r\n max: max\r\n };\r\n};\r\n\r\n/**\r\n * Converts the result from getBarcodeLine into a binary representation\r\n * also considering the frequency and slope of the signal for more robust results\r\n * @param {Object} result {line, min, max}\r\n */\r\nBresenham.toBinaryLine = function(result) {\r\n var min = result.min,\r\n max = result.max,\r\n line = result.line,\r\n slope,\r\n slope2,\r\n center = min + (max - min) / 2,\r\n extrema = [],\r\n currentDir,\r\n dir,\r\n threshold = (max - min) / 12,\r\n rThreshold = -threshold,\r\n i,\r\n j;\r\n\r\n // 1. find extrema\r\n currentDir = line[0] > center ? Slope.DIR.UP : Slope.DIR.DOWN;\r\n extrema.push({\r\n pos: 0,\r\n val: line[0]\r\n });\r\n for ( i = 0; i < line.length - 2; i++) {\r\n slope = (line[i + 1] - line[i]);\r\n slope2 = (line[i + 2] - line[i + 1]);\r\n if ((slope + slope2) < rThreshold && line[i + 1] < (center * 1.5)) {\r\n dir = Slope.DIR.DOWN;\r\n } else if ((slope + slope2) > threshold && line[i + 1] > (center * 0.5)) {\r\n dir = Slope.DIR.UP;\r\n } else {\r\n dir = currentDir;\r\n }\r\n\r\n if (currentDir !== dir) {\r\n extrema.push({\r\n pos: i,\r\n val: line[i]\r\n });\r\n currentDir = dir;\r\n }\r\n }\r\n extrema.push({\r\n pos: line.length,\r\n val: line[line.length - 1]\r\n });\r\n\r\n for ( j = extrema[0].pos; j < extrema[1].pos; j++) {\r\n line[j] = line[j] > center ? 0 : 1;\r\n }\r\n\r\n // iterate over extrema and convert to binary based on avg between minmax\r\n for ( i = 1; i < extrema.length - 1; i++) {\r\n if (extrema[i + 1].val > extrema[i].val) {\r\n threshold = (extrema[i].val + ((extrema[i + 1].val - extrema[i].val) / 3) * 2) | 0;\r\n } else {\r\n threshold = (extrema[i + 1].val + ((extrema[i].val - extrema[i + 1].val) / 3)) | 0;\r\n }\r\n\r\n for ( j = extrema[i].pos; j < extrema[i + 1].pos; j++) {\r\n line[j] = line[j] > threshold ? 0 : 1;\r\n }\r\n }\r\n\r\n return {\r\n line: line,\r\n threshold: threshold\r\n };\r\n};\r\n\r\n/**\r\n * Used for development only\r\n */\r\nBresenham.debug = {\r\n printFrequency: function(line, canvas) {\r\n var i,\r\n ctx = canvas.getContext(\"2d\");\r\n canvas.width = line.length;\r\n canvas.height = 256;\r\n\r\n ctx.beginPath();\r\n ctx.strokeStyle = \"blue\";\r\n for ( i = 0; i < line.length; i++) {\r\n ctx.moveTo(i, 255);\r\n ctx.lineTo(i, 255 - line[i]);\r\n }\r\n ctx.stroke();\r\n ctx.closePath();\r\n },\r\n\r\n printPattern: function(line, canvas) {\r\n var ctx = canvas.getContext(\"2d\"), i;\r\n\r\n canvas.width = line.length;\r\n ctx.fillColor = \"black\";\r\n for ( i = 0; i < line.length; i++) {\r\n if (line[i] === 1) {\r\n ctx.fillRect(i, 0, 1, 100);\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default Bresenham;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/decoder/bresenham.js\n **/","import {merge, pick} from 'lodash';\r\n\r\nvar streamRef;\r\n\r\nfunction waitForVideo(video) {\r\n return new Promise((resolve, reject) => {\r\n let attempts = 10;\r\n\r\n function checkVideo() {\r\n if (attempts > 0) {\r\n if (video.videoWidth > 0 && video.videoHeight > 0) {\r\n if (ENV.development) {\r\n console.log(video.videoWidth + \"px x \" + video.videoHeight + \"px\");\r\n }\r\n resolve();\r\n } else {\r\n window.setTimeout(checkVideo, 500);\r\n }\r\n } else {\r\n reject('Unable to play video stream. Is webcam working?');\r\n }\r\n attempts--;\r\n }\r\n checkVideo();\r\n });\r\n}\r\n\r\n/**\r\n * Tries to attach the camera-stream to a given video-element\r\n * and calls the callback function when the content is ready\r\n * @param {Object} constraints\r\n * @param {Object} video\r\n */\r\nfunction initCamera(video, constraints) {\r\n return navigator.mediaDevices.getUserMedia(constraints)\r\n .then((stream) => {\r\n return new Promise((resolve) => {\r\n streamRef = stream;\r\n video.setAttribute(\"autoplay\", 'true');\r\n video.srcObject = stream;\r\n video.addEventListener('loadedmetadata', () => {\r\n video.play();\r\n resolve();\r\n });\r\n });\r\n })\r\n .then(waitForVideo.bind(null, video));\r\n}\r\n\r\nfunction deprecatedConstraints(videoConstraints) {\r\n const normalized = pick(videoConstraints, [\"width\", \"height\", \"facingMode\",\r\n \"aspectRatio\", \"deviceId\"]);\r\n\r\n if (typeof videoConstraints.minAspectRatio !== 'undefined' &&\r\n videoConstraints.minAspectRatio > 0) {\r\n normalized.aspectRatio = videoConstraints.minAspectRatio;\r\n console.log(\"WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead\");\r\n }\r\n if (typeof videoConstraints.facing !== 'undefined') {\r\n normalized.facingMode = videoConstraints.facing;\r\n console.log(\"WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'\");\r\n }\r\n return normalized;\r\n}\r\n\r\nfunction applyCameraFacing(facing, constraints) {\r\n if (typeof constraints.video.deviceId !== 'undefined' || !facing){\r\n return Promise.resolve(constraints);\r\n }\r\n if ( typeof MediaStreamTrack !== 'undefined' &&\r\n typeof MediaStreamTrack.getSources !== 'undefined') {\r\n return new Promise((resolve) => {\r\n MediaStreamTrack.getSources((sourceInfos) => {\r\n const videoSource = sourceInfos.filter((sourceInfo) => (\r\n sourceInfo.kind === \"video\" && sourceInfo.facing === facing\r\n ))[0];\r\n if (videoSource) {\r\n return resolve(merge({}, constraints,\r\n {video: {deviceId: videoSource.id}}));\r\n }\r\n return resolve(constraints);\r\n });\r\n });\r\n }\r\n return Promise.resolve(merge({}, constraints, {video: {facingMode: facing}}));\r\n}\r\n\r\nfunction pickConstraints(videoConstraints) {\r\n const constraints = {\r\n audio: false,\r\n video: deprecatedConstraints(videoConstraints)\r\n };\r\n return applyCameraFacing(constraints.video.facingMode, constraints);\r\n}\r\n\r\nexport default {\r\n request: function(video, videoConstraints) {\r\n return pickConstraints(videoConstraints)\r\n .then(initCamera.bind(null, video));\r\n },\r\n release: function() {\r\n var tracks = streamRef && streamRef.getVideoTracks();\r\n if (tracks && tracks.length) {\r\n tracks[0].stop();\r\n }\r\n streamRef = null;\r\n }\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/input/camera_access.js\n **/","import ImageWrapper from '../common/image_wrapper';\r\nimport {\r\n calculatePatchSize,\r\n otsuThreshold,\r\n hsv2rgb,\r\n cluster,\r\n topGeneric,\r\n imageRef,\r\n halfSample,\r\n computeImageArea\r\n} from '../common/cv_utils';\r\nimport ArrayHelper from '../common/array_helper';\r\nimport ImageDebug from '../common/image_debug';\r\nimport Rasterizer from './rasterizer';\r\nimport Tracer from './tracer';\r\nimport skeletonizer from './skeletonizer';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone'),\r\n dot: require('gl-vec2/dot'),\r\n scale: require('gl-vec2/scale'),\r\n transformMat2: require('gl-vec2/transformMat2')\r\n};\r\nconst mat2 = {\r\n copy: require('gl-mat2/copy'),\r\n create: require('gl-mat2/create'),\r\n invert: require('gl-mat2/invert')\r\n};\r\n\r\nexport default function createLocator(inputImageWrapper, config) {\r\n var _config = config,\r\n _currentImageWrapper,\r\n _skelImageWrapper,\r\n _subImageWrapper,\r\n _labelImageWrapper,\r\n _patchGrid,\r\n _patchLabelGrid,\r\n _imageToPatchGrid,\r\n _binaryImageWrapper,\r\n _patchSize,\r\n _canvasContainer = {\r\n ctx: {\r\n binary: null\r\n },\r\n dom: {\r\n binary: null\r\n }\r\n },\r\n _numPatches = {x: 0, y: 0},\r\n _inputImageWrapper = inputImageWrapper,\r\n _skeletonizer;\r\n\r\n initBuffers();\r\n initCanvas();\r\n\r\n function initBuffers() {\r\n var skeletonImageData;\r\n\r\n if (_config.halfSample) {\r\n _currentImageWrapper = new ImageWrapper({\r\n x: _inputImageWrapper.size.x / 2 | 0,\r\n y: _inputImageWrapper.size.y / 2 | 0\r\n });\r\n } else {\r\n _currentImageWrapper = _inputImageWrapper;\r\n }\r\n\r\n _patchSize = calculatePatchSize(_config.patchSize, _currentImageWrapper.size);\r\n\r\n _numPatches.x = _currentImageWrapper.size.x / _patchSize.x | 0;\r\n _numPatches.y = _currentImageWrapper.size.y / _patchSize.y | 0;\r\n\r\n _binaryImageWrapper = new ImageWrapper(_currentImageWrapper.size, undefined, Uint8Array, false);\r\n\r\n _labelImageWrapper = new ImageWrapper(_patchSize, undefined, Array, true);\r\n\r\n skeletonImageData = new ArrayBuffer(64 * 1024);\r\n _subImageWrapper = new ImageWrapper(_patchSize,\r\n new Uint8Array(skeletonImageData, 0, _patchSize.x * _patchSize.y));\r\n _skelImageWrapper = new ImageWrapper(_patchSize,\r\n new Uint8Array(skeletonImageData, _patchSize.x * _patchSize.y * 3, _patchSize.x * _patchSize.y),\r\n undefined, true);\r\n _skeletonizer = skeletonizer((typeof window !== 'undefined') ? window : (typeof self !== 'undefined') ? self : global, {\r\n size: _patchSize.x\r\n }, skeletonImageData);\r\n\r\n _imageToPatchGrid = new ImageWrapper({\r\n x: (_currentImageWrapper.size.x / _subImageWrapper.size.x) | 0,\r\n y: (_currentImageWrapper.size.y / _subImageWrapper.size.y) | 0\r\n }, undefined, Array, true);\r\n _patchGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, undefined, true);\r\n _patchLabelGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, Int32Array, true);\r\n }\r\n\r\n function initCanvas() {\r\n if (_config.useWorker || typeof document === 'undefined') {\r\n return;\r\n }\r\n _canvasContainer.dom.binary = document.createElement(\"canvas\");\r\n _canvasContainer.dom.binary.className = \"binaryBuffer\";\r\n if (ENV.development && _config.debug.showCanvas === true) {\r\n document.querySelector(\"#debug\").appendChild(_canvasContainer.dom.binary);\r\n }\r\n _canvasContainer.ctx.binary = _canvasContainer.dom.binary.getContext(\"2d\");\r\n _canvasContainer.dom.binary.width = _binaryImageWrapper.size.x;\r\n _canvasContainer.dom.binary.height = _binaryImageWrapper.size.y;\r\n }\r\n\r\n /**\r\n * Creates a bounding box which encloses all the given patches\r\n * @returns {Array} The minimal bounding box\r\n */\r\n function boxFromPatches(patches) {\r\n var overAvg,\r\n i,\r\n j,\r\n patch,\r\n transMat,\r\n minx =\r\n _binaryImageWrapper.size.x,\r\n miny = _binaryImageWrapper.size.y,\r\n maxx = -_binaryImageWrapper.size.x,\r\n maxy = -_binaryImageWrapper.size.y,\r\n box,\r\n scale;\r\n\r\n // draw all patches which are to be taken into consideration\r\n overAvg = 0;\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n overAvg += patch.rad;\r\n if (ENV.development && _config.debug.showPatches) {\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: \"red\"});\r\n }\r\n }\r\n\r\n overAvg /= patches.length;\r\n overAvg = (overAvg * 180 / Math.PI + 90) % 180 - 90;\r\n if (overAvg < 0) {\r\n overAvg += 180;\r\n }\r\n\r\n overAvg = (180 - overAvg) * Math.PI / 180;\r\n transMat = mat2.copy(mat2.create(), [Math.cos(overAvg), Math.sin(overAvg), -Math.sin(overAvg), Math.cos(overAvg)]);\r\n\r\n // iterate over patches and rotate by angle\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n for ( j = 0; j < 4; j++) {\r\n vec2.transformMat2(patch.box[j], patch.box[j], transMat);\r\n }\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showTransformed) {\r\n ImageDebug.drawPath(patch.box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#99ff00', lineWidth: 2});\r\n }\r\n }\r\n\r\n // find bounding box\r\n for ( i = 0; i < patches.length; i++) {\r\n patch = patches[i];\r\n for ( j = 0; j < 4; j++) {\r\n if (patch.box[j][0] < minx) {\r\n minx = patch.box[j][0];\r\n }\r\n if (patch.box[j][0] > maxx) {\r\n maxx = patch.box[j][0];\r\n }\r\n if (patch.box[j][1] < miny) {\r\n miny = patch.box[j][1];\r\n }\r\n if (patch.box[j][1] > maxy) {\r\n maxy = patch.box[j][1];\r\n }\r\n }\r\n }\r\n\r\n box = [[minx, miny], [maxx, miny], [maxx, maxy], [minx, maxy]];\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showTransformedBox) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2});\r\n }\r\n\r\n scale = _config.halfSample ? 2 : 1;\r\n // reverse rotation;\r\n transMat = mat2.invert(transMat, transMat);\r\n for ( j = 0; j < 4; j++) {\r\n vec2.transformMat2(box[j], box[j], transMat);\r\n }\r\n\r\n if (ENV.development && _config.debug.boxFromPatches.showBB) {\r\n ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2});\r\n }\r\n\r\n for ( j = 0; j < 4; j++) {\r\n vec2.scale(box[j], box[j], scale);\r\n }\r\n\r\n return box;\r\n }\r\n\r\n /**\r\n * Creates a binary image of the current image\r\n */\r\n function binarizeImage() {\r\n otsuThreshold(_currentImageWrapper, _binaryImageWrapper);\r\n _binaryImageWrapper.zeroBorder();\r\n if (ENV.development && _config.debug.showCanvas) {\r\n _binaryImageWrapper.show(_canvasContainer.dom.binary, 255);\r\n }\r\n }\r\n\r\n /**\r\n * Iterate over the entire image\r\n * extract patches\r\n */\r\n function findPatches() {\r\n var i,\r\n j,\r\n x,\r\n y,\r\n moments,\r\n patchesFound = [],\r\n rasterizer,\r\n rasterResult,\r\n patch;\r\n for (i = 0; i < _numPatches.x; i++) {\r\n for (j = 0; j < _numPatches.y; j++) {\r\n x = _subImageWrapper.size.x * i;\r\n y = _subImageWrapper.size.y * j;\r\n\r\n // seperate parts\r\n skeletonize(x, y);\r\n\r\n // Rasterize, find individual bars\r\n _skelImageWrapper.zeroBorder();\r\n ArrayHelper.init(_labelImageWrapper.data, 0);\r\n rasterizer = Rasterizer.create(_skelImageWrapper, _labelImageWrapper);\r\n rasterResult = rasterizer.rasterize(0);\r\n\r\n if (ENV.development && _config.debug.showLabels) {\r\n _labelImageWrapper.overlay(_canvasContainer.dom.binary, Math.floor(360 / rasterResult.count),\r\n {x: x, y: y});\r\n }\r\n\r\n // calculate moments from the skeletonized patch\r\n moments = _labelImageWrapper.moments(rasterResult.count);\r\n\r\n // extract eligible patches\r\n patchesFound = patchesFound.concat(describePatch(moments, [i, j], x, y));\r\n }\r\n }\r\n\r\n if (ENV.development && _config.debug.showFoundPatches) {\r\n for ( i = 0; i < patchesFound.length; i++) {\r\n patch = patchesFound[i];\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"#99ff00\", lineWidth: 2});\r\n }\r\n }\r\n\r\n return patchesFound;\r\n }\r\n\r\n /**\r\n * Finds those connected areas which contain at least 6 patches\r\n * and returns them ordered DESC by the number of contained patches\r\n * @param {Number} maxLabel\r\n */\r\n function findBiggestConnectedAreas(maxLabel){\r\n var i,\r\n sum,\r\n labelHist = [],\r\n topLabels = [];\r\n\r\n for ( i = 0; i < maxLabel; i++) {\r\n labelHist.push(0);\r\n }\r\n sum = _patchLabelGrid.data.length;\r\n while (sum--) {\r\n if (_patchLabelGrid.data[sum] > 0) {\r\n labelHist[_patchLabelGrid.data[sum] - 1]++;\r\n }\r\n }\r\n\r\n labelHist = labelHist.map(function(val, idx) {\r\n return {\r\n val: val,\r\n label: idx + 1\r\n };\r\n });\r\n\r\n labelHist.sort(function(a, b) {\r\n return b.val - a.val;\r\n });\r\n\r\n // extract top areas with at least 6 patches present\r\n topLabels = labelHist.filter(function(el) {\r\n return el.val >= 5;\r\n });\r\n\r\n return topLabels;\r\n }\r\n\r\n /**\r\n *\r\n */\r\n function findBoxes(topLabels, maxLabel) {\r\n var i,\r\n j,\r\n sum,\r\n patches = [],\r\n patch,\r\n box,\r\n boxes = [],\r\n hsv = [0, 1, 1],\r\n rgb = [0, 0, 0];\r\n\r\n for ( i = 0; i < topLabels.length; i++) {\r\n sum = _patchLabelGrid.data.length;\r\n patches.length = 0;\r\n while (sum--) {\r\n if (_patchLabelGrid.data[sum] === topLabels[i].label) {\r\n patch = _imageToPatchGrid.data[sum];\r\n patches.push(patch);\r\n }\r\n }\r\n box = boxFromPatches(patches);\r\n if (box) {\r\n boxes.push(box);\r\n\r\n // draw patch-labels if requested\r\n if (ENV.development && _config.debug.showRemainingPatchLabels) {\r\n for ( j = 0; j < patches.length; j++) {\r\n patch = patches[j];\r\n hsv[0] = (topLabels[i].label / (maxLabel + 1)) * 360;\r\n hsv2rgb(hsv, rgb);\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"rgb(\" + rgb.join(\",\") + \")\", lineWidth: 2});\r\n }\r\n }\r\n }\r\n }\r\n return boxes;\r\n }\r\n\r\n /**\r\n * Find similar moments (via cluster)\r\n * @param {Object} moments\r\n */\r\n function similarMoments(moments) {\r\n var clusters = cluster(moments, 0.90);\r\n var topCluster = topGeneric(clusters, 1, function(e) {\r\n return e.getPoints().length;\r\n });\r\n var points = [], result = [];\r\n if (topCluster.length === 1) {\r\n points = topCluster[0].item.getPoints();\r\n for (var i = 0; i < points.length; i++) {\r\n result.push(points[i].point);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function skeletonize(x, y) {\r\n _binaryImageWrapper.subImageAsCopy(_subImageWrapper, imageRef(x, y));\r\n _skeletonizer.skeletonize();\r\n\r\n // Show skeleton if requested\r\n if (ENV.development && _config.debug.showSkeleton) {\r\n _skelImageWrapper.overlay(_canvasContainer.dom.binary, 360, imageRef(x, y));\r\n }\r\n }\r\n\r\n /**\r\n * Extracts and describes those patches which seem to contain a barcode pattern\r\n * @param {Array} moments\r\n * @param {Object} patchPos,\r\n * @param {Number} x\r\n * @param {Number} y\r\n * @returns {Array} list of patches\r\n */\r\n function describePatch(moments, patchPos, x, y) {\r\n var k,\r\n avg,\r\n eligibleMoments = [],\r\n matchingMoments,\r\n patch,\r\n patchesFound = [],\r\n minComponentWeight = Math.ceil(_patchSize.x / 3);\r\n\r\n if (moments.length >= 2) {\r\n // only collect moments which's area covers at least minComponentWeight pixels.\r\n for ( k = 0; k < moments.length; k++) {\r\n if (moments[k].m00 > minComponentWeight) {\r\n eligibleMoments.push(moments[k]);\r\n }\r\n }\r\n\r\n // if at least 2 moments are found which have at least minComponentWeights covered\r\n if (eligibleMoments.length >= 2) {\r\n matchingMoments = similarMoments(eligibleMoments);\r\n avg = 0;\r\n // determine the similarity of the moments\r\n for ( k = 0; k < matchingMoments.length; k++) {\r\n avg += matchingMoments[k].rad;\r\n }\r\n\r\n // Only two of the moments are allowed not to fit into the equation\r\n // add the patch to the set\r\n if (matchingMoments.length > 1\r\n && matchingMoments.length >= (eligibleMoments.length / 4) * 3\r\n && matchingMoments.length > moments.length / 4) {\r\n avg /= matchingMoments.length;\r\n patch = {\r\n index: patchPos[1] * _numPatches.x + patchPos[0],\r\n pos: {\r\n x: x,\r\n y: y\r\n },\r\n box: [\r\n vec2.clone([x, y]),\r\n vec2.clone([x + _subImageWrapper.size.x, y]),\r\n vec2.clone([x + _subImageWrapper.size.x, y + _subImageWrapper.size.y]),\r\n vec2.clone([x, y + _subImageWrapper.size.y])\r\n ],\r\n moments: matchingMoments,\r\n rad: avg,\r\n vec: vec2.clone([Math.cos(avg), Math.sin(avg)])\r\n };\r\n patchesFound.push(patch);\r\n }\r\n }\r\n }\r\n return patchesFound;\r\n }\r\n\r\n /**\r\n * finds patches which are connected and share the same orientation\r\n * @param {Object} patchesFound\r\n */\r\n function rasterizeAngularSimilarity(patchesFound) {\r\n var label = 0,\r\n threshold = 0.95,\r\n currIdx = 0,\r\n j,\r\n patch,\r\n hsv = [0, 1, 1],\r\n rgb = [0, 0, 0];\r\n\r\n function notYetProcessed() {\r\n var i;\r\n for ( i = 0; i < _patchLabelGrid.data.length; i++) {\r\n if (_patchLabelGrid.data[i] === 0 && _patchGrid.data[i] === 1) {\r\n return i;\r\n }\r\n }\r\n return _patchLabelGrid.length;\r\n }\r\n\r\n function trace(currentIdx) {\r\n var x,\r\n y,\r\n currentPatch,\r\n idx,\r\n dir,\r\n current = {\r\n x: currentIdx % _patchLabelGrid.size.x,\r\n y: (currentIdx / _patchLabelGrid.size.x) | 0\r\n },\r\n similarity;\r\n\r\n if (currentIdx < _patchLabelGrid.data.length) {\r\n currentPatch = _imageToPatchGrid.data[currentIdx];\r\n // assign label\r\n _patchLabelGrid.data[currentIdx] = label;\r\n for ( dir = 0; dir < Tracer.searchDirections.length; dir++) {\r\n y = current.y + Tracer.searchDirections[dir][0];\r\n x = current.x + Tracer.searchDirections[dir][1];\r\n idx = y * _patchLabelGrid.size.x + x;\r\n\r\n // continue if patch empty\r\n if (_patchGrid.data[idx] === 0) {\r\n _patchLabelGrid.data[idx] = Number.MAX_VALUE;\r\n continue;\r\n }\r\n\r\n if (_patchLabelGrid.data[idx] === 0) {\r\n similarity = Math.abs(vec2.dot(_imageToPatchGrid.data[idx].vec, currentPatch.vec));\r\n if (similarity > threshold) {\r\n trace(idx);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // prepare for finding the right patches\r\n ArrayHelper.init(_patchGrid.data, 0);\r\n ArrayHelper.init(_patchLabelGrid.data, 0);\r\n ArrayHelper.init(_imageToPatchGrid.data, null);\r\n\r\n for ( j = 0; j < patchesFound.length; j++) {\r\n patch = patchesFound[j];\r\n _imageToPatchGrid.data[patch.index] = patch;\r\n _patchGrid.data[patch.index] = 1;\r\n }\r\n\r\n // rasterize the patches found to determine area\r\n _patchGrid.zeroBorder();\r\n\r\n while (( currIdx = notYetProcessed()) < _patchLabelGrid.data.length) {\r\n label++;\r\n trace(currIdx);\r\n }\r\n\r\n // draw patch-labels if requested\r\n if (ENV.development && _config.debug.showPatchLabels) {\r\n for ( j = 0; j < _patchLabelGrid.data.length; j++) {\r\n if (_patchLabelGrid.data[j] > 0 && _patchLabelGrid.data[j] <= label) {\r\n patch = _imageToPatchGrid.data[j];\r\n hsv[0] = (_patchLabelGrid.data[j] / (label + 1)) * 360;\r\n hsv2rgb(hsv, rgb);\r\n ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary,\r\n {color: \"rgb(\" + rgb.join(\",\") + \")\", lineWidth: 2});\r\n }\r\n }\r\n }\r\n\r\n return label;\r\n }\r\n\r\n return {\r\n locate: function() {\r\n var patchesFound,\r\n topLabels,\r\n boxes;\r\n\r\n if (_config.halfSample) {\r\n halfSample(_inputImageWrapper, _currentImageWrapper);\r\n }\r\n\r\n binarizeImage();\r\n patchesFound = findPatches();\r\n // return unless 5% or more patches are found\r\n if (patchesFound.length < _numPatches.x * _numPatches.y * 0.05) {\r\n return null;\r\n }\r\n\r\n // rasterrize area by comparing angular similarity;\r\n var maxLabel = rasterizeAngularSimilarity(patchesFound);\r\n if (maxLabel < 1) {\r\n return null;\r\n }\r\n\r\n // search for area with the most patches (biggest connected area)\r\n topLabels = findBiggestConnectedAreas(maxLabel);\r\n if (topLabels.length === 0) {\r\n return null;\r\n }\r\n\r\n boxes = findBoxes(topLabels, maxLabel);\r\n return boxes;\r\n }\r\n }\r\n}\r\nexport function checkImageConstraints(inputStream, config) {\r\n var patchSize,\r\n width = inputStream.getWidth(),\r\n height = inputStream.getHeight(),\r\n halfSample = config.halfSample ? 0.5 : 1,\r\n size,\r\n area;\r\n\r\n // calculate width and height based on area\r\n if (inputStream.getConfig().area) {\r\n area = computeImageArea(width, height, inputStream.getConfig().area);\r\n inputStream.setTopRight({x: area.sx, y: area.sy});\r\n inputStream.setCanvasSize({x: width, y: height});\r\n width = area.sw;\r\n height = area.sh;\r\n }\r\n\r\n size = {\r\n x: Math.floor(width * halfSample),\r\n y: Math.floor(height * halfSample)\r\n };\r\n\r\n patchSize = calculatePatchSize(config.patchSize, size);\r\n if (ENV.development) {\r\n console.log(\"Patch-Size: \" + JSON.stringify(patchSize));\r\n }\r\n\r\n inputStream.setWidth(Math.floor(Math.floor(size.x / patchSize.x) * (1 / halfSample) * patchSize.x));\r\n inputStream.setHeight(Math.floor(Math.floor(size.y / patchSize.y) * (1 / halfSample) * patchSize.y));\r\n\r\n if ((inputStream.getWidth() % patchSize.x) === 0 && (inputStream.getHeight() % patchSize.y) === 0) {\r\n return true;\r\n }\r\n\r\n throw new Error(\"Image dimensions do not comply with the current settings: Width (\" +\r\n width + \" )and height (\" + height +\r\n \") must a multiple of \" + patchSize.x);\r\n}\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/barcode_locator.js\n **/","import Tracer from './tracer';\r\n\r\n/**\r\n * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization\r\n */\r\nvar Rasterizer = {\r\n createContour2D: function() {\r\n return {\r\n dir: null,\r\n index: null,\r\n firstVertex: null,\r\n insideContours: null,\r\n nextpeer: null,\r\n prevpeer: null\r\n };\r\n },\r\n CONTOUR_DIR: {\r\n CW_DIR: 0,\r\n CCW_DIR: 1,\r\n UNKNOWN_DIR: 2\r\n },\r\n DIR: {\r\n OUTSIDE_EDGE: -32767,\r\n INSIDE_EDGE: -32766\r\n },\r\n create: function(imageWrapper, labelWrapper) {\r\n var imageData = imageWrapper.data,\r\n labelData = labelWrapper.data,\r\n width = imageWrapper.size.x,\r\n height = imageWrapper.size.y,\r\n tracer = Tracer.create(imageWrapper, labelWrapper);\r\n\r\n return {\r\n rasterize: function(depthlabel) {\r\n var color,\r\n bc,\r\n lc,\r\n labelindex,\r\n cx,\r\n cy,\r\n colorMap = [],\r\n vertex,\r\n p,\r\n cc,\r\n sc,\r\n pos,\r\n connectedCount = 0,\r\n i;\r\n\r\n for ( i = 0; i < 400; i++) {\r\n colorMap[i] = 0;\r\n }\r\n\r\n colorMap[0] = imageData[0];\r\n cc = null;\r\n for ( cy = 1; cy < height - 1; cy++) {\r\n labelindex = 0;\r\n bc = colorMap[0];\r\n for ( cx = 1; cx < width - 1; cx++) {\r\n pos = cy * width + cx;\r\n if (labelData[pos] === 0) {\r\n color = imageData[pos];\r\n if (color !== bc) {\r\n if (labelindex === 0) {\r\n lc = connectedCount + 1;\r\n colorMap[lc] = color;\r\n bc = color;\r\n vertex = tracer.contourTracing(cy, cx, lc, color, Rasterizer.DIR.OUTSIDE_EDGE);\r\n if (vertex !== null) {\r\n connectedCount++;\r\n labelindex = lc;\r\n p = Rasterizer.createContour2D();\r\n p.dir = Rasterizer.CONTOUR_DIR.CW_DIR;\r\n p.index = labelindex;\r\n p.firstVertex = vertex;\r\n p.nextpeer = cc;\r\n p.insideContours = null;\r\n if (cc !== null) {\r\n cc.prevpeer = p;\r\n }\r\n cc = p;\r\n }\r\n } else {\r\n vertex = tracer\r\n .contourTracing(cy, cx, Rasterizer.DIR.INSIDE_EDGE, color, labelindex);\r\n if (vertex !== null) {\r\n p = Rasterizer.createContour2D();\r\n p.firstVertex = vertex;\r\n p.insideContours = null;\r\n if (depthlabel === 0) {\r\n p.dir = Rasterizer.CONTOUR_DIR.CCW_DIR;\r\n } else {\r\n p.dir = Rasterizer.CONTOUR_DIR.CW_DIR;\r\n }\r\n p.index = depthlabel;\r\n sc = cc;\r\n while ((sc !== null) && sc.index !== labelindex) {\r\n sc = sc.nextpeer;\r\n }\r\n if (sc !== null) {\r\n p.nextpeer = sc.insideContours;\r\n if (sc.insideContours !== null) {\r\n sc.insideContours.prevpeer = p;\r\n }\r\n sc.insideContours = p;\r\n }\r\n }\r\n }\r\n } else {\r\n labelData[pos] = labelindex;\r\n }\r\n } else if (labelData[pos] === Rasterizer.DIR.OUTSIDE_EDGE\r\n || labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) {\r\n labelindex = 0;\r\n if (labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) {\r\n bc = imageData[pos];\r\n } else {\r\n bc = colorMap[0];\r\n }\r\n } else {\r\n labelindex = labelData[pos];\r\n bc = colorMap[labelindex];\r\n }\r\n }\r\n }\r\n sc = cc;\r\n while (sc !== null) {\r\n sc.index = depthlabel;\r\n sc = sc.nextpeer;\r\n }\r\n return {\r\n cc: cc,\r\n count: connectedCount\r\n };\r\n },\r\n debug: {\r\n drawContour: function(canvas, firstContour) {\r\n var ctx = canvas.getContext(\"2d\"),\r\n pq = firstContour,\r\n iq,\r\n q,\r\n p;\r\n\r\n ctx.strokeStyle = \"red\";\r\n ctx.fillStyle = \"red\";\r\n ctx.lineWidth = 1;\r\n\r\n if (pq !== null) {\r\n iq = pq.insideContours;\r\n } else {\r\n iq = null;\r\n }\r\n\r\n while (pq !== null) {\r\n if (iq !== null) {\r\n q = iq;\r\n iq = iq.nextpeer;\r\n } else {\r\n q = pq;\r\n pq = pq.nextpeer;\r\n if (pq !== null) {\r\n iq = pq.insideContours;\r\n } else {\r\n iq = null;\r\n }\r\n }\r\n\r\n switch (q.dir) {\r\n case Rasterizer.CONTOUR_DIR.CW_DIR:\r\n ctx.strokeStyle = \"red\";\r\n break;\r\n case Rasterizer.CONTOUR_DIR.CCW_DIR:\r\n ctx.strokeStyle = \"blue\";\r\n break;\r\n case Rasterizer.CONTOUR_DIR.UNKNOWN_DIR:\r\n ctx.strokeStyle = \"green\";\r\n break;\r\n }\r\n\r\n p = q.firstVertex;\r\n ctx.beginPath();\r\n ctx.moveTo(p.x, p.y);\r\n do {\r\n p = p.next;\r\n ctx.lineTo(p.x, p.y);\r\n } while (p !== q.firstVertex);\r\n ctx.stroke();\r\n }\r\n }\r\n }\r\n };\r\n }\r\n};\r\n\r\nexport default Rasterizer;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/rasterizer.js\n **/","/* @preserve ASM BEGIN */\r\n/* eslint-disable eqeqeq*/\r\nfunction Skeletonizer(stdlib, foreign, buffer) {\r\n \"use asm\";\r\n\r\n var images = new stdlib.Uint8Array(buffer),\r\n size = foreign.size | 0,\r\n imul = stdlib.Math.imul;\r\n\r\n function erode(inImagePtr, outImagePtr) {\r\n inImagePtr = inImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var v = 0,\r\n u = 0,\r\n sum = 0,\r\n yStart1 = 0,\r\n yStart2 = 0,\r\n xStart1 = 0,\r\n xStart2 = 0,\r\n offset = 0;\r\n\r\n for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) {\r\n offset = (offset + size) | 0;\r\n for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) {\r\n yStart1 = (offset - size) | 0;\r\n yStart2 = (offset + size) | 0;\r\n xStart1 = (u - 1) | 0;\r\n xStart2 = (u + 1) | 0;\r\n sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0)\r\n + (images[(inImagePtr + offset + u) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0;\r\n if ((sum | 0) == (5 | 0)) {\r\n images[(outImagePtr + offset + u) | 0] = 1;\r\n } else {\r\n images[(outImagePtr + offset + u) | 0] = 0;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n\r\n function subtract(aImagePtr, bImagePtr, outImagePtr) {\r\n aImagePtr = aImagePtr | 0;\r\n bImagePtr = bImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(outImagePtr + length) | 0] =\r\n ((images[(aImagePtr + length) | 0] | 0) - (images[(bImagePtr + length) | 0] | 0)) | 0;\r\n }\r\n }\r\n\r\n function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {\r\n aImagePtr = aImagePtr | 0;\r\n bImagePtr = bImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(outImagePtr + length) | 0] =\r\n ((images[(aImagePtr + length) | 0] | 0) | (images[(bImagePtr + length) | 0] | 0)) | 0;\r\n }\r\n }\r\n\r\n function countNonZero(imagePtr) {\r\n imagePtr = imagePtr | 0;\r\n\r\n var sum = 0,\r\n length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n sum = ((sum | 0) + (images[(imagePtr + length) | 0] | 0)) | 0;\r\n }\r\n\r\n return (sum | 0);\r\n }\r\n\r\n function init(imagePtr, value) {\r\n imagePtr = imagePtr | 0;\r\n value = value | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(imagePtr + length) | 0] = value;\r\n }\r\n }\r\n\r\n function dilate(inImagePtr, outImagePtr) {\r\n inImagePtr = inImagePtr | 0;\r\n outImagePtr = outImagePtr | 0;\r\n\r\n var v = 0,\r\n u = 0,\r\n sum = 0,\r\n yStart1 = 0,\r\n yStart2 = 0,\r\n xStart1 = 0,\r\n xStart2 = 0,\r\n offset = 0;\r\n\r\n for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) {\r\n offset = (offset + size) | 0;\r\n for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) {\r\n yStart1 = (offset - size) | 0;\r\n yStart2 = (offset + size) | 0;\r\n xStart1 = (u - 1) | 0;\r\n xStart2 = (u + 1) | 0;\r\n sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0)\r\n + (images[(inImagePtr + offset + u) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0)\r\n + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0;\r\n if ((sum | 0) > (0 | 0)) {\r\n images[(outImagePtr + offset + u) | 0] = 1;\r\n } else {\r\n images[(outImagePtr + offset + u) | 0] = 0;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n\r\n function memcpy(srcImagePtr, dstImagePtr) {\r\n srcImagePtr = srcImagePtr | 0;\r\n dstImagePtr = dstImagePtr | 0;\r\n\r\n var length = 0;\r\n\r\n length = imul(size, size) | 0;\r\n\r\n while ((length | 0) > 0) {\r\n length = (length - 1) | 0;\r\n images[(dstImagePtr + length) | 0] = (images[(srcImagePtr + length) | 0] | 0);\r\n }\r\n }\r\n\r\n function zeroBorder(imagePtr) {\r\n imagePtr = imagePtr | 0;\r\n\r\n var x = 0,\r\n y = 0;\r\n\r\n for ( x = 0; (x | 0) < ((size - 1) | 0); x = (x + 1) | 0) {\r\n images[(imagePtr + x) | 0] = 0;\r\n images[(imagePtr + y) | 0] = 0;\r\n y = ((y + size) - 1) | 0;\r\n images[(imagePtr + y) | 0] = 0;\r\n y = (y + 1) | 0;\r\n }\r\n for ( x = 0; (x | 0) < (size | 0); x = (x + 1) | 0) {\r\n images[(imagePtr + y) | 0] = 0;\r\n y = (y + 1) | 0;\r\n }\r\n }\r\n\r\n function skeletonize() {\r\n var subImagePtr = 0,\r\n erodedImagePtr = 0,\r\n tempImagePtr = 0,\r\n skelImagePtr = 0,\r\n sum = 0,\r\n done = 0;\r\n\r\n erodedImagePtr = imul(size, size) | 0;\r\n tempImagePtr = (erodedImagePtr + erodedImagePtr) | 0;\r\n skelImagePtr = (tempImagePtr + erodedImagePtr) | 0;\r\n\r\n // init skel-image\r\n init(skelImagePtr, 0);\r\n zeroBorder(subImagePtr);\r\n\r\n do {\r\n erode(subImagePtr, erodedImagePtr);\r\n dilate(erodedImagePtr, tempImagePtr);\r\n subtract(subImagePtr, tempImagePtr, tempImagePtr);\r\n bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);\r\n memcpy(erodedImagePtr, subImagePtr);\r\n sum = countNonZero(subImagePtr) | 0;\r\n done = ((sum | 0) == 0 | 0);\r\n } while (!done);\r\n }\r\n return {\r\n skeletonize: skeletonize\r\n };\r\n}\r\n/* @preserve ASM END */\r\nexport default Skeletonizer;\r\n/* eslint-enable eqeqeq*/\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/locator/skeletonizer.js\n **/","import BarcodeReader from './barcode_reader';\r\n\r\nfunction CodabarReader() {\r\n BarcodeReader.call(this);\r\n this._counters = [];\r\n}\r\n\r\nvar properties = {\r\n ALPHABETH_STRING: {value: \"0123456789-$:/.+ABCD\"},\r\n ALPHABET: {value: [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 45, 36, 58, 47, 46, 43, 65, 66, 67, 68]},\r\n CHARACTER_ENCODINGS: {value: [0x003, 0x006, 0x009, 0x060, 0x012, 0x042, 0x021, 0x024, 0x030, 0x048, 0x00c, 0x018,\r\n 0x045, 0x051, 0x054, 0x015, 0x01A, 0x029, 0x00B, 0x00E]},\r\n START_END: {value: [0x01A, 0x029, 0x00B, 0x00E]},\r\n MIN_ENCODED_CHARS: {value: 4},\r\n MAX_ACCEPTABLE: {value: 2.0},\r\n PADDING: {value: 1.5},\r\n FORMAT: {value: \"codabar\", writeable: false}\r\n};\r\n\r\nCodabarReader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCodabarReader.prototype.constructor = CodabarReader;\r\n\r\nCodabarReader.prototype._decode = function() {\r\n var self = this,\r\n result = [],\r\n start,\r\n decodedChar,\r\n pattern,\r\n nextStart,\r\n end;\r\n\r\n this._counters = self._fillCounters();\r\n start = self._findStart();\r\n if (!start) {\r\n return null;\r\n }\r\n nextStart = start.startCounter;\r\n\r\n do {\r\n pattern = self._toPattern(nextStart);\r\n if (pattern < 0) {\r\n return null;\r\n }\r\n decodedChar = self._patternToChar(pattern);\r\n if (decodedChar < 0){\r\n return null;\r\n }\r\n result.push(decodedChar);\r\n nextStart += 8;\r\n if (result.length > 1 && self._isStartEnd(pattern)) {\r\n break;\r\n }\r\n } while (nextStart < self._counters.length);\r\n\r\n // verify end\r\n if ((result.length - 2) < self.MIN_ENCODED_CHARS || !self._isStartEnd(pattern)) {\r\n return null;\r\n }\r\n\r\n // verify end white space\r\n if (!self._verifyWhitespace(start.startCounter, nextStart - 8)){\r\n return null;\r\n }\r\n\r\n if (!self._validateResult(result, start.startCounter)){\r\n return null;\r\n }\r\n\r\n nextStart = nextStart > self._counters.length ? self._counters.length : nextStart;\r\n end = start.start + self._sumCounters(start.startCounter, nextStart - 8);\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: start.start,\r\n end: end,\r\n startInfo: start,\r\n decodedCodes: result\r\n };\r\n};\r\n\r\nCodabarReader.prototype._verifyWhitespace = function(startCounter, endCounter) {\r\n if ((startCounter - 1 <= 0)\r\n || this._counters[startCounter - 1] >= (this._calculatePatternLength(startCounter) / 2.0)) {\r\n if ((endCounter + 8 >= this._counters.length)\r\n || this._counters[endCounter + 7] >= (this._calculatePatternLength(endCounter) / 2.0)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nCodabarReader.prototype._calculatePatternLength = function(offset) {\r\n var i,\r\n sum = 0;\r\n\r\n for (i = offset; i < offset + 7; i++) {\r\n sum += this._counters[i];\r\n }\r\n\r\n return sum;\r\n};\r\n\r\nCodabarReader.prototype._thresholdResultPattern = function(result, startCounter){\r\n var self = this,\r\n categorization = {\r\n space: {\r\n narrow: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE},\r\n wide: {size: 0, counts: 0, min: 0, max: Number.MAX_VALUE}\r\n },\r\n bar: {\r\n narrow: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE},\r\n wide: { size: 0, counts: 0, min: 0, max: Number.MAX_VALUE}\r\n }\r\n },\r\n kind,\r\n cat,\r\n i,\r\n j,\r\n pos = startCounter,\r\n pattern;\r\n\r\n for (i = 0; i < result.length; i++){\r\n pattern = self._charToPattern(result[i]);\r\n for (j = 6; j >= 0; j--) {\r\n kind = (j & 1) === 2 ? categorization.bar : categorization.space;\r\n cat = (pattern & 1) === 1 ? kind.wide : kind.narrow;\r\n cat.size += self._counters[pos + j];\r\n cat.counts++;\r\n pattern >>= 1;\r\n }\r\n pos += 8;\r\n }\r\n\r\n [\"space\", \"bar\"].forEach(function(key) {\r\n var newkind = categorization[key];\r\n newkind.wide.min =\r\n Math.floor((newkind.narrow.size / newkind.narrow.counts + newkind.wide.size / newkind.wide.counts) / 2);\r\n newkind.narrow.max = Math.ceil(newkind.wide.min);\r\n newkind.wide.max = Math.ceil((newkind.wide.size * self.MAX_ACCEPTABLE + self.PADDING) / newkind.wide.counts);\r\n });\r\n\r\n return categorization;\r\n};\r\n\r\nCodabarReader.prototype._charToPattern = function(char) {\r\n var self = this,\r\n charCode = char.charCodeAt(0),\r\n i;\r\n\r\n for (i = 0; i < self.ALPHABET.length; i++) {\r\n if (self.ALPHABET[i] === charCode){\r\n return self.CHARACTER_ENCODINGS[i];\r\n }\r\n }\r\n return 0x0;\r\n};\r\n\r\nCodabarReader.prototype._validateResult = function(result, startCounter) {\r\n var self = this,\r\n thresholds = self._thresholdResultPattern(result, startCounter),\r\n i,\r\n j,\r\n kind,\r\n cat,\r\n size,\r\n pos = startCounter,\r\n pattern;\r\n\r\n for (i = 0; i < result.length; i++) {\r\n pattern = self._charToPattern(result[i]);\r\n for (j = 6; j >= 0; j--) {\r\n kind = (j & 1) === 0 ? thresholds.bar : thresholds.space;\r\n cat = (pattern & 1) === 1 ? kind.wide : kind.narrow;\r\n size = self._counters[pos + j];\r\n if (size < cat.min || size > cat.max) {\r\n return false;\r\n }\r\n pattern >>= 1;\r\n }\r\n pos += 8;\r\n }\r\n return true;\r\n};\r\n\r\nCodabarReader.prototype._patternToChar = function(pattern) {\r\n var i,\r\n self = this;\r\n\r\n for (i = 0; i < self.CHARACTER_ENCODINGS.length; i++) {\r\n if (self.CHARACTER_ENCODINGS[i] === pattern) {\r\n return String.fromCharCode(self.ALPHABET[i]);\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nCodabarReader.prototype._computeAlternatingThreshold = function(offset, end) {\r\n var i,\r\n min = Number.MAX_VALUE,\r\n max = 0,\r\n counter;\r\n\r\n for (i = offset; i < end; i += 2){\r\n counter = this._counters[i];\r\n if (counter > max) {\r\n max = counter;\r\n }\r\n if (counter < min) {\r\n min = counter;\r\n }\r\n }\r\n\r\n return ((min + max) / 2.0) | 0;\r\n};\r\n\r\nCodabarReader.prototype._toPattern = function(offset) {\r\n var numCounters = 7,\r\n end = offset + numCounters,\r\n barThreshold,\r\n spaceThreshold,\r\n bitmask = 1 << (numCounters - 1),\r\n pattern = 0,\r\n i,\r\n threshold;\r\n\r\n if (end > this._counters.length) {\r\n return -1;\r\n }\r\n\r\n barThreshold = this._computeAlternatingThreshold(offset, end);\r\n spaceThreshold = this._computeAlternatingThreshold(offset + 1, end);\r\n\r\n for (i = 0; i < numCounters; i++){\r\n threshold = (i & 1) === 0 ? barThreshold : spaceThreshold;\r\n if (this._counters[offset + i] > threshold) {\r\n pattern |= bitmask;\r\n }\r\n bitmask >>= 1;\r\n }\r\n\r\n return pattern;\r\n};\r\n\r\nCodabarReader.prototype._isStartEnd = function(pattern) {\r\n var i;\r\n\r\n for (i = 0; i < this.START_END.length; i++) {\r\n if (this.START_END[i] === pattern) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nCodabarReader.prototype._sumCounters = function(start, end) {\r\n var i,\r\n sum = 0;\r\n\r\n for (i = start; i < end; i++) {\r\n sum += this._counters[i];\r\n }\r\n return sum;\r\n};\r\n\r\nCodabarReader.prototype._findStart = function() {\r\n var self = this,\r\n i,\r\n pattern,\r\n start = self._nextUnset(self._row),\r\n end;\r\n\r\n for (i = 1; i < this._counters.length; i++) {\r\n pattern = self._toPattern(i);\r\n if (pattern !== -1 && self._isStartEnd(pattern)) {\r\n // TODO: Look for whitespace ahead\r\n start += self._sumCounters(0, i);\r\n end = start + self._sumCounters(i, i + 8);\r\n return {\r\n start: start,\r\n end: end,\r\n startCounter: i,\r\n endCounter: i + 8\r\n };\r\n }\r\n }\r\n};\r\n\r\nexport default CodabarReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/codabar_reader.js\n **/","import BarcodeReader from './barcode_reader';\r\n\r\nfunction Code128Reader() {\r\n BarcodeReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n CODE_SHIFT: {value: 98},\r\n CODE_C: {value: 99},\r\n CODE_B: {value: 100},\r\n CODE_A: {value: 101},\r\n START_CODE_A: {value: 103},\r\n START_CODE_B: {value: 104},\r\n START_CODE_C: {value: 105},\r\n STOP_CODE: {value: 106},\r\n CODE_PATTERN: {value: [\r\n [2, 1, 2, 2, 2, 2],\r\n [2, 2, 2, 1, 2, 2],\r\n [2, 2, 2, 2, 2, 1],\r\n [1, 2, 1, 2, 2, 3],\r\n [1, 2, 1, 3, 2, 2],\r\n [1, 3, 1, 2, 2, 2],\r\n [1, 2, 2, 2, 1, 3],\r\n [1, 2, 2, 3, 1, 2],\r\n [1, 3, 2, 2, 1, 2],\r\n [2, 2, 1, 2, 1, 3],\r\n [2, 2, 1, 3, 1, 2],\r\n [2, 3, 1, 2, 1, 2],\r\n [1, 1, 2, 2, 3, 2],\r\n [1, 2, 2, 1, 3, 2],\r\n [1, 2, 2, 2, 3, 1],\r\n [1, 1, 3, 2, 2, 2],\r\n [1, 2, 3, 1, 2, 2],\r\n [1, 2, 3, 2, 2, 1],\r\n [2, 2, 3, 2, 1, 1],\r\n [2, 2, 1, 1, 3, 2],\r\n [2, 2, 1, 2, 3, 1],\r\n [2, 1, 3, 2, 1, 2],\r\n [2, 2, 3, 1, 1, 2],\r\n [3, 1, 2, 1, 3, 1],\r\n [3, 1, 1, 2, 2, 2],\r\n [3, 2, 1, 1, 2, 2],\r\n [3, 2, 1, 2, 2, 1],\r\n [3, 1, 2, 2, 1, 2],\r\n [3, 2, 2, 1, 1, 2],\r\n [3, 2, 2, 2, 1, 1],\r\n [2, 1, 2, 1, 2, 3],\r\n [2, 1, 2, 3, 2, 1],\r\n [2, 3, 2, 1, 2, 1],\r\n [1, 1, 1, 3, 2, 3],\r\n [1, 3, 1, 1, 2, 3],\r\n [1, 3, 1, 3, 2, 1],\r\n [1, 1, 2, 3, 1, 3],\r\n [1, 3, 2, 1, 1, 3],\r\n [1, 3, 2, 3, 1, 1],\r\n [2, 1, 1, 3, 1, 3],\r\n [2, 3, 1, 1, 1, 3],\r\n [2, 3, 1, 3, 1, 1],\r\n [1, 1, 2, 1, 3, 3],\r\n [1, 1, 2, 3, 3, 1],\r\n [1, 3, 2, 1, 3, 1],\r\n [1, 1, 3, 1, 2, 3],\r\n [1, 1, 3, 3, 2, 1],\r\n [1, 3, 3, 1, 2, 1],\r\n [3, 1, 3, 1, 2, 1],\r\n [2, 1, 1, 3, 3, 1],\r\n [2, 3, 1, 1, 3, 1],\r\n [2, 1, 3, 1, 1, 3],\r\n [2, 1, 3, 3, 1, 1],\r\n [2, 1, 3, 1, 3, 1],\r\n [3, 1, 1, 1, 2, 3],\r\n [3, 1, 1, 3, 2, 1],\r\n [3, 3, 1, 1, 2, 1],\r\n [3, 1, 2, 1, 1, 3],\r\n [3, 1, 2, 3, 1, 1],\r\n [3, 3, 2, 1, 1, 1],\r\n [3, 1, 4, 1, 1, 1],\r\n [2, 2, 1, 4, 1, 1],\r\n [4, 3, 1, 1, 1, 1],\r\n [1, 1, 1, 2, 2, 4],\r\n [1, 1, 1, 4, 2, 2],\r\n [1, 2, 1, 1, 2, 4],\r\n [1, 2, 1, 4, 2, 1],\r\n [1, 4, 1, 1, 2, 2],\r\n [1, 4, 1, 2, 2, 1],\r\n [1, 1, 2, 2, 1, 4],\r\n [1, 1, 2, 4, 1, 2],\r\n [1, 2, 2, 1, 1, 4],\r\n [1, 2, 2, 4, 1, 1],\r\n [1, 4, 2, 1, 1, 2],\r\n [1, 4, 2, 2, 1, 1],\r\n [2, 4, 1, 2, 1, 1],\r\n [2, 2, 1, 1, 1, 4],\r\n [4, 1, 3, 1, 1, 1],\r\n [2, 4, 1, 1, 1, 2],\r\n [1, 3, 4, 1, 1, 1],\r\n [1, 1, 1, 2, 4, 2],\r\n [1, 2, 1, 1, 4, 2],\r\n [1, 2, 1, 2, 4, 1],\r\n [1, 1, 4, 2, 1, 2],\r\n [1, 2, 4, 1, 1, 2],\r\n [1, 2, 4, 2, 1, 1],\r\n [4, 1, 1, 2, 1, 2],\r\n [4, 2, 1, 1, 1, 2],\r\n [4, 2, 1, 2, 1, 1],\r\n [2, 1, 2, 1, 4, 1],\r\n [2, 1, 4, 1, 2, 1],\r\n [4, 1, 2, 1, 2, 1],\r\n [1, 1, 1, 1, 4, 3],\r\n [1, 1, 1, 3, 4, 1],\r\n [1, 3, 1, 1, 4, 1],\r\n [1, 1, 4, 1, 1, 3],\r\n [1, 1, 4, 3, 1, 1],\r\n [4, 1, 1, 1, 1, 3],\r\n [4, 1, 1, 3, 1, 1],\r\n [1, 1, 3, 1, 4, 1],\r\n [1, 1, 4, 1, 3, 1],\r\n [3, 1, 1, 1, 4, 1],\r\n [4, 1, 1, 1, 3, 1],\r\n [2, 1, 1, 4, 1, 2],\r\n [2, 1, 1, 2, 1, 4],\r\n [2, 1, 1, 2, 3, 2],\r\n [2, 3, 3, 1, 1, 1, 2]\r\n ]},\r\n SINGLE_CODE_ERROR: {value: 0.64},\r\n AVG_CODE_ERROR: {value: 0.30},\r\n FORMAT: {value: \"code_128\", writeable: false},\r\n MODULE_INDICES: {value: {bar: [0, 2, 4], space: [1, 3, 5]}}\r\n};\r\n\r\nCode128Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nCode128Reader.prototype.constructor = Code128Reader;\r\n\r\nCode128Reader.prototype._decodeCode = function(start, correction) {\r\n var counter = [0, 0, 0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = start,\r\n isWhite = !self._row[offset],\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: start,\r\n end: start,\r\n correction: {\r\n bar: 1,\r\n space: 1\r\n }\r\n },\r\n code,\r\n error;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n if (correction) {\r\n self._correct(counter, correction);\r\n }\r\n for (code = 0; code < self.CODE_PATTERN.length; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n bestMatch.end = i;\r\n if (bestMatch.code === -1 || bestMatch.error > self.AVG_CODE_ERROR) {\r\n return null;\r\n }\r\n if (self.CODE_PATTERN[bestMatch.code]) {\r\n bestMatch.correction.bar = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.bar);\r\n bestMatch.correction.space = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.space);\r\n }\r\n return bestMatch;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nCode128Reader.prototype._correct = function(counter, correction) {\r\n this._correctBars(counter, correction.bar, this.MODULE_INDICES.bar);\r\n this._correctBars(counter, correction.space, this.MODULE_INDICES.space);\r\n};\r\n\r\nCode128Reader.prototype._findStart = function() {\r\n var counter = [0, 0, 0, 0, 0, 0],\r\n i,\r\n self = this,\r\n offset = self._nextSet(self._row),\r\n isWhite = false,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0,\r\n correction: {\r\n bar: 1,\r\n space: 1\r\n }\r\n },\r\n code,\r\n error,\r\n j,\r\n sum;\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n for (code = self.START_CODE_A; code <= self.START_CODE_C; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n if (bestMatch.error < self.AVG_CODE_ERROR) {\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n bestMatch.correction.bar = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.bar);\r\n bestMatch.correction.space = calculateCorrection(\r\n self.CODE_PATTERN[bestMatch.code], counter,\r\n this.MODULE_INDICES.space);\r\n return bestMatch;\r\n }\r\n\r\n for ( j = 0; j < 4; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[4] = 0;\r\n counter[5] = 0;\r\n counterPos--;\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nCode128Reader.prototype._decode = function() {\r\n var self = this,\r\n startInfo = self._findStart(),\r\n code = null,\r\n done = false,\r\n result = [],\r\n multiplier = 0,\r\n checksum = 0,\r\n codeset,\r\n rawResult = [],\r\n decodedCodes = [],\r\n shiftNext = false,\r\n unshift,\r\n removeLastCharacter = true;\r\n\r\n if (startInfo === null) {\r\n return null;\r\n }\r\n code = {\r\n code: startInfo.code,\r\n start: startInfo.start,\r\n end: startInfo.end,\r\n correction: {\r\n bar: startInfo.correction.bar,\r\n space: startInfo.correction.space\r\n }\r\n };\r\n decodedCodes.push(code);\r\n checksum = code.code;\r\n switch (code.code) {\r\n case self.START_CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.START_CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.START_CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n default:\r\n return null;\r\n }\r\n\r\n while (!done) {\r\n unshift = shiftNext;\r\n shiftNext = false;\r\n code = self._decodeCode(code.end, code.correction);\r\n if (code !== null) {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = true;\r\n }\r\n\r\n if (code.code !== self.STOP_CODE) {\r\n rawResult.push(code.code);\r\n multiplier++;\r\n checksum += multiplier * code.code;\r\n }\r\n decodedCodes.push(code);\r\n\r\n switch (codeset) {\r\n case self.CODE_A:\r\n if (code.code < 64) {\r\n result.push(String.fromCharCode(32 + code.code));\r\n } else if (code.code < 96) {\r\n result.push(String.fromCharCode(code.code - 64));\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_SHIFT:\r\n shiftNext = true;\r\n codeset = self.CODE_B;\r\n break;\r\n case self.CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n case self.CODE_B:\r\n if (code.code < 96) {\r\n result.push(String.fromCharCode(32 + code.code));\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_SHIFT:\r\n shiftNext = true;\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_C:\r\n codeset = self.CODE_C;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n case self.CODE_C:\r\n if (code.code < 100) {\r\n result.push(code.code < 10 ? \"0\" + code.code : code.code);\r\n } else {\r\n if (code.code !== self.STOP_CODE) {\r\n removeLastCharacter = false;\r\n }\r\n switch (code.code) {\r\n case self.CODE_A:\r\n codeset = self.CODE_A;\r\n break;\r\n case self.CODE_B:\r\n codeset = self.CODE_B;\r\n break;\r\n case self.STOP_CODE:\r\n done = true;\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n } else {\r\n done = true;\r\n }\r\n if (unshift) {\r\n codeset = codeset === self.CODE_A ? self.CODE_B : self.CODE_A;\r\n }\r\n }\r\n\r\n if (code === null) {\r\n return null;\r\n }\r\n\r\n code.end = self._nextUnset(self._row, code.end);\r\n if (!self._verifyTrailingWhitespace(code)){\r\n return null;\r\n }\r\n\r\n checksum -= multiplier * rawResult[rawResult.length - 1];\r\n if (checksum % 103 !== rawResult[rawResult.length - 1]) {\r\n return null;\r\n }\r\n\r\n if (!result.length) {\r\n return null;\r\n }\r\n\r\n // remove last code from result (checksum)\r\n if (removeLastCharacter) {\r\n result.splice(result.length - 1, 1);\r\n }\r\n\r\n\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: code.end,\r\n codeset: codeset,\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes,\r\n endInfo: code\r\n };\r\n};\r\n\r\n\r\nBarcodeReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nfunction calculateCorrection(expected, normalized, indices) {\r\n var length = indices.length,\r\n sumNormalized = 0,\r\n sumExpected = 0;\r\n\r\n while(length--) {\r\n sumExpected += expected[indices[length]];\r\n sumNormalized += normalized[indices[length]];\r\n }\r\n return sumExpected/sumNormalized;\r\n}\r\n\r\nexport default Code128Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_128_reader.js\n **/","import Code39Reader from './code_39_reader';\r\n\r\nfunction Code39VINReader() {\r\n Code39Reader.call(this);\r\n}\r\n\r\nvar patterns = {\r\n IOQ: /[IOQ]/g,\r\n AZ09: /[A-Z0-9]{17}/\r\n};\r\n\r\nCode39VINReader.prototype = Object.create(Code39Reader.prototype);\r\nCode39VINReader.prototype.constructor = Code39VINReader;\r\n\r\n// Cribbed from:\r\n// https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/client/result/VINResultParser.java\r\nCode39VINReader.prototype._decode = function() {\r\n var result = Code39Reader.prototype._decode.apply(this);\r\n if (!result) {\r\n return null;\r\n }\r\n\r\n var code = result.code;\r\n\r\n if (!code) {\r\n return null;\r\n }\r\n\r\n code = code.replace(patterns.IOQ, '');\r\n\r\n if (!code.match(patterns.AZ09)) {\r\n if (ENV.development) {\r\n console.log('Failed AZ09 pattern code:', code);\r\n }\r\n return null;\r\n }\r\n\r\n if (!this._checkChecksum(code)) {\r\n return null;\r\n }\r\n\r\n result.code = code;\r\n return result;\r\n};\r\n\r\nCode39VINReader.prototype._checkChecksum = function(code) {\r\n // TODO\r\n return !!code;\r\n};\r\n\r\nexport default Code39VINReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/code_39_vin_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN2Reader() {\r\n EANReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_2\", writeable: false}\r\n};\r\n\r\nEAN2Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN2Reader.prototype.constructor = EAN2Reader;\r\n\r\nEAN2Reader.prototype.decode = function(row, start) {\r\n this._row = row;\r\n var counters = [0, 0, 0, 0],\r\n codeFrequency = 0,\r\n i = 0,\r\n offset = start,\r\n end = this._row.length,\r\n code,\r\n result = [],\r\n decodedCodes = [];\r\n\r\n for (i = 0; i < 2 && offset < end; i++) {\r\n code = this._decodeCode(offset);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code % 10);\r\n if (code.code >= this.CODE_G_START) {\r\n codeFrequency |= 1 << (1 - i);\r\n }\r\n if (i != 1) {\r\n offset = this._nextSet(this._row, code.end);\r\n offset = this._nextUnset(this._row, offset);\r\n }\r\n }\r\n\r\n if (result.length != 2 || (parseInt(result.join(\"\")) % 4) !== codeFrequency) {\r\n return null;\r\n }\r\n return {\r\n code: result.join(\"\"),\r\n decodedCodes,\r\n end: code.end\r\n };\r\n};\r\n\r\nexport default EAN2Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_2_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN5Reader() {\r\n EANReader.call(this);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_5\", writeable: false}\r\n};\r\n\r\nconst CHECK_DIGIT_ENCODINGS = [24, 20, 18, 17, 12, 6, 3, 10, 9, 5];\r\n\r\nEAN5Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN5Reader.prototype.constructor = EAN5Reader;\r\n\r\nEAN5Reader.prototype.decode = function(row, start) {\r\n this._row = row;\r\n var counters = [0, 0, 0, 0],\r\n codeFrequency = 0,\r\n i = 0,\r\n offset = start,\r\n end = this._row.length,\r\n code,\r\n result = [],\r\n decodedCodes = [];\r\n\r\n for (i = 0; i < 5 && offset < end; i++) {\r\n code = this._decodeCode(offset);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code % 10);\r\n if (code.code >= this.CODE_G_START) {\r\n codeFrequency |= 1 << (4 - i);\r\n }\r\n if (i != 4) {\r\n offset = this._nextSet(this._row, code.end);\r\n offset = this._nextUnset(this._row, offset);\r\n }\r\n }\r\n\r\n if (result.length != 5) {\r\n return null;\r\n }\r\n\r\n if (extensionChecksum(result) !== determineCheckDigit(codeFrequency)) {\r\n return null;\r\n }\r\n return {\r\n code: result.join(\"\"),\r\n decodedCodes,\r\n end: code.end\r\n };\r\n};\r\n\r\nfunction determineCheckDigit(codeFrequency) {\r\n var i;\r\n for (i = 0; i < 10; i++) {\r\n if (codeFrequency === CHECK_DIGIT_ENCODINGS[i]) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n\r\nfunction extensionChecksum(result) {\r\n var length = result.length,\r\n sum = 0,\r\n i;\r\n\r\n for (i = length - 2; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n for (i = length - 1; i >= 0; i -= 2) {\r\n sum += result[i];\r\n }\r\n sum *= 3;\r\n return sum % 10;\r\n}\r\n\r\nexport default EAN5Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_5_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction EAN8Reader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"ean_8\", writeable: false}\r\n};\r\n\r\nEAN8Reader.prototype = Object.create(EANReader.prototype, properties);\r\nEAN8Reader.prototype.constructor = EAN8Reader;\r\n\r\nEAN8Reader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this;\r\n\r\n for ( i = 0; i < 4; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n\r\n code = self._findPattern(self.MIDDLE_PATTERN, code.end, true, false);\r\n if (code === null) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n\r\n for ( i = 0; i < 4; i++) {\r\n code = self._decodeCode(code.end, self.CODE_G_START);\r\n if (!code) {\r\n return null;\r\n }\r\n decodedCodes.push(code);\r\n result.push(code.code);\r\n }\r\n\r\n return code;\r\n};\r\n\r\nexport default EAN8Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/ean_8_reader.js\n **/","import BarcodeReader from './barcode_reader';\r\nimport {merge} from 'lodash';\r\n\r\nfunction I2of5Reader(opts) {\r\n opts = merge(getDefaulConfig(), opts);\r\n BarcodeReader.call(this, opts);\r\n this.barSpaceRatio = [1, 1];\r\n if (opts.normalizeBarSpaceWidth) {\r\n this.SINGLE_CODE_ERROR = 0.38;\r\n this.AVG_CODE_ERROR = 0.09;\r\n }\r\n}\r\n\r\nfunction getDefaulConfig() {\r\n var config = {};\r\n\r\n Object.keys(I2of5Reader.CONFIG_KEYS).forEach(function(key) {\r\n config[key] = I2of5Reader.CONFIG_KEYS[key].default;\r\n });\r\n return config;\r\n}\r\n\r\nvar N = 1,\r\n W = 3,\r\n properties = {\r\n START_PATTERN: {value: [N, N, N, N]},\r\n STOP_PATTERN: {value: [N, N, W]},\r\n CODE_PATTERN: {value: [\r\n [N, N, W, W, N],\r\n [W, N, N, N, W],\r\n [N, W, N, N, W],\r\n [W, W, N, N, N],\r\n [N, N, W, N, W],\r\n [W, N, W, N, N],\r\n [N, W, W, N, N],\r\n [N, N, N, W, W],\r\n [W, N, N, W, N],\r\n [N, W, N, W, N]\r\n ]},\r\n SINGLE_CODE_ERROR: {value: 0.78, writable: true},\r\n AVG_CODE_ERROR: {value: 0.38, writable: true},\r\n MAX_CORRECTION_FACTOR: {value: 5},\r\n FORMAT: {value: \"i2of5\"}\r\n };\r\n\r\nI2of5Reader.prototype = Object.create(BarcodeReader.prototype, properties);\r\nI2of5Reader.prototype.constructor = I2of5Reader;\r\n\r\nI2of5Reader.prototype._matchPattern = function(counter, code) {\r\n if (this.config.normalizeBarSpaceWidth) {\r\n var i,\r\n counterSum = [0, 0],\r\n codeSum = [0, 0],\r\n correction = [0, 0],\r\n correctionRatio = this.MAX_CORRECTION_FACTOR,\r\n correctionRatioInverse = 1 / correctionRatio;\r\n\r\n for (i = 0; i < counter.length; i++) {\r\n counterSum[i % 2] += counter[i];\r\n codeSum[i % 2] += code[i];\r\n }\r\n correction[0] = codeSum[0] / counterSum[0];\r\n correction[1] = codeSum[1] / counterSum[1];\r\n\r\n correction[0] = Math.max(Math.min(correction[0], correctionRatio), correctionRatioInverse);\r\n correction[1] = Math.max(Math.min(correction[1], correctionRatio), correctionRatioInverse);\r\n this.barSpaceRatio = correction;\r\n for (i = 0; i < counter.length; i++) {\r\n counter[i] *= this.barSpaceRatio[i % 2];\r\n }\r\n }\r\n return BarcodeReader.prototype._matchPattern.call(this, counter, code);\r\n};\r\n\r\nI2of5Reader.prototype._findPattern = function(pattern, offset, isWhite, tryHarder) {\r\n var counter = [],\r\n self = this,\r\n i,\r\n counterPos = 0,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n },\r\n error,\r\n j,\r\n sum,\r\n normalized,\r\n epsilon = self.AVG_CODE_ERROR;\r\n\r\n isWhite = isWhite || false;\r\n tryHarder = tryHarder || false;\r\n\r\n if (!offset) {\r\n offset = self._nextSet(self._row);\r\n }\r\n\r\n for ( i = 0; i < pattern.length; i++) {\r\n counter[i] = 0;\r\n }\r\n\r\n for ( i = offset; i < self._row.length; i++) {\r\n if (self._row[i] ^ isWhite) {\r\n counter[counterPos]++;\r\n } else {\r\n if (counterPos === counter.length - 1) {\r\n sum = 0;\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n error = self._matchPattern(counter, pattern);\r\n if (error < epsilon) {\r\n bestMatch.error = error;\r\n bestMatch.start = i - sum;\r\n bestMatch.end = i;\r\n return bestMatch;\r\n }\r\n if (tryHarder) {\r\n for (j = 0; j < counter.length - 2; j++) {\r\n counter[j] = counter[j + 2];\r\n }\r\n counter[counter.length - 2] = 0;\r\n counter[counter.length - 1] = 0;\r\n counterPos--;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n counterPos++;\r\n }\r\n counter[counterPos] = 1;\r\n isWhite = !isWhite;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nI2of5Reader.prototype._findStart = function() {\r\n var self = this,\r\n leadingWhitespaceStart,\r\n offset = self._nextSet(self._row),\r\n startInfo,\r\n narrowBarWidth = 1;\r\n\r\n while (!startInfo) {\r\n startInfo = self._findPattern(self.START_PATTERN, offset, false, true);\r\n if (!startInfo) {\r\n return null;\r\n }\r\n narrowBarWidth = Math.floor((startInfo.end - startInfo.start) / 4);\r\n leadingWhitespaceStart = startInfo.start - narrowBarWidth * 10;\r\n if (leadingWhitespaceStart >= 0) {\r\n if (self._matchRange(leadingWhitespaceStart, startInfo.start, 0)) {\r\n return startInfo;\r\n }\r\n }\r\n offset = startInfo.end;\r\n startInfo = null;\r\n }\r\n};\r\n\r\nI2of5Reader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nI2of5Reader.prototype._findEnd = function() {\r\n var self = this,\r\n endInfo,\r\n tmp;\r\n\r\n self._row.reverse();\r\n endInfo = self._findPattern(self.STOP_PATTERN);\r\n self._row.reverse();\r\n\r\n if (endInfo === null) {\r\n return null;\r\n }\r\n\r\n // reverse numbers\r\n tmp = endInfo.start;\r\n endInfo.start = self._row.length - endInfo.end;\r\n endInfo.end = self._row.length - tmp;\r\n\r\n return endInfo !== null ? self._verifyTrailingWhitespace(endInfo) : null;\r\n};\r\n\r\nI2of5Reader.prototype._decodePair = function(counterPair) {\r\n var i,\r\n code,\r\n codes = [],\r\n self = this;\r\n\r\n for (i = 0; i < counterPair.length; i++) {\r\n code = self._decodeCode(counterPair[i]);\r\n if (!code) {\r\n return null;\r\n }\r\n codes.push(code);\r\n }\r\n return codes;\r\n};\r\n\r\nI2of5Reader.prototype._decodeCode = function(counter) {\r\n var j,\r\n self = this,\r\n sum = 0,\r\n normalized,\r\n error,\r\n epsilon = self.AVG_CODE_ERROR,\r\n code,\r\n bestMatch = {\r\n error: Number.MAX_VALUE,\r\n code: -1,\r\n start: 0,\r\n end: 0\r\n };\r\n\r\n for ( j = 0; j < counter.length; j++) {\r\n sum += counter[j];\r\n }\r\n for (code = 0; code < self.CODE_PATTERN.length; code++) {\r\n error = self._matchPattern(counter, self.CODE_PATTERN[code]);\r\n if (error < bestMatch.error) {\r\n bestMatch.code = code;\r\n bestMatch.error = error;\r\n }\r\n }\r\n if (bestMatch.error < epsilon) {\r\n return bestMatch;\r\n }\r\n};\r\n\r\nI2of5Reader.prototype._decodePayload = function(counters, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n pos = 0,\r\n counterLength = counters.length,\r\n counterPair = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0]],\r\n codes;\r\n\r\n while (pos < counterLength) {\r\n for (i = 0; i < 5; i++) {\r\n counterPair[0][i] = counters[pos] * this.barSpaceRatio[0];\r\n counterPair[1][i] = counters[pos + 1] * this.barSpaceRatio[1];\r\n pos += 2;\r\n }\r\n codes = self._decodePair(counterPair);\r\n if (!codes) {\r\n return null;\r\n }\r\n for (i = 0; i < codes.length; i++) {\r\n result.push(codes[i].code + \"\");\r\n decodedCodes.push(codes[i]);\r\n }\r\n }\r\n return codes;\r\n};\r\n\r\nI2of5Reader.prototype._verifyCounterLength = function(counters) {\r\n return (counters.length % 10 === 0);\r\n};\r\n\r\nI2of5Reader.prototype._decode = function() {\r\n var startInfo,\r\n endInfo,\r\n self = this,\r\n code,\r\n result = [],\r\n decodedCodes = [],\r\n counters;\r\n\r\n startInfo = self._findStart();\r\n if (!startInfo) {\r\n return null;\r\n }\r\n decodedCodes.push(startInfo);\r\n\r\n endInfo = self._findEnd();\r\n if (!endInfo) {\r\n return null;\r\n }\r\n\r\n counters = self._fillCounters(startInfo.end, endInfo.start, false);\r\n if (!self._verifyCounterLength(counters)) {\r\n return null;\r\n }\r\n code = self._decodePayload(counters, result, decodedCodes);\r\n if (!code) {\r\n return null;\r\n }\r\n if (result.length % 2 !== 0 ||\r\n result.length < 6) {\r\n return null;\r\n }\r\n\r\n decodedCodes.push(endInfo);\r\n return {\r\n code: result.join(\"\"),\r\n start: startInfo.start,\r\n end: endInfo.end,\r\n startInfo: startInfo,\r\n decodedCodes: decodedCodes\r\n };\r\n};\r\n\r\nI2of5Reader.CONFIG_KEYS = {\r\n normalizeBarSpaceWidth: {\r\n 'type': 'boolean',\r\n 'default': false,\r\n 'description': 'If true, the reader tries to normalize the' +\r\n 'width-difference between bars and spaces'\r\n }\r\n};\r\n\r\nexport default I2of5Reader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/i2of5_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction UPCEReader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n CODE_FREQUENCY: {value: [\r\n [ 56, 52, 50, 49, 44, 38, 35, 42, 41, 37 ],\r\n [7, 11, 13, 14, 19, 25, 28, 21, 22, 26]]},\r\n STOP_PATTERN: { value: [1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7, 1 / 6 * 7]},\r\n FORMAT: {value: \"upc_e\", writeable: false}\r\n};\r\n\r\nUPCEReader.prototype = Object.create(EANReader.prototype, properties);\r\nUPCEReader.prototype.constructor = UPCEReader;\r\n\r\nUPCEReader.prototype._decodePayload = function(code, result, decodedCodes) {\r\n var i,\r\n self = this,\r\n codeFrequency = 0x0;\r\n\r\n for ( i = 0; i < 6; i++) {\r\n code = self._decodeCode(code.end);\r\n if (!code) {\r\n return null;\r\n }\r\n if (code.code >= self.CODE_G_START) {\r\n code.code = code.code - self.CODE_G_START;\r\n codeFrequency |= 1 << (5 - i);\r\n }\r\n result.push(code.code);\r\n decodedCodes.push(code);\r\n }\r\n if (!self._determineParity(codeFrequency, result)) {\r\n return null;\r\n }\r\n\r\n return code;\r\n};\r\n\r\nUPCEReader.prototype._determineParity = function(codeFrequency, result) {\r\n var i,\r\n nrSystem;\r\n\r\n for (nrSystem = 0; nrSystem < this.CODE_FREQUENCY.length; nrSystem++){\r\n for ( i = 0; i < this.CODE_FREQUENCY[nrSystem].length; i++) {\r\n if (codeFrequency === this.CODE_FREQUENCY[nrSystem][i]) {\r\n result.unshift(nrSystem);\r\n result.push(i);\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nUPCEReader.prototype._convertToUPCA = function(result) {\r\n var upca = [result[0]],\r\n lastDigit = result[result.length - 2];\r\n\r\n if (lastDigit <= 2) {\r\n upca = upca.concat(result.slice(1, 3))\r\n .concat([lastDigit, 0, 0, 0, 0])\r\n .concat(result.slice(3, 6));\r\n } else if (lastDigit === 3) {\r\n upca = upca.concat(result.slice(1, 4))\r\n .concat([0, 0, 0, 0, 0])\r\n .concat(result.slice(4, 6));\r\n } else if (lastDigit === 4) {\r\n upca = upca.concat(result.slice(1, 5))\r\n .concat([0, 0, 0, 0, 0, result[5]]);\r\n } else {\r\n upca = upca.concat(result.slice(1, 6))\r\n .concat([0, 0, 0, 0, lastDigit]);\r\n }\r\n\r\n upca.push(result[result.length - 1]);\r\n return upca;\r\n};\r\n\r\nUPCEReader.prototype._checksum = function(result) {\r\n return EANReader.prototype._checksum.call(this, this._convertToUPCA(result));\r\n};\r\n\r\nUPCEReader.prototype._findEnd = function(offset, isWhite) {\r\n isWhite = true;\r\n return EANReader.prototype._findEnd.call(this, offset, isWhite);\r\n};\r\n\r\nUPCEReader.prototype._verifyTrailingWhitespace = function(endInfo) {\r\n var self = this,\r\n trailingWhitespaceEnd;\r\n\r\n trailingWhitespaceEnd = endInfo.end + ((endInfo.end - endInfo.start) / 2);\r\n if (trailingWhitespaceEnd < self._row.length) {\r\n if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) {\r\n return endInfo;\r\n }\r\n }\r\n};\r\n\r\nexport default UPCEReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/upc_e_reader.js\n **/","import EANReader from './ean_reader';\r\n\r\nfunction UPCReader(opts, supplements) {\r\n EANReader.call(this, opts, supplements);\r\n}\r\n\r\nvar properties = {\r\n FORMAT: {value: \"upc_a\", writeable: false}\r\n};\r\n\r\nUPCReader.prototype = Object.create(EANReader.prototype, properties);\r\nUPCReader.prototype.constructor = UPCReader;\r\n\r\nUPCReader.prototype._decode = function() {\r\n var result = EANReader.prototype._decode.call(this);\r\n\r\n if (result && result.code && result.code.length === 13 && result.code.charAt(0) === \"0\") {\r\n result.code = result.code.substring(1);\r\n return result;\r\n }\r\n return null;\r\n};\r\n\r\nexport default UPCReader;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/reader/upc_reader.js\n **/","import ImageWrapper from './common/image_wrapper';\r\nimport createLocator, {checkImageConstraints} from './locator/barcode_locator';\r\nimport BarcodeDecoder from './decoder/barcode_decoder';\r\nimport createEventedElement from './common/events';\r\nimport CameraAccess from './input/camera_access';\r\nimport ImageDebug from './common/image_debug';\r\nimport ResultCollector from './analytics/result_collector';\r\nimport Config from './config/config';\r\nimport InputStream from 'input_stream';\r\nimport FrameGrabber from 'frame_grabber';\r\nimport {merge} from 'lodash';\r\nconst vec2 = {\r\n clone: require('gl-vec2/clone')\r\n};\r\n\r\n\r\nfunction createScanner() {\r\n var _inputStream,\r\n _framegrabber,\r\n _stopped,\r\n _canvasContainer = {\r\n ctx: {\r\n image: null,\r\n overlay: null\r\n },\r\n dom: {\r\n image: null,\r\n overlay: null\r\n }\r\n },\r\n _inputImageWrapper,\r\n _boxSize,\r\n _decoder,\r\n _workerPool = [],\r\n _onUIThread = true,\r\n _resultCollector,\r\n _config = {},\r\n _events = createEventedElement(),\r\n _locator;\r\n\r\n function initializeData(imageWrapper) {\r\n initBuffers(imageWrapper);\r\n _decoder = BarcodeDecoder.create(_config.decoder, _inputImageWrapper);\r\n }\r\n\r\n function initInputStream(cb) {\r\n var video;\r\n if (_config.inputStream.type === \"VideoStream\") {\r\n video = document.createElement(\"video\");\r\n _inputStream = InputStream.createVideoStream(video);\r\n } else if (_config.inputStream.type === \"ImageStream\") {\r\n _inputStream = InputStream.createImageStream();\r\n } else if (_config.inputStream.type === \"LiveStream\") {\r\n var $viewport = getViewPort();\r\n if ($viewport) {\r\n video = $viewport.querySelector(\"video\");\r\n if (!video) {\r\n video = document.createElement(\"video\");\r\n $viewport.appendChild(video);\r\n }\r\n }\r\n _inputStream = InputStream.createLiveStream(video);\r\n CameraAccess.request(video, _config.inputStream.constraints)\r\n .then(() => {\r\n _inputStream.trigger(\"canrecord\");\r\n }).catch((err) => {\r\n return cb(err);\r\n });\r\n }\r\n\r\n _inputStream.setAttribute(\"preload\", \"auto\");\r\n _inputStream.setInputStream(_config.inputStream);\r\n _inputStream.addEventListener(\"canrecord\", canRecord.bind(undefined, cb));\r\n }\r\n\r\n function getViewPort() {\r\n var target = _config.inputStream.target;\r\n // Check if target is already a DOM element\r\n if (target && target.nodeName && target.nodeType === 1) {\r\n return target;\r\n } else {\r\n // Use '#interactive.viewport' as a fallback selector (backwards compatibility)\r\n var selector = typeof target === 'string' ? target : '#interactive.viewport';\r\n return document.querySelector(selector);\r\n }\r\n }\r\n\r\n function canRecord(cb) {\r\n checkImageConstraints(_inputStream, _config.locator);\r\n initCanvas(_config);\r\n _framegrabber = FrameGrabber.create(_inputStream, _canvasContainer.dom.image);\r\n\r\n adjustWorkerPool(_config.numOfWorkers, function() {\r\n if (_config.numOfWorkers === 0) {\r\n initializeData();\r\n }\r\n ready(cb);\r\n });\r\n }\r\n\r\n function ready(cb){\r\n _inputStream.play();\r\n cb();\r\n }\r\n\r\n function initCanvas() {\r\n if (typeof document !== \"undefined\") {\r\n var $viewport = getViewPort();\r\n _canvasContainer.dom.image = document.querySelector(\"canvas.imgBuffer\");\r\n if (!_canvasContainer.dom.image) {\r\n _canvasContainer.dom.image = document.createElement(\"canvas\");\r\n _canvasContainer.dom.image.className = \"imgBuffer\";\r\n if ($viewport && _config.inputStream.type === \"ImageStream\") {\r\n $viewport.appendChild(_canvasContainer.dom.image);\r\n }\r\n }\r\n _canvasContainer.ctx.image = _canvasContainer.dom.image.getContext(\"2d\");\r\n _canvasContainer.dom.image.width = _inputStream.getCanvasSize().x;\r\n _canvasContainer.dom.image.height = _inputStream.getCanvasSize().y;\r\n\r\n _canvasContainer.dom.overlay = document.querySelector(\"canvas.drawingBuffer\");\r\n if (!_canvasContainer.dom.overlay) {\r\n _canvasContainer.dom.overlay = document.createElement(\"canvas\");\r\n _canvasContainer.dom.overlay.className = \"drawingBuffer\";\r\n if ($viewport) {\r\n $viewport.appendChild(_canvasContainer.dom.overlay);\r\n }\r\n }\r\n _canvasContainer.ctx.overlay = _canvasContainer.dom.overlay.getContext(\"2d\");\r\n _canvasContainer.dom.overlay.width = _inputStream.getCanvasSize().x;\r\n _canvasContainer.dom.overlay.height = _inputStream.getCanvasSize().y;\r\n }\r\n }\r\n\r\n function initBuffers(imageWrapper) {\r\n if (imageWrapper) {\r\n _inputImageWrapper = imageWrapper;\r\n } else {\r\n _inputImageWrapper = new ImageWrapper({\r\n x: _inputStream.getWidth(),\r\n y: _inputStream.getHeight()\r\n });\r\n }\r\n\r\n if (ENV.development) {\r\n console.log(_inputImageWrapper.size);\r\n }\r\n _boxSize = [\r\n vec2.clone([0, 0]),\r\n vec2.clone([0, _inputImageWrapper.size.y]),\r\n vec2.clone([_inputImageWrapper.size.x, _inputImageWrapper.size.y]),\r\n vec2.clone([_inputImageWrapper.size.x, 0])\r\n ];\r\n _locator = createLocator(_inputImageWrapper, _config.locator);\r\n }\r\n\r\n function getBoundingBoxes() {\r\n if (_config.locate) {\r\n return _locator.locate();\r\n } else {\r\n return [[\r\n vec2.clone(_boxSize[0]),\r\n vec2.clone(_boxSize[1]),\r\n vec2.clone(_boxSize[2]),\r\n vec2.clone(_boxSize[3])]];\r\n }\r\n }\r\n\r\n function transformResult(result) {\r\n var topRight = _inputStream.getTopRight(),\r\n xOffset = topRight.x,\r\n yOffset = topRight.y,\r\n i;\r\n\r\n if (xOffset === 0 && yOffset === 0) {\r\n return;\r\n }\r\n\r\n if (result.barcodes) {\r\n for (i = 0; i < result.barcodes.length; i++) {\r\n transformResult(result.barcodes[i]);\r\n }\r\n }\r\n\r\n if (result.line && result.line.length === 2) {\r\n moveLine(result.line);\r\n }\r\n\r\n if (result.box) {\r\n moveBox(result.box);\r\n }\r\n\r\n if (result.boxes && result.boxes.length > 0) {\r\n for (i = 0; i < result.boxes.length; i++) {\r\n moveBox(result.boxes[i]);\r\n }\r\n }\r\n\r\n function moveBox(box) {\r\n var corner = box.length;\r\n\r\n while (corner--) {\r\n box[corner][0] += xOffset;\r\n box[corner][1] += yOffset;\r\n }\r\n }\r\n\r\n function moveLine(line) {\r\n line[0].x += xOffset;\r\n line[0].y += yOffset;\r\n line[1].x += xOffset;\r\n line[1].y += yOffset;\r\n }\r\n }\r\n\r\n function addResult (result, imageData) {\r\n if (!imageData || !_resultCollector) {\r\n return;\r\n }\r\n\r\n if (result.barcodes) {\r\n result.barcodes.filter(barcode => barcode.codeResult)\r\n .forEach(barcode => addResult(barcode, imageData));\r\n } else if (result.codeResult) {\r\n _resultCollector.addResult(imageData, _inputStream.getCanvasSize(), result.codeResult);\r\n }\r\n }\r\n\r\n function hasCodeResult (result) {\r\n return result && (result.barcodes ?\r\n result.barcodes.some(barcode => barcode.codeResult) :\r\n result.codeResult);\r\n }\r\n\r\n function publishResult(result, imageData) {\r\n let resultToPublish = result;\r\n\r\n if (result && _onUIThread) {\r\n transformResult(result);\r\n addResult(result, imageData);\r\n resultToPublish = result.barcodes || result;\r\n }\r\n\r\n _events.publish(\"processed\", resultToPublish);\r\n if (hasCodeResult(result)) {\r\n _events.publish(\"detected\", resultToPublish);\r\n }\r\n }\r\n\r\n function locateAndDecode() {\r\n var result,\r\n boxes;\r\n\r\n boxes = getBoundingBoxes();\r\n if (boxes) {\r\n result = _decoder.decodeFromBoundingBoxes(boxes);\r\n result = result || {};\r\n result.boxes = boxes;\r\n publishResult(result, _inputImageWrapper.data);\r\n } else {\r\n publishResult();\r\n }\r\n }\r\n\r\n function update() {\r\n var availableWorker;\r\n\r\n if (_onUIThread) {\r\n if (_workerPool.length > 0) {\r\n availableWorker = _workerPool.filter(function(workerThread) {\r\n return !workerThread.busy;\r\n })[0];\r\n if (availableWorker) {\r\n _framegrabber.attachData(availableWorker.imageData);\r\n } else {\r\n return; // all workers are busy\r\n }\r\n } else {\r\n _framegrabber.attachData(_inputImageWrapper.data);\r\n }\r\n if (_framegrabber.grab()) {\r\n if (availableWorker) {\r\n availableWorker.busy = true;\r\n availableWorker.worker.postMessage({\r\n cmd: 'process',\r\n imageData: availableWorker.imageData\r\n }, [availableWorker.imageData.buffer]);\r\n } else {\r\n locateAndDecode();\r\n }\r\n }\r\n } else {\r\n locateAndDecode();\r\n }\r\n }\r\n\r\n function startContinuousUpdate() {\r\n var next = null,\r\n delay = 1000 / (_config.frequency || 60);\r\n\r\n _stopped = false;\r\n (function frame(timestamp) {\r\n next = next || timestamp;\r\n if (!_stopped) {\r\n if (timestamp >= next) {\r\n next += delay;\r\n update();\r\n }\r\n window.requestAnimFrame(frame);\r\n }\r\n }(performance.now()));\r\n }\r\n\r\n function start() {\r\n if (_onUIThread && _config.inputStream.type === \"LiveStream\") {\r\n startContinuousUpdate();\r\n } else {\r\n update();\r\n }\r\n }\r\n\r\n function initWorker(cb) {\r\n var blobURL,\r\n workerThread = {\r\n worker: undefined,\r\n imageData: new Uint8Array(_inputStream.getWidth() * _inputStream.getHeight()),\r\n busy: true\r\n };\r\n\r\n blobURL = generateWorkerBlob();\r\n workerThread.worker = new Worker(blobURL);\r\n\r\n workerThread.worker.onmessage = function(e) {\r\n if (e.data.event === 'initialized') {\r\n URL.revokeObjectURL(blobURL);\r\n workerThread.busy = false;\r\n workerThread.imageData = new Uint8Array(e.data.imageData);\r\n if (ENV.development) {\r\n console.log(\"Worker initialized\");\r\n }\r\n return cb(workerThread);\r\n } else if (e.data.event === 'processed') {\r\n workerThread.imageData = new Uint8Array(e.data.imageData);\r\n workerThread.busy = false;\r\n publishResult(e.data.result, workerThread.imageData);\r\n } else if (e.data.event === 'error') {\r\n if (ENV.development) {\r\n console.log(\"Worker error: \" + e.data.message);\r\n }\r\n }\r\n };\r\n\r\n workerThread.worker.postMessage({\r\n cmd: 'init',\r\n size: {x: _inputStream.getWidth(), y: _inputStream.getHeight()},\r\n imageData: workerThread.imageData,\r\n config: configForWorker(_config)\r\n }, [workerThread.imageData.buffer]);\r\n }\r\n\r\n function configForWorker(config) {\r\n return {\r\n ...config,\r\n inputStream: {\r\n ...config.inputStream,\r\n target: null\r\n }\r\n };\r\n }\r\n\r\n function workerInterface(factory) {\r\n /* eslint-disable no-undef*/\r\n if (factory) {\r\n var Quagga = factory().default;\r\n if (!Quagga) {\r\n self.postMessage({'event': 'error', message: 'Quagga could not be created'});\r\n return;\r\n }\r\n }\r\n var imageWrapper,\r\n scanner = Quagga._worker.createScanner();\r\n\r\n self.onmessage = function(e) {\r\n if (e.data.cmd === 'init') {\r\n var config = e.data.config;\r\n config.numOfWorkers = 0;\r\n imageWrapper = new Quagga.ImageWrapper({\r\n x: e.data.size.x,\r\n y: e.data.size.y\r\n }, new Uint8Array(e.data.imageData));\r\n scanner.init(config, ready, imageWrapper);\r\n scanner.subscribe(\"processed\", onProcessed);\r\n } else if (e.data.cmd === 'process') {\r\n imageWrapper.data = new Uint8Array(e.data.imageData);\r\n scanner.start();\r\n }\r\n };\r\n\r\n function onProcessed(result) {\r\n self.postMessage({\r\n 'event': 'processed',\r\n imageData: imageWrapper.data,\r\n result: result\r\n }, [imageWrapper.data.buffer]);\r\n }\r\n\r\n function ready() { // eslint-disable-line\r\n self.postMessage({'event': 'initialized', imageData: imageWrapper.data}, [imageWrapper.data.buffer]);\r\n }\r\n\r\n /* eslint-enable */\r\n }\r\n\r\n function generateWorkerBlob() {\r\n var blob,\r\n factorySource;\r\n\r\n /* jshint ignore:start */\r\n if (typeof __factorySource__ !== 'undefined') {\r\n factorySource = __factorySource__; // eslint-disable-line no-undef\r\n }\r\n /* jshint ignore:end */\r\n\r\n blob = new Blob(['(' + workerInterface.toString() + ')(' + factorySource + ');'],\r\n {type: 'text/javascript'});\r\n\r\n return window.URL.createObjectURL(blob);\r\n }\r\n\r\n function setReaders(readers) {\r\n if (_decoder) {\r\n _decoder.setReaders(readers);\r\n } else if (_onUIThread && _workerPool.length > 0) {\r\n _workerPool.forEach(function(workerThread) {\r\n workerThread.worker.postMessage({cmd: 'setReaders', readers: readers});\r\n });\r\n }\r\n }\r\n\r\n function adjustWorkerPool(capacity, cb) {\r\n const increaseBy = capacity - _workerPool.length;\r\n if (increaseBy === 0) {\r\n return cb && cb();\r\n }\r\n if (increaseBy < 0) {\r\n const workersToTerminate = _workerPool.slice(increaseBy);\r\n workersToTerminate.forEach(function(workerThread) {\r\n workerThread.worker.terminate();\r\n if (ENV.development) {\r\n console.log(\"Worker terminated!\");\r\n }\r\n });\r\n _workerPool = _workerPool.slice(0, increaseBy);\r\n return cb && cb();\r\n } else {\r\n for (var i = 0; i < increaseBy; i++) {\r\n initWorker(workerInitialized);\r\n }\r\n\r\n function workerInitialized(workerThread) {\r\n _workerPool.push(workerThread);\r\n if (_workerPool.length >= capacity){\r\n cb && cb();\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n init: function(config, cb, imageWrapper) {\r\n _config = merge({}, Config, config);\r\n\r\n if (imageWrapper) {\r\n _onUIThread = false;\r\n initializeData(imageWrapper);\r\n return cb();\r\n } else {\r\n initInputStream(cb);\r\n }\r\n },\r\n start: function() {\r\n start();\r\n },\r\n stop: function() {\r\n _stopped = true;\r\n adjustWorkerPool(0);\r\n if (_config.inputStream.type === \"LiveStream\") {\r\n CameraAccess.release();\r\n _inputStream.clearEventHandlers();\r\n }\r\n },\r\n pause: function() {\r\n _stopped = true;\r\n },\r\n subscribe(eventName, callback) {\r\n _events.subscribe(eventName, callback);\r\n },\r\n unsubscribe(eventName, callback) {\r\n _events.unsubscribe(eventName, callback);\r\n },\r\n registerResultCollector: function(resultCollector) {\r\n if (resultCollector && typeof resultCollector.addResult === 'function') {\r\n _resultCollector = resultCollector;\r\n }\r\n },\r\n decodeSingle: function(config, resultCallback) {\r\n this.init(config, () => {\r\n _events.once(\"processed\", (result) => {\r\n this.stop();\r\n resultCallback.call(null, result);\r\n }, true);\r\n start();\r\n });\r\n },\r\n canvas: _canvasContainer\r\n };\r\n}\r\n\r\nexport default createScanner;\r\n\n\n\n/** WEBPACK FOOTER **\n ** ./src/scanner.js\n **/","module.exports = copy\n\n/**\n * Copy the values from one mat2 to another\n *\n * @alias mat2.copy\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction copy(out, a) {\n out[0] = a[0]\n out[1] = a[1]\n out[2] = a[2]\n out[3] = a[3]\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/copy.js\n ** module id = 91\n ** module chunks = 0\n **/","module.exports = create\n\n/**\n * Creates a new identity mat2\n *\n * @alias mat2.create\n * @returns {mat2} a new 2x2 matrix\n */\nfunction create() {\n var out = new Float32Array(4)\n out[0] = 1\n out[1] = 0\n out[2] = 0\n out[3] = 1\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/create.js\n ** module id = 92\n ** module chunks = 0\n **/","module.exports = invert\n\n/**\n * Inverts a mat2\n *\n * @alias mat2.invert\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction invert(out, a) {\n var a0 = a[0]\n var a1 = a[1]\n var a2 = a[2]\n var a3 = a[3]\n var det = a0 * a3 - a2 * a1\n\n if (!det) return null\n det = 1.0 / det\n\n out[0] = a3 * det\n out[1] = -a1 * det\n out[2] = -a2 * det\n out[3] = a0 * det\n\n return out\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-mat2/invert.js\n ** module id = 93\n ** module chunks = 0\n **/","module.exports = scale\n\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\nfunction scale(out, a, b) {\n out[0] = a[0] * b\n out[1] = a[1] * b\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/scale.js\n ** module id = 94\n ** module chunks = 0\n **/","module.exports = transformMat2\n\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat2(out, a, m) {\n var x = a[0],\n y = a[1]\n out[0] = m[0] * x + m[2] * y\n out[1] = m[1] * x + m[3] * y\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec2/transformMat2.js\n ** module id = 95\n ** module chunks = 0\n **/","module.exports = clone;\n\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {vec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\nfunction clone(a) {\n var out = new Float32Array(3)\n out[0] = a[0]\n out[1] = a[1]\n out[2] = a[2]\n return out\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/gl-vec3/clone.js\n ** module id = 96\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Creates an hash object.\n *\n * @private\n * @constructor\n * @returns {Object} Returns the new hash object.\n */\nfunction Hash() {}\n\n// Avoid inheriting from `Object.prototype` when possible.\nHash.prototype = nativeCreate ? nativeCreate(null) : objectProto;\n\nmodule.exports = Hash;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Hash.js\n ** module id = 97\n ** module chunks = 0\n **/","var mapClear = require('./_mapClear'),\n mapDelete = require('./_mapDelete'),\n mapGet = require('./_mapGet'),\n mapHas = require('./_mapHas'),\n mapSet = require('./_mapSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction MapCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = values[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add functions to the `MapCache`.\nMapCache.prototype.clear = mapClear;\nMapCache.prototype['delete'] = mapDelete;\nMapCache.prototype.get = mapGet;\nMapCache.prototype.has = mapHas;\nMapCache.prototype.set = mapSet;\n\nmodule.exports = MapCache;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_MapCache.js\n ** module id = 98\n ** module chunks = 0\n **/","var root = require('./_root');\n\n/** Built-in value references. */\nvar Reflect = root.Reflect;\n\nmodule.exports = Reflect;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Reflect.js\n ** module id = 99\n ** module chunks = 0\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_Set.js\n ** module id = 100\n ** module chunks = 0\n **/","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_WeakMap.js\n ** module id = 101\n ** module chunks = 0\n **/","/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `Map#set` because it doesn't return the map instance in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\nmodule.exports = addMapEntry;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_addMapEntry.js\n ** module id = 102\n ** module chunks = 0\n **/","/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n set.add(value);\n return set;\n}\n\nmodule.exports = addSetEntry;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_addSetEntry.js\n ** module id = 103\n ** module chunks = 0\n **/","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n var length = args.length;\n switch (length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_apply.js\n ** module id = 104\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayMap.js\n ** module id = 105\n ** module chunks = 0\n **/","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arrayPush.js\n ** module id = 106\n ** module chunks = 0\n **/","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check, else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_arraySome.js\n ** module id = 107\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseAssign.js\n ** module id = 108\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseForOwn = require('./_baseForOwn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isHostObject = require('./_isHostObject'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[boolTag] =\ncloneableTags[dateTag] = cloneableTags[float32Tag] =\ncloneableTags[float64Tag] = cloneableTags[int8Tag] =\ncloneableTags[int16Tag] = cloneableTags[int32Tag] =\ncloneableTags[mapTag] = cloneableTags[numberTag] =\ncloneableTags[objectTag] = cloneableTags[regexpTag] =\ncloneableTags[setTag] = cloneableTags[stringTag] =\ncloneableTags[symbolTag] = cloneableTags[uint8Tag] =\ncloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] =\ncloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n result = baseAssign(result, value);\n return isFull ? copySymbols(value, result) : result;\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n // Recursively populate clone (susceptible to call stack limits).\n (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return (isFull && !isArr) ? copySymbols(value, result) : result;\n}\n\nmodule.exports = baseClone;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseClone.js\n ** module id = 109\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\nmodule.exports = baseCreate;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseCreate.js\n ** module id = 110\n ** module chunks = 0\n **/","var arrayPush = require('./_arrayPush'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, isStrict, result) {\n result || (result = []);\n\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && isArrayLikeObject(value) &&\n (isStrict || isArray(value) || isArguments(value))) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseFlatten.js\n ** module id = 111\n ** module chunks = 0\n **/","var baseFor = require('./_baseFor'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return object == null ? object : baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseForIn.js\n ** module id = 112\n ** module chunks = 0\n **/","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseForOwn.js\n ** module id = 113\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseHasIn.js\n ** module id = 114\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isHostObject = require('./_isHostObject'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for comparison styles. */\nvar PARTIAL_COMPARE_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n stack || (stack = new Stack);\n return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsEqualDeep.js\n ** module id = 115\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack,\n result = customizer ? customizer(objValue, srcValue, key, object, source, stack) : undefined;\n\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIsMatch.js\n ** module id = 116\n ** module chunks = 0\n **/","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n var type = typeof value;\n if (type == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (type == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseIteratee.js\n ** module id = 117\n ** module chunks = 0\n **/","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = Object.keys;\n\n/**\n * The base implementation of `_.keys` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n return nativeKeys(Object(object));\n}\n\nmodule.exports = baseKeys;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseKeys.js\n ** module id = 118\n ** module chunks = 0\n **/","var Reflect = require('./_Reflect'),\n iteratorToArray = require('./_iteratorToArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar enumerate = Reflect ? Reflect.enumerate : undefined,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * The base implementation of `_.keysIn` which doesn't skip the constructor\n * property of prototypes or treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n object = object == null ? object : Object(object);\n\n var result = [];\n for (var key in object) {\n result.push(key);\n }\n return result;\n}\n\n// Fallback for IE < 9 with es6-shim.\nif (enumerate && !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf')) {\n baseKeysIn = function(object) {\n return iteratorToArray(enumerate(object));\n };\n}\n\nmodule.exports = baseKeysIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseKeysIn.js\n ** module id = 119\n ** module chunks = 0\n **/","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n var key = matchData[0][0],\n value = matchData[0][1];\n\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === value &&\n (value !== undefined || (key in Object(object)));\n };\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMatches.js\n ** module id = 120\n ** module chunks = 0\n **/","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMatchesProperty.js\n ** module id = 121\n ** module chunks = 0\n **/","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignMergeValue = require('./_assignMergeValue'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isArray = require('./isArray'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n var props = (isArray(source) || isTypedArray(source))\n ? undefined\n : keysIn(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(object[key], srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n });\n}\n\nmodule.exports = baseMerge;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMerge.js\n ** module id = 122\n ** module chunks = 0\n **/","var assignMergeValue = require('./_assignMergeValue'),\n baseClone = require('./_baseClone'),\n copyArray = require('./_copyArray'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = object[key],\n srcValue = source[key],\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n newValue = srcValue;\n if (isArray(srcValue) || isTypedArray(srcValue)) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else {\n isCommon = false;\n newValue = baseClone(srcValue, !customizer);\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n isCommon = false;\n newValue = baseClone(srcValue, !customizer);\n }\n else {\n newValue = objValue;\n }\n }\n else {\n isCommon = false;\n }\n }\n stack.set(srcValue, newValue);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n }\n stack['delete'](srcValue);\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseMergeDeep.js\n ** module id = 123\n ** module chunks = 0\n **/","var arrayReduce = require('./_arrayReduce');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property names.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property names to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n object = Object(object);\n return arrayReduce(props, function(result, key) {\n if (key in object) {\n result[key] = object[key];\n }\n return result;\n }, {});\n}\n\nmodule.exports = basePick;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePick.js\n ** module id = 124\n ** module chunks = 0\n **/","var baseForIn = require('./_baseForIn');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, predicate) {\n var result = {};\n baseForIn(object, function(value, key) {\n if (predicate(value, key)) {\n result[key] = value;\n }\n });\n return result;\n}\n\nmodule.exports = basePickBy;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePickBy.js\n ** module id = 125\n ** module chunks = 0\n **/","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_basePropertyDeep.js\n ** module id = 126\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseSlice.js\n ** module id = 127\n ** module chunks = 0\n **/","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseTimes.js\n ** module id = 128\n ** module chunks = 0\n **/","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the new array of key-value pairs.\n */\nfunction baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n}\n\nmodule.exports = baseToPairs;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_baseToPairs.js\n ** module id = 129\n ** module chunks = 0\n **/","/**\n * Checks if `value` is a global object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {null|Object} Returns `value` if it's a global object, else `null`.\n */\nfunction checkGlobal(value) {\n return (value && value.Object === Object) ? value : null;\n}\n\nmodule.exports = checkGlobal;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_checkGlobal.js\n ** module id = 130\n ** module chunks = 0\n **/","/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneBuffer.js\n ** module id = 131\n ** module chunks = 0\n **/","var addMapEntry = require('./_addMapEntry'),\n arrayReduce = require('./_arrayReduce'),\n mapToArray = require('./_mapToArray');\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map) {\n return arrayReduce(mapToArray(map), addMapEntry, new map.constructor);\n}\n\nmodule.exports = cloneMap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneMap.js\n ** module id = 132\n ** module chunks = 0\n **/","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneRegExp.js\n ** module id = 133\n ** module chunks = 0\n **/","var addSetEntry = require('./_addSetEntry'),\n arrayReduce = require('./_arrayReduce'),\n setToArray = require('./_setToArray');\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set) {\n return arrayReduce(setToArray(set), addSetEntry, new set.constructor);\n}\n\nmodule.exports = cloneSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneSet.js\n ** module id = 134\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneSymbol.js\n ** module id = 135\n ** module chunks = 0\n **/","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_cloneTypedArray.js\n ** module id = 136\n ** module chunks = 0\n **/","var assignValue = require('./_assignValue');\n\n/**\n * This function is like `copyObject` except that it accepts a function to\n * customize copied values.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObjectWith(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : source[key];\n\n assignValue(object, key, newValue);\n }\n return object;\n}\n\nmodule.exports = copyObjectWith;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copyObjectWith.js\n ** module id = 137\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_copySymbols.js\n ** module id = 138\n ** module chunks = 0\n **/","var isIterateeCall = require('./_isIterateeCall'),\n rest = require('./rest');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return rest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = typeof customizer == 'function'\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_createAssigner.js\n ** module id = 139\n ** module chunks = 0\n **/","/**\n * Creates a base function for methods like `_.forIn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_createBaseFor.js\n ** module id = 140\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n // Coerce dates and booleans to numbers, dates to milliseconds and booleans\n // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.\n return +object == +other;\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case numberTag:\n // Treat `NaN` vs. `NaN` as equal.\n return (object != +object) ? other != +other : object == +other;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings primitives and string\n // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n // Recursively compare objects (susceptible to call stack limits).\n return equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask | UNORDERED_COMPARE_FLAG, stack.set(object, other));\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalByTag.js\n ** module id = 141\n ** module chunks = 0\n **/","var baseHas = require('./_baseHas'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for comparison styles. */\nvar PARTIAL_COMPARE_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : baseHas(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n return result;\n}\n\nmodule.exports = equalObjects;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_equalObjects.js\n ** module id = 142\n ** module chunks = 0\n **/","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getLength.js\n ** module id = 143\n ** module chunks = 0\n **/","var isStrictComparable = require('./_isStrictComparable'),\n toPairs = require('./toPairs');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = toPairs(object),\n length = result.length;\n\n while (length--) {\n result[length][2] = isStrictComparable(result[length][1]);\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getMatchData.js\n ** module id = 144\n ** module chunks = 0\n **/","/** Built-in value references. */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = getOwnPropertySymbols || function() {\n return [];\n};\n\nmodule.exports = getSymbols;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_getSymbols.js\n ** module id = 145\n ** module chunks = 0\n **/","var baseCastPath = require('./_baseCastPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isKey = require('./_isKey'),\n isLength = require('./isLength'),\n isString = require('./isString'),\n last = require('./last'),\n parent = require('./_parent');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n if (object == null) {\n return false;\n }\n var result = hasFunc(object, path);\n if (!result && !isKey(path)) {\n path = baseCastPath(path);\n object = parent(object, path);\n if (object != null) {\n path = last(path);\n result = hasFunc(object, path);\n }\n }\n var length = object ? object.length : undefined;\n return result || (\n !!length && isLength(length) && isIndex(path, length) &&\n (isArray(object) || isString(object) || isArguments(object))\n );\n}\n\nmodule.exports = hasPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hasPath.js\n ** module id = 146\n ** module chunks = 0\n **/","var hashHas = require('./_hashHas');\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(hash, key) {\n return hashHas(hash, key) && delete hash[key];\n}\n\nmodule.exports = hashDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashDelete.js\n ** module id = 147\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @param {Object} hash The hash to query.\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(hash, key) {\n if (nativeCreate) {\n var result = hash[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(hash, key) ? hash[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashGet.js\n ** module id = 148\n ** module chunks = 0\n **/","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n */\nfunction hashSet(hash, key, value) {\n hash[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n}\n\nmodule.exports = hashSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_hashSet.js\n ** module id = 149\n ** module chunks = 0\n **/","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneArray.js\n ** module id = 150\n ** module chunks = 0\n **/","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneMap = require('./_cloneMap'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSet = require('./_cloneSet'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneByTag.js\n ** module id = 151\n ** module chunks = 0\n **/","var baseCreate = require('./_baseCreate'),\n isPrototype = require('./_isPrototype');\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototypeOf(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_initCloneObject.js\n ** module id = 152\n ** module chunks = 0\n **/","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isIterateeCall.js\n ** module id = 153\n ** module chunks = 0\n **/","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_isStrictComparable.js\n ** module id = 154\n ** module chunks = 0\n **/","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_iteratorToArray.js\n ** module id = 155\n ** module chunks = 0\n **/","var Hash = require('./_Hash'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': Map ? new Map : [],\n 'string': new Hash\n };\n}\n\nmodule.exports = mapClear;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapClear.js\n ** module id = 156\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocDelete = require('./_assocDelete'),\n hashDelete = require('./_hashDelete'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapDelete(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashDelete(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map['delete'](key) : assocDelete(data.map, key);\n}\n\nmodule.exports = mapDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapDelete.js\n ** module id = 157\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocGet = require('./_assocGet'),\n hashGet = require('./_hashGet'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapGet(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashGet(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.get(key) : assocGet(data.map, key);\n}\n\nmodule.exports = mapGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapGet.js\n ** module id = 158\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocHas = require('./_assocHas'),\n hashHas = require('./_hashHas'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapHas(key) {\n var data = this.__data__;\n if (isKeyable(key)) {\n return hashHas(typeof key == 'string' ? data.string : data.hash, key);\n }\n return Map ? data.map.has(key) : assocHas(data.map, key);\n}\n\nmodule.exports = mapHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapHas.js\n ** module id = 159\n ** module chunks = 0\n **/","var Map = require('./_Map'),\n assocSet = require('./_assocSet'),\n hashSet = require('./_hashSet'),\n isKeyable = require('./_isKeyable');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache object.\n */\nfunction mapSet(key, value) {\n var data = this.__data__;\n if (isKeyable(key)) {\n hashSet(typeof key == 'string' ? data.string : data.hash, key, value);\n } else if (Map) {\n data.map.set(key, value);\n } else {\n assocSet(data.map, key, value);\n }\n return this;\n}\n\nmodule.exports = mapSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_mapSet.js\n ** module id = 160\n ** module chunks = 0\n **/","var baseSlice = require('./_baseSlice'),\n get = require('./get');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length == 1 ? object : get(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_parent.js\n ** module id = 161\n ** module chunks = 0\n **/","/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = { 'array': [], 'map': null };\n}\n\nmodule.exports = stackClear;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackClear.js\n ** module id = 162\n ** module chunks = 0\n **/","var assocDelete = require('./_assocDelete');\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocDelete(array, key) : data.map['delete'](key);\n}\n\nmodule.exports = stackDelete;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackDelete.js\n ** module id = 163\n ** module chunks = 0\n **/","var assocGet = require('./_assocGet');\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocGet(array, key) : data.map.get(key);\n}\n\nmodule.exports = stackGet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackGet.js\n ** module id = 164\n ** module chunks = 0\n **/","var assocHas = require('./_assocHas');\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n var data = this.__data__,\n array = data.array;\n\n return array ? assocHas(array, key) : data.map.has(key);\n}\n\nmodule.exports = stackHas;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackHas.js\n ** module id = 165\n ** module chunks = 0\n **/","var MapCache = require('./_MapCache'),\n assocSet = require('./_assocSet');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache object.\n */\nfunction stackSet(key, value) {\n var data = this.__data__,\n array = data.array;\n\n if (array) {\n if (array.length < (LARGE_ARRAY_SIZE - 1)) {\n assocSet(array, key, value);\n } else {\n data.array = null;\n data.map = new MapCache(array);\n }\n }\n var map = data.map;\n if (map) {\n map.set(key, value);\n }\n return this;\n}\n\nmodule.exports = stackSet;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stackSet.js\n ** module id = 166\n ** module chunks = 0\n **/","var toString = require('./toString');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nfunction stringToPath(string) {\n var result = [];\n toString(string).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n}\n\nmodule.exports = stringToPath;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/_stringToPath.js\n ** module id = 167\n ** module chunks = 0\n **/","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var object = { 'user': 'fred' };\n * var getter = _.constant(object);\n *\n * getter() === object;\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/constant.js\n ** module id = 168\n ** module chunks = 0\n **/","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b.c');\n * // => true\n *\n * _.hasIn(object, ['a', 'b', 'c']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/hasIn.js\n ** module id = 169\n ** module chunks = 0\n **/","/**\n * This method returns the first argument given to it.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/identity.js\n ** module id = 170\n ** module chunks = 0\n **/","var constant = require('./constant'),\n root = require('./_root');\n\n/** Used to determine if values are of the language type `Object`. */\nvar objectTypes = {\n 'function': true,\n 'object': true\n};\n\n/** Detect free variable `exports`. */\nvar freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)\n ? exports\n : undefined;\n\n/** Detect free variable `module`. */\nvar freeModule = (objectTypes[typeof module] && module && !module.nodeType)\n ? module\n : undefined;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = (freeModule && freeModule.exports === freeExports)\n ? freeExports\n : undefined;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = !Buffer ? constant(false) : function(value) {\n return value instanceof Buffer;\n};\n\nmodule.exports = isBuffer;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isBuffer.js\n ** module id = 171\n ** module chunks = 0\n **/","var isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isFunction = require('./isFunction'),\n isString = require('./isString');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty collection or object. A value is considered\n * empty if it's an `arguments` object, array, string, or jQuery-like collection\n * with a length of `0` or has no own enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (isArrayLike(value) &&\n (isArray(value) || isString(value) ||\n isFunction(value.splice) || isArguments(value))) {\n return !value.length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isEmpty.js\n ** module id = 172\n ** module chunks = 0\n **/","var isFunction = require('./isFunction'),\n isHostObject = require('./_isHostObject'),\n isObjectLike = require('./isObjectLike');\n\n/** Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(funcToString.call(value));\n }\n return isObjectLike(value) &&\n (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isNative.js\n ** module id = 173\n ** module chunks = 0\n **/","var isHostObject = require('./_isHostObject'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototypeOf = Object.getPrototypeOf;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n var Ctor = proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isPlainObject.js\n ** module id = 174\n ** module chunks = 0\n **/","var isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/isSymbol.js\n ** module id = 175\n ** module chunks = 0\n **/","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array ? array.length : 0;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/last.js\n ** module id = 176\n ** module chunks = 0\n **/","var baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable properties of `object` that `predicate`\n * doesn't return truthy for. The predicate is invoked with two arguments:\n * (value, key).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {Function|Object|string} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n predicate = baseIteratee(predicate);\n return basePickBy(object, function(value, key) {\n return !predicate(value, key);\n });\n}\n\nmodule.exports = omitBy;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/omitBy.js\n ** module id = 177\n ** module chunks = 0\n **/","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': { 'c': 2 } } },\n * { 'a': { 'b': { 'c': 1 } } }\n * ];\n *\n * _.map(objects, _.property('a.b.c'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(path) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/property.js\n ** module id = 178\n ** module chunks = 0\n **/","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This function is loosely based on [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3');\n * // => 3\n */\nfunction toInteger(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n var remainder = value % 1;\n return value === value ? (remainder ? value - remainder : value) : 0;\n}\n\nmodule.exports = toInteger;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toInteger.js\n ** module id = 179\n ** module chunks = 0\n **/","var isFunction = require('./isFunction'),\n isObject = require('./isObject');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3);\n * // => 3\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3');\n * // => 3\n */\nfunction toNumber(value) {\n if (isObject(value)) {\n var other = isFunction(value.valueOf) ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toNumber.js\n ** module id = 180\n ** module chunks = 0\n **/","var baseToPairs = require('./_baseToPairs'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable key-value pairs for `object` which\n * can be consumed by `_.fromPairs`.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the new array of key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\nfunction toPairs(object) {\n return baseToPairs(object, keys(object));\n}\n\nmodule.exports = toPairs;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toPairs.js\n ** module id = 181\n ** module chunks = 0\n **/","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toPlainObject.js\n ** module id = 182\n ** module chunks = 0\n **/","var Symbol = require('./_Symbol'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Converts `value` to a string if it's not one. An empty string is returned\n * for `null` and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (value == null) {\n return '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toString;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash/toString.js\n ** module id = 183\n ** module chunks = 0\n **/"," /* eslint-env node */\n'use strict';\n\n// SDP helpers.\nvar SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(function(line) {\n return line.trim();\n });\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n var parts = blob.split('\\nm=');\n return parts.map(function(part, index) {\n return (index > 0 ? 'm=' + part : part).trim() + '\\r\\n';\n });\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(function(line) {\n return line.indexOf(prefix) === 0;\n });\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\nSDPUtils.parseCandidate = function(line) {\n var parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n var candidate = {\n foundation: parts[0],\n component: parts[1],\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7]\n };\n\n for (var i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n default: // Unknown extensions are silently ignored.\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\nSDPUtils.writeCandidate = function(candidate) {\n var sdp = [];\n sdp.push(candidate.foundation);\n sdp.push(candidate.component);\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.ip);\n sdp.push(candidate.port);\n\n var type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress); // was: relAddr\n sdp.push('rport');\n sdp.push(candidate.relatedPort); // was: relPort\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n var parts = line.substr(9).split(' ');\n var parsed = {\n payloadType: parseInt(parts.shift(), 10) // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n // was: channels\n parsed.numChannels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n return parsed;\n};\n\n// Generate an a=rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (codec.numChannels !== 1 ? '/' + codec.numChannels : '') + '\\r\\n';\n};\n\n// Parses an a=extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n var parts = line.substr(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n uri: parts[1]\n };\n};\n\n// Generates a=extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n ' ' + headerExtension.uri + '\\r\\n';\n};\n\n// Parses an ftmp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n var parsed = {};\n var kv;\n var parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (var j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n var line = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n var params = [];\n Object.keys(codec.parameters).forEach(function(param) {\n params.push(param + '=' + codec.parameters[param]);\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n var parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' ')\n };\n};\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n var lines = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(function(fb) {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses an RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n var sp = line.indexOf(' ');\n var parts = {\n ssrc: parseInt(line.substr(7, sp - 7), 10)\n };\n var colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.splitLines(mediaSection);\n // Search in session part, too.\n lines = lines.concat(SDPUtils.splitLines(sessionpart));\n var fpLine = lines.filter(function(line) {\n return line.indexOf('a=fingerprint:') === 0;\n })[0].substr(14);\n // Note: a=setup line is ignored since we use the 'auto' role.\n var dtlsParameters = {\n role: 'auto',\n fingerprints: [{\n algorithm: fpLine.split(' ')[0],\n value: fpLine.split(' ')[1]\n }]\n };\n return dtlsParameters;\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n var sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(function(fp) {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.splitLines(mediaSection);\n // Search in session part, too.\n lines = lines.concat(SDPUtils.splitLines(sessionpart));\n var iceParameters = {\n usernameFragment: lines.filter(function(line) {\n return line.indexOf('a=ice-ufrag:') === 0;\n })[0].substr(12),\n password: lines.filter(function(line) {\n return line.indexOf('a=ice-pwd:') === 0;\n })[0].substr(10)\n };\n return iceParameters;\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n return 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n var description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: []\n };\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n var pt = mline[i];\n var rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n var codec = SDPUtils.parseRtpMap(rtpmapline);\n var fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp: is considered.\n codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {};\n codec.rtcpFeedback = SDPUtils.matchPrefix(\n mediaSection, 'a=rtcp-fb:' + pt + ' ')\n .map(SDPUtils.parseRtcpFb);\n description.codecs.push(codec);\n // parse FEC mechanisms from rtpmap lines.\n switch (codec.name.toUpperCase()) {\n case 'RED':\n case 'ULPFEC':\n description.fecMechanisms.push(codec.name.toUpperCase());\n break;\n default: // only RED and ULPFEC are recognized as FEC mechanisms.\n break;\n }\n }\n }\n SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function(line) {\n description.headerExtensions.push(SDPUtils.parseExtmap(line));\n });\n // FIXME: parse rtcp.\n return description;\n};\n\n// Generates parts of the SDP media section describing the capabilities /\n// parameters.\nSDPUtils.writeRtpDescription = function(kind, caps) {\n var sdp = '';\n\n // Build the mline.\n sdp += 'm=' + kind + ' ';\n sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs.\n sdp += ' UDP/TLS/RTP/SAVPF ';\n sdp += caps.codecs.map(function(codec) {\n if (codec.preferredPayloadType !== undefined) {\n return codec.preferredPayloadType;\n }\n return codec.payloadType;\n }).join(' ') + '\\r\\n';\n\n sdp += 'c=IN IP4 0.0.0.0\\r\\n';\n sdp += 'a=rtcp:9 IN IP4 0.0.0.0\\r\\n';\n\n // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb.\n caps.codecs.forEach(function(codec) {\n sdp += SDPUtils.writeRtpMap(codec);\n sdp += SDPUtils.writeFmtp(codec);\n sdp += SDPUtils.writeRtcpFb(codec);\n });\n // FIXME: add headerExtensions, fecMechanismş and rtcp.\n sdp += 'a=rtcp-mux\\r\\n';\n return sdp;\n};\n\n// Parses the SDP media section and returns an array of\n// RTCRtpEncodingParameters.\nSDPUtils.parseRtpEncodingParameters = function(mediaSection) {\n var encodingParameters = [];\n var description = SDPUtils.parseRtpParameters(mediaSection);\n var hasRed = description.fecMechanisms.indexOf('RED') !== -1;\n var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1;\n\n // filter a=ssrc:... cname:, ignore PlanB-msid\n var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(parts) {\n return parts.attribute === 'cname';\n });\n var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc;\n var secondarySsrc;\n\n var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID')\n .map(function(line) {\n var parts = line.split(' ');\n parts.shift();\n return parts.map(function(part) {\n return parseInt(part, 10);\n });\n });\n if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) {\n secondarySsrc = flows[0][1];\n }\n\n description.codecs.forEach(function(codec) {\n if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) {\n var encParam = {\n ssrc: primarySsrc,\n codecPayloadType: parseInt(codec.parameters.apt, 10),\n rtx: {\n payloadType: codec.payloadType,\n ssrc: secondarySsrc\n }\n };\n encodingParameters.push(encParam);\n if (hasRed) {\n encParam = JSON.parse(JSON.stringify(encParam));\n encParam.fec = {\n ssrc: secondarySsrc,\n mechanism: hasUlpfec ? 'red+ulpfec' : 'red'\n };\n encodingParameters.push(encParam);\n }\n }\n });\n if (encodingParameters.length === 0 && primarySsrc) {\n encodingParameters.push({\n ssrc: primarySsrc\n });\n }\n\n // we support both b=AS and b=TIAS but interpret AS as TIAS.\n var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b=');\n if (bandwidth.length) {\n if (bandwidth[0].indexOf('b=TIAS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(7), 10);\n } else if (bandwidth[0].indexOf('b=AS:') === 0) {\n bandwidth = parseInt(bandwidth[0].substr(5), 10);\n }\n encodingParameters.forEach(function(params) {\n params.maxBitrate = bandwidth;\n });\n }\n return encodingParameters;\n};\n\nSDPUtils.writeSessionBoilerplate = function() {\n // FIXME: sess-id should be an NTP timestamp.\n return 'v=0\\r\\n' +\n 'o=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\\r\\n' +\n 's=-\\r\\n' +\n 't=0 0\\r\\n';\n};\n\nSDPUtils.writeMediaSection = function(transceiver, caps, type, stream) {\n var sdp = SDPUtils.writeRtpDescription(transceiver.kind, caps);\n\n // Map ICE parameters (ufrag, pwd) to SDP.\n sdp += SDPUtils.writeIceParameters(\n transceiver.iceGatherer.getLocalParameters());\n\n // Map DTLS parameters to SDP.\n sdp += SDPUtils.writeDtlsParameters(\n transceiver.dtlsTransport.getLocalParameters(),\n type === 'offer' ? 'actpass' : 'active');\n\n sdp += 'a=mid:' + transceiver.mid + '\\r\\n';\n\n if (transceiver.rtpSender && transceiver.rtpReceiver) {\n sdp += 'a=sendrecv\\r\\n';\n } else if (transceiver.rtpSender) {\n sdp += 'a=sendonly\\r\\n';\n } else if (transceiver.rtpReceiver) {\n sdp += 'a=recvonly\\r\\n';\n } else {\n sdp += 'a=inactive\\r\\n';\n }\n\n // FIXME: for RTX there might be multiple SSRCs. Not implemented in Edge yet.\n if (transceiver.rtpSender) {\n var msid = 'msid:' + stream.id + ' ' +\n transceiver.rtpSender.track.id + '\\r\\n';\n sdp += 'a=' + msid;\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' ' + msid;\n }\n // FIXME: this should be written by writeRtpDescription.\n sdp += 'a=ssrc:' + transceiver.sendEncodingParameters[0].ssrc +\n ' cname:' + SDPUtils.localCName + '\\r\\n';\n return sdp;\n};\n\n// Gets the direction from the mediaSection or the sessionpart.\nSDPUtils.getDirection = function(mediaSection, sessionpart) {\n // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv.\n var lines = SDPUtils.splitLines(mediaSection);\n for (var i = 0; i < lines.length; i++) {\n switch (lines[i]) {\n case 'a=sendrecv':\n case 'a=sendonly':\n case 'a=recvonly':\n case 'a=inactive':\n return lines[i].substr(2);\n default:\n // FIXME: What should happen here?\n }\n }\n if (sessionpart) {\n return SDPUtils.getDirection(sessionpart);\n }\n return 'sendrecv';\n};\n\n// Expose public methods.\nmodule.exports = SDPUtils;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sdp/sdp.js\n ** module id = 184\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n\n'use strict';\n\n// Shimming starts here.\n(function() {\n // Utils.\n var logging = require('./utils').log;\n var browserDetails = require('./utils').browserDetails;\n // Export to the adapter global object visible in the browser.\n module.exports.browserDetails = browserDetails;\n module.exports.extractVersion = require('./utils').extractVersion;\n module.exports.disableLog = require('./utils').disableLog;\n\n // Uncomment the line below if you want logging to occur, including logging\n // for the switch statement below. Can also be turned on in the browser via\n // adapter.disableLog(false), but then logging from the switch statement below\n // will not appear.\n // require('./utils').disableLog(false);\n\n // Browser shims.\n var chromeShim = require('./chrome/chrome_shim') || null;\n var edgeShim = require('./edge/edge_shim') || null;\n var firefoxShim = require('./firefox/firefox_shim') || null;\n var safariShim = require('./safari/safari_shim') || null;\n\n // Shim browser if found.\n switch (browserDetails.browser) {\n case 'opera': // fallthrough as it uses chrome shims\n case 'chrome':\n if (!chromeShim || !chromeShim.shimPeerConnection) {\n logging('Chrome shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming chrome.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = chromeShim;\n\n chromeShim.shimGetUserMedia();\n chromeShim.shimMediaStream();\n chromeShim.shimSourceObject();\n chromeShim.shimPeerConnection();\n chromeShim.shimOnTrack();\n break;\n case 'firefox':\n if (!firefoxShim || !firefoxShim.shimPeerConnection) {\n logging('Firefox shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming firefox.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = firefoxShim;\n\n firefoxShim.shimGetUserMedia();\n firefoxShim.shimSourceObject();\n firefoxShim.shimPeerConnection();\n firefoxShim.shimOnTrack();\n break;\n case 'edge':\n if (!edgeShim || !edgeShim.shimPeerConnection) {\n logging('MS edge shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming edge.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = edgeShim;\n\n edgeShim.shimGetUserMedia();\n edgeShim.shimPeerConnection();\n break;\n case 'safari':\n if (!safariShim) {\n logging('Safari shim is not included in this adapter release.');\n return;\n }\n logging('adapter.js shimming safari.');\n // Export to the adapter global object visible in the browser.\n module.exports.browserShim = safariShim;\n\n safariShim.shimGetUserMedia();\n break;\n default:\n logging('Unsupported browser!');\n }\n})();\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/adapter_core.js\n ** module id = 185\n ** module chunks = 0\n **/","\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\nvar logging = require('../utils.js').log;\nvar browserDetails = require('../utils.js').browserDetails;\n\nvar chromeShim = {\n shimMediaStream: function() {\n window.MediaStream = window.MediaStream || window.webkitMediaStream;\n },\n\n shimOnTrack: function() {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get: function() {\n return this._ontrack;\n },\n set: function(f) {\n var self = this;\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n this.removeEventListener('addstream', this._ontrackpoly);\n }\n this.addEventListener('track', this._ontrack = f);\n this.addEventListener('addstream', this._ontrackpoly = function(e) {\n // onaddstream does not fire when a track is added to an existing\n // stream. But stream.onaddtrack is implemented so we use that.\n e.stream.addEventListener('addtrack', function(te) {\n var event = new Event('track');\n event.track = te.track;\n event.receiver = {track: te.track};\n event.streams = [e.stream];\n self.dispatchEvent(event);\n });\n e.stream.getTracks().forEach(function(track) {\n var event = new Event('track');\n event.track = track;\n event.receiver = {track: track};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n }.bind(this));\n }.bind(this));\n }\n });\n }\n },\n\n shimSourceObject: function() {\n if (typeof window === 'object') {\n if (window.HTMLMediaElement &&\n !('srcObject' in window.HTMLMediaElement.prototype)) {\n // Shim the srcObject property, once, when HTMLMediaElement is found.\n Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', {\n get: function() {\n return this._srcObject;\n },\n set: function(stream) {\n var self = this;\n // Use _srcObject as a private property for this shim\n this._srcObject = stream;\n if (this.src) {\n URL.revokeObjectURL(this.src);\n }\n\n if (!stream) {\n this.src = '';\n return;\n }\n this.src = URL.createObjectURL(stream);\n // We need to recreate the blob url when a track is added or\n // removed. Doing it manually since we want to avoid a recursion.\n stream.addEventListener('addtrack', function() {\n if (self.src) {\n URL.revokeObjectURL(self.src);\n }\n self.src = URL.createObjectURL(stream);\n });\n stream.addEventListener('removetrack', function() {\n if (self.src) {\n URL.revokeObjectURL(self.src);\n }\n self.src = URL.createObjectURL(stream);\n });\n }\n });\n }\n }\n },\n\n shimPeerConnection: function() {\n // The RTCPeerConnection object.\n window.RTCPeerConnection = function(pcConfig, pcConstraints) {\n // Translate iceTransportPolicy to iceTransports,\n // see https://code.google.com/p/webrtc/issues/detail?id=4869\n logging('PeerConnection');\n if (pcConfig && pcConfig.iceTransportPolicy) {\n pcConfig.iceTransports = pcConfig.iceTransportPolicy;\n }\n\n var pc = new webkitRTCPeerConnection(pcConfig, pcConstraints);\n var origGetStats = pc.getStats.bind(pc);\n pc.getStats = function(selector, successCallback, errorCallback) {\n var self = this;\n var args = arguments;\n\n // If selector is a function then we are in the old style stats so just\n // pass back the original getStats format to avoid breaking old users.\n if (arguments.length > 0 && typeof selector === 'function') {\n return origGetStats(selector, successCallback);\n }\n\n var fixChromeStats_ = function(response) {\n var standardReport = {};\n var reports = response.result();\n reports.forEach(function(report) {\n var standardStats = {\n id: report.id,\n timestamp: report.timestamp,\n type: report.type\n };\n report.names().forEach(function(name) {\n standardStats[name] = report.stat(name);\n });\n standardReport[standardStats.id] = standardStats;\n });\n\n return standardReport;\n };\n\n // shim getStats with maplike support\n var makeMapStats = function(stats, legacyStats) {\n var map = new Map(Object.keys(stats).map(function(key) {\n return[key, stats[key]];\n }));\n legacyStats = legacyStats || stats;\n Object.keys(legacyStats).forEach(function(key) {\n map[key] = legacyStats[key];\n });\n return map;\n };\n\n if (arguments.length >= 2) {\n var successCallbackWrapper_ = function(response) {\n args[1](makeMapStats(fixChromeStats_(response)));\n };\n\n return origGetStats.apply(this, [successCallbackWrapper_,\n arguments[0]]);\n }\n\n // promise-support\n return new Promise(function(resolve, reject) {\n if (args.length === 1 && typeof selector === 'object') {\n origGetStats.apply(self, [\n function(response) {\n resolve(makeMapStats(fixChromeStats_(response)));\n }, reject]);\n } else {\n // Preserve legacy chrome stats only on legacy access of stats obj\n origGetStats.apply(self, [\n function(response) {\n resolve(makeMapStats(fixChromeStats_(response),\n response.result()));\n }, reject]);\n }\n }).then(successCallback, errorCallback);\n };\n\n return pc;\n };\n window.RTCPeerConnection.prototype = webkitRTCPeerConnection.prototype;\n\n // wrap static methods. Currently just generateCertificate.\n if (webkitRTCPeerConnection.generateCertificate) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get: function() {\n return webkitRTCPeerConnection.generateCertificate;\n }\n });\n }\n\n // add promise support -- natively available in Chrome 51\n if (browserDetails.version < 51) {\n ['createOffer', 'createAnswer'].forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n var self = this;\n if (arguments.length < 1 || (arguments.length === 1 &&\n typeof arguments[0] === 'object')) {\n var opts = arguments.length === 1 ? arguments[0] : undefined;\n return new Promise(function(resolve, reject) {\n nativeMethod.apply(self, [resolve, reject, opts]);\n });\n }\n return nativeMethod.apply(this, arguments);\n };\n });\n\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n var args = arguments;\n var self = this;\n var promise = new Promise(function(resolve, reject) {\n nativeMethod.apply(self, [args[0], resolve, reject]);\n });\n if (args.length < 2) {\n return promise;\n }\n return promise.then(function() {\n args[1].apply(null, []);\n },\n function(err) {\n if (args.length >= 3) {\n args[2].apply(null, [err]);\n }\n });\n };\n });\n }\n\n // support for addIceCandidate(null)\n var nativeAddIceCandidate =\n RTCPeerConnection.prototype.addIceCandidate;\n RTCPeerConnection.prototype.addIceCandidate = function() {\n return arguments[0] === null ? Promise.resolve()\n : nativeAddIceCandidate.apply(this, arguments);\n };\n\n // shim implicit creation of RTCSessionDescription/RTCIceCandidate\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = webkitRTCPeerConnection.prototype[method];\n webkitRTCPeerConnection.prototype[method] = function() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n RTCIceCandidate : RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n };\n });\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n if (browserDetails.version >= 43) {\n element.srcObject = stream;\n } else if (typeof element.src !== 'undefined') {\n element.src = URL.createObjectURL(stream);\n } else {\n logging('Error attaching stream to element.');\n }\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n if (browserDetails.version >= 43) {\n to.srcObject = from.srcObject;\n } else {\n to.src = from.src;\n }\n }\n};\n\n\n// Expose public methods.\nmodule.exports = {\n shimMediaStream: chromeShim.shimMediaStream,\n shimOnTrack: chromeShim.shimOnTrack,\n shimSourceObject: chromeShim.shimSourceObject,\n shimPeerConnection: chromeShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia'),\n attachMediaStream: chromeShim.attachMediaStream,\n reattachMediaStream: chromeShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/chrome/chrome_shim.js\n ** module id = 186\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\nvar logging = require('../utils.js').log;\n\n// Expose public methods.\nmodule.exports = function() {\n var constraintsToChrome_ = function(c) {\n if (typeof c !== 'object' || c.mandatory || c.optional) {\n return c;\n }\n var cc = {};\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n var r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]};\n if (r.exact !== undefined && typeof r.exact === 'number') {\n r.min = r.max = r.exact;\n }\n var oldname_ = function(prefix, name) {\n if (prefix) {\n return prefix + name.charAt(0).toUpperCase() + name.slice(1);\n }\n return (name === 'deviceId') ? 'sourceId' : name;\n };\n if (r.ideal !== undefined) {\n cc.optional = cc.optional || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[oldname_('min', key)] = r.ideal;\n cc.optional.push(oc);\n oc = {};\n oc[oldname_('max', key)] = r.ideal;\n cc.optional.push(oc);\n } else {\n oc[oldname_('', key)] = r.ideal;\n cc.optional.push(oc);\n }\n }\n if (r.exact !== undefined && typeof r.exact !== 'number') {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_('', key)] = r.exact;\n } else {\n ['min', 'max'].forEach(function(mix) {\n if (r[mix] !== undefined) {\n cc.mandatory = cc.mandatory || {};\n cc.mandatory[oldname_(mix, key)] = r[mix];\n }\n });\n }\n });\n if (c.advanced) {\n cc.optional = (cc.optional || []).concat(c.advanced);\n }\n return cc;\n };\n\n var shimConstraints_ = function(constraints, func) {\n constraints = JSON.parse(JSON.stringify(constraints));\n if (constraints && constraints.audio) {\n constraints.audio = constraintsToChrome_(constraints.audio);\n }\n if (constraints && typeof constraints.video === 'object') {\n // Shim facingMode for mobile, where it defaults to \"user\".\n var face = constraints.video.facingMode;\n face = face && ((typeof face === 'object') ? face : {ideal: face});\n\n if ((face && (face.exact === 'user' || face.exact === 'environment' ||\n face.ideal === 'user' || face.ideal === 'environment')) &&\n !(navigator.mediaDevices.getSupportedConstraints &&\n navigator.mediaDevices.getSupportedConstraints().facingMode)) {\n delete constraints.video.facingMode;\n if (face.exact === 'environment' || face.ideal === 'environment') {\n // Look for \"back\" in label, or use last cam (typically back cam).\n return navigator.mediaDevices.enumerateDevices()\n .then(function(devices) {\n devices = devices.filter(function(d) {\n return d.kind === 'videoinput';\n });\n var back = devices.find(function(d) {\n return d.label.toLowerCase().indexOf('back') !== -1;\n }) || (devices.length && devices[devices.length - 1]);\n if (back) {\n constraints.video.deviceId = face.exact ? {exact: back.deviceId} :\n {ideal: back.deviceId};\n }\n constraints.video = constraintsToChrome_(constraints.video);\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n });\n }\n }\n constraints.video = constraintsToChrome_(constraints.video);\n }\n logging('chrome: ' + JSON.stringify(constraints));\n return func(constraints);\n };\n\n var shimError_ = function(e) {\n return {\n name: {\n PermissionDeniedError: 'NotAllowedError',\n ConstraintNotSatisfiedError: 'OverconstrainedError'\n }[e.name] || e.name,\n message: e.message,\n constraint: e.constraintName,\n toString: function() {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n shimConstraints_(constraints, function(c) {\n navigator.webkitGetUserMedia(c, onSuccess, function(e) {\n onError(shimError_(e));\n });\n });\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n };\n\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {\n getUserMedia: getUserMediaPromise_,\n enumerateDevices: function() {\n return new Promise(function(resolve) {\n var kinds = {audio: 'audioinput', video: 'videoinput'};\n return MediaStreamTrack.getSources(function(devices) {\n resolve(devices.map(function(device) {\n return {label: device.label,\n kind: kinds[device.kind],\n deviceId: device.id,\n groupId: ''};\n }));\n });\n });\n }\n };\n }\n\n // A shim for getUserMedia method on the mediaDevices object.\n // TODO(KaptenJansson) remove once implemented in Chrome stable.\n if (!navigator.mediaDevices.getUserMedia) {\n navigator.mediaDevices.getUserMedia = function(constraints) {\n return getUserMediaPromise_(constraints);\n };\n } else {\n // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia\n // function which returns a Promise, it does not accept spec-style\n // constraints.\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(cs) {\n return shimConstraints_(cs, function(c) {\n return origGetUserMedia(c).catch(function(e) {\n return Promise.reject(shimError_(e));\n });\n });\n };\n }\n\n // Dummy devicechange event methods.\n // TODO(KaptenJansson) remove once implemented in Chrome stable.\n if (typeof navigator.mediaDevices.addEventListener === 'undefined') {\n navigator.mediaDevices.addEventListener = function() {\n logging('Dummy mediaDevices.addEventListener called.');\n };\n }\n if (typeof navigator.mediaDevices.removeEventListener === 'undefined') {\n navigator.mediaDevices.removeEventListener = function() {\n logging('Dummy mediaDevices.removeEventListener called.');\n };\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/chrome/getusermedia.js\n ** module id = 187\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar SDPUtils = require('sdp');\nvar logging = require('../utils').log;\n\nvar edgeShim = {\n shimPeerConnection: function() {\n if (window.RTCIceGatherer) {\n // ORTC defines an RTCIceCandidate object but no constructor.\n // Not implemented in Edge.\n if (!window.RTCIceCandidate) {\n window.RTCIceCandidate = function(args) {\n return args;\n };\n }\n // ORTC does not have a session description object but\n // other browsers (i.e. Chrome) that will support both PC and ORTC\n // in the future might have this defined already.\n if (!window.RTCSessionDescription) {\n window.RTCSessionDescription = function(args) {\n return args;\n };\n }\n }\n\n window.RTCPeerConnection = function(config) {\n var self = this;\n\n var _eventTarget = document.createDocumentFragment();\n ['addEventListener', 'removeEventListener', 'dispatchEvent']\n .forEach(function(method) {\n self[method] = _eventTarget[method].bind(_eventTarget);\n });\n\n this.onicecandidate = null;\n this.onaddstream = null;\n this.ontrack = null;\n this.onremovestream = null;\n this.onsignalingstatechange = null;\n this.oniceconnectionstatechange = null;\n this.onnegotiationneeded = null;\n this.ondatachannel = null;\n\n this.localStreams = [];\n this.remoteStreams = [];\n this.getLocalStreams = function() {\n return self.localStreams;\n };\n this.getRemoteStreams = function() {\n return self.remoteStreams;\n };\n\n this.localDescription = new RTCSessionDescription({\n type: '',\n sdp: ''\n });\n this.remoteDescription = new RTCSessionDescription({\n type: '',\n sdp: ''\n });\n this.signalingState = 'stable';\n this.iceConnectionState = 'new';\n this.iceGatheringState = 'new';\n\n this.iceOptions = {\n gatherPolicy: 'all',\n iceServers: []\n };\n if (config && config.iceTransportPolicy) {\n switch (config.iceTransportPolicy) {\n case 'all':\n case 'relay':\n this.iceOptions.gatherPolicy = config.iceTransportPolicy;\n break;\n case 'none':\n // FIXME: remove once implementation and spec have added this.\n throw new TypeError('iceTransportPolicy \"none\" not supported');\n default:\n // don't set iceTransportPolicy.\n break;\n }\n }\n if (config && config.iceServers) {\n // Edge does not like\n // 1) stun:\n // 2) turn: that does not have all of turn:host:port?transport=udp\n this.iceOptions.iceServers = config.iceServers.filter(function(server) {\n if (server && server.urls) {\n server.urls = server.urls.filter(function(url) {\n return url.indexOf('turn:') === 0 &&\n url.indexOf('transport=udp') !== -1;\n })[0];\n return !!server.urls;\n }\n return false;\n });\n }\n\n // per-track iceGathers, iceTransports, dtlsTransports, rtpSenders, ...\n // everything that is needed to describe a SDP m-line.\n this.transceivers = [];\n\n // since the iceGatherer is currently created in createOffer but we\n // must not emit candidates until after setLocalDescription we buffer\n // them in this array.\n this._localIceCandidatesBuffer = [];\n };\n\n window.RTCPeerConnection.prototype._emitBufferedCandidates = function() {\n var self = this;\n var sections = SDPUtils.splitSections(self.localDescription.sdp);\n // FIXME: need to apply ice candidates in a way which is async but\n // in-order\n this._localIceCandidatesBuffer.forEach(function(event) {\n var end = !event.candidate || Object.keys(event.candidate).length === 0;\n if (end) {\n for (var j = 1; j < sections.length; j++) {\n if (sections[j].indexOf('\\r\\na=end-of-candidates\\r\\n') === -1) {\n sections[j] += 'a=end-of-candidates\\r\\n';\n }\n }\n } else if (event.candidate.candidate.indexOf('typ endOfCandidates')\n === -1) {\n sections[event.candidate.sdpMLineIndex + 1] +=\n 'a=' + event.candidate.candidate + '\\r\\n';\n }\n self.localDescription.sdp = sections.join('');\n self.dispatchEvent(event);\n if (self.onicecandidate !== null) {\n self.onicecandidate(event);\n }\n if (!event.candidate && self.iceGatheringState !== 'complete') {\n var complete = self.transceivers.every(function(transceiver) {\n return transceiver.iceGatherer &&\n transceiver.iceGatherer.state === 'completed';\n });\n if (complete) {\n self.iceGatheringState = 'complete';\n }\n }\n });\n this._localIceCandidatesBuffer = [];\n };\n\n window.RTCPeerConnection.prototype.addStream = function(stream) {\n // Clone is necessary for local demos mostly, attaching directly\n // to two different senders does not work (build 10547).\n this.localStreams.push(stream.clone());\n this._maybeFireNegotiationNeeded();\n };\n\n window.RTCPeerConnection.prototype.removeStream = function(stream) {\n var idx = this.localStreams.indexOf(stream);\n if (idx > -1) {\n this.localStreams.splice(idx, 1);\n this._maybeFireNegotiationNeeded();\n }\n };\n\n window.RTCPeerConnection.prototype.getSenders = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpSender;\n })\n .map(function(transceiver) {\n return transceiver.rtpSender;\n });\n };\n\n window.RTCPeerConnection.prototype.getReceivers = function() {\n return this.transceivers.filter(function(transceiver) {\n return !!transceiver.rtpReceiver;\n })\n .map(function(transceiver) {\n return transceiver.rtpReceiver;\n });\n };\n\n // Determines the intersection of local and remote capabilities.\n window.RTCPeerConnection.prototype._getCommonCapabilities =\n function(localCapabilities, remoteCapabilities) {\n var commonCapabilities = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: []\n };\n localCapabilities.codecs.forEach(function(lCodec) {\n for (var i = 0; i < remoteCapabilities.codecs.length; i++) {\n var rCodec = remoteCapabilities.codecs[i];\n if (lCodec.name.toLowerCase() === rCodec.name.toLowerCase() &&\n lCodec.clockRate === rCodec.clockRate &&\n lCodec.numChannels === rCodec.numChannels) {\n // push rCodec so we reply with offerer payload type\n commonCapabilities.codecs.push(rCodec);\n\n // FIXME: also need to determine intersection between\n // .rtcpFeedback and .parameters\n break;\n }\n }\n });\n\n localCapabilities.headerExtensions\n .forEach(function(lHeaderExtension) {\n for (var i = 0; i < remoteCapabilities.headerExtensions.length;\n i++) {\n var rHeaderExtension = remoteCapabilities.headerExtensions[i];\n if (lHeaderExtension.uri === rHeaderExtension.uri) {\n commonCapabilities.headerExtensions.push(rHeaderExtension);\n break;\n }\n }\n });\n\n // FIXME: fecMechanisms\n return commonCapabilities;\n };\n\n // Create ICE gatherer, ICE transport and DTLS transport.\n window.RTCPeerConnection.prototype._createIceAndDtlsTransports =\n function(mid, sdpMLineIndex) {\n var self = this;\n var iceGatherer = new RTCIceGatherer(self.iceOptions);\n var iceTransport = new RTCIceTransport(iceGatherer);\n iceGatherer.onlocalcandidate = function(evt) {\n var event = new Event('icecandidate');\n event.candidate = {sdpMid: mid, sdpMLineIndex: sdpMLineIndex};\n\n var cand = evt.candidate;\n var end = !cand || Object.keys(cand).length === 0;\n // Edge emits an empty object for RTCIceCandidateComplete‥\n if (end) {\n // polyfill since RTCIceGatherer.state is not implemented in\n // Edge 10547 yet.\n if (iceGatherer.state === undefined) {\n iceGatherer.state = 'completed';\n }\n\n // Emit a candidate with type endOfCandidates to make the samples\n // work. Edge requires addIceCandidate with this empty candidate\n // to start checking. The real solution is to signal\n // end-of-candidates to the other side when getting the null\n // candidate but some apps (like the samples) don't do that.\n event.candidate.candidate =\n 'candidate:1 1 udp 1 0.0.0.0 9 typ endOfCandidates';\n } else {\n // RTCIceCandidate doesn't have a component, needs to be added\n cand.component = iceTransport.component === 'RTCP' ? 2 : 1;\n event.candidate.candidate = SDPUtils.writeCandidate(cand);\n }\n\n var complete = self.transceivers.every(function(transceiver) {\n return transceiver.iceGatherer &&\n transceiver.iceGatherer.state === 'completed';\n });\n\n // Emit candidate if localDescription is set.\n // Also emits null candidate when all gatherers are complete.\n switch (self.iceGatheringState) {\n case 'new':\n self._localIceCandidatesBuffer.push(event);\n if (end && complete) {\n self._localIceCandidatesBuffer.push(\n new Event('icecandidate'));\n }\n break;\n case 'gathering':\n self._emitBufferedCandidates();\n self.dispatchEvent(event);\n if (self.onicecandidate !== null) {\n self.onicecandidate(event);\n }\n if (complete) {\n self.dispatchEvent(new Event('icecandidate'));\n if (self.onicecandidate !== null) {\n self.onicecandidate(new Event('icecandidate'));\n }\n self.iceGatheringState = 'complete';\n }\n break;\n case 'complete':\n // should not happen... currently!\n break;\n default: // no-op.\n break;\n }\n };\n iceTransport.onicestatechange = function() {\n self._updateConnectionState();\n };\n\n var dtlsTransport = new RTCDtlsTransport(iceTransport);\n dtlsTransport.ondtlsstatechange = function() {\n self._updateConnectionState();\n };\n dtlsTransport.onerror = function() {\n // onerror does not set state to failed by itself.\n dtlsTransport.state = 'failed';\n self._updateConnectionState();\n };\n\n return {\n iceGatherer: iceGatherer,\n iceTransport: iceTransport,\n dtlsTransport: dtlsTransport\n };\n };\n\n // Start the RTP Sender and Receiver for a transceiver.\n window.RTCPeerConnection.prototype._transceive = function(transceiver,\n send, recv) {\n var params = this._getCommonCapabilities(transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n if (send && transceiver.rtpSender) {\n params.encodings = transceiver.sendEncodingParameters;\n params.rtcp = {\n cname: SDPUtils.localCName\n };\n if (transceiver.recvEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.recvEncodingParameters[0].ssrc;\n }\n transceiver.rtpSender.send(params);\n }\n if (recv && transceiver.rtpReceiver) {\n params.encodings = transceiver.recvEncodingParameters;\n params.rtcp = {\n cname: transceiver.cname\n };\n if (transceiver.sendEncodingParameters.length) {\n params.rtcp.ssrc = transceiver.sendEncodingParameters[0].ssrc;\n }\n transceiver.rtpReceiver.receive(params);\n }\n };\n\n window.RTCPeerConnection.prototype.setLocalDescription =\n function(description) {\n var self = this;\n var sections;\n var sessionpart;\n if (description.type === 'offer') {\n // FIXME: What was the purpose of this empty if statement?\n // if (!this._pendingOffer) {\n // } else {\n if (this._pendingOffer) {\n // VERY limited support for SDP munging. Limited to:\n // * changing the order of codecs\n sections = SDPUtils.splitSections(description.sdp);\n sessionpart = sections.shift();\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var caps = SDPUtils.parseRtpParameters(mediaSection);\n self._pendingOffer[sdpMLineIndex].localCapabilities = caps;\n });\n this.transceivers = this._pendingOffer;\n delete this._pendingOffer;\n }\n } else if (description.type === 'answer') {\n sections = SDPUtils.splitSections(self.remoteDescription.sdp);\n sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var transceiver = self.transceivers[sdpMLineIndex];\n var iceGatherer = transceiver.iceGatherer;\n var iceTransport = transceiver.iceTransport;\n var dtlsTransport = transceiver.dtlsTransport;\n var localCapabilities = transceiver.localCapabilities;\n var remoteCapabilities = transceiver.remoteCapabilities;\n var rejected = mediaSection.split('\\n', 1)[0]\n .split(' ', 2)[1] === '0';\n\n if (!rejected) {\n var remoteIceParameters = SDPUtils.getIceParameters(\n mediaSection, sessionpart);\n if (isIceLite) {\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:')\n .map(function(cand) {\n return SDPUtils.parseCandidate(cand);\n })\n .filter(function(cand) {\n return cand.component === '1';\n });\n // ice-lite only includes host candidates in the SDP so we can\n // use setRemoteCandidates (which implies an\n // RTCIceCandidateComplete)\n iceTransport.setRemoteCandidates(cands);\n }\n iceTransport.start(iceGatherer, remoteIceParameters,\n isIceLite ? 'controlling' : 'controlled');\n\n var remoteDtlsParameters = SDPUtils.getDtlsParameters(\n mediaSection, sessionpart);\n if (isIceLite) {\n remoteDtlsParameters.role = 'server';\n }\n dtlsTransport.start(remoteDtlsParameters);\n\n // Calculate intersection of capabilities.\n var params = self._getCommonCapabilities(localCapabilities,\n remoteCapabilities);\n\n // Start the RTCRtpSender. The RTCRtpReceiver for this\n // transceiver has already been started in setRemoteDescription.\n self._transceive(transceiver,\n params.codecs.length > 0,\n false);\n }\n });\n }\n\n this.localDescription = {\n type: description.type,\n sdp: description.sdp\n };\n switch (description.type) {\n case 'offer':\n this._updateSignalingState('have-local-offer');\n break;\n case 'answer':\n this._updateSignalingState('stable');\n break;\n default:\n throw new TypeError('unsupported type \"' + description.type +\n '\"');\n }\n\n // If a success callback was provided, emit ICE candidates after it\n // has been executed. Otherwise, emit callback after the Promise is\n // resolved.\n var hasCallback = arguments.length > 1 &&\n typeof arguments[1] === 'function';\n if (hasCallback) {\n var cb = arguments[1];\n window.setTimeout(function() {\n cb();\n if (self.iceGatheringState === 'new') {\n self.iceGatheringState = 'gathering';\n }\n self._emitBufferedCandidates();\n }, 0);\n }\n var p = Promise.resolve();\n p.then(function() {\n if (!hasCallback) {\n if (self.iceGatheringState === 'new') {\n self.iceGatheringState = 'gathering';\n }\n // Usually candidates will be emitted earlier.\n window.setTimeout(self._emitBufferedCandidates.bind(self), 500);\n }\n });\n return p;\n };\n\n window.RTCPeerConnection.prototype.setRemoteDescription =\n function(description) {\n var self = this;\n var stream = new MediaStream();\n var receiverList = [];\n var sections = SDPUtils.splitSections(description.sdp);\n var sessionpart = sections.shift();\n var isIceLite = SDPUtils.matchPrefix(sessionpart,\n 'a=ice-lite').length > 0;\n sections.forEach(function(mediaSection, sdpMLineIndex) {\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].substr(2).split(' ');\n var kind = mline[0];\n var rejected = mline[1] === '0';\n var direction = SDPUtils.getDirection(mediaSection, sessionpart);\n\n var transceiver;\n var iceGatherer;\n var iceTransport;\n var dtlsTransport;\n var rtpSender;\n var rtpReceiver;\n var sendEncodingParameters;\n var recvEncodingParameters;\n var localCapabilities;\n\n var track;\n // FIXME: ensure the mediaSection has rtcp-mux set.\n var remoteCapabilities = SDPUtils.parseRtpParameters(mediaSection);\n var remoteIceParameters;\n var remoteDtlsParameters;\n if (!rejected) {\n remoteIceParameters = SDPUtils.getIceParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters = SDPUtils.getDtlsParameters(mediaSection,\n sessionpart);\n remoteDtlsParameters.role = 'client';\n }\n recvEncodingParameters =\n SDPUtils.parseRtpEncodingParameters(mediaSection);\n\n var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:');\n if (mid.length) {\n mid = mid[0].substr(6);\n } else {\n mid = SDPUtils.generateIdentifier();\n }\n\n var cname;\n // Gets the first SSRC. Note that with RTX there might be multiple\n // SSRCs.\n var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:')\n .map(function(line) {\n return SDPUtils.parseSsrcMedia(line);\n })\n .filter(function(obj) {\n return obj.attribute === 'cname';\n })[0];\n if (remoteSsrc) {\n cname = remoteSsrc.value;\n }\n\n var isComplete = SDPUtils.matchPrefix(mediaSection,\n 'a=end-of-candidates').length > 0;\n var cands = SDPUtils.matchPrefix(mediaSection, 'a=candidate:')\n .map(function(cand) {\n return SDPUtils.parseCandidate(cand);\n })\n .filter(function(cand) {\n return cand.component === '1';\n });\n if (description.type === 'offer' && !rejected) {\n var transports = self._createIceAndDtlsTransports(mid,\n sdpMLineIndex);\n if (isComplete) {\n transports.iceTransport.setRemoteCandidates(cands);\n }\n\n localCapabilities = RTCRtpReceiver.getCapabilities(kind);\n sendEncodingParameters = [{\n ssrc: (2 * sdpMLineIndex + 2) * 1001\n }];\n\n rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind);\n\n track = rtpReceiver.track;\n receiverList.push([track, rtpReceiver]);\n // FIXME: not correct when there are multiple streams but that is\n // not currently supported in this shim.\n stream.addTrack(track);\n\n // FIXME: look at direction.\n if (self.localStreams.length > 0 &&\n self.localStreams[0].getTracks().length >= sdpMLineIndex) {\n // FIXME: actually more complicated, needs to match types etc\n var localtrack = self.localStreams[0]\n .getTracks()[sdpMLineIndex];\n rtpSender = new RTCRtpSender(localtrack,\n transports.dtlsTransport);\n }\n\n self.transceivers[sdpMLineIndex] = {\n iceGatherer: transports.iceGatherer,\n iceTransport: transports.iceTransport,\n dtlsTransport: transports.dtlsTransport,\n localCapabilities: localCapabilities,\n remoteCapabilities: remoteCapabilities,\n rtpSender: rtpSender,\n rtpReceiver: rtpReceiver,\n kind: kind,\n mid: mid,\n cname: cname,\n sendEncodingParameters: sendEncodingParameters,\n recvEncodingParameters: recvEncodingParameters\n };\n // Start the RTCRtpReceiver now. The RTPSender is started in\n // setLocalDescription.\n self._transceive(self.transceivers[sdpMLineIndex],\n false,\n direction === 'sendrecv' || direction === 'sendonly');\n } else if (description.type === 'answer' && !rejected) {\n transceiver = self.transceivers[sdpMLineIndex];\n iceGatherer = transceiver.iceGatherer;\n iceTransport = transceiver.iceTransport;\n dtlsTransport = transceiver.dtlsTransport;\n rtpSender = transceiver.rtpSender;\n rtpReceiver = transceiver.rtpReceiver;\n sendEncodingParameters = transceiver.sendEncodingParameters;\n localCapabilities = transceiver.localCapabilities;\n\n self.transceivers[sdpMLineIndex].recvEncodingParameters =\n recvEncodingParameters;\n self.transceivers[sdpMLineIndex].remoteCapabilities =\n remoteCapabilities;\n self.transceivers[sdpMLineIndex].cname = cname;\n\n if (isIceLite || isComplete) {\n iceTransport.setRemoteCandidates(cands);\n }\n iceTransport.start(iceGatherer, remoteIceParameters,\n 'controlling');\n dtlsTransport.start(remoteDtlsParameters);\n\n self._transceive(transceiver,\n direction === 'sendrecv' || direction === 'recvonly',\n direction === 'sendrecv' || direction === 'sendonly');\n\n if (rtpReceiver &&\n (direction === 'sendrecv' || direction === 'sendonly')) {\n track = rtpReceiver.track;\n receiverList.push([track, rtpReceiver]);\n stream.addTrack(track);\n } else {\n // FIXME: actually the receiver should be created later.\n delete transceiver.rtpReceiver;\n }\n }\n });\n\n this.remoteDescription = {\n type: description.type,\n sdp: description.sdp\n };\n switch (description.type) {\n case 'offer':\n this._updateSignalingState('have-remote-offer');\n break;\n case 'answer':\n this._updateSignalingState('stable');\n break;\n default:\n throw new TypeError('unsupported type \"' + description.type +\n '\"');\n }\n if (stream.getTracks().length) {\n self.remoteStreams.push(stream);\n window.setTimeout(function() {\n var event = new Event('addstream');\n event.stream = stream;\n self.dispatchEvent(event);\n if (self.onaddstream !== null) {\n window.setTimeout(function() {\n self.onaddstream(event);\n }, 0);\n }\n\n receiverList.forEach(function(item) {\n var track = item[0];\n var receiver = item[1];\n var trackEvent = new Event('track');\n trackEvent.track = track;\n trackEvent.receiver = receiver;\n trackEvent.streams = [stream];\n self.dispatchEvent(event);\n if (self.ontrack !== null) {\n window.setTimeout(function() {\n self.ontrack(trackEvent);\n }, 0);\n }\n });\n }, 0);\n }\n if (arguments.length > 1 && typeof arguments[1] === 'function') {\n window.setTimeout(arguments[1], 0);\n }\n return Promise.resolve();\n };\n\n window.RTCPeerConnection.prototype.close = function() {\n this.transceivers.forEach(function(transceiver) {\n /* not yet\n if (transceiver.iceGatherer) {\n transceiver.iceGatherer.close();\n }\n */\n if (transceiver.iceTransport) {\n transceiver.iceTransport.stop();\n }\n if (transceiver.dtlsTransport) {\n transceiver.dtlsTransport.stop();\n }\n if (transceiver.rtpSender) {\n transceiver.rtpSender.stop();\n }\n if (transceiver.rtpReceiver) {\n transceiver.rtpReceiver.stop();\n }\n });\n // FIXME: clean up tracks, local streams, remote streams, etc\n this._updateSignalingState('closed');\n };\n\n // Update the signaling state.\n window.RTCPeerConnection.prototype._updateSignalingState =\n function(newState) {\n this.signalingState = newState;\n var event = new Event('signalingstatechange');\n this.dispatchEvent(event);\n if (this.onsignalingstatechange !== null) {\n this.onsignalingstatechange(event);\n }\n };\n\n // Determine whether to fire the negotiationneeded event.\n window.RTCPeerConnection.prototype._maybeFireNegotiationNeeded =\n function() {\n // Fire away (for now).\n var event = new Event('negotiationneeded');\n this.dispatchEvent(event);\n if (this.onnegotiationneeded !== null) {\n this.onnegotiationneeded(event);\n }\n };\n\n // Update the connection state.\n window.RTCPeerConnection.prototype._updateConnectionState = function() {\n var self = this;\n var newState;\n var states = {\n 'new': 0,\n closed: 0,\n connecting: 0,\n checking: 0,\n connected: 0,\n completed: 0,\n failed: 0\n };\n this.transceivers.forEach(function(transceiver) {\n states[transceiver.iceTransport.state]++;\n states[transceiver.dtlsTransport.state]++;\n });\n // ICETransport.completed and connected are the same for this purpose.\n states.connected += states.completed;\n\n newState = 'new';\n if (states.failed > 0) {\n newState = 'failed';\n } else if (states.connecting > 0 || states.checking > 0) {\n newState = 'connecting';\n } else if (states.disconnected > 0) {\n newState = 'disconnected';\n } else if (states.new > 0) {\n newState = 'new';\n } else if (states.connected > 0 || states.completed > 0) {\n newState = 'connected';\n }\n\n if (newState !== self.iceConnectionState) {\n self.iceConnectionState = newState;\n var event = new Event('iceconnectionstatechange');\n this.dispatchEvent(event);\n if (this.oniceconnectionstatechange !== null) {\n this.oniceconnectionstatechange(event);\n }\n }\n };\n\n window.RTCPeerConnection.prototype.createOffer = function() {\n var self = this;\n if (this._pendingOffer) {\n throw new Error('createOffer called while there is a pending offer.');\n }\n var offerOptions;\n if (arguments.length === 1 && typeof arguments[0] !== 'function') {\n offerOptions = arguments[0];\n } else if (arguments.length === 3) {\n offerOptions = arguments[2];\n }\n\n var tracks = [];\n var numAudioTracks = 0;\n var numVideoTracks = 0;\n // Default to sendrecv.\n if (this.localStreams.length) {\n numAudioTracks = this.localStreams[0].getAudioTracks().length;\n numVideoTracks = this.localStreams[0].getVideoTracks().length;\n }\n // Determine number of audio and video tracks we need to send/recv.\n if (offerOptions) {\n // Reject Chrome legacy constraints.\n if (offerOptions.mandatory || offerOptions.optional) {\n throw new TypeError(\n 'Legacy mandatory/optional constraints not supported.');\n }\n if (offerOptions.offerToReceiveAudio !== undefined) {\n numAudioTracks = offerOptions.offerToReceiveAudio;\n }\n if (offerOptions.offerToReceiveVideo !== undefined) {\n numVideoTracks = offerOptions.offerToReceiveVideo;\n }\n }\n if (this.localStreams.length) {\n // Push local streams.\n this.localStreams[0].getTracks().forEach(function(track) {\n tracks.push({\n kind: track.kind,\n track: track,\n wantReceive: track.kind === 'audio' ?\n numAudioTracks > 0 : numVideoTracks > 0\n });\n if (track.kind === 'audio') {\n numAudioTracks--;\n } else if (track.kind === 'video') {\n numVideoTracks--;\n }\n });\n }\n // Create M-lines for recvonly streams.\n while (numAudioTracks > 0 || numVideoTracks > 0) {\n if (numAudioTracks > 0) {\n tracks.push({\n kind: 'audio',\n wantReceive: true\n });\n numAudioTracks--;\n }\n if (numVideoTracks > 0) {\n tracks.push({\n kind: 'video',\n wantReceive: true\n });\n numVideoTracks--;\n }\n }\n\n var sdp = SDPUtils.writeSessionBoilerplate();\n var transceivers = [];\n tracks.forEach(function(mline, sdpMLineIndex) {\n // For each track, create an ice gatherer, ice transport,\n // dtls transport, potentially rtpsender and rtpreceiver.\n var track = mline.track;\n var kind = mline.kind;\n var mid = SDPUtils.generateIdentifier();\n\n var transports = self._createIceAndDtlsTransports(mid, sdpMLineIndex);\n\n var localCapabilities = RTCRtpSender.getCapabilities(kind);\n var rtpSender;\n var rtpReceiver;\n\n // generate an ssrc now, to be used later in rtpSender.send\n var sendEncodingParameters = [{\n ssrc: (2 * sdpMLineIndex + 1) * 1001\n }];\n if (track) {\n rtpSender = new RTCRtpSender(track, transports.dtlsTransport);\n }\n\n if (mline.wantReceive) {\n rtpReceiver = new RTCRtpReceiver(transports.dtlsTransport, kind);\n }\n\n transceivers[sdpMLineIndex] = {\n iceGatherer: transports.iceGatherer,\n iceTransport: transports.iceTransport,\n dtlsTransport: transports.dtlsTransport,\n localCapabilities: localCapabilities,\n remoteCapabilities: null,\n rtpSender: rtpSender,\n rtpReceiver: rtpReceiver,\n kind: kind,\n mid: mid,\n sendEncodingParameters: sendEncodingParameters,\n recvEncodingParameters: null\n };\n var transceiver = transceivers[sdpMLineIndex];\n sdp += SDPUtils.writeMediaSection(transceiver,\n transceiver.localCapabilities, 'offer', self.localStreams[0]);\n });\n\n this._pendingOffer = transceivers;\n var desc = new RTCSessionDescription({\n type: 'offer',\n sdp: sdp\n });\n if (arguments.length && typeof arguments[0] === 'function') {\n window.setTimeout(arguments[0], 0, desc);\n }\n return Promise.resolve(desc);\n };\n\n window.RTCPeerConnection.prototype.createAnswer = function() {\n var self = this;\n\n var sdp = SDPUtils.writeSessionBoilerplate();\n this.transceivers.forEach(function(transceiver) {\n // Calculate intersection of capabilities.\n var commonCapabilities = self._getCommonCapabilities(\n transceiver.localCapabilities,\n transceiver.remoteCapabilities);\n\n sdp += SDPUtils.writeMediaSection(transceiver, commonCapabilities,\n 'answer', self.localStreams[0]);\n });\n\n var desc = new RTCSessionDescription({\n type: 'answer',\n sdp: sdp\n });\n if (arguments.length && typeof arguments[0] === 'function') {\n window.setTimeout(arguments[0], 0, desc);\n }\n return Promise.resolve(desc);\n };\n\n window.RTCPeerConnection.prototype.addIceCandidate = function(candidate) {\n if (candidate === null) {\n this.transceivers.forEach(function(transceiver) {\n transceiver.iceTransport.addIceCandidate({});\n });\n } else {\n var mLineIndex = candidate.sdpMLineIndex;\n if (candidate.sdpMid) {\n for (var i = 0; i < this.transceivers.length; i++) {\n if (this.transceivers[i].mid === candidate.sdpMid) {\n mLineIndex = i;\n break;\n }\n }\n }\n var transceiver = this.transceivers[mLineIndex];\n if (transceiver) {\n var cand = Object.keys(candidate.candidate).length > 0 ?\n SDPUtils.parseCandidate(candidate.candidate) : {};\n // Ignore Chrome's invalid candidates since Edge does not like them.\n if (cand.protocol === 'tcp' && cand.port === 0) {\n return;\n }\n // Ignore RTCP candidates, we assume RTCP-MUX.\n if (cand.component !== '1') {\n return;\n }\n // A dirty hack to make samples work.\n if (cand.type === 'endOfCandidates') {\n cand = {};\n }\n transceiver.iceTransport.addRemoteCandidate(cand);\n\n // update the remoteDescription.\n var sections = SDPUtils.splitSections(this.remoteDescription.sdp);\n sections[mLineIndex + 1] += (cand.type ? candidate.candidate.trim()\n : 'a=end-of-candidates') + '\\r\\n';\n this.remoteDescription.sdp = sections.join('');\n }\n }\n if (arguments.length > 1 && typeof arguments[1] === 'function') {\n window.setTimeout(arguments[1], 0);\n }\n return Promise.resolve();\n };\n\n window.RTCPeerConnection.prototype.getStats = function() {\n var promises = [];\n this.transceivers.forEach(function(transceiver) {\n ['rtpSender', 'rtpReceiver', 'iceGatherer', 'iceTransport',\n 'dtlsTransport'].forEach(function(method) {\n if (transceiver[method]) {\n promises.push(transceiver[method].getStats());\n }\n });\n });\n var cb = arguments.length > 1 && typeof arguments[1] === 'function' &&\n arguments[1];\n return new Promise(function(resolve) {\n // shim getStats with maplike support\n var results = new Map();\n Promise.all(promises).then(function(res) {\n res.forEach(function(result) {\n Object.keys(result).forEach(function(id) {\n results.set(id, result[id]);\n results[id] = result[id];\n });\n });\n if (cb) {\n window.setTimeout(cb, 0, results);\n }\n resolve(results);\n });\n });\n };\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n element.srcObject = stream;\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n to.srcObject = from.srcObject;\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimPeerConnection: edgeShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia'),\n attachMediaStream: edgeShim.attachMediaStream,\n reattachMediaStream: edgeShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/edge/edge_shim.js\n ** module id = 188\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\n// Expose public methods.\nmodule.exports = function() {\n var shimError_ = function(e) {\n return {\n name: {PermissionDeniedError: 'NotAllowedError'}[e.name] || e.name,\n message: e.message,\n constraint: e.constraint,\n toString: function() {\n return this.name;\n }\n };\n };\n\n // getUserMedia error shim.\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n return origGetUserMedia(c).catch(function(e) {\n return Promise.reject(shimError_(e));\n });\n };\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/edge/getusermedia.js\n ** module id = 189\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar logging = require('../utils').log;\nvar browserDetails = require('../utils').browserDetails;\n\nvar firefoxShim = {\n shimOnTrack: function() {\n if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in\n window.RTCPeerConnection.prototype)) {\n Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', {\n get: function() {\n return this._ontrack;\n },\n set: function(f) {\n if (this._ontrack) {\n this.removeEventListener('track', this._ontrack);\n this.removeEventListener('addstream', this._ontrackpoly);\n }\n this.addEventListener('track', this._ontrack = f);\n this.addEventListener('addstream', this._ontrackpoly = function(e) {\n e.stream.getTracks().forEach(function(track) {\n var event = new Event('track');\n event.track = track;\n event.receiver = {track: track};\n event.streams = [e.stream];\n this.dispatchEvent(event);\n }.bind(this));\n }.bind(this));\n }\n });\n }\n },\n\n shimSourceObject: function() {\n // Firefox has supported mozSrcObject since FF22, unprefixed in 42.\n if (typeof window === 'object') {\n if (window.HTMLMediaElement &&\n !('srcObject' in window.HTMLMediaElement.prototype)) {\n // Shim the srcObject property, once, when HTMLMediaElement is found.\n Object.defineProperty(window.HTMLMediaElement.prototype, 'srcObject', {\n get: function() {\n return this.mozSrcObject;\n },\n set: function(stream) {\n this.mozSrcObject = stream;\n }\n });\n }\n }\n },\n\n shimPeerConnection: function() {\n if (typeof window !== 'object' || !(window.RTCPeerConnection ||\n window.mozRTCPeerConnection)) {\n return; // probably media.peerconnection.enabled=false in about:config\n }\n // The RTCPeerConnection object.\n if (!window.RTCPeerConnection) {\n window.RTCPeerConnection = function(pcConfig, pcConstraints) {\n if (browserDetails.version < 38) {\n // .urls is not supported in FF < 38.\n // create RTCIceServers with a single url.\n if (pcConfig && pcConfig.iceServers) {\n var newIceServers = [];\n for (var i = 0; i < pcConfig.iceServers.length; i++) {\n var server = pcConfig.iceServers[i];\n if (server.hasOwnProperty('urls')) {\n for (var j = 0; j < server.urls.length; j++) {\n var newServer = {\n url: server.urls[j]\n };\n if (server.urls[j].indexOf('turn') === 0) {\n newServer.username = server.username;\n newServer.credential = server.credential;\n }\n newIceServers.push(newServer);\n }\n } else {\n newIceServers.push(pcConfig.iceServers[i]);\n }\n }\n pcConfig.iceServers = newIceServers;\n }\n }\n return new mozRTCPeerConnection(pcConfig, pcConstraints);\n };\n window.RTCPeerConnection.prototype = mozRTCPeerConnection.prototype;\n\n // wrap static methods. Currently just generateCertificate.\n if (mozRTCPeerConnection.generateCertificate) {\n Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', {\n get: function() {\n return mozRTCPeerConnection.generateCertificate;\n }\n });\n }\n\n window.RTCSessionDescription = mozRTCSessionDescription;\n window.RTCIceCandidate = mozRTCIceCandidate;\n }\n\n // shim away need for obsolete RTCIceCandidate/RTCSessionDescription.\n ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate']\n .forEach(function(method) {\n var nativeMethod = RTCPeerConnection.prototype[method];\n RTCPeerConnection.prototype[method] = function() {\n arguments[0] = new ((method === 'addIceCandidate') ?\n RTCIceCandidate : RTCSessionDescription)(arguments[0]);\n return nativeMethod.apply(this, arguments);\n };\n });\n\n // support for addIceCandidate(null)\n var nativeAddIceCandidate =\n RTCPeerConnection.prototype.addIceCandidate;\n RTCPeerConnection.prototype.addIceCandidate = function() {\n return arguments[0] === null ? Promise.resolve()\n : nativeAddIceCandidate.apply(this, arguments);\n };\n\n // shim getStats with maplike support\n var makeMapStats = function(stats) {\n var map = new Map();\n Object.keys(stats).forEach(function(key) {\n map.set(key, stats[key]);\n map[key] = stats[key];\n });\n return map;\n };\n\n var nativeGetStats = RTCPeerConnection.prototype.getStats;\n RTCPeerConnection.prototype.getStats = function(selector, onSucc, onErr) {\n return nativeGetStats.apply(this, [selector || null])\n .then(function(stats) {\n return makeMapStats(stats);\n })\n .then(onSucc, onErr);\n };\n },\n\n shimGetUserMedia: function() {\n // getUserMedia constraints shim.\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n var constraintsToFF37_ = function(c) {\n if (typeof c !== 'object' || c.require) {\n return c;\n }\n var require = [];\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' ||\n key === 'mediaSource') {\n return;\n }\n var r = c[key] = (typeof c[key] === 'object') ?\n c[key] : {ideal: c[key]};\n if (r.min !== undefined ||\n r.max !== undefined || r.exact !== undefined) {\n require.push(key);\n }\n if (r.exact !== undefined) {\n if (typeof r.exact === 'number') {\n r. min = r.max = r.exact;\n } else {\n c[key] = r.exact;\n }\n delete r.exact;\n }\n if (r.ideal !== undefined) {\n c.advanced = c.advanced || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[key] = {min: r.ideal, max: r.ideal};\n } else {\n oc[key] = r.ideal;\n }\n c.advanced.push(oc);\n delete r.ideal;\n if (!Object.keys(r).length) {\n delete c[key];\n }\n }\n });\n if (require.length) {\n c.require = require;\n }\n return c;\n };\n constraints = JSON.parse(JSON.stringify(constraints));\n if (browserDetails.version < 38) {\n logging('spec: ' + JSON.stringify(constraints));\n if (constraints.audio) {\n constraints.audio = constraintsToFF37_(constraints.audio);\n }\n if (constraints.video) {\n constraints.video = constraintsToFF37_(constraints.video);\n }\n logging('ff37: ' + JSON.stringify(constraints));\n }\n return navigator.mozGetUserMedia(constraints, onSuccess, onError);\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n };\n\n // Shim for mediaDevices on older versions.\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {getUserMedia: getUserMediaPromise_,\n addEventListener: function() { },\n removeEventListener: function() { }\n };\n }\n navigator.mediaDevices.enumerateDevices =\n navigator.mediaDevices.enumerateDevices || function() {\n return new Promise(function(resolve) {\n var infos = [\n {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''},\n {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''}\n ];\n resolve(infos);\n });\n };\n\n if (browserDetails.version < 41) {\n // Work around http://bugzil.la/1169665\n var orgEnumerateDevices =\n navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices);\n navigator.mediaDevices.enumerateDevices = function() {\n return orgEnumerateDevices().then(undefined, function(e) {\n if (e.name === 'NotFoundError') {\n return [];\n }\n throw e;\n });\n };\n }\n },\n\n // Attach a media stream to an element.\n attachMediaStream: function(element, stream) {\n logging('DEPRECATED, attachMediaStream will soon be removed.');\n element.srcObject = stream;\n },\n\n reattachMediaStream: function(to, from) {\n logging('DEPRECATED, reattachMediaStream will soon be removed.');\n to.srcObject = from.srcObject;\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimOnTrack: firefoxShim.shimOnTrack,\n shimSourceObject: firefoxShim.shimSourceObject,\n shimPeerConnection: firefoxShim.shimPeerConnection,\n shimGetUserMedia: require('./getusermedia'),\n attachMediaStream: firefoxShim.attachMediaStream,\n reattachMediaStream: firefoxShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/firefox/firefox_shim.js\n ** module id = 190\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n'use strict';\n\nvar logging = require('../utils').log;\nvar browserDetails = require('../utils').browserDetails;\n\n// Expose public methods.\nmodule.exports = function() {\n var shimError_ = function(e) {\n return {\n name: {\n SecurityError: 'NotAllowedError',\n PermissionDeniedError: 'NotAllowedError'\n }[e.name] || e.name,\n message: {\n 'The operation is insecure.': 'The request is not allowed by the ' +\n 'user agent or the platform in the current context.'\n }[e.message] || e.message,\n constraint: e.constraint,\n toString: function() {\n return this.name + (this.message && ': ') + this.message;\n }\n };\n };\n\n // getUserMedia constraints shim.\n var getUserMedia_ = function(constraints, onSuccess, onError) {\n var constraintsToFF37_ = function(c) {\n if (typeof c !== 'object' || c.require) {\n return c;\n }\n var require = [];\n Object.keys(c).forEach(function(key) {\n if (key === 'require' || key === 'advanced' || key === 'mediaSource') {\n return;\n }\n var r = c[key] = (typeof c[key] === 'object') ?\n c[key] : {ideal: c[key]};\n if (r.min !== undefined ||\n r.max !== undefined || r.exact !== undefined) {\n require.push(key);\n }\n if (r.exact !== undefined) {\n if (typeof r.exact === 'number') {\n r. min = r.max = r.exact;\n } else {\n c[key] = r.exact;\n }\n delete r.exact;\n }\n if (r.ideal !== undefined) {\n c.advanced = c.advanced || [];\n var oc = {};\n if (typeof r.ideal === 'number') {\n oc[key] = {min: r.ideal, max: r.ideal};\n } else {\n oc[key] = r.ideal;\n }\n c.advanced.push(oc);\n delete r.ideal;\n if (!Object.keys(r).length) {\n delete c[key];\n }\n }\n });\n if (require.length) {\n c.require = require;\n }\n return c;\n };\n constraints = JSON.parse(JSON.stringify(constraints));\n if (browserDetails.version < 38) {\n logging('spec: ' + JSON.stringify(constraints));\n if (constraints.audio) {\n constraints.audio = constraintsToFF37_(constraints.audio);\n }\n if (constraints.video) {\n constraints.video = constraintsToFF37_(constraints.video);\n }\n logging('ff37: ' + JSON.stringify(constraints));\n }\n return navigator.mozGetUserMedia(constraints, onSuccess, function(e) {\n onError(shimError_(e));\n });\n };\n\n navigator.getUserMedia = getUserMedia_;\n\n // Returns the result of getUserMedia as a Promise.\n var getUserMediaPromise_ = function(constraints) {\n return new Promise(function(resolve, reject) {\n navigator.getUserMedia(constraints, resolve, reject);\n });\n };\n\n // Shim for mediaDevices on older versions.\n if (!navigator.mediaDevices) {\n navigator.mediaDevices = {getUserMedia: getUserMediaPromise_,\n addEventListener: function() { },\n removeEventListener: function() { }\n };\n }\n navigator.mediaDevices.enumerateDevices =\n navigator.mediaDevices.enumerateDevices || function() {\n return new Promise(function(resolve) {\n var infos = [\n {kind: 'audioinput', deviceId: 'default', label: '', groupId: ''},\n {kind: 'videoinput', deviceId: 'default', label: '', groupId: ''}\n ];\n resolve(infos);\n });\n };\n\n if (browserDetails.version < 41) {\n // Work around http://bugzil.la/1169665\n var orgEnumerateDevices =\n navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices);\n navigator.mediaDevices.enumerateDevices = function() {\n return orgEnumerateDevices().then(undefined, function(e) {\n if (e.name === 'NotFoundError') {\n return [];\n }\n throw e;\n });\n };\n }\n if (browserDetails.version < 49) {\n var origGetUserMedia = navigator.mediaDevices.getUserMedia.\n bind(navigator.mediaDevices);\n navigator.mediaDevices.getUserMedia = function(c) {\n return origGetUserMedia(c).catch(function(e) {\n return Promise.reject(shimError_(e));\n });\n };\n }\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/firefox/getusermedia.js\n ** module id = 191\n ** module chunks = 0\n **/","/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n'use strict';\nvar safariShim = {\n // TODO: DrAlex, should be here, double check against LayoutTests\n // shimOnTrack: function() { },\n\n // TODO: DrAlex\n // attachMediaStream: function(element, stream) { },\n // reattachMediaStream: function(to, from) { },\n\n // TODO: once the back-end for the mac port is done, add.\n // TODO: check for webkitGTK+\n // shimPeerConnection: function() { },\n\n shimGetUserMedia: function() {\n navigator.getUserMedia = navigator.webkitGetUserMedia;\n }\n};\n\n// Expose public methods.\nmodule.exports = {\n shimGetUserMedia: safariShim.shimGetUserMedia\n // TODO\n // shimOnTrack: safariShim.shimOnTrack,\n // shimPeerConnection: safariShim.shimPeerConnection,\n // attachMediaStream: safariShim.attachMediaStream,\n // reattachMediaStream: safariShim.reattachMediaStream\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/webrtc-adapter/src/js/safari/safari_shim.js\n ** module id = 192\n ** module chunks = 0\n **/","module.e = __WEBPACK_EXTERNAL_MODULE_193__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"get-pixels\"\n ** module id = 193\n ** module chunks = 0\n **/","module.e = __WEBPACK_EXTERNAL_MODULE_194__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"ndarray\"\n ** module id = 194\n ** module chunks = 0\n **/","module.e = __WEBPACK_EXTERNAL_MODULE_195__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"ndarray-linear-interpolate\"\n ** module id = 195\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 7234cb9..001b39a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "quagga", - "version": "0.11.0", + "version": "0.11.2", "description": "An advanced barcode-scanner written in JavaScript", "main": "lib/quagga.js", "browser": "dist/quagga.min.js", @@ -60,7 +60,7 @@ "phantomjs": "^1.9.18", "sinon": "^1.16.1", "sinon-chai": "^2.8.0", - "webpack": "^2.1.0-beta.7", + "webpack": "2.1.0-beta.4", "webpack-sources": "^0.1.1" }, "directories": { @@ -109,6 +109,6 @@ "lodash": "^4.6.1", "ndarray": "^1.0.18", "ndarray-linear-interpolate": "^1.0.0", - "webrtc-adapter": "^1.2.2" + "webrtc-adapter": "^1.3.0" } } diff --git a/src/common/events.js b/src/common/events.js index 82742eb..93993a8 100644 --- a/src/common/events.js +++ b/src/common/events.js @@ -50,14 +50,19 @@ export default function createEventedElement() { var event = getEvent(eventName), subscribers = event.subscribers; + // Publish one-time subscriptions subscribers.filter(function(subscriber) { return !!subscriber.once; }).forEach((subscriber) => { publishSubscription(subscriber, data); }); + + // remove them from the subscriber event.subscribers = subscribers.filter(function(subscriber) { return !subscriber.once; }); + + // publish the rest event.subscribers.forEach((subscriber) => { publishSubscription(subscriber, data); }); diff --git a/src/input/camera_access.js b/src/input/camera_access.js index 79165bf..6f8149d 100644 --- a/src/input/camera_access.js +++ b/src/input/camera_access.js @@ -34,11 +34,11 @@ function waitForVideo(video) { function initCamera(video, constraints) { return navigator.mediaDevices.getUserMedia(constraints) .then((stream) => { - return new Promise((resolve, reject) => { + return new Promise((resolve) => { streamRef = stream; video.setAttribute("autoplay", 'true'); video.srcObject = stream; - video.addEventListener('loadedmetadata', (e) => { + video.addEventListener('loadedmetadata', () => { video.play(); resolve(); }); @@ -51,13 +51,13 @@ function deprecatedConstraints(videoConstraints) { const normalized = pick(videoConstraints, ["width", "height", "facingMode", "aspectRatio", "deviceId"]); - if (typeof videoConstraints["minAspectRatio"] !== 'undefined' && - videoConstraints["minAspectRatio"] > 0) { - normalized["aspectRatio"] = videoConstraints["minAspectRatio"]; + if (typeof videoConstraints.minAspectRatio !== 'undefined' && + videoConstraints.minAspectRatio > 0) { + normalized.aspectRatio = videoConstraints.minAspectRatio; console.log("WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead"); } - if (typeof videoConstraints["facing"] !== 'undefined') { - normalized["facingMode"] = videoConstraints["facing"]; + if (typeof videoConstraints.facing !== 'undefined') { + normalized.facingMode = videoConstraints.facing; console.log("WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'"); } return normalized; @@ -69,7 +69,7 @@ function applyCameraFacing(facing, constraints) { } if ( typeof MediaStreamTrack !== 'undefined' && typeof MediaStreamTrack.getSources !== 'undefined') { - return new Promise((resolve, reject) => { + return new Promise((resolve) => { MediaStreamTrack.getSources((sourceInfos) => { const videoSource = sourceInfos.filter((sourceInfo) => ( sourceInfo.kind === "video" && sourceInfo.facing === facing diff --git a/src/locator/barcode_locator.js b/src/locator/barcode_locator.js index 3d4fde6..58e6968 100644 --- a/src/locator/barcode_locator.js +++ b/src/locator/barcode_locator.js @@ -561,7 +561,7 @@ export default function createLocator(inputImageWrapper, config) { boxes = findBoxes(topLabels, maxLabel); return boxes; } - } + }; } export function checkImageConstraints(inputStream, config) { var patchSize, diff --git a/src/quagga.js b/src/quagga.js index 55d422b..fdd0018 100644 --- a/src/quagga.js +++ b/src/quagga.js @@ -7,7 +7,6 @@ import ResultCollector from './analytics/result_collector'; import Config from './config/config'; import {merge, pick, omitBy, isEmpty} from 'lodash'; - function fromImage(config, imageSrc, inputConfig = {}) { const staticImageConfig = { inputStream: { diff --git a/test/integration/integration.spec.js b/test/integration/integration.spec.js index 3b02838..fdd4a0b 100644 --- a/test/integration/integration.spec.js +++ b/test/integration/integration.spec.js @@ -53,7 +53,8 @@ describe('decodeSingle', function () { expect(result.codeResult.code).to.equal(sample.result); expect(result.codeResult.format).to.equal(sample.format); callback(); - }); + }) + .start(); }, function() { done(); }); diff --git a/test/spec/barcode_locator.spec.js b/test/spec/barcode_locator.spec.js index 590f614..1c95686 100644 --- a/test/spec/barcode_locator.spec.js +++ b/test/spec/barcode_locator.spec.js @@ -1,4 +1,4 @@ -import BarcodeLocator from '../../src/locator/barcode_locator'; +import {checkImageConstraints} from '../../src/locator/barcode_locator'; import Config from '../../src/config/config'; import {merge} from 'lodash'; @@ -45,7 +45,7 @@ describe('checkImageConstraints', function() { it('should not adjust the image-size if not needed', function() { var expected = {x: imageSize.x, y: imageSize.y}; - BarcodeLocator.checkImageConstraints(inputStream, config.locator); + checkImageConstraints(inputStream, config.locator); expect(inputStream.getWidth()).to.be.equal(expected.x); expect(inputStream.getHeight()).to.be.equal(expected.y); }); @@ -55,7 +55,7 @@ describe('checkImageConstraints', function() { config.locator.halfSample = true; imageSize.y += 1; - BarcodeLocator.checkImageConstraints(inputStream, config.locator); + checkImageConstraints(inputStream, config.locator); expect(inputStream.getWidth()).to.be.equal(expected.x); expect(inputStream.getHeight()).to.be.equal(expected.y); }); @@ -65,7 +65,7 @@ describe('checkImageConstraints', function() { imageSize.y += 1; config.locator.halfSample = false; - BarcodeLocator.checkImageConstraints(inputStream, config.locator); + checkImageConstraints(inputStream, config.locator); expect(inputStream.getHeight()).to.be.equal(expected.y); expect(inputStream.getWidth()).to.be.equal(expected.x); }); @@ -92,7 +92,7 @@ describe('checkImageConstraints', function() { }; config.locator.halfSample = false; - BarcodeLocator.checkImageConstraints(inputStream, config.locator); + checkImageConstraints(inputStream, config.locator); expect(inputStream.getHeight()).to.be.equal(expectedSize.y); expect(inputStream.getWidth()).to.be.equal(expectedSize.x); expect(inputStream.setTopRight.getCall(0).args[0]).to.deep.equal(expectedTopRight); @@ -121,7 +121,7 @@ describe('checkImageConstraints', function() { }; config.locator.halfSample = false; - BarcodeLocator.checkImageConstraints(inputStream, config.locator); + checkImageConstraints(inputStream, config.locator); expect(inputStream.getHeight()).to.be.equal(expectedSize.y); expect(inputStream.getWidth()).to.be.equal(expectedSize.x); expect(inputStream.setTopRight.getCall(0).args[0]).to.deep.equal(expectedTopRight); diff --git a/test/spec/camera_access.spec.js b/test/spec/camera_access.spec.js index 490900d..40bf977 100644 --- a/test/spec/camera_access.spec.js +++ b/test/spec/camera_access.spec.js @@ -27,9 +27,10 @@ beforeEach(function() { sinon.spy(tracks[0], "stop"); video = { - src: null, + srcObject: null, addEventListener: function() {}, removeEventListener: function() {}, + setAttribute: sinon.spy(), play: function() {}, videoWidth: 320, videoHeight: 480 @@ -60,12 +61,9 @@ describe('success', function() { CameraAccess.request(video, {}) .then(function () { expect(navigator.mediaDevices.getUserMedia.calledOnce).to.equal(true); - expect(video.src).to.deep.equal(stream); + expect(video.srcObject).to.deep.equal(stream); done(); }) - window.setTimeout(() => { - video.onloadedmetadata(); - }, 100); }); it("should allow deprecated constraints to be used", (done) => { @@ -89,9 +87,6 @@ describe('success', function() { expect(args[0].video.maxAspectRatio).not.to.be.defined; done(); }) - window.setTimeout(() => { - video.onloadedmetadata(); - }, 100); }); }); @@ -122,9 +117,6 @@ describe('success', function() { expect(args[0].video.deviceId).to.equal("user"); done(); }) - window.setTimeout(() => { - video.onloadedmetadata(); - }, 100); }); }); @@ -132,15 +124,12 @@ describe('success', function() { it('should release the camera', function (done) { CameraAccess.request(video, {}) .then(function () { - expect(video.src).to.deep.equal(stream); + expect(video.srcObject).to.deep.equal(stream); CameraAccess.release(); - expect(video.src.getVideoTracks()).to.have.length(1); - expect(video.src.getVideoTracks()[0].stop.calledOnce).to.equal(true); + expect(video.srcObject.getVideoTracks()).to.have.length(1); + expect(video.srcObject.getVideoTracks()[0].stop.calledOnce).to.equal(true); done(); }); - window.setTimeout(() => { - video.onloadedmetadata(); - }, 100); }); }); }); diff --git a/test/spec/events.spec.js b/test/spec/events.spec.js index 18dc67c..9d0b4e4 100644 --- a/test/spec/events.spec.js +++ b/test/spec/events.spec.js @@ -1,11 +1,10 @@ -import Events from '../../src/common/events'; +import createEventedElement from '../../src/common/events'; +let Events; beforeEach(function() { - Events.unsubscribe(); + Events = createEventedElement(); }); describe("subscribe", function() { - - it("should call one callback for a single event", function() { var callbackA = sinon.stub(), callbackB = sinon.stub(); @@ -31,18 +30,16 @@ describe("subscribe", function() { it("should call the callback asynchronuously", function(done) { var test = { - callback: function() { - - } - }; + callback: function() {} + }; sinon.stub(test, "callback", function() { - expect(test.callback.calledOnce).to.be.true; + expect(test.callback.calledOnce).to.equal(true); done(); }); Events.subscribe("test", test.callback, true); Events.publish("test"); - expect(test.callback.called).to.be.false; + expect(test.callback.called).to.equal(false); }); }); diff --git a/type-definitions/quagga.d.ts b/type-definitions/quagga.d.ts new file mode 100644 index 0000000..d07a6ff --- /dev/null +++ b/type-definitions/quagga.d.ts @@ -0,0 +1,478 @@ +// Type definitions for QuaggaJS v2015.05.20 Project: +// http://serratus.github.io/quaggaJS/ Definitions by: Cam Birch, Peter +// Horwood aka Madman Pierre + +declare var Quagga: QuaggaJSStatic; +export default Quagga; + +interface QuaggaJSStatic { + /** + * This method initializes the library for a given + * configuration config (see below) and invokes the callback when Quagga is + * ready to start. The initialization process also requests for camera + * access if real-time detection is configured. + */ + init( + config: QuaggaJSConfigObject, + callback?: (err: any) => void + ): void; + + init( + config: QuaggaJSConfigObject, + callback: (err: any) => void, + imageWrapper: any + ): void; + + /** + * When the library is initialized, the start() + * method starts the video-stream and begins locating and decoding the + * images. + */ + start(): void; + + /** + * If the decoder is currently running, after calling + * stop() the decoder does not process any more images. + * Additionally, if a camera-stream was requested upon initialization, + * this operation also disconnects the camera. + */ + stop(): void; + + /** + * Pauses processing, but does not release any handlers + */ + pause(): void; + + /** + * This method registers a callback(data) function that is + * called for each frame after the processing is done. The data object + * contains detailed information about the success/failure of the operation. + * The output varies, depending whether the detection and/or decoding were + * successful or not. + */ + onProcessed(callback: QuaggaJSResultCallbackFunction): void; + + /** + * Removes a callback that was previously registered with @see onProcessed + */ + offProcessed(callback: QuaggaJSResultCallbackFunction): void; + + /** + * Registers a callback(data) function which is triggered whenever a + * barcode- pattern has been located and decoded successfully. The passed + * data object contains information about the decoding process including the + * detected code which can be obtained by calling data.codeResult.code. + */ + onDetected(callback: QuaggaJSResultCallbackFunction): void; + + /** + * Removes a callback that was previously registered with @see onDetected + */ + offDetected(callback: QuaggaJSResultCallbackFunction): void; + + ResultCollector: QuaggaJSResultCollector; + registerResultCollector(resultCollector: QuaggaJSResultCollector): void; + setReaders(readers: any): void; + + /** + * In contrast to the calls described + * above, this method does not rely on getUserMedia and operates on a single + * image instead. The provided callback is the same as in onDetected and + * contains the result data object. + */ + decodeSingle( + config: QuaggaJSConfigObject, + resultCallback: QuaggaJSResultCallbackFunction + ): void; + + /** + * Constructs used for debugging purposes + */ + ImageDebug: { + drawPath: QuaggaJSDebugDrawPath; + drawRect: QuaggaJSDebugDrawRect; + }; + ImageWrapper: any; + + /** + * an object Quagga uses for drawing and processing, useful for calling code + * when debugging + */ + canvas: { + ctx: { + image: CanvasRenderingContext2D; + overlay: CanvasRenderingContext2D + }; + dom: { + image: HTMLCanvasElement; + overlay: HTMLCanvasElement + } + }; +} + +/** + * Called whenever an item is detected or a process step has been completed. + */ +interface QuaggaJSResultCallbackFunction { + ( + data: QuaggaJSResultObject + ): void; +} + +/** + * Called to draw debugging path. The path is an array of array of 2 numbers. + * The def.x specifies element in the sub array is the x, and similary the def.y + * defines the y. + * typical values 0, 1, 'x', 'y' + */ +interface QuaggaJSDebugDrawPath { + ( + path: any[], + def: QuaggaJSxyDef, + ctx: CanvasRenderingContext2D, + style: QuaggaJSStyle + ): void +} + +/** + * Called to draw debugging Rectangle + */ +interface QuaggaJSDebugDrawRect { + ( + pos: any[], + size: QuaggaJSRectSize, + ctx: CanvasRenderingContext2D, + style: QuaggaJSStyle + ): void +} + +/** + * an object with an x and a y value, the x and y specify which element in + * another array is the x or y value. + * typical values 0, 1, 'x', 'y' + */ +interface QuaggaJSxyDef { + x: any; + y: any; +} + +/** + * an object with an x and a y value + */ +interface QuaggaJSxy { + x: number; + y: number; +} + +/** + * an object with a pair of x and a y values. + * Used for giving a htiml canvas context.strokeRect function it's x, y, width + * and height values. + */ +interface QuaggaJSRectSize { + pos: QuaggaJSxy; + size: QuaggaJSxy; +} + +/** + * an object with the styles, color can actually be a color, a gradient or a + * pattern (see defintions for context.strokeStyle. But is most commonly a + * colour. + */ +interface QuaggaJSStyle { + color: string; + + /* http://www.w3schools.com/tags/canvas_linewidth.asp */ + lineWidth: number; +} + +/** + * Pass when creating a ResultCollector + */ +interface QuaggaJSResultCollector { + /** + * keep track of the image producing this result + */ + capture?: boolean; + + /** + * maximum number of results to store + */ + capacity?: number; + + /** + * a list of codes that should not be recorded. This is effectively a list + * of filters that return false. + */ + blacklist?: QuaggaJSCodeResult; + + /** + * passed a QuaggaJSCodeResult, return true if you want this to be stored, + * false if you don't. Note: The black list is effectively a list of filters + * that return false. So if you only want to store results that are ean_13, + * you would say return codeResult.format==="ean_13" + */ + filter?: QuaggaJSResultCollectorFilterFunction; + + /* + * a static function that returns you a ResultCollector + */ + create?(QuaggaJSResultCollector): QuaggaJSResultCollector; + + getResults?(): QuaggaJSCodeResult[]; +} + +/** + * used for ResultCollector blacklists and filters + */ +interface QuaggaJSCodeResult { + code?: string; + format?: string; +} + +/** + * Called to filter which Results to collect in ResultCollector + */ +interface QuaggaJSResultCollectorFilterFunction { + ( + data: QuaggaJSCodeResult + ): boolean; +} + +/** + * The callbacks passed into onProcessed, onDetected and decodeSingle receive a + * data object upon execution. The data object contains the following + * information. Depending on the success, some fields may be undefined or just + * empty. + */ +interface QuaggaJSResultObject { + codeResult: QuaggaJSResultObject_CodeResult; + line: { + x: number; + y: number; + }[]; + angle: number; + pattern: number[]; + box: number[][]; + boxes: number[][][]; +} + +interface QuaggaJSResultObject_CodeResult { + code: string; + start: number; + end: number; + codeset: number; + startInfo: { + error: number; + code: number; + start: number; + end: number; + }; + decodedCodes: { + error?: number; + code: number; + start: number; + end: number; + }[]; + + endInfo: { + error: number; + code: number; + start: number; + end: number; + }; + direction: number; + format: string; +} + +interface QuaggaJSConfigObject { + /** + * The image path to load from, or a data url + * Ex: '/test/fixtures/code_128/image-001.jpg' + * or: 'data:image/jpg;base64,' + data + */ + src?: string; inputStream?: { + /** + * @default "Live" + */ + name?: string; + + /** + * @default "LiveStream" + */ + type?: string; + + constraints?: { + /** + * @default 640 + */ + width?: number; + + /** + * @default 480 + */ + height?: number; + + /** + * In cases where height/width does not suffice + */ + aspectRatio?: number + + /** + * @default "environment" + */ + facingMode?: string; + + /** + * Explicitly set the camera to the user's choice + */ + deviceId?: string + }; + + /** + * defines rectangle of the detection/localization area. Useful when you + * KNOW that certain parts of the image will not contain a barcode, also + * useful when you have multiple barcodes in a row and you want to make + * sure that only a code in, say the middle quarter is read not codes + * above or below + */ + area?: { + /** + * @default "0%", set this and bottom to 25% if you only want to + * read a 'line' that is in the middle quarter + */ + top?: string; + + /** + * @default "0%" + */ + right?: string; + + /** + * @default "0%" + */ + left?: string; + + /** + * @default "0%", set this and top to 50% if you only want to read a + * 'line' that is in the middle half + */ + bottom?: string; + }; + + singleChannel?: boolean; + size?: number; + sequence?: boolean; + }; + + /** + * @default false + */ + debug?: boolean; + + /** + * @default true + */ + locate?: boolean; + + /** + * @default 4 + */ + numOfWorkers?: number; + + decoder?: { + /** + * @default [ "code_128_reader" ] + */ + readers?: string[]; + + debug?: { + /** + * @default false + */ + drawBoundingBox?: boolean; + + /** + * @default false + */ + showFrequency?: boolean; + + /** + * @default false + */ + drawScanline?: boolean; + + /** + * @default false + */ + showPattern?: boolean; + } + }; + + locator?: { + /** + * @default true + */ + halfSample?: boolean; + + /** + * @default "medium" + * Available values: x-small, small, medium, large, x-large + */ + patchSize?: string; + + debug?: { + /** + * @default false + */ + showCanvas?: boolean; + + /** + * @default false + */ + showPatches?: boolean; + + /** + * @default false + */ + showFoundPatches?: boolean; + + /** + * @default false + */ + showSkeleton?: boolean; + + /** + * @default false + */ + showLabels?: boolean; + + /** + * @default false + */ + showPatchLabels?: boolean; + + /** + * @default false + */ + showRemainingPatchLabels?: boolean; + + boxFromPatches?: { + /** + * @default false + */ + showTransformed?: boolean; + + /** + * @default false + */ + showTransformedBox?: boolean; + + /** + * @default false + */ + showBB?: boolean; + }; + } + }; +}