UNPKG

svg-paper

Version:

The world's most maintainable way to create paper-printable documents 🖨💘

654 lines (510 loc) • 92 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["SvgPaper"] = factory(); else root["SvgPaper"] = factory(); })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 0); /******/ }) /************************************************************************/ /******/ ({ /***/ "./js/src/adjust-text.js": /*!*******************************!*\ !*** ./js/src/adjust-text.js ***! \*******************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (function (paperPixelRatio, selector, config) { var $this = document.querySelector(selector); if (!$this) { return; } // shrink text element to specified width if (!!config['textLength']) { // for firefox // @see https://developer.mozilla.org/ja/docs/Web/API/Element/clientWidth $this.style.display = 'block'; if ($this.getBoundingClientRect().width * paperPixelRatio > config.textLength) { $this.querySelector('tspan').setAttribute('textLength', config.textLength); $this.querySelector('tspan').setAttribute('lengthAdjust', 'spacingAndGlyphs'); // for firefox // @see https://bugzilla.mozilla.org/show_bug.cgi?id=890692 $this.setAttribute('textLength', config.textLength); $this.setAttribute('lengthAdjust', 'spacingAndGlyphs'); } } // alignment if (!!config['text-anchor'] && config['text-anchor'] !== 'start') { var w = parseFloat(config['textLength']); var x = 0; var y = 0; if ($this.getAttribute('transform')) { x = parseFloat($this.getAttribute('transform').match(/translate\((\S+) .+\)/)[1]); y = parseFloat($this.getAttribute('transform').match(/translate\(\S+ (.+)\)/)[1]); } if (config['text-anchor'] === 'middle') { $this.setAttribute('transform', "translate(".concat(x + w / 2, " ").concat(y, ")")); } if (config['text-anchor'] === 'end') { $this.setAttribute('transform', "translate(".concat(x + w, " ").concat(y, ")")); } $this.setAttribute('text-anchor', config['text-anchor']); } }); /***/ }), /***/ "./js/src/adjust-textarea.js": /*!***********************************!*\ !*** ./js/src/adjust-textarea.js ***! \***********************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _utility_split_string_by_width__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utility/split-string-by-width */ "./js/src/utility/split-string-by-width.js"); /* harmony import */ var _utility_fix_text_transform__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utility/fix-text-transform */ "./js/src/utility/fix-text-transform.js"); /* harmony default export */ __webpack_exports__["default"] = (function (textSvg, textContent, width, height) { var lineHeight = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1.2; var paddingX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0.5; var paddingY = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0.5; var nowrap = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false; if (!textSvg.match(new RegExp('<text [^>]*font-size="\\d+"[^>]*><tspan( [^>]*>|>)[^<>]*</tspan></text>'))) { console.error('Invalid svg string of text element', textSvg); return textSvg; } var originalFontSize = parseInt(textSvg.match(/.+font-size="(\d+)".+/)[1]); var fontSize = originalFontSize; // find the right-size font-size var physicalLines = textContent.split("\n"); var logicalLines = []; var _loop = function _loop() { var maxRows = Math.floor((height - 2 * fontSize * paddingY) / (fontSize * lineHeight)); var maxColumns = Math.floor((width - 2 * fontSize * paddingX) / fontSize); // doesn't care about proportional font if (nowrap) { logicalLines = physicalLines; } else { logicalLines = []; physicalLines.forEach(function (line) { logicalLines = logicalLines.concat(Object(_utility_split_string_by_width__WEBPACK_IMPORTED_MODULE_0__["default"])(line, maxColumns * 2)); // 2 single-byte characters can be placed in 1 column }); } if (logicalLines.length > maxRows) { fontSize *= 0.95; } else { return "break"; } }; while (true) { var _ret = _loop(); if (_ret === "break") break; } // raise y-coordinate up because y-coordinate of <text transform="translate(x y)"> or <tspan y=""> is on lower base of text object var adjustY = fontSize - originalFontSize; var adjustedTextSvg = Object(_utility_fix_text_transform__WEBPACK_IMPORTED_MODULE_1__["default"])(textSvg); adjustedTextSvg = adjustedTextSvg.replace(new RegExp('<tspan(.|\\s)+</text>'), ''); adjustedTextSvg = adjustedTextSvg.replace(new RegExp('font-size="\\d+"'), "font-size=\"".concat(fontSize, "\"")); adjustedTextSvg += '{tspan}</text>'; var tspan = ''; var x = fontSize * paddingX; logicalLines.forEach(function (line, i) { var y = adjustY + fontSize * (paddingY + i * lineHeight); tspan += "<tspan x=\"".concat(x, "\" y=\"").concat(y, "\">").concat(line, "</tspan>"); }); adjustedTextSvg = adjustedTextSvg.replace('{tspan}', tspan); return adjustedTextSvg; }); /***/ }), /***/ "./js/src/svg-paper.js": /*!*****************************!*\ !*** ./js/src/svg-paper.js ***! \*****************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return SvgPaper; }); /* harmony import */ var _adjust_text__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjust-text */ "./js/src/adjust-text.js"); /* harmony import */ var _adjust_textarea__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adjust-textarea */ "./js/src/adjust-textarea.js"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var SvgPaper = /*#__PURE__*/function () { function SvgPaper() { var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.paper svg'; _classCallCheck(this, SvgPaper); if (!document.querySelector(selector)) { throw new Error('Invalid selector'); } this.selector = selector; this.svg = document.querySelector(selector).outerHTML.replace(/[\r|\n]+/g, "\n"); this.adjustTextQueries = []; } _createClass(SvgPaper, [{ key: "replace", value: function replace(search, replacement) { if (search instanceof RegExp) { search = new RegExp(search.source, search.flags.replace(/g/g, '') + 'g'); } else { search = search.replace(/[\r|\n]+/g, "\n"); // @see https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions#escaping search = search.replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&'); search = new RegExp(search, 'g'); } // cast to string replacement = replacement !== undefined && replacement !== null ? replacement + '' : ''; replacement = replacement.replace(/[\r|\n]+/g, "\n"); this.svg = this.svg.replace(search, replacement); return this; } }, { key: "adjustText", value: function adjustText(selector) { var textLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var textAnchor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'start'; this.adjustTextQueries.push({ selector: selector, textLength: textLength, textAnchor: textAnchor }); return this; } }, { key: "adjustTextarea", value: function adjustTextarea(selector, width, height) { var lineHeight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1.2; var paddingX = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0.5; var paddingY = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0.5; var nowrap = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false; var doc = new DOMParser().parseFromString(this.svg, 'text/html'); var textElement = doc.querySelector(selector); if (!textElement) { return this; } var textSvg = textElement.outerHTML; // SVGElement doesn't have innerText // @see https://developer.mozilla.org/en-US/docs/Web/API/SVGElement var textContent = textElement.innerHTML.replace(new RegExp('^<tspan[^>]*>([\\S|\\s]*)</tspan>$'), '$1'); var adjustedTextSvg = Object(_adjust_textarea__WEBPACK_IMPORTED_MODULE_1__["default"])(textSvg, textContent, width, height, lineHeight, paddingX, paddingY, nowrap); this.replace(textSvg, adjustedTextSvg); return this; } }, { key: "apply", value: function apply() { var _this = this; if (this.svg !== document.querySelector(this.selector).outerHTML) { document.querySelector(this.selector).outerHTML = this.svg; } this.adjustTextQueries.forEach(function (query) { var _$svg$getAttribute$sp, _$svg$getAttribute; // if viewBox is specified, Element.clientWidth and Element.getBoundingClientRect() return different values // clientWidth: ??? // getBoundingClientRect(): pure pixel value // so this library uses getBoundingClientRect() and pre-calculated ratio to specify the width of some elements var $svg = document.querySelector(_this.selector); var viewBoxWidth = (_$svg$getAttribute$sp = (_$svg$getAttribute = $svg.getAttribute('viewBox')) === null || _$svg$getAttribute === void 0 ? void 0 : _$svg$getAttribute.split(/ +/)[2]) !== null && _$svg$getAttribute$sp !== void 0 ? _$svg$getAttribute$sp : null; var paperPixelRatio = viewBoxWidth ? parseFloat(viewBoxWidth) / $svg.getBoundingClientRect().width : 1; Object(_adjust_text__WEBPACK_IMPORTED_MODULE_0__["default"])(paperPixelRatio, query.selector, { textLength: query.textLength, 'text-anchor': query.textAnchor }); }); // initialize this.svg = document.querySelector(this.selector).outerHTML; this.adjustTextQueries = []; } }]); return SvgPaper; }(); /***/ }), /***/ "./js/src/utility/fix-text-transform.js": /*!**********************************************!*\ !*** ./js/src/utility/fix-text-transform.js ***! \**********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (function (textSvg) { var fixedTextSvg = textSvg; // if <text> doesn't have transform="translate(x y)", just add it with (0 0) if (!fixedTextSvg.match(/<text [^>]*transform="[^"]*"[^>]*>/)) { fixedTextSvg = fixedTextSvg.replace(new RegExp('<text([^>]*)>'), '<text$1 transform="translate(0 0)">'); } // if <tspan> doesn't have x="" y="", just add it with x="0" y="0" if (!fixedTextSvg.match(/<tspan [^>]*x="[^"]*"[^>]*>/)) { fixedTextSvg = fixedTextSvg.replace(new RegExp('<tspan([^>]*)>'), '<tspan$1 x="0">'); } if (!fixedTextSvg.match(/<tspan [^>]*y="[^"]*"[^>]*>/)) { fixedTextSvg = fixedTextSvg.replace(new RegExp('<tspan([^>]*)>'), '<tspan$1 y="0">'); } // copy x from <tspan x=""> and add it to <text transform="translate(x y)"> fixedTextSvg = fixedTextSvg.replace(new RegExp('<text([\\s\\S]+)transform="translate\\((\\S+)\\s+(.+)\\)"([^>]*)>\s*<tspan([^>]+)x="([^"]+)"'), '<text$1transform="translate(###$2+$6### $3)"$4><tspan$5x="0"'); var expression1 = fixedTextSvg.match(new RegExp('<text[\\s\\S]+transform="translate\\(###(.+)###.+\\)"'))[1]; var x = expression1.match(/\d+\+\d+/) ? eval(expression1) : 0; fixedTextSvg = fixedTextSvg.replace(new RegExp('<text([\\s\\S]+)transform="translate\\(###.+###(.+)\\)"'), "<text$1transform=\"translate(".concat(x, "$2)\"")); // copy y from <tspan y=""> and add it to <text transform="translate(x y)"> fixedTextSvg = fixedTextSvg.replace(new RegExp('<text([\\s\\S]+)transform="translate\\((.+)\\s+(\\S+)\\)"([^>]*)>\s*<tspan([^>]+)y="([^"]+)"'), '<text$1transform="translate($2 ###$3+$6###)"$4><tspan$5y="0"'); var expression2 = fixedTextSvg.match(new RegExp('<text[\\s\\S]+transform="translate\\(.+###(.+)###\\)"'))[1]; var y = expression2.match(/\d+\+\d+/) ? eval(expression2) : 0; fixedTextSvg = fixedTextSvg.replace(new RegExp('<text([\\s\\S]+)transform="translate\\((.+)###.+###\\)"'), "<text$1transform=\"translate($2".concat(y, ")\"")); return fixedTextSvg; }); /***/ }), /***/ "./js/src/utility/split-string-by-width.js": /*!*************************************************!*\ !*** ./js/src/utility/split-string-by-width.js ***! \*************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _sub_string_by_width__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sub-string-by-width */ "./js/src/utility/sub-string-by-width.js"); /* harmony default export */ __webpack_exports__["default"] = (function (string, width) { var splits = []; while (true) { var split = Object(_sub_string_by_width__WEBPACK_IMPORTED_MODULE_0__["default"])(string, 0, width); splits.push(split); string = string.replace(split, ''); if (!string) { break; } } return splits; }); /***/ }), /***/ "./js/src/utility/sub-string-by-width.js": /*!***********************************************!*\ !*** ./js/src/utility/sub-string-by-width.js ***! \***********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var string_width__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! string-width */ "./node_modules/string-width/index.js"); /* harmony import */ var string_width__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(string_width__WEBPACK_IMPORTED_MODULE_0__); /* harmony default export */ __webpack_exports__["default"] = (function (string, start, width) { var currentWidth = 0; var subString = ''; for (var i = start;; i++) { var _char = string.substr(i, 1); currentWidth += string_width__WEBPACK_IMPORTED_MODULE_0___default()(_char); if (currentWidth <= width && i <= string.length) { subString += _char; } if (currentWidth >= width || i >= string.length) { return subString; } } }); /***/ }), /***/ "./node_modules/emoji-regex/index.js": /*!*******************************************!*\ !*** ./node_modules/emoji-regex/index.js ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; module.exports = function () { // https://mths.be/emoji return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; }; /***/ }), /***/ "./node_modules/string-width/index.js": /*!********************************************!*\ !*** ./node_modules/string-width/index.js ***! \********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var stripAnsi = __webpack_require__(/*! strip-ansi */ "./node_modules/strip-ansi/index.js"); var isFullwidthCodePoint = __webpack_require__(/*! is-fullwidth-code-point */ "./node_modules/string-width/node_modules/is-fullwidth-code-point/index.js"); var emojiRegex = __webpack_require__(/*! emoji-regex */ "./node_modules/emoji-regex/index.js"); var stringWidth = function stringWidth(string) { if (typeof string !== 'string' || string.length === 0) { return 0; } string = stripAnsi(string); if (string.length === 0) { return 0; } string = string.replace(emojiRegex(), ' '); var width = 0; for (var i = 0; i < string.length; i++) { var code = string.codePointAt(i); // Ignore control characters if (code <= 0x1F || code >= 0x7F && code <= 0x9F) { continue; } // Ignore combining characters if (code >= 0x300 && code <= 0x36F) { continue; } // Surrogates if (code > 0xFFFF) { i++; } width += isFullwidthCodePoint(code) ? 2 : 1; } return width; }; module.exports = stringWidth; // TODO: remove this in the next major version module.exports["default"] = stringWidth; /***/ }), /***/ "./node_modules/string-width/node_modules/is-fullwidth-code-point/index.js": /*!*********************************************************************************!*\ !*** ./node_modules/string-width/node_modules/is-fullwidth-code-point/index.js ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* eslint-disable yoda */ var isFullwidthCodePoint = function isFullwidthCodePoint(codePoint) { if (Number.isNaN(codePoint)) { return false; } // Code points are derived from: // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt if (codePoint >= 0x1100 && (codePoint <= 0x115F || // Hangul Jamo codePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET codePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET // CJK Radicals Supplement .. Enclosed CJK Letters and Months 0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F || // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A 0x3250 <= codePoint && codePoint <= 0x4DBF || // CJK Unified Ideographs .. Yi Radicals 0x4E00 <= codePoint && codePoint <= 0xA4C6 || // Hangul Jamo Extended-A 0xA960 <= codePoint && codePoint <= 0xA97C || // Hangul Syllables 0xAC00 <= codePoint && codePoint <= 0xD7A3 || // CJK Compatibility Ideographs 0xF900 <= codePoint && codePoint <= 0xFAFF || // Vertical Forms 0xFE10 <= codePoint && codePoint <= 0xFE19 || // CJK Compatibility Forms .. Small Form Variants 0xFE30 <= codePoint && codePoint <= 0xFE6B || // Halfwidth and Fullwidth Forms 0xFF01 <= codePoint && codePoint <= 0xFF60 || 0xFFE0 <= codePoint && codePoint <= 0xFFE6 || // Kana Supplement 0x1B000 <= codePoint && codePoint <= 0x1B001 || // Enclosed Ideographic Supplement 0x1F200 <= codePoint && codePoint <= 0x1F251 || // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane 0x20000 <= codePoint && codePoint <= 0x3FFFD)) { return true; } return false; }; module.exports = isFullwidthCodePoint; module.exports["default"] = isFullwidthCodePoint; /***/ }), /***/ "./node_modules/strip-ansi/index.js": /*!******************************************!*\ !*** ./node_modules/strip-ansi/index.js ***! \******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var ansiRegex = __webpack_require__(/*! ansi-regex */ "./node_modules/strip-ansi/node_modules/ansi-regex/index.js"); module.exports = function (string) { return typeof string === 'string' ? string.replace(ansiRegex(), '') : string; }; /***/ }), /***/ "./node_modules/strip-ansi/node_modules/ansi-regex/index.js": /*!******************************************************************!*\ !*** ./node_modules/strip-ansi/node_modules/ansi-regex/index.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; module.exports = function () { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$onlyFirst = _ref.onlyFirst, onlyFirst = _ref$onlyFirst === void 0 ? false : _ref$onlyFirst; var pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'].join('|'); return new RegExp(pattern, onlyFirst ? undefined : 'g'); }; /***/ }), /***/ "./scss/svg-paper.scss": /*!*****************************!*\ !*** ./scss/svg-paper.scss ***! \*****************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin /***/ }), /***/ 0: /*!*********************************************************!*\ !*** multi ./scss/svg-paper.scss ./js/src/svg-paper.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(/*! ./scss/svg-paper.scss */"./scss/svg-paper.scss"); module.exports = __webpack_require__(/*! ./js/src/svg-paper.js */"./js/src/svg-paper.js"); /***/ }) /******/ })["default"]; }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TdmdQYXBlci93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vU3ZnUGFwZXIvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vU3ZnUGFwZXIvLi9qcy9zcmMvYWRqdXN0LXRleHQuanMiLCJ3ZWJwYWNrOi8vU3ZnUGFwZXIvLi9qcy9zcmMvYWRqdXN0LXRleHRhcmVhLmpzIiwid2VicGFjazovL1N2Z1BhcGVyLy4vanMvc3JjL3N2Zy1wYXBlci5qcyIsIndlYnBhY2s6Ly9TdmdQYXBlci8uL2pzL3NyYy91dGlsaXR5L2ZpeC10ZXh0LXRyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly9TdmdQYXBlci8uL2pzL3NyYy91dGlsaXR5L3NwbGl0LXN0cmluZy1ieS13aWR0aC5qcyIsIndlYnBhY2s6Ly9TdmdQYXBlci8uL2pzL3NyYy91dGlsaXR5L3N1Yi1zdHJpbmctYnktd2lkdGguanMiLCJ3ZWJwYWNrOi8vU3ZnUGFwZXIvLi9ub2RlX21vZHVsZXMvZW1vamktcmVnZXgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vU3ZnUGFwZXIvLi9ub2RlX21vZHVsZXMvc3RyaW5nLXdpZHRoL2luZGV4LmpzIiwid2VicGFjazovL1N2Z1BhcGVyLy4vbm9kZV9tb2R1bGVzL3N0cmluZy13aWR0aC9ub2RlX21vZHVsZXMvaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vU3ZnUGFwZXIvLi9ub2RlX21vZHVsZXMvc3RyaXAtYW5zaS9pbmRleC5qcyIsIndlYnBhY2s6Ly9TdmdQYXBlci8uL25vZGVfbW9kdWxlcy9zdHJpcC1hbnNpL25vZGVfbW9kdWxlcy9hbnNpLXJlZ2V4L2luZGV4LmpzIiwid2VicGFjazovL1N2Z1BhcGVyLy4vc2Nzcy9zdmctcGFwZXIuc2Nzcz9mOWQyIl0sIm5hbWVzIjpbInBhcGVyUGl4ZWxSYXRpbyIsInNlbGVjdG9yIiwiY29uZmlnIiwiJHRoaXMiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJzdHlsZSIsImRpc3BsYXkiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsInRleHRMZW5ndGgiLCJzZXRBdHRyaWJ1dGUiLCJ3IiwicGFyc2VGbG9hdCIsIngiLCJ5IiwiZ2V0QXR0cmlidXRlIiwibWF0Y2giLCJ0ZXh0U3ZnIiwidGV4dENvbnRlbnQiLCJoZWlnaHQiLCJsaW5lSGVpZ2h0IiwicGFkZGluZ1giLCJwYWRkaW5nWSIsIm5vd3JhcCIsIlJlZ0V4cCIsImNvbnNvbGUiLCJlcnJvciIsIm9yaWdpbmFsRm9udFNpemUiLCJwYXJzZUludCIsImZvbnRTaXplIiwicGh5c2ljYWxMaW5lcyIsInNwbGl0IiwibG9naWNhbExpbmVzIiwibWF4Um93cyIsIk1hdGgiLCJmbG9vciIsIm1heENvbHVtbnMiLCJmb3JFYWNoIiwibGluZSIsImNvbmNhdCIsInNwbGl0U3RyaW5nQnlXaWR0aCIsImxlbmd0aCIsImFkanVzdFkiLCJhZGp1c3RlZFRleHRTdmciLCJmaXhUZXh0VHJhbnNmb3JtIiwicmVwbGFjZSIsInRzcGFuIiwiaSIsIlN2Z1BhcGVyIiwiRXJyb3IiLCJzdmciLCJvdXRlckhUTUwiLCJhZGp1c3RUZXh0UXVlcmllcyIsInNlYXJjaCIsInJlcGxhY2VtZW50Iiwic291cmNlIiwiZmxhZ3MiLCJ1bmRlZmluZWQiLCJ0ZXh0QW5jaG9yIiwicHVzaCIsImRvYyIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsInRleHRFbGVtZW50IiwiaW5uZXJIVE1MIiwiYWRqdXN0VGV4dGFyZWEiLCJxdWVyeSIsIiRzdmciLCJ2aWV3Qm94V2lkdGgiLCJhZGp1c3RUZXh0IiwiZml4ZWRUZXh0U3ZnIiwiZXhwcmVzc2lvbjEiLCJldmFsIiwiZXhwcmVzc2lvbjIiLCJzdHJpbmciLCJzcGxpdHMiLCJzdWJTdHJpbmdCeVdpZHRoIiwic3RhcnQiLCJjdXJyZW50V2lkdGgiLCJzdWJTdHJpbmciLCJjaGFyIiwic3Vic3RyIiwic3RyaW5nV2lkdGgiLCJtb2R1bGUiLCJleHBvcnRzIiwic3RyaXBBbnNpIiwicmVxdWlyZSIsImlzRnVsbHdpZHRoQ29kZVBvaW50IiwiZW1vamlSZWdleCIsImNvZGUiLCJjb2RlUG9pbnRBdCIsImNvZGVQb2ludCIsIk51bWJlciIsImlzTmFOIiwiYW5zaVJlZ2V4Iiwib25seUZpcnN0IiwicGF0dGVybiIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxPO1FDVkE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7O0FDbEZBO0FBQUE7O0FBRWUseUVBQUNBLGVBQUQsRUFBa0JDLFFBQWxCLEVBQTRCQyxNQUE1QixFQUF1QztBQUNwRCxNQUFNQyxLQUFLLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QkosUUFBdkIsQ0FBZDs7QUFFQSxNQUFJLENBQUNFLEtBQUwsRUFBWTtBQUNWO0FBQ0QsR0FMbUQsQ0FPcEQ7OztBQUNBLE1B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