diff --git a/README.md b/v1/README.md similarity index 100% rename from README.md rename to v1/README.md diff --git a/cypress.config.js b/v1/cypress.config.js similarity index 100% rename from cypress.config.js rename to v1/cypress.config.js diff --git a/cypress/e2e/site.cy.js b/v1/cypress/e2e/site.cy.js similarity index 100% rename from cypress/e2e/site.cy.js rename to v1/cypress/e2e/site.cy.js diff --git a/cypress/fixtures/example.json b/v1/cypress/fixtures/example.json similarity index 100% rename from cypress/fixtures/example.json rename to v1/cypress/fixtures/example.json diff --git a/cypress/support/commands.js b/v1/cypress/support/commands.js similarity index 100% rename from cypress/support/commands.js rename to v1/cypress/support/commands.js diff --git a/cypress/support/e2e.js b/v1/cypress/support/e2e.js similarity index 100% rename from cypress/support/e2e.js rename to v1/cypress/support/e2e.js diff --git a/v1/cypress/videos/site.cy.js.mp4 b/v1/cypress/videos/site.cy.js.mp4 new file mode 100644 index 0000000..acb3775 Binary files /dev/null and b/v1/cypress/videos/site.cy.js.mp4 differ diff --git a/v1/docs/.vitepress/cache/deps/_metadata.json b/v1/docs/.vitepress/cache/deps/_metadata.json new file mode 100644 index 0000000..9cca131 --- /dev/null +++ b/v1/docs/.vitepress/cache/deps/_metadata.json @@ -0,0 +1,29 @@ +{ + "hash": "c130b439", + "browserHash": "e375899a", + "optimized": { + "vue": { + "src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js", + "file": "vue.js", + "fileHash": "82d3af82", + "needsInterop": false + }, + "vitepress > @vue/devtools-api": { + "src": "../../../../node_modules/@vue/devtools-api/lib/esm/index.js", + "file": "vitepress___@vue_devtools-api.js", + "fileHash": "ed34a279", + "needsInterop": false + }, + "vue-scrollto": { + "src": "../../../../node_modules/vue-scrollto/vue-scrollto.js", + "file": "vue-scrollto.js", + "fileHash": "0aa6f7a4", + "needsInterop": true + } + }, + "chunks": { + "chunk-76J2PTFD": { + "file": "chunk-76J2PTFD.js" + } + } +} \ No newline at end of file diff --git a/v1/docs/.vitepress/cache/deps/chunk-76J2PTFD.js b/v1/docs/.vitepress/cache/deps/chunk-76J2PTFD.js new file mode 100644 index 0000000..5f61f18 --- /dev/null +++ b/v1/docs/.vitepress/cache/deps/chunk-76J2PTFD.js @@ -0,0 +1,9 @@ +var __getOwnPropNames = Object.getOwnPropertyNames; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; + +export { + __commonJS +}; +//# sourceMappingURL=chunk-76J2PTFD.js.map diff --git a/v1/docs/.vitepress/cache/deps/chunk-76J2PTFD.js.map b/v1/docs/.vitepress/cache/deps/chunk-76J2PTFD.js.map new file mode 100644 index 0000000..9865211 --- /dev/null +++ b/v1/docs/.vitepress/cache/deps/chunk-76J2PTFD.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/v1/docs/.vitepress/cache/deps/package.json b/v1/docs/.vitepress/cache/deps/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/v1/docs/.vitepress/cache/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/v1/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js b/v1/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js new file mode 100644 index 0000000..d2ffbab --- /dev/null +++ b/v1/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js @@ -0,0 +1,164 @@ +import "./chunk-76J2PTFD.js"; + +// node_modules/@vue/devtools-api/lib/esm/env.js +function getDevtoolsGlobalHook() { + return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; +} +function getTarget() { + return typeof navigator !== "undefined" && typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}; +} +var isProxyAvailable = typeof Proxy === "function"; + +// node_modules/@vue/devtools-api/lib/esm/const.js +var HOOK_SETUP = "devtools-plugin:setup"; +var HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set"; + +// node_modules/@vue/devtools-api/lib/esm/time.js +var supported; +var perf; +function isPerformanceSupported() { + var _a; + if (supported !== void 0) { + return supported; + } + if (typeof window !== "undefined" && window.performance) { + supported = true; + perf = window.performance; + } else if (typeof global !== "undefined" && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { + supported = true; + perf = global.perf_hooks.performance; + } else { + supported = false; + } + return supported; +} +function now() { + return isPerformanceSupported() ? perf.now() : Date.now(); +} + +// node_modules/@vue/devtools-api/lib/esm/proxy.js +var ApiProxy = class { + constructor(plugin, hook) { + this.target = null; + this.targetQueue = []; + this.onQueue = []; + this.plugin = plugin; + this.hook = hook; + const defaultSettings = {}; + if (plugin.settings) { + for (const id in plugin.settings) { + const item = plugin.settings[id]; + defaultSettings[id] = item.defaultValue; + } + } + const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; + let currentSettings = Object.assign({}, defaultSettings); + try { + const raw = localStorage.getItem(localSettingsSaveId); + const data = JSON.parse(raw); + Object.assign(currentSettings, data); + } catch (e) { + } + this.fallbacks = { + getSettings() { + return currentSettings; + }, + setSettings(value) { + try { + localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); + } catch (e) { + } + currentSettings = value; + }, + now() { + return now(); + } + }; + if (hook) { + hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { + if (pluginId === this.plugin.id) { + this.fallbacks.setSettings(value); + } + }); + } + this.proxiedOn = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target.on[prop]; + } else { + return (...args) => { + this.onQueue.push({ + method: prop, + args + }); + }; + } + } + }); + this.proxiedTarget = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target[prop]; + } else if (prop === "on") { + return this.proxiedOn; + } else if (Object.keys(this.fallbacks).includes(prop)) { + return (...args) => { + this.targetQueue.push({ + method: prop, + args, + resolve: () => { + } + }); + return this.fallbacks[prop](...args); + }; + } else { + return (...args) => { + return new Promise((resolve) => { + this.targetQueue.push({ + method: prop, + args, + resolve + }); + }); + }; + } + } + }); + } + async setRealTarget(target) { + this.target = target; + for (const item of this.onQueue) { + this.target.on[item.method](...item.args); + } + for (const item of this.targetQueue) { + item.resolve(await this.target[item.method](...item.args)); + } + } +}; + +// node_modules/@vue/devtools-api/lib/esm/index.js +function setupDevtoolsPlugin(pluginDescriptor, setupFn) { + const descriptor = pluginDescriptor; + const target = getTarget(); + const hook = getDevtoolsGlobalHook(); + const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy; + if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { + hook.emit(HOOK_SETUP, pluginDescriptor, setupFn); + } else { + const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null; + const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; + list.push({ + pluginDescriptor: descriptor, + setupFn, + proxy + }); + if (proxy) + setupFn(proxy.proxiedTarget); + } +} +export { + isPerformanceSupported, + now, + setupDevtoolsPlugin +}; +//# sourceMappingURL=vitepress___@vue_devtools-api.js.map diff --git a/v1/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map b/v1/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map new file mode 100644 index 0000000..aa852e3 --- /dev/null +++ b/v1/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../node_modules/@vue/devtools-api/lib/esm/env.js", "../../../../node_modules/@vue/devtools-api/lib/esm/const.js", "../../../../node_modules/@vue/devtools-api/lib/esm/time.js", "../../../../node_modules/@vue/devtools-api/lib/esm/proxy.js", "../../../../node_modules/@vue/devtools-api/lib/esm/index.js"], + "sourcesContent": ["export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-ignore\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n", "export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n", "let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = global.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n", "import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return now();\n },\n };\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise(resolve => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n", "import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy)\n setupFn(proxy.proxiedTarget);\n }\n}\n"], + "mappings": "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", + "names": [] +} diff --git a/v1/docs/.vitepress/cache/deps/vue-scrollto.js b/v1/docs/.vitepress/cache/deps/vue-scrollto.js new file mode 100644 index 0000000..5f09cf3 --- /dev/null +++ b/v1/docs/.vitepress/cache/deps/vue-scrollto.js @@ -0,0 +1,454 @@ +import { + __commonJS +} from "./chunk-76J2PTFD.js"; + +// node_modules/vue-scrollto/vue-scrollto.js +var require_vue_scrollto = __commonJS({ + "node_modules/vue-scrollto/vue-scrollto.js"(exports, module) { + (function(global, factory) { + typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, global["vue-scrollto"] = factory()); + })(exports, function() { + "use strict"; + function _typeof(obj) { + "@babel/helpers - typeof"; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function(obj2) { + return typeof obj2; + }; + } else { + _typeof = function(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }; + } + return _typeof(obj); + } + function _extends() { + _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; + }; + return _extends.apply(this, arguments); + } + var NEWTON_ITERATIONS = 4; + var NEWTON_MIN_SLOPE = 1e-3; + var SUBDIVISION_PRECISION = 1e-7; + var SUBDIVISION_MAX_ITERATIONS = 10; + var kSplineTableSize = 11; + var kSampleStepSize = 1 / (kSplineTableSize - 1); + var float32ArraySupported = typeof Float32Array === "function"; + function A(aA1, aA2) { + return 1 - 3 * aA2 + 3 * aA1; + } + function B(aA1, aA2) { + return 3 * aA2 - 6 * aA1; + } + function C(aA1) { + return 3 * aA1; + } + function calcBezier(aT, aA1, aA2) { + return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; + } + function getSlope(aT, aA1, aA2) { + return 3 * A(aA1, aA2) * aT * aT + 2 * B(aA1, aA2) * aT + C(aA1); + } + function binarySubdivide(aX, aA, aB, mX1, mX2) { + var currentX, currentT, i = 0; + do { + currentT = aA + (aB - aA) / 2; + currentX = calcBezier(currentT, mX1, mX2) - aX; + if (currentX > 0) { + aB = currentT; + } else { + aA = currentT; + } + } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); + return currentT; + } + function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) { + for (var i = 0; i < NEWTON_ITERATIONS; ++i) { + var currentSlope = getSlope(aGuessT, mX1, mX2); + if (currentSlope === 0) { + return aGuessT; + } + var currentX = calcBezier(aGuessT, mX1, mX2) - aX; + aGuessT -= currentX / currentSlope; + } + return aGuessT; + } + function LinearEasing(x) { + return x; + } + var src = function bezier(mX1, mY1, mX2, mY2) { + if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { + throw new Error("bezier x values must be in [0, 1] range"); + } + if (mX1 === mY1 && mX2 === mY2) { + return LinearEasing; + } + var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); + for (var i = 0; i < kSplineTableSize; ++i) { + sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); + } + function getTForX(aX) { + var intervalStart = 0; + var currentSample = 1; + var lastSample = kSplineTableSize - 1; + for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) { + intervalStart += kSampleStepSize; + } + --currentSample; + var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]); + var guessForT = intervalStart + dist * kSampleStepSize; + var initialSlope = getSlope(guessForT, mX1, mX2); + if (initialSlope >= NEWTON_MIN_SLOPE) { + return newtonRaphsonIterate(aX, guessForT, mX1, mX2); + } else if (initialSlope === 0) { + return guessForT; + } else { + return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); + } + } + return function BezierEasing(x) { + if (x === 0) { + return 0; + } + if (x === 1) { + return 1; + } + return calcBezier(getTForX(x), mY1, mY2); + }; + }; + var easings = { + ease: [0.25, 0.1, 0.25, 1], + linear: [0, 0, 1, 1], + "ease-in": [0.42, 0, 1, 1], + "ease-out": [0, 0, 0.58, 1], + "ease-in-out": [0.42, 0, 0.58, 1] + }; + var supportsPassive = false; + try { + var opts = Object.defineProperty({}, "passive", { + get: function get() { + supportsPassive = true; + } + }); + window.addEventListener("test", null, opts); + } catch (e) { + } + var _ = { + $: function $(selector) { + if (typeof selector !== "string") { + return selector; + } + return document.querySelector(selector); + }, + on: function on(element, events, handler) { + var opts2 = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : { + passive: false + }; + if (!(events instanceof Array)) { + events = [events]; + } + for (var i = 0; i < events.length; i++) { + element.addEventListener(events[i], handler, supportsPassive ? opts2 : false); + } + }, + off: function off(element, events, handler) { + if (!(events instanceof Array)) { + events = [events]; + } + for (var i = 0; i < events.length; i++) { + element.removeEventListener(events[i], handler); + } + }, + cumulativeOffset: function cumulativeOffset(element) { + var top = 0; + var left = 0; + do { + top += element.offsetTop || 0; + left += element.offsetLeft || 0; + element = element.offsetParent; + } while (element); + return { + top, + left + }; + } + }; + var abortEvents = ["mousedown", "wheel", "DOMMouseScroll", "mousewheel", "keyup", "touchmove"]; + var defaults = { + container: "body", + duration: 500, + lazy: true, + easing: "ease", + offset: 0, + force: true, + cancelable: true, + onStart: false, + onDone: false, + onCancel: false, + x: false, + y: true + }; + function setDefaults(options) { + defaults = _extends({}, defaults, options); + } + var scroller = function scroller2() { + var element; + var container; + var duration; + var easing; + var lazy; + var offset; + var force; + var cancelable; + var onStart; + var onDone; + var onCancel; + var x; + var y; + var initialX; + var targetX; + var initialY; + var targetY; + var diffX; + var diffY; + var abort; + var cumulativeOffsetContainer; + var cumulativeOffsetElement; + var abortEv; + var abortFn = function abortFn2(e) { + if (!cancelable) + return; + abortEv = e; + abort = true; + }; + var easingFn; + var timeStart; + var timeElapsed; + var progress; + function scrollTop(container2) { + var scrollTop2 = container2.scrollTop; + if (container2.tagName.toLowerCase() === "body") { + scrollTop2 = scrollTop2 || document.documentElement.scrollTop; + } + return scrollTop2; + } + function scrollLeft(container2) { + var scrollLeft2 = container2.scrollLeft; + if (container2.tagName.toLowerCase() === "body") { + scrollLeft2 = scrollLeft2 || document.documentElement.scrollLeft; + } + return scrollLeft2; + } + function recalculateTargets() { + cumulativeOffsetContainer = _.cumulativeOffset(container); + cumulativeOffsetElement = _.cumulativeOffset(element); + if (x) { + targetX = cumulativeOffsetElement.left - cumulativeOffsetContainer.left + offset; + diffX = targetX - initialX; + } + if (y) { + targetY = cumulativeOffsetElement.top - cumulativeOffsetContainer.top + offset; + diffY = targetY - initialY; + } + } + function step(timestamp) { + if (abort) + return done(); + if (!timeStart) + timeStart = timestamp; + if (!lazy) { + recalculateTargets(); + } + timeElapsed = timestamp - timeStart; + progress = Math.min(timeElapsed / duration, 1); + progress = easingFn(progress); + topLeft(container, initialY + diffY * progress, initialX + diffX * progress); + timeElapsed < duration ? window.requestAnimationFrame(step) : done(); + } + function done() { + if (!abort) + topLeft(container, targetY, targetX); + timeStart = false; + _.off(container, abortEvents, abortFn); + if (abort && onCancel) + onCancel(abortEv, element); + if (!abort && onDone) + onDone(element); + } + function topLeft(element2, top, left) { + if (y) + element2.scrollTop = top; + if (x) + element2.scrollLeft = left; + if (element2.tagName.toLowerCase() === "body") { + if (y) + document.documentElement.scrollTop = top; + if (x) + document.documentElement.scrollLeft = left; + } + } + function scrollTo(target, _duration) { + var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (_typeof(_duration) === "object") { + options = _duration; + } else if (typeof _duration === "number") { + options.duration = _duration; + } + element = _.$(target); + if (!element) { + return console.warn("[vue-scrollto warn]: Trying to scroll to an element that is not on the page: " + target); + } + container = _.$(options.container || defaults.container); + duration = options.hasOwnProperty("duration") ? options.duration : defaults.duration; + lazy = options.hasOwnProperty("lazy") ? options.lazy : defaults.lazy; + easing = options.easing || defaults.easing; + offset = options.hasOwnProperty("offset") ? options.offset : defaults.offset; + force = options.hasOwnProperty("force") ? options.force !== false : defaults.force; + cancelable = options.hasOwnProperty("cancelable") ? options.cancelable !== false : defaults.cancelable; + onStart = options.onStart || defaults.onStart; + onDone = options.onDone || defaults.onDone; + onCancel = options.onCancel || defaults.onCancel; + x = options.x === void 0 ? defaults.x : options.x; + y = options.y === void 0 ? defaults.y : options.y; + if (typeof offset === "function") { + offset = offset(element, container); + } + initialX = scrollLeft(container); + initialY = scrollTop(container); + recalculateTargets(); + abort = false; + if (!force) { + var containerHeight = container.tagName.toLowerCase() === "body" ? document.documentElement.clientHeight || window.innerHeight : container.offsetHeight; + var containerTop = initialY; + var containerBottom = containerTop + containerHeight; + var elementTop = targetY - offset; + var elementBottom = elementTop + element.offsetHeight; + if (elementTop >= containerTop && elementBottom <= containerBottom) { + if (onDone) + onDone(element); + return; + } + } + if (onStart) + onStart(element); + if (!diffY && !diffX) { + if (onDone) + onDone(element); + return; + } + if (typeof easing === "string") { + easing = easings[easing] || easings["ease"]; + } + easingFn = src.apply(src, easing); + _.on(container, abortEvents, abortFn, { + passive: true + }); + window.requestAnimationFrame(step); + return function() { + abortEv = null; + abort = true; + }; + } + return scrollTo; + }; + var _scroller = scroller(); + var bindings = []; + function deleteBinding(el) { + for (var i = 0; i < bindings.length; ++i) { + if (bindings[i].el === el) { + bindings.splice(i, 1); + return true; + } + } + return false; + } + function findBinding(el) { + for (var i = 0; i < bindings.length; ++i) { + if (bindings[i].el === el) { + return bindings[i]; + } + } + } + function getBinding(el) { + var binding = findBinding(el); + if (binding) { + return binding; + } + bindings.push(binding = { + el, + binding: {} + }); + return binding; + } + function handleClick(e) { + var ctx = getBinding(this).binding; + if (!ctx.value) + return; + e.preventDefault(); + if (typeof ctx.value === "string") { + return _scroller(ctx.value); + } + _scroller(ctx.value.el || ctx.value.element, ctx.value); + } + var directiveHooks = { + bind: function bind(el, binding) { + getBinding(el).binding = binding; + _.on(el, "click", handleClick); + }, + unbind: function unbind(el) { + deleteBinding(el); + _.off(el, "click", handleClick); + }, + update: function update(el, binding) { + getBinding(el).binding = binding; + } + }; + var VueScrollTo = { + bind: directiveHooks.bind, + unbind: directiveHooks.unbind, + update: directiveHooks.update, + beforeMount: directiveHooks.bind, + unmounted: directiveHooks.unbind, + updated: directiveHooks.update, + scrollTo: _scroller, + bindings + }; + var install = function install2(Vue, options) { + if (options) + setDefaults(options); + Vue.directive("scroll-to", VueScrollTo); + var properties = Vue.config.globalProperties || Vue.prototype; + properties.$scrollTo = VueScrollTo.scrollTo; + }; + if (typeof window !== "undefined" && window.Vue) { + window.VueScrollTo = VueScrollTo; + window.VueScrollTo.setDefaults = setDefaults; + window.VueScrollTo.scroller = scroller; + if (window.Vue.use) + window.Vue.use(install); + } + VueScrollTo.install = install; + return VueScrollTo; + }); + } +}); +export default require_vue_scrollto(); +/*! Bundled license information: + +vue-scrollto/vue-scrollto.js: + (*! + * vue-scrollto v2.20.0 + * (c) 2019 Randjelovic Igor + * @license MIT + *) +*/ +//# sourceMappingURL=vue-scrollto.js.map diff --git a/v1/docs/.vitepress/cache/deps/vue-scrollto.js.map b/v1/docs/.vitepress/cache/deps/vue-scrollto.js.map new file mode 100644 index 0000000..74952af --- /dev/null +++ b/v1/docs/.vitepress/cache/deps/vue-scrollto.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../node_modules/vue-scrollto/vue-scrollto.js"], + "sourcesContent": ["/*!\n * vue-scrollto v2.20.0\n * (c) 2019 Randjelovic Igor\n * @license MIT\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global['vue-scrollto'] = factory());\n}(this, (function () { 'use strict';\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n /**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\n function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\n function C (aA1) { return 3.0 * aA1; }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\n function binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n }\n\n function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function LinearEasing (x) {\n return x;\n }\n\n var src = function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n };\n\n var easings = {\n ease: [0.25, 0.1, 0.25, 1.0],\n linear: [0.0, 0.0, 1.0, 1.0],\n 'ease-in': [0.42, 0.0, 1.0, 1.0],\n 'ease-out': [0.0, 0.0, 0.58, 1.0],\n 'ease-in-out': [0.42, 0.0, 0.58, 1.0]\n };\n\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n\n var _ = {\n $: function $(selector) {\n if (typeof selector !== 'string') {\n return selector;\n }\n\n return document.querySelector(selector);\n },\n on: function on(element, events, handler) {\n var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n passive: false\n };\n\n if (!(events instanceof Array)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n element.addEventListener(events[i], handler, supportsPassive ? opts : false);\n }\n },\n off: function off(element, events, handler) {\n if (!(events instanceof Array)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n element.removeEventListener(events[i], handler);\n }\n },\n cumulativeOffset: function cumulativeOffset(element) {\n var top = 0;\n var left = 0;\n\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n\n return {\n top: top,\n left: left\n };\n }\n };\n\n var abortEvents = ['mousedown', 'wheel', 'DOMMouseScroll', 'mousewheel', 'keyup', 'touchmove'];\n var defaults = {\n container: 'body',\n duration: 500,\n lazy: true,\n easing: 'ease',\n offset: 0,\n force: true,\n cancelable: true,\n onStart: false,\n onDone: false,\n onCancel: false,\n x: false,\n y: true\n };\n function setDefaults(options) {\n defaults = _extends({}, defaults, options);\n }\n var scroller = function scroller() {\n var element; // element to scroll to\n\n var container; // container to scroll\n\n var duration; // duration of the scrolling\n\n var easing; // easing to be used when scrolling\n\n var lazy; // checks the target position at each step\n\n var offset; // offset to be added (subtracted)\n\n var force; // force scroll, even if element is visible\n\n var cancelable; // indicates if user can cancel the scroll or not.\n\n var onStart; // callback when scrolling is started\n\n var onDone; // callback when scrolling is done\n\n var onCancel; // callback when scrolling is canceled / aborted\n\n var x; // scroll on x axis\n\n var y; // scroll on y axis\n\n var initialX; // initial X of container\n\n var targetX; // target X of container\n\n var initialY; // initial Y of container\n\n var targetY; // target Y of container\n\n var diffX; // difference\n\n var diffY; // difference\n\n var abort; // is scrolling aborted\n\n var cumulativeOffsetContainer;\n var cumulativeOffsetElement;\n var abortEv; // event that aborted scrolling\n\n var abortFn = function abortFn(e) {\n if (!cancelable) return;\n abortEv = e;\n abort = true;\n };\n\n var easingFn;\n var timeStart; // time when scrolling started\n\n var timeElapsed; // time elapsed since scrolling started\n\n var progress; // progress\n\n function scrollTop(container) {\n var scrollTop = container.scrollTop;\n\n if (container.tagName.toLowerCase() === 'body') {\n // in firefox body.scrollTop always returns 0\n // thus if we are trying to get scrollTop on a body tag\n // we need to get it from the documentElement\n scrollTop = scrollTop || document.documentElement.scrollTop;\n }\n\n return scrollTop;\n }\n\n function scrollLeft(container) {\n var scrollLeft = container.scrollLeft;\n\n if (container.tagName.toLowerCase() === 'body') {\n // in firefox body.scrollLeft always returns 0\n // thus if we are trying to get scrollLeft on a body tag\n // we need to get it from the documentElement\n scrollLeft = scrollLeft || document.documentElement.scrollLeft;\n }\n\n return scrollLeft;\n }\n\n function recalculateTargets() {\n cumulativeOffsetContainer = _.cumulativeOffset(container);\n cumulativeOffsetElement = _.cumulativeOffset(element);\n\n if (x) {\n targetX = cumulativeOffsetElement.left - cumulativeOffsetContainer.left + offset;\n diffX = targetX - initialX;\n }\n\n if (y) {\n targetY = cumulativeOffsetElement.top - cumulativeOffsetContainer.top + offset;\n diffY = targetY - initialY;\n }\n }\n\n function step(timestamp) {\n if (abort) return done();\n if (!timeStart) timeStart = timestamp; // When a site has a lot of media that can be loaded asynchronously,\n // the targetY/targetX may end up in the wrong place during scrolling.\n // So we will check this at each step\n\n if (!lazy) {\n recalculateTargets();\n }\n\n timeElapsed = timestamp - timeStart;\n progress = Math.min(timeElapsed / duration, 1);\n progress = easingFn(progress);\n topLeft(container, initialY + diffY * progress, initialX + diffX * progress);\n timeElapsed < duration ? window.requestAnimationFrame(step) : done();\n }\n\n function done() {\n if (!abort) topLeft(container, targetY, targetX);\n timeStart = false;\n\n _.off(container, abortEvents, abortFn);\n\n if (abort && onCancel) onCancel(abortEv, element);\n if (!abort && onDone) onDone(element);\n }\n\n function topLeft(element, top, left) {\n if (y) element.scrollTop = top;\n if (x) element.scrollLeft = left;\n\n if (element.tagName.toLowerCase() === 'body') {\n // in firefox body.scrollTop doesn't scroll the page\n // thus if we are trying to scrollTop on a body tag\n // we need to scroll on the documentElement\n if (y) document.documentElement.scrollTop = top;\n if (x) document.documentElement.scrollLeft = left;\n }\n }\n\n function scrollTo(target, _duration) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (_typeof(_duration) === 'object') {\n options = _duration;\n } else if (typeof _duration === 'number') {\n options.duration = _duration;\n }\n\n element = _.$(target);\n\n if (!element) {\n return console.warn('[vue-scrollto warn]: Trying to scroll to an element that is not on the page: ' + target);\n }\n\n container = _.$(options.container || defaults.container);\n duration = options.hasOwnProperty('duration') ? options.duration : defaults.duration;\n lazy = options.hasOwnProperty('lazy') ? options.lazy : defaults.lazy;\n easing = options.easing || defaults.easing;\n offset = options.hasOwnProperty('offset') ? options.offset : defaults.offset;\n force = options.hasOwnProperty('force') ? options.force !== false : defaults.force;\n cancelable = options.hasOwnProperty('cancelable') ? options.cancelable !== false : defaults.cancelable;\n onStart = options.onStart || defaults.onStart;\n onDone = options.onDone || defaults.onDone;\n onCancel = options.onCancel || defaults.onCancel;\n x = options.x === undefined ? defaults.x : options.x;\n y = options.y === undefined ? defaults.y : options.y;\n\n if (typeof offset === 'function') {\n offset = offset(element, container);\n }\n\n initialX = scrollLeft(container);\n initialY = scrollTop(container); // calculates cumulative offsets and targetX/Y + diffX/Y\n\n recalculateTargets();\n abort = false;\n\n if (!force) {\n // When the container is the default (body) we need to use the viewport\n // height, not the entire body height\n var containerHeight = container.tagName.toLowerCase() === 'body' ? document.documentElement.clientHeight || window.innerHeight : container.offsetHeight;\n var containerTop = initialY;\n var containerBottom = containerTop + containerHeight;\n var elementTop = targetY - offset;\n var elementBottom = elementTop + element.offsetHeight;\n\n if (elementTop >= containerTop && elementBottom <= containerBottom) {\n // make sure to call the onDone callback even if there is no need to\n // scroll the container. Fixes #111 (ref #118)\n if (onDone) onDone(element);\n return;\n }\n }\n\n if (onStart) onStart(element);\n\n if (!diffY && !diffX) {\n if (onDone) onDone(element);\n return;\n }\n\n if (typeof easing === 'string') {\n easing = easings[easing] || easings['ease'];\n }\n\n easingFn = src.apply(src, easing);\n\n _.on(container, abortEvents, abortFn, {\n passive: true\n });\n\n window.requestAnimationFrame(step);\n return function () {\n abortEv = null;\n abort = true;\n };\n }\n\n return scrollTo;\n };\n\n var _scroller = scroller();\n\n var bindings = []; // store binding data\n\n function deleteBinding(el) {\n for (var i = 0; i < bindings.length; ++i) {\n if (bindings[i].el === el) {\n bindings.splice(i, 1);\n return true;\n }\n }\n\n return false;\n }\n\n function findBinding(el) {\n for (var i = 0; i < bindings.length; ++i) {\n if (bindings[i].el === el) {\n return bindings[i];\n }\n }\n }\n\n function getBinding(el) {\n var binding = findBinding(el);\n\n if (binding) {\n return binding;\n }\n\n bindings.push(binding = {\n el: el,\n binding: {}\n });\n return binding;\n }\n\n function handleClick(e) {\n var ctx = getBinding(this).binding;\n if (!ctx.value) return;\n e.preventDefault();\n\n if (typeof ctx.value === 'string') {\n return _scroller(ctx.value);\n }\n\n _scroller(ctx.value.el || ctx.value.element, ctx.value);\n }\n\n var directiveHooks = {\n bind: function bind(el, binding) {\n getBinding(el).binding = binding;\n\n _.on(el, 'click', handleClick);\n },\n unbind: function unbind(el) {\n deleteBinding(el);\n\n _.off(el, 'click', handleClick);\n },\n update: function update(el, binding) {\n getBinding(el).binding = binding;\n }\n };\n var VueScrollTo = {\n bind: directiveHooks.bind,\n unbind: directiveHooks.unbind,\n update: directiveHooks.update,\n beforeMount: directiveHooks.bind,\n unmounted: directiveHooks.unbind,\n updated: directiveHooks.update,\n scrollTo: _scroller,\n bindings: bindings\n };\n\n var install = function install(Vue, options) {\n if (options) setDefaults(options);\n Vue.directive('scroll-to', VueScrollTo);\n var properties = Vue.config.globalProperties || Vue.prototype;\n properties.$scrollTo = VueScrollTo.scrollTo;\n };\n\n if (typeof window !== 'undefined' && window.Vue) {\n window.VueScrollTo = VueScrollTo;\n window.VueScrollTo.setDefaults = setDefaults;\n window.VueScrollTo.scroller = scroller;\n if (window.Vue.use) window.Vue.use(install);\n }\n\n VueScrollTo.install = install;\n\n return VueScrollTo;\n\n})));\n"], + "mappings": "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", + "names": ["obj", "opts", "scroller", "abortFn", "container", "scrollTop", "scrollLeft", "element", "install"] +} diff --git a/v1/docs/.vitepress/cache/deps/vue.js b/v1/docs/.vitepress/cache/deps/vue.js new file mode 100644 index 0000000..4de0523 --- /dev/null +++ b/v1/docs/.vitepress/cache/deps/vue.js @@ -0,0 +1,10797 @@ +import "./chunk-76J2PTFD.js"; + +// node_modules/@vue/shared/dist/shared.esm-bundler.js +function makeMap(str, expectsLowerCase) { + const map2 = /* @__PURE__ */ Object.create(null); + const list = str.split(","); + for (let i = 0; i < list.length; i++) { + map2[list[i]] = true; + } + return expectsLowerCase ? (val) => !!map2[val.toLowerCase()] : (val) => !!map2[val]; +} +var EMPTY_OBJ = true ? Object.freeze({}) : {}; +var EMPTY_ARR = true ? Object.freeze([]) : []; +var NOOP = () => { +}; +var NO = () => false; +var onRE = /^on[^a-z]/; +var isOn = (key) => onRE.test(key); +var isModelListener = (key) => key.startsWith("onUpdate:"); +var extend = Object.assign; +var remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var hasOwn = (val, key) => hasOwnProperty.call(val, key); +var isArray = Array.isArray; +var isMap = (val) => toTypeString(val) === "[object Map]"; +var isSet = (val) => toTypeString(val) === "[object Set]"; +var isDate = (val) => toTypeString(val) === "[object Date]"; +var isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +var isFunction = (val) => typeof val === "function"; +var isString = (val) => typeof val === "string"; +var isSymbol = (val) => typeof val === "symbol"; +var isObject = (val) => val !== null && typeof val === "object"; +var isPromise = (val) => { + return isObject(val) && isFunction(val.then) && isFunction(val.catch); +}; +var objectToString = Object.prototype.toString; +var toTypeString = (value) => objectToString.call(value); +var toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +var isPlainObject = (val) => toTypeString(val) === "[object Object]"; +var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +var isReservedProp = makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +var isBuiltInDirective = makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +var cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +var camelizeRE = /-(\w)/g; +var camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +var hyphenateRE = /\B([A-Z])/g; +var hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +var capitalize = cacheStringFunction( + (str) => str.charAt(0).toUpperCase() + str.slice(1) +); +var toHandlerKey = cacheStringFunction( + (str) => str ? `on${capitalize(str)}` : `` +); +var hasChanged = (value, oldValue) => !Object.is(value, oldValue); +var invokeArrayFns = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } +}; +var def = (obj, key, value) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + value + }); +}; +var looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +var toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +var _globalThis; +var getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +var GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console"; +var isGloballyWhitelisted = makeMap(GLOBALS_WHITE_LISTED); +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value)) { + return value; + } else if (isObject(value)) { + return value; + } +} +var listDelimiterRE = /;(?![^(]*\))/g; +var propertyDelimiterRE = /:([^]+)/; +var styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) + return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} +var HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +var SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +var VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +var isHTMLTag = makeMap(HTML_TAGS); +var isSVGTag = makeMap(SVG_TAGS); +var isVoidTag = makeMap(VOID_TAGS); +var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +var isSpecialBooleanAttr = makeMap(specialBooleanAttrs); +var isBooleanAttr = makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +var isKnownHtmlAttr = makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +var isKnownSvgAttr = makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); +function looseCompareArrays(a, b) { + if (a.length !== b.length) + return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) + return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} +var toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); +}; +var replacer = (_key, val) => { + if (val && val.__v_isRef) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => { + entries[`${key} =>`] = val2; + return entries; + }, {}) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()] + }; + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; + +// node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js +function warn(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} +var activeEffectScope; +var EffectScope = class { + constructor(detached = false) { + this.detached = detached; + this._active = true; + this.effects = []; + this.cleanups = []; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else if (true) { + warn(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this._active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + this._active = false; + } + } +}; +function effectScope(detached) { + return new EffectScope(detached); +} +function recordEffectScope(effect2, scope = activeEffectScope) { + if (scope && scope.active) { + scope.effects.push(effect2); + } +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else if (true) { + warn( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} +var createDep = (effects) => { + const dep = new Set(effects); + dep.w = 0; + dep.n = 0; + return dep; +}; +var wasTracked = (dep) => (dep.w & trackOpBit) > 0; +var newTracked = (dep) => (dep.n & trackOpBit) > 0; +var initDepMarkers = ({ deps }) => { + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].w |= trackOpBit; + } + } +}; +var finalizeDepMarkers = (effect2) => { + const { deps } = effect2; + if (deps.length) { + let ptr = 0; + for (let i = 0; i < deps.length; i++) { + const dep = deps[i]; + if (wasTracked(dep) && !newTracked(dep)) { + dep.delete(effect2); + } else { + deps[ptr++] = dep; + } + dep.w &= ~trackOpBit; + dep.n &= ~trackOpBit; + } + deps.length = ptr; + } +}; +var targetMap = /* @__PURE__ */ new WeakMap(); +var effectTrackDepth = 0; +var trackOpBit = 1; +var maxMarkerBits = 30; +var activeEffect; +var ITERATE_KEY = Symbol(true ? "iterate" : ""); +var MAP_KEY_ITERATE_KEY = Symbol(true ? "Map key iterate" : ""); +var ReactiveEffect = class { + constructor(fn, scheduler = null, scope) { + this.fn = fn; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + this.parent = void 0; + recordEffectScope(this, scope); + } + run() { + if (!this.active) { + return this.fn(); + } + let parent = activeEffect; + let lastShouldTrack = shouldTrack; + while (parent) { + if (parent === this) { + return; + } + parent = parent.parent; + } + try { + this.parent = activeEffect; + activeEffect = this; + shouldTrack = true; + trackOpBit = 1 << ++effectTrackDepth; + if (effectTrackDepth <= maxMarkerBits) { + initDepMarkers(this); + } else { + cleanupEffect(this); + } + return this.fn(); + } finally { + if (effectTrackDepth <= maxMarkerBits) { + finalizeDepMarkers(this); + } + trackOpBit = 1 << --effectTrackDepth; + activeEffect = this.parent; + shouldTrack = lastShouldTrack; + this.parent = void 0; + if (this.deferStop) { + this.stop(); + } + } + } + stop() { + if (activeEffect === this) { + this.deferStop = true; + } else if (this.active) { + cleanupEffect(this); + if (this.onStop) { + this.onStop(); + } + this.active = false; + } + } +}; +function cleanupEffect(effect2) { + const { deps } = effect2; + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].delete(effect2); + } + deps.length = 0; + } +} +function effect(fn, options) { + if (fn.effect) { + fn = fn.effect.fn; + } + const _effect = new ReactiveEffect(fn); + if (options) { + extend(_effect, options); + if (options.scope) + recordEffectScope(_effect, options.scope); + } + if (!options || !options.lazy) { + _effect.run(); + } + const runner = _effect.run.bind(_effect); + runner.effect = _effect; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +var shouldTrack = true; +var trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function track(target, type, key) { + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = createDep()); + } + const eventInfo = true ? { effect: activeEffect, target, type, key } : void 0; + trackEffects(dep, eventInfo); + } +} +function trackEffects(dep, debuggerEventExtraInfo) { + let shouldTrack2 = false; + if (effectTrackDepth <= maxMarkerBits) { + if (!newTracked(dep)) { + dep.n |= trackOpBit; + shouldTrack2 = !wasTracked(dep); + } + } else { + shouldTrack2 = !dep.has(activeEffect); + } + if (shouldTrack2) { + dep.add(activeEffect); + activeEffect.deps.push(dep); + if (activeEffect.onTrack) { + activeEffect.onTrack( + extend( + { + effect: activeEffect + }, + debuggerEventExtraInfo + ) + ); + } + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + return; + } + let deps = []; + if (type === "clear") { + deps = [...depsMap.values()]; + } else if (key === "length" && isArray(target)) { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 >= newLength) { + deps.push(dep); + } + }); + } else { + if (key !== void 0) { + deps.push(depsMap.get(key)); + } + switch (type) { + case "add": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isIntegerKey(key)) { + deps.push(depsMap.get("length")); + } + break; + case "delete": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } + break; + } + } + const eventInfo = true ? { target, type, key, newValue, oldValue, oldTarget } : void 0; + if (deps.length === 1) { + if (deps[0]) { + if (true) { + triggerEffects(deps[0], eventInfo); + } else { + triggerEffects(deps[0]); + } + } + } else { + const effects = []; + for (const dep of deps) { + if (dep) { + effects.push(...dep); + } + } + if (true) { + triggerEffects(createDep(effects), eventInfo); + } else { + triggerEffects(createDep(effects)); + } + } +} +function triggerEffects(dep, debuggerEventExtraInfo) { + const effects = isArray(dep) ? dep : [...dep]; + for (const effect2 of effects) { + if (effect2.computed) { + triggerEffect(effect2, debuggerEventExtraInfo); + } + } + for (const effect2 of effects) { + if (!effect2.computed) { + triggerEffect(effect2, debuggerEventExtraInfo); + } + } +} +function triggerEffect(effect2, debuggerEventExtraInfo) { + if (effect2 !== activeEffect || effect2.allowRecurse) { + if (effect2.onTrigger) { + effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + if (effect2.scheduler) { + effect2.scheduler(); + } else { + effect2.run(); + } + } +} +function getDepFromReactive(object, key) { + var _a; + return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key); +} +var isNonTrackableKeys = makeMap(`__proto__,__v_isRef,__isVue`); +var builtInSymbols = new Set( + Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +var get$1 = createGetter(); +var shallowGet = createGetter(false, true); +var readonlyGet = createGetter(true); +var shallowReadonlyGet = createGetter(true, true); +var arrayInstrumentations = createArrayInstrumentations(); +function createArrayInstrumentations() { + const instrumentations = {}; + ["includes", "indexOf", "lastIndexOf"].forEach((key) => { + instrumentations[key] = function(...args) { + const arr = toRaw(this); + for (let i = 0, l = this.length; i < l; i++) { + track(arr, "get", i + ""); + } + const res = arr[key](...args); + if (res === -1 || res === false) { + return arr[key](...args.map(toRaw)); + } else { + return res; + } + }; + }); + ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { + instrumentations[key] = function(...args) { + pauseTracking(); + const res = toRaw(this)[key].apply(this, args); + resetTracking(); + return res; + }; + }); + return instrumentations; +} +function hasOwnProperty2(key) { + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +function createGetter(isReadonly2 = false, shallow = false) { + return function get2(target, key, receiver) { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return shallow; + } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { + return target; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + if (targetIsArray && hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + if (key === "hasOwnProperty") { + return hasOwnProperty2; + } + } + const res = Reflect.get(target, key, receiver); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (shallow) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + }; +} +var set$1 = createSetter(); +var shallowSet = createSetter(true); +function createSetter(shallow = false) { + return function set2(target, key, value, receiver) { + let oldValue = target[key]; + if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) { + return false; + } + if (!shallow) { + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set(target, key, value, receiver); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + }; +} +function deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; +} +function has$1(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; +} +function ownKeys(target) { + track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY); + return Reflect.ownKeys(target); +} +var mutableHandlers = { + get: get$1, + set: set$1, + deleteProperty, + has: has$1, + ownKeys +}; +var readonlyHandlers = { + get: readonlyGet, + set(target, key) { + if (true) { + warn( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + }, + deleteProperty(target, key) { + if (true) { + warn( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +}; +var shallowReactiveHandlers = extend( + {}, + mutableHandlers, + { + get: shallowGet, + set: shallowSet + } +); +var shallowReadonlyHandlers = extend( + {}, + readonlyHandlers, + { + get: shallowReadonlyGet + } +); +var toShallow = (value) => value; +var getProto = (v) => Reflect.getPrototypeOf(v); +function get(target, key, isReadonly2 = false, isShallow3 = false) { + target = target["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly2) { + if (key !== rawKey) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has: has2 } = getProto(rawTarget); + const wrap = isShallow3 ? toShallow : isReadonly2 ? toReadonly : toReactive; + if (has2.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has2.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } +} +function has(key, isReadonly2 = false) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly2) { + if (key !== rawKey) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); +} +function size(target, isReadonly2 = false) { + target = target["__v_raw"]; + !isReadonly2 && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); +} +function add(value) { + value = toRaw(value); + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; +} +function set(key, value) { + value = toRaw(value); + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else if (true) { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; +} +function deleteEntry(key) { + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else if (true) { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2 ? get2.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; +} +function clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0; + const result = target.clear(); + if (hadItems) { + trigger(target, "clear", void 0, void 0, oldTarget); + } + return result; +} +function createForEach(isReadonly2, isShallow3) { + return function forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = isShallow3 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; +} +function createIterableMethod(method, isReadonly2, isShallow3) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow3 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + if (true) { + const key = args[0] ? `on key "${args[0]}" ` : ``; + console.warn( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : this; + }; +} +function createInstrumentations() { + const mutableInstrumentations2 = { + get(key) { + return get(this, key); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, false) + }; + const shallowInstrumentations2 = { + get(key) { + return get(this, key, false, true); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, true) + }; + const readonlyInstrumentations2 = { + get(key) { + return get(this, key, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, false) + }; + const shallowReadonlyInstrumentations2 = { + get(key) { + return get(this, key, true, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, true) + }; + const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; + iteratorMethods.forEach((method) => { + mutableInstrumentations2[method] = createIterableMethod( + method, + false, + false + ); + readonlyInstrumentations2[method] = createIterableMethod( + method, + true, + false + ); + shallowInstrumentations2[method] = createIterableMethod( + method, + false, + true + ); + shallowReadonlyInstrumentations2[method] = createIterableMethod( + method, + true, + true + ); + }); + return [ + mutableInstrumentations2, + readonlyInstrumentations2, + shallowInstrumentations2, + shallowReadonlyInstrumentations2 + ]; +} +var [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations +] = createInstrumentations(); +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations; + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +var mutableCollectionHandlers = { + get: createInstrumentationGetter(false, false) +}; +var shallowCollectionHandlers = { + get: createInstrumentationGetter(false, true) +}; +var readonlyCollectionHandlers = { + get: createInstrumentationGetter(true, false) +}; +var shallowReadonlyCollectionHandlers = { + get: createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has2, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has2.call(target, rawKey)) { + const type = toRawType(target); + console.warn( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} +var reactiveMap = /* @__PURE__ */ new WeakMap(); +var shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +var readonlyMap = /* @__PURE__ */ new WeakMap(); +var shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2; + default: + return 0; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + if (true) { + console.warn(`value cannot be made reactive: ${String(target)}`); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = getTargetType(target); + if (targetType === 0) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return isReactive(value) || isReadonly(value); +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + def(value, "__v_skip", true); + return value; +} +var toReactive = (value) => isObject(value) ? reactive(value) : value; +var toReadonly = (value) => isObject(value) ? readonly(value) : value; +function trackRefValue(ref2) { + if (shouldTrack && activeEffect) { + ref2 = toRaw(ref2); + if (true) { + trackEffects(ref2.dep || (ref2.dep = createDep()), { + target: ref2, + type: "get", + key: "value" + }); + } else { + trackEffects(ref2.dep || (ref2.dep = createDep())); + } + } +} +function triggerRefValue(ref2, newVal) { + ref2 = toRaw(ref2); + const dep = ref2.dep; + if (dep) { + if (true) { + triggerEffects(dep, { + target: ref2, + type: "set", + key: "value", + newValue: newVal + }); + } else { + triggerEffects(dep); + } + } +} +function isRef(r) { + return !!(r && r.__v_isRef === true); +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +var RefImpl = class { + constructor(value, __v_isShallow) { + this.__v_isShallow = __v_isShallow; + this.dep = void 0; + this.__v_isRef = true; + this._rawValue = __v_isShallow ? value : toRaw(value); + this._value = __v_isShallow ? value : toReactive(value); + } + get value() { + trackRefValue(this); + return this._value; + } + set value(newVal) { + const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); + newVal = useDirectValue ? newVal : toRaw(newVal); + if (hasChanged(newVal, this._rawValue)) { + this._rawValue = newVal; + this._value = useDirectValue ? newVal : toReactive(newVal); + triggerRefValue(this, newVal); + } + } +}; +function triggerRef(ref2) { + triggerRefValue(ref2, true ? ref2.value : void 0); +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} +var shallowUnwrapHandlers = { + get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +var CustomRefImpl = class { + constructor(factory) { + this.dep = void 0; + this.__v_isRef = true; + const { get: get2, set: set2 } = factory( + () => trackRefValue(this), + () => triggerRefValue(this) + ); + this._get = get2; + this._set = set2; + } + get value() { + return this._get(); + } + set value(newVal) { + this._set(newVal); + } +}; +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!isProxy(object)) { + console.warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +var ObjectRefImpl = class { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this.__v_isRef = true; + } + get value() { + const val = this._object[this._key]; + return val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +}; +var GetterRefImpl = class { + constructor(_getter) { + this._getter = _getter; + this.__v_isRef = true; + this.__v_isReadonly = true; + } + get value() { + return this._getter(); + } +}; +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl( + source, + key, + defaultValue + ); +} +var ComputedRefImpl = class { + constructor(getter, _setter, isReadonly2, isSSR) { + this._setter = _setter; + this.dep = void 0; + this.__v_isRef = true; + this["__v_isReadonly"] = false; + this._dirty = true; + this.effect = new ReactiveEffect(getter, () => { + if (!this._dirty) { + this._dirty = true; + triggerRefValue(this); + } + }); + this.effect.computed = this; + this.effect.active = this._cacheable = !isSSR; + this["__v_isReadonly"] = isReadonly2; + } + get value() { + const self2 = toRaw(this); + trackRefValue(self2); + if (self2._dirty || !self2._cacheable) { + self2._dirty = false; + self2._value = self2.effect.run(); + } + return self2._value; + } + set value(newValue) { + this._setter(newValue); + } +}; +function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + const onlyGetter = isFunction(getterOrOptions); + if (onlyGetter) { + getter = getterOrOptions; + setter = true ? () => { + console.warn("Write operation failed: computed value is readonly"); + } : NOOP; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + if (debugOptions && !isSSR) { + cRef.effect.onTrack = debugOptions.onTrack; + cRef.effect.onTrigger = debugOptions.onTrigger; + } + return cRef; +} +var tick = Promise.resolve(); + +// node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js +var stack = []; +function pushWarningContext(vnode) { + stack.push(vnode); +} +function popWarningContext() { + stack.pop(); +} +function warn2(msg, ...args) { + if (false) + return; + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + msg + args.join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} +function assertNumber(val, type) { + if (false) + return; + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn2(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn2(`${type} is NaN - the duration expression might be incorrect.`); + } +} +var ErrorTypeStrings = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core" +}; +function callWithErrorHandling(fn, instance, type, args) { + let res; + try { + res = args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } + return res; +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = true ? ErrorTypeStrings[type] : type; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); + return; + } + } + logError(err, type, contextVNode, throwInDev); +} +function logError(err, type, contextVNode, throwInDev = true) { + if (true) { + const info = ErrorTypeStrings[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn2(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } else { + console.error(err); + } +} +var isFlushing = false; +var isFlushPending = false; +var queue = []; +var flushIndex = 0; +var pendingPostFlushCbs = []; +var activePostFlushCbs = null; +var postFlushIndex = 0; +var resolvedPromise = Promise.resolve(); +var currentFlushPromise = null; +var RECURSION_LIMIT = 100; +function nextTick(fn) { + const p2 = currentFlushPromise || resolvedPromise; + return fn ? p2.then(this ? fn.bind(this) : fn) : p2; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJobId = getId(queue[middle]); + middleJobId < id ? start = middle + 1 : end = middle; + } + return start; +} +function queueJob(job) { + if (!queue.length || !queue.includes( + job, + isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex + )) { + if (job.id == null) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(job.id), 0, job); + } + queueFlush(); + } +} +function queueFlush() { + if (!isFlushing && !isFlushPending) { + isFlushPending = true; + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function invalidateJob(job) { + const i = queue.indexOf(job); + if (i > flushIndex) { + queue.splice(i, 1); + } +} +function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (!activePostFlushCbs || !activePostFlushCbs.includes( + cb, + cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex + )) { + pendingPostFlushCbs.push(cb); + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) { + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.pre) { + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + cb(); + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)]; + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + activePostFlushCbs.sort((a, b) => getId(a) - getId(b)); + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { + continue; + } + activePostFlushCbs[postFlushIndex](); + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +var getId = (job) => job.id == null ? Infinity : job.id; +var comparator = (a, b) => { + const diff = getId(a) - getId(b); + if (diff === 0) { + if (a.pre && !b.pre) + return -1; + if (b.pre && !a.pre) + return 1; + } + return diff; +}; +function flushJobs(seen) { + isFlushPending = false; + isFlushing = true; + if (true) { + seen = seen || /* @__PURE__ */ new Map(); + } + queue.sort(comparator); + const check = true ? (job) => checkRecursiveUpdates(seen, job) : NOOP; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && job.active !== false) { + if (check(job)) { + continue; + } + callWithErrorHandling(job, null, 14); + } + } + } finally { + flushIndex = 0; + queue.length = 0; + flushPostFlushCbs(seen); + isFlushing = false; + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + if (!seen.has(fn)) { + seen.set(fn, 1); + } else { + const count = seen.get(fn); + if (count > RECURSION_LIMIT) { + const instance = fn.ownerInstance; + const componentName = instance && getComponentName(instance.type); + warn2( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.` + ); + return true; + } else { + seen.set(fn, count + 1); + } + } +} +var isHmrUpdating = false; +var hmrDirtyComponents = /* @__PURE__ */ new Set(); +if (true) { + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +var map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.update(); + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) + return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (const instance of instances) { + const oldComp = normalizeClassComponent(instance.type); + if (!hmrDirtyComponents.has(oldComp)) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.add(oldComp); + } + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + hmrDirtyComponents.add(oldComp); + instance.ceReload(newComp.styles); + hmrDirtyComponents.delete(oldComp); + } else if (instance.parent) { + queueJob(instance.parent.update); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + } + queuePostFlushCb(() => { + for (const instance of instances) { + hmrDirtyComponents.delete( + normalizeClassComponent(instance.type) + ); + } + }); +} +function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} +var devtools; +var buffer = []; +var devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools) { + devtools.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook(hook, target) { + var _a, _b; + devtools = hook; + if (devtools) { + devtools.enabled = true; + buffer.forEach(({ event, args }) => devtools.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook(newHook, target); + }); + setTimeout(() => { + if (!devtools) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version2) { + emit$1("app:init", app, version2, { + Fragment, + Text, + Comment, + Static + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount", app); +} +var devtoolsComponentAdded = createDevtoolsComponentHook( + "component:added" + /* COMPONENT_ADDED */ +); +var devtoolsComponentUpdated = createDevtoolsComponentHook( + "component:updated" + /* COMPONENT_UPDATED */ +); +var _devtoolsComponentRemoved = createDevtoolsComponentHook( + "component:removed" + /* COMPONENT_REMOVED */ +); +var devtoolsComponentRemoved = (component) => { + if (devtools && typeof devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +var devtoolsPerfStart = createDevtoolsPerformanceHook( + "perf:start" + /* PERFORMANCE_START */ +); +var devtoolsPerfEnd = createDevtoolsPerformanceHook( + "perf:end" + /* PERFORMANCE_END */ +); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit", + component.appContext.app, + component, + event, + params + ); +} +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) + return; + const props = instance.vnode.props || EMPTY_OBJ; + if (true) { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { + warn2( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn2( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener2 = event.startsWith("update:"); + const modelArg = isModelListener2 && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || EMPTY_OBJ; + if (trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (number) { + args = rawArgs.map(looseToNumber); + } + } + if (true) { + devtoolsComponentEmit(instance, event, args); + } + if (true) { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn2( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate(event)}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener2) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (__VUE_OPTIONS_API__ && !isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); +} +var currentRenderingInstance = null; +var currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +var withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) + return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + if (true) { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} +var accessedAttrs = false; +function markAttrsAccessed() { + accessedAttrs = true; +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + props, + propsOptions: [propsOptions], + slots, + attrs, + emit: emit2, + render: render2, + renderCache, + data, + setupState, + ctx, + inheritAttrs + } = instance; + let result; + let fallthroughAttrs; + const prev = setCurrentRenderingInstance(instance); + if (true) { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + result = normalizeVNode( + render2.call( + proxyToUse, + proxyToUse, + renderCache, + props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render22 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render22.length > 1 ? render22( + props, + true ? { + get attrs() { + markAttrsAccessed(); + return attrs; + }, + slots, + emit: emit2 + } : { attrs, slots, emit: emit2 } + ) : render22( + props, + null + /* we know it doesn't need it */ + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + if (!isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn2( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.` + ); + } + if (eventAttrs.length) { + warn2( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn2( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn2( + `Component inside renders non-element root node that cannot be animated.` + ); + } + root.transition = vnode.transition; + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +var getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren); + if (!childRoot) { + return [vnode, void 0]; + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; +}; +function filterSingleRoot(children) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + } + } + } else { + return; + } + } + return singleRoot; +} +var getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +var filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +var isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent && parent.subTree === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } +} +var isSuspense = (type) => type.__isSuspense; +var SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + create: createSuspenseBoundary, + normalize: normalizeSuspenseChildren +}; +var Suspense = SuspenseImpl; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else { + suspense.pendingId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + suspense.pendingId++; + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +var hasWarned = false; +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + ` is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove: remove2 } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0; + if (true) { + assertNumber(timeout, `Suspense timeout`); + } + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + isSVG, + container, + hiddenContainer, + anchor, + deps: 0, + pendingId: 0, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: true, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + if (true) { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + const delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move(pendingBranch, container2, anchor2, 0); + } + }; + } + let { anchor: anchor2 } = suspense; + if (activeBranch) { + anchor2 = next(activeBranch); + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor2, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + isSVG2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + if (true) { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + isSVG, + optimized + ); + if (placeholder) { + remove2(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + if (true) { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + document.createElement("div"), + null, + isSVG, + slotScopeIds, + optimized, + rendererInternals, + true + /* hydrating */ + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild) { + warn2(` slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + const el = vnode.el = branch.el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + var _a; + return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false; +} +function watchEffect(effect2, options) { + return doWatch(effect2, null, options); +} +function watchPostEffect(effect2, options) { + return doWatch( + effect2, + null, + true ? extend({}, options, { flush: "post" }) : { flush: "post" } + ); +} +function watchSyncEffect(effect2, options) { + return doWatch( + effect2, + null, + true ? extend({}, options, { flush: "sync" }) : { flush: "sync" } + ); +} +var INITIAL_WATCHER_VALUE = {}; +function watch(source, cb, options) { + if (!isFunction(cb)) { + warn2( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); +} +function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) { + var _a; + if (!cb) { + if (immediate !== void 0) { + warn2( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn2( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const warnInvalidSource = (s) => { + warn2( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const instance = getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null; + let getter; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => source; + deep = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return traverse(s); + } else if (isFunction(s)) { + return callWithErrorHandling(s, instance, 2); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = () => callWithErrorHandling(source, instance, 2); + } else { + getter = () => { + if (instance && instance.isUnmounted) { + return; + } + if (cleanup) { + cleanup(); + } + return callWithAsyncErrorHandling( + source, + instance, + 3, + [onCleanup] + ); + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + getter = () => traverse(baseGetter()); + } + let cleanup; + let onCleanup = (fn) => { + cleanup = effect2.onStop = () => { + callWithErrorHandling(fn, instance, 4); + }; + }; + let ssrCleanup; + if (isInSSRComponentSetup) { + onCleanup = NOOP; + if (!cb) { + getter(); + } else if (immediate) { + callWithAsyncErrorHandling(cb, instance, 3, [ + getter(), + isMultiSource ? [] : void 0, + onCleanup + ]); + } + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else { + return NOOP; + } + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = () => { + if (!effect2.active) { + return; + } + if (cb) { + const newValue = effect2.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some( + (v, i) => hasChanged(v, oldValue[i]) + ) : hasChanged(newValue, oldValue)) || false) { + if (cleanup) { + cleanup(); + } + callWithAsyncErrorHandling(cb, instance, 3, [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + onCleanup + ]); + oldValue = newValue; + } + } else { + effect2.run(); + } + }; + job.allowRecurse = !!cb; + let scheduler; + if (flush === "sync") { + scheduler = job; + } else if (flush === "post") { + scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); + } else { + job.pre = true; + if (instance) + job.id = instance.uid; + scheduler = () => queueJob(job); + } + const effect2 = new ReactiveEffect(getter, scheduler); + if (true) { + effect2.onTrack = onTrack; + effect2.onTrigger = onTrigger; + } + if (cb) { + if (immediate) { + job(); + } else { + oldValue = effect2.run(); + } + } else if (flush === "post") { + queuePostRenderEffect( + effect2.run.bind(effect2), + instance && instance.suspense + ); + } else { + effect2.run(); + } + const unwatch = () => { + effect2.stop(); + if (instance && instance.scope) { + remove(instance.scope.effects, effect2); + } + }; + if (ssrCleanup) + ssrCleanup.push(unwatch); + return unwatch; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const cur = currentInstance; + setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + if (cur) { + setCurrentInstance(cur); + } else { + unsetCurrentInstance(); + } + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} +function traverse(value, seen) { + if (!isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + if (isRef(value)) { + traverse(value.value, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], seen); + } + } + return value; +} +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn2("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + const internalInstance = currentRenderingInstance; + if (internalInstance === null) { + warn2(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getExposeProxy(internalInstance) || internalInstance.proxy; + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } +} +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +var TransitionHookValidator = [Function, Array]; +var BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +var BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + let prevTransitionKey; + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + warn2( + " can only be used on a single element or component. Use for lists." + ); + break; + } + child = c; + hasFound = true; + if (false) + break; + } + } + } + const rawProps = toRaw(props); + const { mode } = rawProps; + if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn2(`invalid mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getKeepAliveChild(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + const enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance + ); + setTransitionHooks(innerChild, enterHooks); + const oldChild = instance.subTree; + const oldInnerChild = oldChild && getKeepAliveChild(oldChild); + let transitionKeyChanged = false; + const { getTransitionKey } = innerChild.type; + if (getTransitionKey) { + const key = getTransitionKey(); + if (prevTransitionKey === void 0) { + prevTransitionKey = key; + } else if (key !== prevTransitionKey) { + prevTransitionKey = key; + transitionKeyChanged = true; + } + } + if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { + const leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in") { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (instance.update.active !== false) { + instance.update(); + } + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el._leaveCb = () => { + earlyRemove(); + el._leaveCb = void 0; + delete enterHooks.delayedLeave; + }; + enterHooks.delayedLeave = delayedLeave; + }; + } + } + return child; + }; + } +}; +var BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook3 = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook3(hook, args); + if (isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) + done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el._leaveCb) { + el._leaveCb( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) { + leavingVNode.el._leaveCb(); + } + callHook3(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el._enterCb = (cancelled) => { + if (called) + return; + called = true; + if (cancelled) { + callHook3(cancelHook, [el]); + } else { + callHook3(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el._enterCb = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove2) { + const key2 = String(vnode.key); + if (el._enterCb) { + el._enterCb( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove2(); + } + callHook3(onBeforeLeave, [el]); + let called = false; + const done = el._leaveCb = (cancelled) => { + if (called) + return; + called = true; + remove2(); + if (cancelled) { + callHook3(onLeaveCancelled, [el]); + } else { + callHook3(onAfterLeave, [el]); + } + el._leaveCb = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + return resolveTransitionHooks(vnode2, props, state, instance); + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getKeepAliveChild(vnode) { + return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode; +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) + keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} +function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8326: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} +var isAsyncWrapper = (i) => !!i.type.__asyncLoader; +function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve2, reject) => { + const userRetry = () => resolve2(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn2( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + /* do not throw in dev if user provided error component */ + ); + }; + if (suspensible && instance.suspense || isInSSRComponentSetup) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + queueJob(instance.parent.update); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} +var isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +var KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + if (!sharedContext.renderer) { + return () => { + const children = slots.default && slots.default(); + return children && children.length === 1 ? children[0] : children; + }; + } + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + if (true) { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + isSVG, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + if (true) { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + if (true) { + devtoolsComponentAdded(instance2); + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && (!filter || !filter(name))) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (!current || !isSameVNodeType(cached, current)) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + if (true) { + warn2(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +var KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p2) => matches(p2, name)); + } else if (isString(pattern)) { + return pattern.split(",").includes(name); + } else if (isRegExp(pattern)) { + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= ~256; + vnode.shapeFlag &= ~512; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + if (target.isUnmounted) { + return; + } + pauseTracking(); + setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + unsetCurrentInstance(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else if (true) { + const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, "")); + warn2( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` + ); + } +} +var createHook = (lifecycle) => (hook, target = currentInstance) => ( + // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) + (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) +); +var onBeforeMount = createHook("bm"); +var onMounted = createHook("m"); +var onBeforeUpdate = createHook("bu"); +var onUpdated = createHook("u"); +var onBeforeUnmount = createHook("bum"); +var onUnmounted = createHook("um"); +var onServerPrefetch = createHook("sp"); +var onRenderTriggered = createHook( + "rtg" +); +var onRenderTracked = createHook( + "rtc" +); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} +var COMPONENTS = "components"; +var DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +var NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + /* do not include inferred name to avoid breaking existing code */ + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn2(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else if (true) { + warn2( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); +} +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + if (isArray(source) || isString(source)) { + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem(source[i], i, void 0, cached && cached[i]); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn2(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) + res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) { + if (name !== "default") + props.name = name; + return createVNode("slot", props, fallback && fallback()); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn2( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const rendered = createBlock( + Fragment, + { + key: props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key || `_${name}` + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) + return true; + if (child.type === Comment) + return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!isObject(obj)) { + warn2(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; + } + return ret; +} +var getPublicInstance = (i) => { + if (!i) + return null; + if (isStatefulComponent(i)) + return getExposeProxy(i) || i.proxy; + return getPublicInstance(i.parent); +}; +var publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => true ? shallowReadonly(i.props) : i.props, + $attrs: (i) => true ? shallowReadonly(i.attrs) : i.attrs, + $slots: (i) => true ? shallowReadonly(i.slots) : i.slots, + $refs: (i) => true ? shallowReadonly(i.refs) : i.refs, + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $emit: (i) => i.emit, + $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type, + $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP + }) +); +var isReservedPrefix = (key) => key === "_" || key === "$"; +var hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); +var PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1: + return setupState[key]; + case 2: + return data[key]; + case 4: + return ctx[key]; + case 3: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4; + return ctx[key]; + } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) { + accessCache[key] = 0; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance, "get", key); + markAttrsAccessed(); + } else if (key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn2( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn2( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn2(`Cannot mutate + + + + + + + + + + +
github

$ ./clintp.xyz

404 - Page Not Found

But fear not, we've dispatched our squad of pixelated Ghostbusters to hunt it down, who you gonna call? 🕹️👻 Ghostbusters Logo

+ + + + \ No newline at end of file diff --git a/docs/public/Pipfile b/v1/docs/.vitepress/dist/Pipfile similarity index 100% rename from docs/public/Pipfile rename to v1/docs/.vitepress/dist/Pipfile diff --git a/v1/docs/.vitepress/dist/Pipfile.lock b/v1/docs/.vitepress/dist/Pipfile.lock new file mode 100644 index 0000000..3a50742 --- /dev/null +++ b/v1/docs/.vitepress/dist/Pipfile.lock @@ -0,0 +1,1874 @@ +{ + "_meta": { + "hash": { + "sha256": "6a6c1cd354e9068f439c4924ecf60e5cf1617863042e7a6448aca20f5f31b8f8" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.9" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "anyio": { + "hashes": [ + "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780", + "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5" + ], + "markers": "python_version >= '3.7'", + "version": "==3.7.1" + }, + "argon2-cffi": { + "hashes": [ + "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80", + "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b" + ], + "markers": "python_version >= '3.6'", + "version": "==21.3.0" + }, + "argon2-cffi-bindings": { + "hashes": [ + "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670", + "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f", + "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583", + "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194", + "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", + "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a", + "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", + "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5", + "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", + "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7", + "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", + "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", + "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", + "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", + "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", + "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", + "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d", + "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", + "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb", + "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", + "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351" + ], + "markers": "python_version >= '3.6'", + "version": "==21.2.0" + }, + "arrow": { + "hashes": [ + "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1", + "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2" + ], + "markers": "python_version >= '3.6'", + "version": "==1.2.3" + }, + "asttokens": { + "hashes": [ + "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3", + "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c" + ], + "version": "==2.2.1" + }, + "attrs": { + "hashes": [ + "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", + "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015" + ], + "markers": "python_version >= '3.7'", + "version": "==23.1.0" + }, + "backcall": { + "hashes": [ + "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e", + "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255" + ], + "version": "==0.2.0" + }, + "beautifulsoup4": { + "hashes": [ + "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da", + "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a" + ], + "markers": "python_version >= '3.6'", + "version": "==4.12.2" + }, + "bleach": { + "hashes": [ + "sha256:1a1a85c1595e07d8db14c5f09f09e6433502c51c595970edc090551f0db99414", + "sha256:33c16e3353dbd13028ab4799a0f89a83f113405c766e9c122df8a06f5b85b3f4" + ], + "markers": "python_version >= '3.7'", + "version": "==6.0.0" + }, + "breadability": { + "hashes": [ + "sha256:f1a7fdad1e58e295df80954879143824c706bbfb1826cdf4b1d15de1a86afe99" + ], + "version": "==0.1.20" + }, + "certifi": { + "hashes": [ + "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", + "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" + ], + "markers": "python_version >= '3.6'", + "version": "==2023.5.7" + }, + "cffi": { + "hashes": [ + "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", + "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", + "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", + "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", + "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", + "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", + "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", + "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", + "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", + "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", + "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", + "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", + "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", + "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", + "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", + "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", + "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", + "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", + "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", + "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", + "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", + "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", + "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", + "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", + "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", + "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", + "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", + "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", + "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", + "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", + "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", + "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", + "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", + "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", + "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", + "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", + "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", + "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", + "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", + "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", + "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", + "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", + "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", + "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", + "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", + "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", + "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", + "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", + "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", + "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", + "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", + "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", + "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", + "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", + "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", + "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", + "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", + "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", + "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", + "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", + "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", + "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", + "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", + "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" + ], + "version": "==1.15.1" + }, + "chardet": { + "hashes": [ + "sha256:0d62712b956bc154f85fb0a266e2a3c5913c2967e00348701b32411d6def31e5", + "sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9" + ], + "markers": "python_version >= '3.7'", + "version": "==5.1.0" + }, + "charset-normalizer": { + "hashes": [ + "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96", + "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c", + "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710", + "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706", + "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020", + "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252", + "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad", + "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329", + "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a", + "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f", + "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6", + "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4", + "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a", + "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46", + "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2", + "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23", + "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace", + "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd", + "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982", + "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10", + "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2", + "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea", + "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09", + "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5", + "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149", + "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489", + "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9", + "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80", + "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592", + "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3", + "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6", + "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed", + "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c", + "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200", + "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a", + "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e", + "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d", + "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6", + "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623", + "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669", + "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3", + "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa", + "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9", + "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2", + "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f", + "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1", + "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4", + "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a", + "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8", + "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3", + "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029", + "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f", + "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959", + "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22", + "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7", + "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952", + "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346", + "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e", + "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d", + "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299", + "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd", + "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a", + "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3", + "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037", + "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94", + "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c", + "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858", + "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a", + "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449", + "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c", + "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918", + "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1", + "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c", + "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac", + "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" + ], + "markers": "python_version >= '3.7'", + "version": "==3.2.0" + }, + "click": { + "hashes": [ + "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd", + "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5" + ], + "markers": "python_version >= '3.7'", + "version": "==8.1.6" + }, + "comm": { + "hashes": [ + "sha256:16613c6211e20223f215fc6d3b266a247b6e2641bf4e0a3ad34cb1aff2aa3f37", + "sha256:a61efa9daffcfbe66fd643ba966f846a624e4e6d6767eda9cf6e993aadaab93e" + ], + "markers": "python_version >= '3.6'", + "version": "==0.1.3" + }, + "contourpy": { + "hashes": [ + "sha256:052cc634bf903c604ef1a00a5aa093c54f81a2612faedaa43295809ffdde885e", + "sha256:084eaa568400cfaf7179b847ac871582199b1b44d5699198e9602ecbbb5f6104", + "sha256:0b6616375d7de55797d7a66ee7d087efe27f03d336c27cf1f32c02b8c1a5ac70", + "sha256:0b7b04ed0961647691cfe5d82115dd072af7ce8846d31a5fac6c142dcce8b882", + "sha256:143dde50520a9f90e4a2703f367cf8ec96a73042b72e68fcd184e1279962eb6f", + "sha256:17cfaf5ec9862bc93af1ec1f302457371c34e688fbd381f4035a06cd47324f48", + "sha256:181cbace49874f4358e2929aaf7ba84006acb76694102e88dd15af861996c16e", + "sha256:189ceb1525eb0655ab8487a9a9c41f42a73ba52d6789754788d1883fb06b2d8a", + "sha256:18a64814ae7bce73925131381603fff0116e2df25230dfc80d6d690aa6e20b37", + "sha256:1f0cbd657e9bde94cd0e33aa7df94fb73c1ab7799378d3b3f902eb8eb2e04a3a", + "sha256:1f795597073b09d631782e7245016a4323cf1cf0b4e06eef7ea6627e06a37ff2", + "sha256:25ae46595e22f93592d39a7eac3d638cda552c3e1160255258b695f7b58e5655", + "sha256:27bc79200c742f9746d7dd51a734ee326a292d77e7d94c8af6e08d1e6c15d545", + "sha256:2b836d22bd2c7bb2700348e4521b25e077255ebb6ab68e351ab5aa91ca27e027", + "sha256:30f511c05fab7f12e0b1b7730ebdc2ec8deedcfb505bc27eb570ff47c51a8f15", + "sha256:317267d915490d1e84577924bd61ba71bf8681a30e0d6c545f577363157e5e94", + "sha256:397b0ac8a12880412da3551a8cb5a187d3298a72802b45a3bd1805e204ad8439", + "sha256:438ba416d02f82b692e371858143970ed2eb6337d9cdbbede0d8ad9f3d7dd17d", + "sha256:53cc3a40635abedbec7f1bde60f8c189c49e84ac180c665f2cd7c162cc454baa", + "sha256:5d123a5bc63cd34c27ff9c7ac1cd978909e9c71da12e05be0231c608048bb2ae", + "sha256:62013a2cf68abc80dadfd2307299bfa8f5aa0dcaec5b2954caeb5fa094171103", + "sha256:89f06eff3ce2f4b3eb24c1055a26981bffe4e7264acd86f15b97e40530b794bc", + "sha256:90c81f22b4f572f8a2110b0b741bb64e5a6427e0a198b2cdc1fbaf85f352a3aa", + "sha256:911ff4fd53e26b019f898f32db0d4956c9d227d51338fb3b03ec72ff0084ee5f", + "sha256:9382a1c0bc46230fb881c36229bfa23d8c303b889b788b939365578d762b5c18", + "sha256:9f2931ed4741f98f74b410b16e5213f71dcccee67518970c42f64153ea9313b9", + "sha256:a67259c2b493b00e5a4d0f7bfae51fb4b3371395e47d079a4446e9b0f4d70e76", + "sha256:a698c6a7a432789e587168573a864a7ea374c6be8d4f31f9d87c001d5a843493", + "sha256:bc00bb4225d57bff7ebb634646c0ee2a1298402ec10a5fe7af79df9a51c1bfd9", + "sha256:bcb41692aa09aeb19c7c213411854402f29f6613845ad2453d30bf421fe68fed", + "sha256:d4f26b25b4f86087e7d75e63212756c38546e70f2a92d2be44f80114826e1cd4", + "sha256:d551f3a442655f3dcc1285723f9acd646ca5858834efeab4598d706206b09c9f", + "sha256:dffcc2ddec1782dd2f2ce1ef16f070861af4fb78c69862ce0aab801495dda6a3", + "sha256:e53046c3863828d21d531cc3b53786e6580eb1ba02477e8681009b6aa0870b21", + "sha256:e5cec36c5090e75a9ac9dbd0ff4a8cf7cecd60f1b6dc23a374c7d980a1cd710e", + "sha256:e7a117ce7df5a938fe035cad481b0189049e8d92433b4b33aa7fc609344aafa1", + "sha256:e94bef2580e25b5fdb183bf98a2faa2adc5b638736b2c0a4da98691da641316a", + "sha256:ed614aea8462735e7d70141374bd7650afd1c3f3cb0c2dbbcbe44e14331bf002", + "sha256:fb3b7d9e6243bfa1efb93ccfe64ec610d85cfe5aec2c25f97fbbd2e58b531256" + ], + "markers": "python_version >= '3.8'", + "version": "==1.1.0" + }, + "cycler": { + "hashes": [ + "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3", + "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f" + ], + "markers": "python_version >= '3.6'", + "version": "==0.11.0" + }, + "debugpy": { + "hashes": [ + "sha256:0679b7e1e3523bd7d7869447ec67b59728675aadfc038550a63a362b63029d2c", + "sha256:279d64c408c60431c8ee832dfd9ace7c396984fd7341fa3116aee414e7dcd88d", + "sha256:33edb4afa85c098c24cc361d72ba7c21bb92f501104514d4ffec1fb36e09c01a", + "sha256:38ed626353e7c63f4b11efad659be04c23de2b0d15efff77b60e4740ea685d07", + "sha256:5224eabbbeddcf1943d4e2821876f3e5d7d383f27390b82da5d9558fd4eb30a9", + "sha256:53f7a456bc50706a0eaabecf2d3ce44c4d5010e46dfc65b6b81a518b42866267", + "sha256:9cd10cf338e0907fdcf9eac9087faa30f150ef5445af5a545d307055141dd7a4", + "sha256:aaf6da50377ff4056c8ed470da24632b42e4087bc826845daad7af211e00faad", + "sha256:b3e7ac809b991006ad7f857f016fa92014445085711ef111fdc3f74f66144096", + "sha256:bae1123dff5bfe548ba1683eb972329ba6d646c3a80e6b4c06cd1b1dd0205e9b", + "sha256:c0ff93ae90a03b06d85b2c529eca51ab15457868a377c4cc40a23ab0e4e552a3", + "sha256:c4c2f0810fa25323abfdfa36cbbbb24e5c3b1a42cb762782de64439c575d67f2", + "sha256:d71b31117779d9a90b745720c0eab54ae1da76d5b38c8026c654f4a066b0130a", + "sha256:dbe04e7568aa69361a5b4c47b4493d5680bfa3a911d1e105fbea1b1f23f3eb45", + "sha256:de86029696e1b3b4d0d49076b9eba606c226e33ae312a57a46dca14ff370894d", + "sha256:e3876611d114a18aafef6383695dfc3f1217c98a9168c1aaf1a02b01ec7d8d1e", + "sha256:ed6d5413474e209ba50b1a75b2d9eecf64d41e6e4501977991cdc755dc83ab0f", + "sha256:f90a2d4ad9a035cee7331c06a4cf2245e38bd7c89554fe3b616d90ab8aab89cc" + ], + "markers": "python_version >= '3.7'", + "version": "==1.6.7" + }, + "decorator": { + "hashes": [ + "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", + "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" + ], + "markers": "python_version >= '3.5'", + "version": "==5.1.1" + }, + "defusedxml": { + "hashes": [ + "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", + "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.7.1" + }, + "docopt": { + "hashes": [ + "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" + ], + "version": "==0.6.2" + }, + "exceptiongroup": { + "hashes": [ + "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5", + "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f" + ], + "markers": "python_version < '3.11'", + "version": "==1.1.2" + }, + "executing": { + "hashes": [ + "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc", + "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107" + ], + "version": "==1.2.0" + }, + "fastjsonschema": { + "hashes": [ + "sha256:4b90b252628ca695280924d863fe37234eebadc29c5360d322571233dc9746e0", + "sha256:f4eeb8a77cef54861dbf7424ac8ce71306f12cbb086c45131bcba2c6a4f726e3" + ], + "version": "==2.17.1" + }, + "fonttools": { + "hashes": [ + "sha256:0614b6348866092d00df3dfb37e037fc06412ca67087de361a2777ea5ed62c16", + "sha256:06eac087ea55b3ebb2207d93b5ac56c847163899f05f5a77e1910f688fe10030", + "sha256:19d461c801b8904d201c6c38a99bfcfef673bfdfe0c7f026f582ef78896434e0", + "sha256:381558eafffc1432d08ca58063e71c7376ecaae48e9318354a90a1049a644845", + "sha256:3ee75b8ca48f6c48af25e967dce995ef94e46872b35c7d454b983c62c9c7006d", + "sha256:415cf7c806a3f56fb280dadcf3c92c85c0415e75665ca957b4a2a2e39c17a5c9", + "sha256:465d0f24bf4f75160f441793b55076b7a080a57d3a1f738390af2c20bee24fbb", + "sha256:4c654b1facf1f3b742e4d9b2dcdf0fa867b1f007b1b4981cc58a75ef5dca2a3c", + "sha256:50f8bdb421270f71b54695c62785e300fab4bb6127be40bf9f3084962a0c3adb", + "sha256:5448a87f6ed57ed844b64a05d3792827af584a8584613f6289867f4e77eb603b", + "sha256:560ea1a604c927399f36742abf342a4c5f3fee8e8e8a484b774dfe9630bd9a91", + "sha256:5b1c2b21b40229166a864f2b0aec06d37f0a204066deb1734c93370e0c76339d", + "sha256:69178674505ec81adf4af2a3bbacd0cb9a37ba7831bc3fca307f80e48ab2767b", + "sha256:69dbe0154e15b68dd671441ea8f23dad87488b24a6e650d45958f4722819a443", + "sha256:6faff25991dec48f8cac882055a09ae1a29fd15bc160bc3d663e789e994664c2", + "sha256:72d40a32d6443871ea0d147813caad58394b48729dfa4fbc45dcaac54f9506f2", + "sha256:7e22d0144d735f6c7df770509b8c0c33414bf460df0d5dddc98a159e5dbb10eb", + "sha256:841c491fa3e9c54e8f9cd5dae059e88f45e086aea090c28be9d42f59c8b99e01", + "sha256:86edb95c4d1fe4fae2111d7e0c10c6e42b7790b377bcf1952303469eee5b52bb", + "sha256:8f602dd5bcde7e4241419924f23c6f0d66723dd5408a58c3a2f781745c693f45", + "sha256:9387b09694fbf8ac7dcf887069068f81fb4124d05e09557ac7daabfbec1744bd", + "sha256:b329ae7ce971b5c4148d6cdb8119c0ce4587265b2330d4f2f3776ef851bee020", + "sha256:ba2a367ff478cd108d5319c0dc4fd4eb4ea3476dbfc45b00c45718e889cd9463", + "sha256:bc9e7b1e268be7a23fc66471b615c324e99c5db39ce8c49dd6dd8e962c7bc1b8", + "sha256:c890061915e95b619c1d3cc3c107c6fb021406b701c0c24b03e74830d522f210", + "sha256:cc3324e4159e6d1f55c3615b4c1c211f87cc96cc0cc7c946c8447dc1319f2e9d", + "sha256:d2dae84a3d0f76884a6102c62f2795b2d6602c2c95cfcce74c8a590b6200e533", + "sha256:d45f28c20bb67dee0f4a4caae709f40b0693d764b7b2bf2d58890f36b1bfcef0", + "sha256:e38bd91eae257f36c2b7245c0278e9cd9d754f3a66b8d2b548c623ba66e387b6", + "sha256:e43f6c7f9ba4f9d29edee530e45f9aa162872ec9549398b85971477a99f2a806", + "sha256:ea879afd1d6189fca02a85a7868560c9bb8415dccff6b7ae6d81e4f06b3ab30d", + "sha256:eb9dfa87152bd97019adc387b2f29ef6af601de4386f36570ca537ace96d96ed", + "sha256:efd59e83223cb77952997fb850c7a7c2a958c9af0642060f536722c2a9e9d53b", + "sha256:f3fe90dfb297bd8265238c06787911cd81c2cb89ac5b13e1c911928bdabfce0f" + ], + "markers": "python_version >= '3.8'", + "version": "==4.41.0" + }, + "fqdn": { + "hashes": [ + "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", + "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014" + ], + "version": "==1.5.1" + }, + "idna": { + "hashes": [ + "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", + "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" + ], + "markers": "python_version >= '3.5'", + "version": "==3.4" + }, + "importlib-metadata": { + "hashes": [ + "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb", + "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743" + ], + "markers": "python_version < '3.10'", + "version": "==6.8.0" + }, + "importlib-resources": { + "hashes": [ + "sha256:4cf94875a8368bd89531a756df9a9ebe1f150e0f885030b461237bc7f2d905f2", + "sha256:d952faee11004c045f785bb5636e8f885bed30dc3c940d5d42798a2a4541c185" + ], + "markers": "python_version < '3.10'", + "version": "==6.0.0" + }, + "ipykernel": { + "hashes": [ + "sha256:29cea0a716b1176d002a61d0b0c851f34536495bc4ef7dd0222c88b41b816123", + "sha256:2f5fffc7ad8f1fd5aadb4e171ba9129d9668dbafa374732cf9511ada52d6547f" + ], + "markers": "python_version >= '3.8'", + "version": "==6.24.0" + }, + "ipython": { + "hashes": [ + "sha256:1d197b907b6ba441b692c48cf2a3a2de280dc0ac91a3405b39349a50272ca0a1", + "sha256:248aca623f5c99a6635bc3857677b7320b9b8039f99f070ee0d20a5ca5a8e6bf" + ], + "markers": "python_version >= '3.9'", + "version": "==8.14.0" + }, + "ipython-genutils": { + "hashes": [ + "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8", + "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8" + ], + "version": "==0.2.0" + }, + "ipywidgets": { + "hashes": [ + "sha256:50ace0a8886e9a0d68b980db82f94c25d55d21ff2340ed36f802dd9365e94acf", + "sha256:e0aed0c95a1e55b6a123f64305245578bdc09e52965a34941c2b6a578b8c64a0" + ], + "markers": "python_version >= '3.7'", + "version": "==8.0.7" + }, + "isoduration": { + "hashes": [ + "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", + "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042" + ], + "version": "==20.11.0" + }, + "jedi": { + "hashes": [ + "sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e", + "sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612" + ], + "markers": "python_version >= '3.6'", + "version": "==0.18.2" + }, + "jinja2": { + "hashes": [ + "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", + "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" + ], + "markers": "python_version >= '3.7'", + "version": "==3.1.2" + }, + "joblib": { + "hashes": [ + "sha256:1f937906df65329ba98013dc9692fe22a4c5e4a648112de500508b18a21b41e3", + "sha256:89cf0529520e01b3de7ac7b74a8102c90d16d54c64b5dd98cafcd14307fdf915" + ], + "markers": "python_version >= '3.7'", + "version": "==1.3.1" + }, + "jsonpointer": { + "hashes": [ + "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a", + "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88" + ], + "version": "==2.4" + }, + "jsonschema": { + "hashes": [ + "sha256:971be834317c22daaa9132340a51c01b50910724082c2c1a2ac87eeec153a3fe", + "sha256:fb3642735399fa958c0d2aad7057901554596c63349f4f6b283c493cf692a25d" + ], + "markers": "python_version >= '3.8'", + "version": "==4.18.4" + }, + "jsonschema-specifications": { + "hashes": [ + "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1", + "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb" + ], + "markers": "python_version >= '3.8'", + "version": "==2023.7.1" + }, + "jupyter": { + "hashes": [ + "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7", + "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78", + "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f" + ], + "index": "pypi", + "version": "==1.0.0" + }, + "jupyter-client": { + "hashes": [ + "sha256:3af69921fe99617be1670399a0b857ad67275eefcfa291e2c81a160b7b650f5f", + "sha256:7441af0c0672edc5d28035e92ba5e32fadcfa8a4e608a434c228836a89df6158" + ], + "markers": "python_version >= '3.8'", + "version": "==8.3.0" + }, + "jupyter-console": { + "hashes": [ + "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485", + "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539" + ], + "markers": "python_version >= '3.7'", + "version": "==6.6.3" + }, + "jupyter-core": { + "hashes": [ + "sha256:5ba5c7938a7f97a6b0481463f7ff0dbac7c15ba48cf46fa4035ca6e838aa1aba", + "sha256:ae9036db959a71ec1cac33081eeb040a79e681f08ab68b0883e9a676c7a90dce" + ], + "markers": "python_version >= '3.8'", + "version": "==5.3.1" + }, + "jupyter-events": { + "hashes": [ + "sha256:57a2749f87ba387cd1bfd9b22a0875b889237dbf2edc2121ebb22bde47036c17", + "sha256:9a6e9995f75d1b7146b436ea24d696ce3a35bfa8bfe45e0c33c334c79464d0b3" + ], + "markers": "python_version >= '3.7'", + "version": "==0.6.3" + }, + "jupyter-server": { + "hashes": [ + "sha256:36da0a266d31a41ac335a366c88933c17dfa5bb817a48f5c02c16d303bc9477f", + "sha256:6a77912aff643e53fa14bdb2634884b52b784a4be77ce8e93f7283faed0f0849" + ], + "markers": "python_version >= '3.8'", + "version": "==2.7.0" + }, + "jupyter-server-terminals": { + "hashes": [ + "sha256:57ab779797c25a7ba68e97bcfb5d7740f2b5e8a83b5e8102b10438041a7eac5d", + "sha256:75779164661cec02a8758a5311e18bb8eb70c4e86c6b699403100f1585a12a36" + ], + "markers": "python_version >= '3.8'", + "version": "==0.4.4" + }, + "jupyterlab-pygments": { + "hashes": [ + "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f", + "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d" + ], + "markers": "python_version >= '3.7'", + "version": "==0.2.2" + }, + "jupyterlab-widgets": { + "hashes": [ + "sha256:4715912d6ceab839c9db35953c764b3214ebbc9161c809f6e0510168845dfdf5", + "sha256:d428ab97b8d87cc7c54cbf37644d6e0f0e662f23876e05fa460a73ec3257252a" + ], + "markers": "python_version >= '3.7'", + "version": "==3.0.8" + }, + "kiwisolver": { + "hashes": [ + "sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b", + "sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166", + "sha256:1041feb4cda8708ce73bb4dcb9ce1ccf49d553bf87c3954bdfa46f0c3f77252c", + "sha256:10ee06759482c78bdb864f4109886dff7b8a56529bc1609d4f1112b93fe6423c", + "sha256:1d1573129aa0fd901076e2bfb4275a35f5b7aa60fbfb984499d661ec950320b0", + "sha256:283dffbf061a4ec60391d51e6155e372a1f7a4f5b15d59c8505339454f8989e4", + "sha256:28bc5b299f48150b5f822ce68624e445040595a4ac3d59251703779836eceff9", + "sha256:2a66fdfb34e05b705620dd567f5a03f239a088d5a3f321e7b6ac3239d22aa286", + "sha256:2e307eb9bd99801f82789b44bb45e9f541961831c7311521b13a6c85afc09767", + "sha256:2e407cb4bd5a13984a6c2c0fe1845e4e41e96f183e5e5cd4d77a857d9693494c", + "sha256:2f5e60fabb7343a836360c4f0919b8cd0d6dbf08ad2ca6b9cf90bf0c76a3c4f6", + "sha256:36dafec3d6d6088d34e2de6b85f9d8e2324eb734162fba59d2ba9ed7a2043d5b", + "sha256:3fe20f63c9ecee44560d0e7f116b3a747a5d7203376abeea292ab3152334d004", + "sha256:41dae968a94b1ef1897cb322b39360a0812661dba7c682aa45098eb8e193dbdf", + "sha256:4bd472dbe5e136f96a4b18f295d159d7f26fd399136f5b17b08c4e5f498cd494", + "sha256:4ea39b0ccc4f5d803e3337dd46bcce60b702be4d86fd0b3d7531ef10fd99a1ac", + "sha256:5853eb494c71e267912275e5586fe281444eb5e722de4e131cddf9d442615626", + "sha256:5bce61af018b0cb2055e0e72e7d65290d822d3feee430b7b8203d8a855e78766", + "sha256:6295ecd49304dcf3bfbfa45d9a081c96509e95f4b9d0eb7ee4ec0530c4a96514", + "sha256:62ac9cc684da4cf1778d07a89bf5f81b35834cb96ca523d3a7fb32509380cbf6", + "sha256:70e7c2e7b750585569564e2e5ca9845acfaa5da56ac46df68414f29fea97be9f", + "sha256:7577c1987baa3adc4b3c62c33bd1118c3ef5c8ddef36f0f2c950ae0b199e100d", + "sha256:75facbe9606748f43428fc91a43edb46c7ff68889b91fa31f53b58894503a191", + "sha256:787518a6789009c159453da4d6b683f468ef7a65bbde796bcea803ccf191058d", + "sha256:78d6601aed50c74e0ef02f4204da1816147a6d3fbdc8b3872d263338a9052c51", + "sha256:7c43e1e1206cd421cd92e6b3280d4385d41d7166b3ed577ac20444b6995a445f", + "sha256:81e38381b782cc7e1e46c4e14cd997ee6040768101aefc8fa3c24a4cc58e98f8", + "sha256:841293b17ad704d70c578f1f0013c890e219952169ce8a24ebc063eecf775454", + "sha256:872b8ca05c40d309ed13eb2e582cab0c5a05e81e987ab9c521bf05ad1d5cf5cb", + "sha256:877272cf6b4b7e94c9614f9b10140e198d2186363728ed0f701c6eee1baec1da", + "sha256:8c808594c88a025d4e322d5bb549282c93c8e1ba71b790f539567932722d7bd8", + "sha256:8ed58b8acf29798b036d347791141767ccf65eee7f26bde03a71c944449e53de", + "sha256:91672bacaa030f92fc2f43b620d7b337fd9a5af28b0d6ed3f77afc43c4a64b5a", + "sha256:968f44fdbf6dd757d12920d63b566eeb4d5b395fd2d00d29d7ef00a00582aac9", + "sha256:9f85003f5dfa867e86d53fac6f7e6f30c045673fa27b603c397753bebadc3008", + "sha256:a553dadda40fef6bfa1456dc4be49b113aa92c2a9a9e8711e955618cd69622e3", + "sha256:a68b62a02953b9841730db7797422f983935aeefceb1679f0fc85cbfbd311c32", + "sha256:abbe9fa13da955feb8202e215c4018f4bb57469b1b78c7a4c5c7b93001699938", + "sha256:ad881edc7ccb9d65b0224f4e4d05a1e85cf62d73aab798943df6d48ab0cd79a1", + "sha256:b1792d939ec70abe76f5054d3f36ed5656021dcad1322d1cc996d4e54165cef9", + "sha256:b428ef021242344340460fa4c9185d0b1f66fbdbfecc6c63eff4b7c29fad429d", + "sha256:b533558eae785e33e8c148a8d9921692a9fe5aa516efbdff8606e7d87b9d5824", + "sha256:ba59c92039ec0a66103b1d5fe588fa546373587a7d68f5c96f743c3396afc04b", + "sha256:bc8d3bd6c72b2dd9decf16ce70e20abcb3274ba01b4e1c96031e0c4067d1e7cd", + "sha256:bc9db8a3efb3e403e4ecc6cd9489ea2bac94244f80c78e27c31dcc00d2790ac2", + "sha256:bf7d9fce9bcc4752ca4a1b80aabd38f6d19009ea5cbda0e0856983cf6d0023f5", + "sha256:c2dbb44c3f7e6c4d3487b31037b1bdbf424d97687c1747ce4ff2895795c9bf69", + "sha256:c79ebe8f3676a4c6630fd3f777f3cfecf9289666c84e775a67d1d358578dc2e3", + "sha256:c97528e64cb9ebeff9701e7938653a9951922f2a38bd847787d4a8e498cc83ae", + "sha256:d0611a0a2a518464c05ddd5a3a1a0e856ccc10e67079bb17f265ad19ab3c7597", + "sha256:d06adcfa62a4431d404c31216f0f8ac97397d799cd53800e9d3efc2fbb3cf14e", + "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955", + "sha256:d5b61785a9ce44e5a4b880272baa7cf6c8f48a5180c3e81c59553ba0cb0821ca", + "sha256:da152d8cdcab0e56e4f45eb08b9aea6455845ec83172092f09b0e077ece2cf7a", + "sha256:da7e547706e69e45d95e116e6939488d62174e033b763ab1496b4c29b76fabea", + "sha256:db5283d90da4174865d520e7366801a93777201e91e79bacbac6e6927cbceede", + "sha256:db608a6757adabb32f1cfe6066e39b3706d8c3aa69bbc353a5b61edad36a5cb4", + "sha256:e0ea21f66820452a3f5d1655f8704a60d66ba1191359b96541eaf457710a5fc6", + "sha256:e7da3fec7408813a7cebc9e4ec55afed2d0fd65c4754bc376bf03498d4e92686", + "sha256:e92a513161077b53447160b9bd8f522edfbed4bd9759e4c18ab05d7ef7e49408", + "sha256:ecb1fa0db7bf4cff9dac752abb19505a233c7f16684c5826d1f11ebd9472b871", + "sha256:efda5fc8cc1c61e4f639b8067d118e742b812c930f708e6667a5ce0d13499e29", + "sha256:f0a1dbdb5ecbef0d34eb77e56fcb3e95bbd7e50835d9782a45df81cc46949750", + "sha256:f0a71d85ecdd570ded8ac3d1c0f480842f49a40beb423bb8014539a9f32a5897", + "sha256:f4f270de01dd3e129a72efad823da90cc4d6aafb64c410c9033aba70db9f1ff0", + "sha256:f6cb459eea32a4e2cf18ba5fcece2dbdf496384413bc1bae15583f19e567f3b2", + "sha256:f8ad8285b01b0d4695102546b342b493b3ccc6781fc28c8c6a1bb63e95d22f09", + "sha256:f9f39e2f049db33a908319cf46624a569b36983c7c78318e9726a4cb8923b26c" + ], + "markers": "python_version >= '3.7'", + "version": "==1.4.4" + }, + "lxml": { + "hashes": [ + "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3", + "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d", + "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a", + "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120", + "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305", + "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287", + "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23", + "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52", + "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f", + "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4", + "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584", + "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f", + "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693", + "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef", + "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5", + "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02", + "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc", + "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7", + "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da", + "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a", + "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40", + "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8", + "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd", + "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601", + "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c", + "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be", + "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2", + "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c", + "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129", + "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc", + "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2", + "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1", + "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7", + "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d", + "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477", + "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d", + "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e", + "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7", + "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2", + "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574", + "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf", + "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b", + "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98", + "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12", + "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42", + "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35", + "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d", + "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce", + "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d", + "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f", + "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db", + "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4", + "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694", + "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac", + "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2", + "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7", + "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96", + "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d", + "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b", + "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a", + "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13", + "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340", + "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6", + "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458", + "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c", + "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c", + "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9", + "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432", + "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991", + "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69", + "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf", + "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb", + "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b", + "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833", + "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76", + "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85", + "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e", + "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50", + "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8", + "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4", + "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b", + "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5", + "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190", + "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7", + "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa", + "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0", + "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9", + "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0", + "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b", + "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5", + "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7", + "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==4.9.3" + }, + "markupsafe": { + "hashes": [ + "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e", + "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e", + "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431", + "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686", + "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559", + "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc", + "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c", + "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0", + "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4", + "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9", + "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575", + "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba", + "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d", + "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3", + "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00", + "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155", + "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac", + "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52", + "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f", + "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8", + "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b", + "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24", + "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea", + "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198", + "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0", + "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee", + "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be", + "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2", + "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707", + "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6", + "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58", + "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779", + "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636", + "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c", + "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad", + "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee", + "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc", + "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2", + "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48", + "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7", + "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e", + "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b", + "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa", + "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5", + "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e", + "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb", + "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9", + "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57", + "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc", + "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2" + ], + "markers": "python_version >= '3.7'", + "version": "==2.1.3" + }, + "matplotlib": { + "hashes": [ + "sha256:070f8dddd1f5939e60aacb8fa08f19551f4b0140fab16a3669d5cd6e9cb28fc8", + "sha256:0c3cca3e842b11b55b52c6fb8bd6a4088693829acbfcdb3e815fa9b7d5c92c1b", + "sha256:0f506a1776ee94f9e131af1ac6efa6e5bc7cb606a3e389b0ccb6e657f60bb676", + "sha256:12f01b92ecd518e0697da4d97d163b2b3aa55eb3eb4e2c98235b3396d7dad55f", + "sha256:152ee0b569a37630d8628534c628456b28686e085d51394da6b71ef84c4da201", + "sha256:1c308b255efb9b06b23874236ec0f10f026673ad6515f602027cc8ac7805352d", + "sha256:1cd120fca3407a225168238b790bd5c528f0fafde6172b140a2f3ab7a4ea63e9", + "sha256:20f844d6be031948148ba49605c8b96dfe7d3711d1b63592830d650622458c11", + "sha256:23fb1750934e5f0128f9423db27c474aa32534cec21f7b2153262b066a581fd1", + "sha256:2699f7e73a76d4c110f4f25be9d2496d6ab4f17345307738557d345f099e07de", + "sha256:26bede320d77e469fdf1bde212de0ec889169b04f7f1179b8930d66f82b30cbc", + "sha256:2ecb5be2b2815431c81dc115667e33da0f5a1bcf6143980d180d09a717c4a12e", + "sha256:2f8e4a49493add46ad4a8c92f63e19d548b2b6ebbed75c6b4c7f46f57d36cdd1", + "sha256:305e3da477dc8607336ba10bac96986d6308d614706cae2efe7d3ffa60465b24", + "sha256:30e1409b857aa8a747c5d4f85f63a79e479835f8dffc52992ac1f3f25837b544", + "sha256:318c89edde72ff95d8df67d82aca03861240512994a597a435a1011ba18dbc7f", + "sha256:35d74ebdb3f71f112b36c2629cf32323adfbf42679e2751252acd468f5001c07", + "sha256:50e0a55ec74bf2d7a0ebf50ac580a209582c2dd0f7ab51bc270f1b4a0027454e", + "sha256:5dea00b62d28654b71ca92463656d80646675628d0828e08a5f3b57e12869e13", + "sha256:60c521e21031632aa0d87ca5ba0c1c05f3daacadb34c093585a0be6780f698e4", + "sha256:6515e878f91894c2e4340d81f0911857998ccaf04dbc1bba781e3d89cbf70608", + "sha256:6d2ff3c984b8a569bc1383cd468fc06b70d7b59d5c2854ca39f1436ae8394117", + "sha256:71667eb2ccca4c3537d9414b1bc00554cb7f91527c17ee4ec38027201f8f1603", + "sha256:717157e61b3a71d3d26ad4e1770dc85156c9af435659a25ee6407dc866cb258d", + "sha256:71f7a8c6b124e904db550f5b9fe483d28b896d4135e45c4ea381ad3b8a0e3256", + "sha256:936bba394682049919dda062d33435b3be211dc3dcaa011e09634f060ec878b2", + "sha256:a1733b8e84e7e40a9853e505fe68cc54339f97273bdfe6f3ed980095f769ddc7", + "sha256:a2c1590b90aa7bd741b54c62b78de05d4186271e34e2377e0289d943b3522273", + "sha256:a7e28d6396563955f7af437894a36bf2b279462239a41028323e04b85179058b", + "sha256:a8035ba590658bae7562786c9cc6ea1a84aa49d3afab157e414c9e2ea74f496d", + "sha256:a8cdb91dddb04436bd2f098b8fdf4b81352e68cf4d2c6756fcc414791076569b", + "sha256:ac60daa1dc83e8821eed155796b0f7888b6b916cf61d620a4ddd8200ac70cd64", + "sha256:af4860132c8c05261a5f5f8467f1b269bf1c7c23902d75f2be57c4a7f2394b3e", + "sha256:bc221ffbc2150458b1cd71cdd9ddd5bb37962b036e41b8be258280b5b01da1dd", + "sha256:ce55289d5659b5b12b3db4dc9b7075b70cef5631e56530f14b2945e8836f2d20", + "sha256:d9881356dc48e58910c53af82b57183879129fa30492be69058c5b0d9fddf391", + "sha256:dbcf59334ff645e6a67cd5f78b4b2cdb76384cdf587fa0d2dc85f634a72e1a3e", + "sha256:ebf577c7a6744e9e1bd3fee45fc74a02710b214f94e2bde344912d85e0c9af7c", + "sha256:f081c03f413f59390a80b3e351cc2b2ea0205839714dbc364519bcf51f4b56ca", + "sha256:fdbb46fad4fb47443b5b8ac76904b2e7a66556844f33370861b4788db0f8816a", + "sha256:fdcd28360dbb6203fb5219b1a5658df226ac9bebc2542a9e8f457de959d713d0" + ], + "markers": "python_version >= '3.8'", + "version": "==3.7.2" + }, + "matplotlib-inline": { + "hashes": [ + "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311", + "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304" + ], + "markers": "python_version >= '3.5'", + "version": "==0.1.6" + }, + "mistune": { + "hashes": [ + "sha256:b9b3e438efbb57c62b5beb5e134dab664800bdf1284a7ee09e8b12b13eb1aac6", + "sha256:e912116c13aa0944f9dc530db38eb88f6a77087ab128f49f84a48f4c05ea163c" + ], + "markers": "python_version >= '3.7'", + "version": "==3.0.1" + }, + "nbclassic": { + "hashes": [ + "sha256:0ae11eb2319455d805596bf320336cda9554b41d99ab9a3c31bf8180bffa30e3", + "sha256:f99e4769b4750076cd4235c044b61232110733322384a94a63791d2e7beacc66" + ], + "markers": "python_version >= '3.7'", + "version": "==1.0.0" + }, + "nbclient": { + "hashes": [ + "sha256:25e861299e5303a0477568557c4045eccc7a34c17fc08e7959558707b9ebe548", + "sha256:f9b179cd4b2d7bca965f900a2ebf0db4a12ebff2f36a711cb66861e4ae158e55" + ], + "markers": "python_version >= '3.8'", + "version": "==0.8.0" + }, + "nbconvert": { + "hashes": [ + "sha256:b820b206bd16898d39198a732dac6fb7019e82a44a282f606d931b8113240295", + "sha256:c99158a98e2bd32c4877de425f008e149af28f4fffbcc8a898086dd83109c1de" + ], + "markers": "python_version >= '3.8'", + "version": "==7.7.1" + }, + "nbformat": { + "hashes": [ + "sha256:3a7f52d040639cbd8a3890218c8b0ffb93211588c57446c90095e32ba5881b5d", + "sha256:b7968ebf4811178a4108ee837eae1442e3f054132100f0359219e9ed1ce3ca45" + ], + "markers": "python_version >= '3.8'", + "version": "==5.9.1" + }, + "nest-asyncio": { + "hashes": [ + "sha256:b9a953fb40dceaa587d109609098db21900182b16440652454a146cffb06e8b8", + "sha256:d267cc1ff794403f7df692964d1d2a3fa9418ffea2a3f6859a439ff482fef290" + ], + "markers": "python_version >= '3.5'", + "version": "==1.5.6" + }, + "nltk": { + "hashes": [ + "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3", + "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5" + ], + "markers": "python_version >= '3.7'", + "version": "==3.8.1" + }, + "notebook": { + "hashes": [ + "sha256:517209568bd47261e2def27a140e97d49070602eea0d226a696f42a7f16c9a4e", + "sha256:dd17e78aefe64c768737b32bf171c1c766666a21cc79a44d37a1700771cab56f" + ], + "markers": "python_version >= '3.7'", + "version": "==6.5.4" + }, + "notebook-shim": { + "hashes": [ + "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7", + "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9" + ], + "markers": "python_version >= '3.7'", + "version": "==0.2.3" + }, + "numpy": { + "hashes": [ + "sha256:012097b5b0d00a11070e8f2e261128c44157a8689f7dedcf35576e525893f4fe", + "sha256:0d3fe3dd0506a28493d82dc3cf254be8cd0d26f4008a417385cbf1ae95b54004", + "sha256:0def91f8af6ec4bb94c370e38c575855bf1d0be8a8fbfba42ef9c073faf2cf19", + "sha256:1a180429394f81c7933634ae49b37b472d343cccb5bb0c4a575ac8bbc433722f", + "sha256:1d5d3c68e443c90b38fdf8ef40e60e2538a27548b39b12b73132456847f4b631", + "sha256:20e1266411120a4f16fad8efa8e0454d21d00b8c7cee5b5ccad7565d95eb42dd", + "sha256:247d3ffdd7775bdf191f848be8d49100495114c82c2bd134e8d5d075fb386a1c", + "sha256:35a9527c977b924042170a0887de727cd84ff179e478481404c5dc66b4170009", + "sha256:38eb6548bb91c421261b4805dc44def9ca1a6eef6444ce35ad1669c0f1a3fc5d", + "sha256:3d7abcdd85aea3e6cdddb59af2350c7ab1ed764397f8eec97a038ad244d2d105", + "sha256:41a56b70e8139884eccb2f733c2f7378af06c82304959e174f8e7370af112e09", + "sha256:4a90725800caeaa160732d6b31f3f843ebd45d6b5f3eec9e8cc287e30f2805bf", + "sha256:6b82655dd8efeea69dbf85d00fca40013d7f503212bc5259056244961268b66e", + "sha256:6c6c9261d21e617c6dc5eacba35cb68ec36bb72adcff0dee63f8fbc899362588", + "sha256:77d339465dff3eb33c701430bcb9c325b60354698340229e1dff97745e6b3efa", + "sha256:791f409064d0a69dd20579345d852c59822c6aa087f23b07b1b4e28ff5880fcb", + "sha256:9a3a9f3a61480cc086117b426a8bd86869c213fc4072e606f01c4e4b66eb92bf", + "sha256:c1516db588987450b85595586605742879e50dcce923e8973f79529651545b57", + "sha256:c40571fe966393b212689aa17e32ed905924120737194b5d5c1b20b9ed0fb171", + "sha256:d412c1697c3853c6fc3cb9751b4915859c7afe6a277c2bf00acf287d56c4e625", + "sha256:d5154b1a25ec796b1aee12ac1b22f414f94752c5f94832f14d8d6c9ac40bcca6", + "sha256:d736b75c3f2cb96843a5c7f8d8ccc414768d34b0a75f466c05f3a739b406f10b", + "sha256:e8f6049c4878cb16960fbbfb22105e49d13d752d4d8371b55110941fb3b17800", + "sha256:f76aebc3358ade9eacf9bc2bb8ae589863a4f911611694103af05346637df1b7", + "sha256:fd67b306320dcadea700a8f79b9e671e607f8696e98ec255915c0c6d6b818503" + ], + "markers": "python_version >= '3.9'", + "version": "==1.25.1" + }, + "overrides": { + "hashes": [ + "sha256:6187d8710a935d09b0bcef8238301d6ee2569d2ac1ae0ec39a8c7924e27f58ca", + "sha256:8b97c6c1e1681b78cbc9424b138d880f0803c2254c5ebaabdde57bb6c62093f2" + ], + "markers": "python_version >= '3.6'", + "version": "==7.3.1" + }, + "packaging": { + "hashes": [ + "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", + "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" + ], + "markers": "python_version >= '3.7'", + "version": "==23.1" + }, + "pandocfilters": { + "hashes": [ + "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38", + "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.5.0" + }, + "parso": { + "hashes": [ + "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0", + "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75" + ], + "markers": "python_version >= '3.6'", + "version": "==0.8.3" + }, + "pexpect": { + "hashes": [ + "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", + "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c" + ], + "markers": "sys_platform != 'win32'", + "version": "==4.8.0" + }, + "pickleshare": { + "hashes": [ + "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca", + "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56" + ], + "version": "==0.7.5" + }, + "pillow": { + "hashes": [ + "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1", + "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba", + "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a", + "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799", + "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51", + "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb", + "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5", + "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270", + "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6", + "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47", + "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf", + "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e", + "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b", + "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66", + "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865", + "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec", + "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c", + "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1", + "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38", + "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906", + "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705", + "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef", + "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc", + "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f", + "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf", + "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392", + "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d", + "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe", + "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32", + "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5", + "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7", + "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44", + "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d", + "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3", + "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625", + "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e", + "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829", + "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089", + "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3", + "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78", + "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96", + "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964", + "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597", + "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99", + "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a", + "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140", + "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7", + "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16", + "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903", + "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1", + "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296", + "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572", + "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115", + "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a", + "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd", + "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4", + "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1", + "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb", + "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa", + "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a", + "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569", + "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c", + "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf", + "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082", + "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062", + "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579" + ], + "index": "pypi", + "version": "==9.5.0" + }, + "platformdirs": { + "hashes": [ + "sha256:1b42b450ad933e981d56e59f1b97495428c9bd60698baab9f3eb3d00d5822421", + "sha256:ad8291ae0ae5072f66c16945166cb11c63394c7a3ad1b1bc9828ca3162da8c2f" + ], + "markers": "python_version >= '3.7'", + "version": "==3.9.1" + }, + "prometheus-client": { + "hashes": [ + "sha256:21e674f39831ae3f8acde238afd9a27a37d0d2fb5a28ea094f0ce25d2cbf2091", + "sha256:e537f37160f6807b8202a6fc4764cdd19bac5480ddd3e0d463c3002b34462101" + ], + "markers": "python_version >= '3.6'", + "version": "==0.17.1" + }, + "prompt-toolkit": { + "hashes": [ + "sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac", + "sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88" + ], + "markers": "python_version >= '3.7'", + "version": "==3.0.39" + }, + "psutil": { + "hashes": [ + "sha256:104a5cc0e31baa2bcf67900be36acde157756b9c44017b86b2c049f11957887d", + "sha256:3c6f686f4225553615612f6d9bc21f1c0e305f75d7d8454f9b46e901778e7217", + "sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4", + "sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c", + "sha256:5b9b8cb93f507e8dbaf22af6a2fd0ccbe8244bf30b1baad6b3954e935157ae3f", + "sha256:7a7dd9997128a0d928ed4fb2c2d57e5102bb6089027939f3b722f3a210f9a8da", + "sha256:89518112647f1276b03ca97b65cc7f64ca587b1eb0278383017c2a0dcc26cbe4", + "sha256:8c5f7c5a052d1d567db4ddd231a9d27a74e8e4a9c3f44b1032762bd7b9fdcd42", + "sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5", + "sha256:acf2aef9391710afded549ff602b5887d7a2349831ae4c26be7c807c0a39fac4", + "sha256:b258c0c1c9d145a1d5ceffab1134441c4c5113b2417fafff7315a917a026c3c9", + "sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f", + "sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30", + "sha256:ea8518d152174e1249c4f2a1c89e3e6065941df2fa13a1ab45327716a23c2b48" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==5.9.5" + }, + "ptyprocess": { + "hashes": [ + "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", + "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220" + ], + "markers": "os_name != 'nt'", + "version": "==0.7.0" + }, + "pure-eval": { + "hashes": [ + "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350", + "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3" + ], + "version": "==0.2.2" + }, + "py-readability-metrics": { + "hashes": [ + "sha256:3ae5eaaa9b5d0de93b0ad6ab6a3bb26c518da1ce8bc6f2ff8aa3bf0e33f05777", + "sha256:465b7ffa1063f2448bf791dac50f9117d8c2bf06d931bbb0955606e14c4b3ddc" + ], + "index": "pypi", + "version": "==1.4.5" + }, + "pycountry": { + "hashes": [ + "sha256:b2163a246c585894d808f18783e19137cb70a0c18fb36748dc01fc6f109c1646" + ], + "markers": "python_version >= '3.6' and python_version < '4'", + "version": "==22.3.5" + }, + "pycparser": { + "hashes": [ + "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", + "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.21" + }, + "pygments": { + "hashes": [ + "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c", + "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1" + ], + "markers": "python_version >= '3.7'", + "version": "==2.15.1" + }, + "pyparsing": { + "hashes": [ + "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", + "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" + ], + "markers": "python_full_version >= '3.6.8'", + "version": "==3.0.9" + }, + "python-dateutil": { + "hashes": [ + "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", + "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.8.2" + }, + "python-json-logger": { + "hashes": [ + "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c", + "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd" + ], + "markers": "python_version >= '3.6'", + "version": "==2.0.7" + }, + "pyyaml": { + "hashes": [ + "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", + "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", + "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206", + "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27", + "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595", + "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62", + "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98", + "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696", + "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", + "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867", + "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47", + "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", + "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6", + "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3", + "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", + "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", + "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c", + "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735", + "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", + "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba", + "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", + "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5", + "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd", + "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3", + "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0", + "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515", + "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c", + "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c", + "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924", + "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34", + "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", + "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", + "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", + "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", + "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", + "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa", + "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", + "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585", + "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d", + "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" + ], + "markers": "python_version >= '3.6'", + "version": "==6.0.1" + }, + "pyzmq": { + "hashes": [ + "sha256:01f06f33e12497dca86353c354461f75275a5ad9eaea181ac0dc1662da8074fa", + "sha256:0b6b42f7055bbc562f63f3df3b63e3dd1ebe9727ff0f124c3aa7bcea7b3a00f9", + "sha256:0c4fc2741e0513b5d5a12fe200d6785bbcc621f6f2278893a9ca7bed7f2efb7d", + "sha256:108c96ebbd573d929740d66e4c3d1bdf31d5cde003b8dc7811a3c8c5b0fc173b", + "sha256:13bbe36da3f8aaf2b7ec12696253c0bf6ffe05f4507985a8844a1081db6ec22d", + "sha256:154bddda2a351161474b36dba03bf1463377ec226a13458725183e508840df89", + "sha256:19d0383b1f18411d137d891cab567de9afa609b214de68b86e20173dc624c101", + "sha256:1a6169e69034eaa06823da6a93a7739ff38716142b3596c180363dee729d713d", + "sha256:1fc56a0221bdf67cfa94ef2d6ce5513a3d209c3dfd21fed4d4e87eca1822e3a3", + "sha256:2a21fec5c3cea45421a19ccbe6250c82f97af4175bc09de4d6dd78fb0cb4c200", + "sha256:2b15247c49d8cbea695b321ae5478d47cffd496a2ec5ef47131a9e79ddd7e46c", + "sha256:2f5efcc29056dfe95e9c9db0dfbb12b62db9c4ad302f812931b6d21dd04a9119", + "sha256:2f666ae327a6899ff560d741681fdcdf4506f990595201ed39b44278c471ad98", + "sha256:332616f95eb400492103ab9d542b69d5f0ff628b23129a4bc0a2fd48da6e4e0b", + "sha256:33d5c8391a34d56224bccf74f458d82fc6e24b3213fc68165c98b708c7a69325", + "sha256:3575699d7fd7c9b2108bc1c6128641a9a825a58577775ada26c02eb29e09c517", + "sha256:3830be8826639d801de9053cf86350ed6742c4321ba4236e4b5568528d7bfed7", + "sha256:3a522510e3434e12aff80187144c6df556bb06fe6b9d01b2ecfbd2b5bfa5c60c", + "sha256:3bed53f7218490c68f0e82a29c92335daa9606216e51c64f37b48eb78f1281f4", + "sha256:414b8beec76521358b49170db7b9967d6974bdfc3297f47f7d23edec37329b00", + "sha256:442d3efc77ca4d35bee3547a8e08e8d4bb88dadb54a8377014938ba98d2e074a", + "sha256:47b915ba666c51391836d7ed9a745926b22c434efa76c119f77bcffa64d2c50c", + "sha256:48e5e59e77c1a83162ab3c163fc01cd2eebc5b34560341a67421b09be0891287", + "sha256:4a82faae00d1eed4809c2f18b37f15ce39a10a1c58fe48b60ad02875d6e13d80", + "sha256:4a983c8694667fd76d793ada77fd36c8317e76aa66eec75be2653cef2ea72883", + "sha256:4c2fc7aad520a97d64ffc98190fce6b64152bde57a10c704b337082679e74f67", + "sha256:4cb27ef9d3bdc0c195b2dc54fcb8720e18b741624686a81942e14c8b67cc61a6", + "sha256:4d67609b37204acad3d566bb7391e0ecc25ef8bae22ff72ebe2ad7ffb7847158", + "sha256:5482f08d2c3c42b920e8771ae8932fbaa0a67dff925fc476996ddd8155a170f3", + "sha256:5489738a692bc7ee9a0a7765979c8a572520d616d12d949eaffc6e061b82b4d1", + "sha256:5693dcc4f163481cf79e98cf2d7995c60e43809e325b77a7748d8024b1b7bcba", + "sha256:58416db767787aedbfd57116714aad6c9ce57215ffa1c3758a52403f7c68cff5", + "sha256:5873d6a60b778848ce23b6c0ac26c39e48969823882f607516b91fb323ce80e5", + "sha256:5af31493663cf76dd36b00dafbc839e83bbca8a0662931e11816d75f36155897", + "sha256:5e7fbcafa3ea16d1de1f213c226005fea21ee16ed56134b75b2dede5a2129e62", + "sha256:65346f507a815a731092421d0d7d60ed551a80d9b75e8b684307d435a5597425", + "sha256:6581e886aec3135964a302a0f5eb68f964869b9efd1dbafdebceaaf2934f8a68", + "sha256:69511d604368f3dc58d4be1b0bad99b61ee92b44afe1cd9b7bd8c5e34ea8248a", + "sha256:7018289b402ebf2b2c06992813523de61d4ce17bd514c4339d8f27a6f6809492", + "sha256:71c7b5896e40720d30cd77a81e62b433b981005bbff0cb2f739e0f8d059b5d99", + "sha256:75217e83faea9edbc29516fc90c817bc40c6b21a5771ecb53e868e45594826b0", + "sha256:7e23a8c3b6c06de40bdb9e06288180d630b562db8ac199e8cc535af81f90e64b", + "sha256:80c41023465d36280e801564a69cbfce8ae85ff79b080e1913f6e90481fb8957", + "sha256:831ba20b660b39e39e5ac8603e8193f8fce1ee03a42c84ade89c36a251449d80", + "sha256:851fb2fe14036cfc1960d806628b80276af5424db09fe5c91c726890c8e6d943", + "sha256:8751f9c1442624da391bbd92bd4b072def6d7702a9390e4479f45c182392ff78", + "sha256:8b45d722046fea5a5694cba5d86f21f78f0052b40a4bbbbf60128ac55bfcc7b6", + "sha256:8b697774ea8273e3c0460cf0bba16cd85ca6c46dfe8b303211816d68c492e132", + "sha256:90146ab578931e0e2826ee39d0c948d0ea72734378f1898939d18bc9c823fcf9", + "sha256:9301cf1d7fc1ddf668d0abbe3e227fc9ab15bc036a31c247276012abb921b5ff", + "sha256:95bd3a998d8c68b76679f6b18f520904af5204f089beebb7b0301d97704634dd", + "sha256:968b0c737797c1809ec602e082cb63e9824ff2329275336bb88bd71591e94a90", + "sha256:97d984b1b2f574bc1bb58296d3c0b64b10e95e7026f8716ed6c0b86d4679843f", + "sha256:9e68ae9864d260b18f311b68d29134d8776d82e7f5d75ce898b40a88df9db30f", + "sha256:adecf6d02b1beab8d7c04bc36f22bb0e4c65a35eb0b4750b91693631d4081c70", + "sha256:af56229ea6527a849ac9fb154a059d7e32e77a8cba27e3e62a1e38d8808cb1a5", + "sha256:b324fa769577fc2c8f5efcd429cef5acbc17d63fe15ed16d6dcbac2c5eb00849", + "sha256:b5a07c4f29bf7cb0164664ef87e4aa25435dcc1f818d29842118b0ac1eb8e2b5", + "sha256:bad172aba822444b32eae54c2d5ab18cd7dee9814fd5c7ed026603b8cae2d05f", + "sha256:bdca18b94c404af6ae5533cd1bc310c4931f7ac97c148bbfd2cd4bdd62b96253", + "sha256:be24a5867b8e3b9dd5c241de359a9a5217698ff616ac2daa47713ba2ebe30ad1", + "sha256:be86a26415a8b6af02cd8d782e3a9ae3872140a057f1cadf0133de685185c02b", + "sha256:c66b7ff2527e18554030319b1376d81560ca0742c6e0b17ff1ee96624a5f1afd", + "sha256:c8398a1b1951aaa330269c35335ae69744be166e67e0ebd9869bdc09426f3871", + "sha256:cad9545f5801a125f162d09ec9b724b7ad9b6440151b89645241d0120e119dcc", + "sha256:cb6d161ae94fb35bb518b74bb06b7293299c15ba3bc099dccd6a5b7ae589aee3", + "sha256:d40682ac60b2a613d36d8d3a0cd14fbdf8e7e0618fbb40aa9fa7b796c9081584", + "sha256:d6128d431b8dfa888bf51c22a04d48bcb3d64431caf02b3cb943269f17fd2994", + "sha256:dbc466744a2db4b7ca05589f21ae1a35066afada2f803f92369f5877c100ef62", + "sha256:ddbef8b53cd16467fdbfa92a712eae46dd066aa19780681a2ce266e88fbc7165", + "sha256:e21cc00e4debe8f54c3ed7b9fcca540f46eee12762a9fa56feb8512fd9057161", + "sha256:eb52e826d16c09ef87132c6e360e1879c984f19a4f62d8a935345deac43f3c12", + "sha256:f0d9e7ba6a815a12c8575ba7887da4b72483e4cfc57179af10c9b937f3f9308f", + "sha256:f1e931d9a92f628858a50f5bdffdfcf839aebe388b82f9d2ccd5d22a38a789dc", + "sha256:f45808eda8b1d71308c5416ef3abe958f033fdbb356984fabbfc7887bed76b3f", + "sha256:f6d39e42a0aa888122d1beb8ec0d4ddfb6c6b45aecb5ba4013c27e2f28657765", + "sha256:fc34fdd458ff77a2a00e3c86f899911f6f269d393ca5675842a6e92eea565bae" + ], + "markers": "python_version >= '3.6'", + "version": "==25.1.0" + }, + "qtconsole": { + "hashes": [ + "sha256:35fd6e87b1f6d1fd41801b07e69339f8982e76afd4fa8ef35595bc6036717189", + "sha256:5e4082a86a201796b2a5cfd4298352d22b158b51b57736531824715fc2a979dd" + ], + "markers": "python_version >= '3.7'", + "version": "==5.4.3" + }, + "qtpy": { + "hashes": [ + "sha256:5193d20e0b16e4d9d3bc2c642d04d9f4e2c892590bd1b9c92bfe38a95d5a2e12", + "sha256:a8c74982d6d172ce124d80cafd39653df78989683f760f2281ba91a6e7b9de8b" + ], + "markers": "python_version >= '3.7'", + "version": "==2.3.1" + }, + "referencing": { + "hashes": [ + "sha256:47237742e990457f7512c7d27486394a9aadaf876cbfaa4be65b27b4f4d47c6b", + "sha256:c257b08a399b6c2f5a3510a50d28ab5dbc7bbde049bcaf954d43c446f83ab548" + ], + "markers": "python_version >= '3.8'", + "version": "==0.30.0" + }, + "regex": { + "hashes": [ + "sha256:0385e73da22363778ef2324950e08b689abdf0b108a7d8decb403ad7f5191938", + "sha256:051da80e6eeb6e239e394ae60704d2b566aa6a7aed6f2890a7967307267a5dc6", + "sha256:05ed27acdf4465c95826962528f9e8d41dbf9b1aa8531a387dee6ed215a3e9ef", + "sha256:0654bca0cdf28a5956c83839162692725159f4cda8d63e0911a2c0dc76166525", + "sha256:09e4a1a6acc39294a36b7338819b10baceb227f7f7dbbea0506d419b5a1dd8af", + "sha256:0b49c764f88a79160fa64f9a7b425620e87c9f46095ef9c9920542ab2495c8bc", + "sha256:0b71e63226e393b534105fcbdd8740410dc6b0854c2bfa39bbda6b0d40e59a54", + "sha256:0c29ca1bd61b16b67be247be87390ef1d1ef702800f91fbd1991f5c4421ebae8", + "sha256:10590510780b7541969287512d1b43f19f965c2ece6c9b1c00fc367b29d8dce7", + "sha256:10cb847aeb1728412c666ab2e2000ba6f174f25b2bdc7292e7dd71b16db07568", + "sha256:12b74fbbf6cbbf9dbce20eb9b5879469e97aeeaa874145517563cca4029db65c", + "sha256:20326216cc2afe69b6e98528160b225d72f85ab080cbdf0b11528cbbaba2248f", + "sha256:2239d95d8e243658b8dbb36b12bd10c33ad6e6933a54d36ff053713f129aa536", + "sha256:25be746a8ec7bc7b082783216de8e9473803706723b3f6bef34b3d0ed03d57e2", + "sha256:271f0bdba3c70b58e6f500b205d10a36fb4b58bd06ac61381b68de66442efddb", + "sha256:29cdd471ebf9e0f2fb3cac165efedc3c58db841d83a518b082077e612d3ee5df", + "sha256:2d44dc13229905ae96dd2ae2dd7cebf824ee92bc52e8cf03dcead37d926da019", + "sha256:3676f1dd082be28b1266c93f618ee07741b704ab7b68501a173ce7d8d0d0ca18", + "sha256:36efeba71c6539d23c4643be88295ce8c82c88bbd7c65e8a24081d2ca123da3f", + "sha256:3e5219bf9e75993d73ab3d25985c857c77e614525fac9ae02b1bebd92f7cecac", + "sha256:43e1dd9d12df9004246bacb79a0e5886b3b6071b32e41f83b0acbf293f820ee8", + "sha256:457b6cce21bee41ac292d6753d5e94dcbc5c9e3e3a834da285b0bde7aa4a11e9", + "sha256:463b6a3ceb5ca952e66550a4532cef94c9a0c80dc156c4cc343041951aec1697", + "sha256:4959e8bcbfda5146477d21c3a8ad81b185cd252f3d0d6e4724a5ef11c012fb06", + "sha256:4d3850beab9f527f06ccc94b446c864059c57651b3f911fddb8d9d3ec1d1b25d", + "sha256:5708089ed5b40a7b2dc561e0c8baa9535b77771b64a8330b684823cfd5116036", + "sha256:5c6b48d0fa50d8f4df3daf451be7f9689c2bde1a52b1225c5926e3f54b6a9ed1", + "sha256:61474f0b41fe1a80e8dfa70f70ea1e047387b7cd01c85ec88fa44f5d7561d787", + "sha256:6343c6928282c1f6a9db41f5fd551662310e8774c0e5ebccb767002fcf663ca9", + "sha256:65ba8603753cec91c71de423a943ba506363b0e5c3fdb913ef8f9caa14b2c7e0", + "sha256:687ea9d78a4b1cf82f8479cab23678aff723108df3edeac098e5b2498879f4a7", + "sha256:6b2675068c8b56f6bfd5a2bda55b8accbb96c02fd563704732fd1c95e2083461", + "sha256:7117d10690c38a622e54c432dfbbd3cbd92f09401d622902c32f6d377e2300ee", + "sha256:7178bbc1b2ec40eaca599d13c092079bf529679bf0371c602edaa555e10b41c3", + "sha256:72d1a25bf36d2050ceb35b517afe13864865268dfb45910e2e17a84be6cbfeb0", + "sha256:742e19a90d9bb2f4a6cf2862b8b06dea5e09b96c9f2df1779e53432d7275331f", + "sha256:74390d18c75054947e4194019077e243c06fbb62e541d8817a0fa822ea310c14", + "sha256:74419d2b50ecb98360cfaa2974da8689cb3b45b9deff0dcf489c0d333bcc1477", + "sha256:824bf3ac11001849aec3fa1d69abcb67aac3e150a933963fb12bda5151fe1bfd", + "sha256:83320a09188e0e6c39088355d423aa9d056ad57a0b6c6381b300ec1a04ec3d16", + "sha256:837328d14cde912af625d5f303ec29f7e28cdab588674897baafaf505341f2fc", + "sha256:841d6e0e5663d4c7b4c8099c9997be748677d46cbf43f9f471150e560791f7ff", + "sha256:87b2a5bb5e78ee0ad1de71c664d6eb536dc3947a46a69182a90f4410f5e3f7dd", + "sha256:890e5a11c97cf0d0c550eb661b937a1e45431ffa79803b942a057c4fb12a2da2", + "sha256:8abbc5d54ea0ee80e37fef009e3cec5dafd722ed3c829126253d3e22f3846f1e", + "sha256:8e3f1316c2293e5469f8f09dc2d76efb6c3982d3da91ba95061a7e69489a14ef", + "sha256:8f56fcb7ff7bf7404becdfc60b1e81a6d0561807051fd2f1860b0d0348156a07", + "sha256:9427a399501818a7564f8c90eced1e9e20709ece36be701f394ada99890ea4b3", + "sha256:976d7a304b59ede34ca2921305b57356694f9e6879db323fd90a80f865d355a3", + "sha256:9a5bfb3004f2144a084a16ce19ca56b8ac46e6fd0651f54269fc9e230edb5e4a", + "sha256:9beb322958aaca059f34975b0df135181f2e5d7a13b84d3e0e45434749cb20f7", + "sha256:9edcbad1f8a407e450fbac88d89e04e0b99a08473f666a3f3de0fd292badb6aa", + "sha256:9edce5281f965cf135e19840f4d93d55b3835122aa76ccacfd389e880ba4cf82", + "sha256:a4c3b7fa4cdaa69268748665a1a6ff70c014d39bb69c50fda64b396c9116cf77", + "sha256:a8105e9af3b029f243ab11ad47c19b566482c150c754e4c717900a798806b222", + "sha256:a99b50300df5add73d307cf66abea093304a07eb017bce94f01e795090dea87c", + "sha256:aad51907d74fc183033ad796dd4c2e080d1adcc4fd3c0fd4fd499f30c03011cd", + "sha256:af4dd387354dc83a3bff67127a124c21116feb0d2ef536805c454721c5d7993d", + "sha256:b28f5024a3a041009eb4c333863d7894d191215b39576535c6734cd88b0fcb68", + "sha256:b4598b1897837067a57b08147a68ac026c1e73b31ef6e36deeeb1fa60b2933c9", + "sha256:b6192d5af2ccd2a38877bfef086d35e6659566a335b1492786ff254c168b1693", + "sha256:b862c2b9d5ae38a68b92e215b93f98d4c5e9454fa36aae4450f61dd33ff48487", + "sha256:b956231ebdc45f5b7a2e1f90f66a12be9610ce775fe1b1d50414aac1e9206c06", + "sha256:bb60b503ec8a6e4e3e03a681072fa3a5adcbfa5479fa2d898ae2b4a8e24c4591", + "sha256:bbb02fd4462f37060122e5acacec78e49c0fbb303c30dd49c7f493cf21fc5b27", + "sha256:bdff5eab10e59cf26bc479f565e25ed71a7d041d1ded04ccf9aee1d9f208487a", + "sha256:c123f662be8ec5ab4ea72ea300359023a5d1df095b7ead76fedcd8babbedf969", + "sha256:c2b867c17a7a7ae44c43ebbeb1b5ff406b3e8d5b3e14662683e5e66e6cc868d3", + "sha256:c5f8037000eb21e4823aa485149f2299eb589f8d1fe4b448036d230c3f4e68e0", + "sha256:c6a57b742133830eec44d9b2290daf5cbe0a2f1d6acee1b3c7b1c7b2f3606df7", + "sha256:ccf91346b7bd20c790310c4147eee6ed495a54ddb6737162a36ce9dbef3e4751", + "sha256:cf67ca618b4fd34aee78740bea954d7c69fdda419eb208c2c0c7060bb822d747", + "sha256:d2da3abc88711bce7557412310dfa50327d5769a31d1c894b58eb256459dc289", + "sha256:d4f03bb71d482f979bda92e1427f3ec9b220e62a7dd337af0aa6b47bf4498f72", + "sha256:d54af539295392611e7efbe94e827311eb8b29668e2b3f4cadcfe6f46df9c777", + "sha256:d77f09bc4b55d4bf7cc5eba785d87001d6757b7c9eec237fe2af57aba1a071d9", + "sha256:d831c2f8ff278179705ca59f7e8524069c1a989e716a1874d6d1aab6119d91d1", + "sha256:dbbbfce33cd98f97f6bffb17801b0576e653f4fdb1d399b2ea89638bc8d08ae1", + "sha256:dcba6dae7de533c876255317c11f3abe4907ba7d9aa15d13e3d9710d4315ec0e", + "sha256:e0bb18053dfcfed432cc3ac632b5e5e5c5b7e55fb3f8090e867bfd9b054dbcbf", + "sha256:e2fbd6236aae3b7f9d514312cdb58e6494ee1c76a9948adde6eba33eb1c4264f", + "sha256:e5087a3c59eef624a4591ef9eaa6e9a8d8a94c779dade95d27c0bc24650261cd", + "sha256:e8915cc96abeb8983cea1df3c939e3c6e1ac778340c17732eb63bb96247b91d2", + "sha256:ea353ecb6ab5f7e7d2f4372b1e779796ebd7b37352d290096978fea83c4dba0c", + "sha256:ee2d1a9a253b1729bb2de27d41f696ae893507c7db224436abe83ee25356f5c1", + "sha256:f415f802fbcafed5dcc694c13b1292f07fe0befdb94aa8a52905bd115ff41e88", + "sha256:fb5ec16523dc573a4b277663a2b5a364e2099902d3944c9419a40ebd56a118f9", + "sha256:fea75c3710d4f31389eed3c02f62d0b66a9da282521075061ce875eb5300cf23" + ], + "markers": "python_version >= '3.6'", + "version": "==2023.6.3" + }, + "requests": { + "hashes": [ + "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", + "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" + ], + "markers": "python_version >= '3.7'", + "version": "==2.31.0" + }, + "rfc3339-validator": { + "hashes": [ + "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", + "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.1.4" + }, + "rfc3986-validator": { + "hashes": [ + "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", + "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.1.1" + }, + "rpds-py": { + "hashes": [ + "sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f", + "sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238", + "sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f", + "sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f", + "sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c", + "sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298", + "sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260", + "sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1", + "sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d", + "sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7", + "sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f", + "sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876", + "sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe", + "sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be", + "sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32", + "sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3", + "sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18", + "sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d", + "sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620", + "sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b", + "sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae", + "sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496", + "sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1", + "sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67", + "sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f", + "sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764", + "sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196", + "sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e", + "sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846", + "sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b", + "sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d", + "sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26", + "sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e", + "sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044", + "sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c", + "sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d", + "sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad", + "sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d", + "sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab", + "sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920", + "sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e", + "sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872", + "sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3", + "sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611", + "sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4", + "sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c", + "sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193", + "sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af", + "sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10", + "sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd", + "sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f", + "sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b", + "sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945", + "sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752", + "sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c", + "sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387", + "sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8", + "sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d", + "sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931", + "sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03", + "sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502", + "sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f", + "sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55", + "sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82", + "sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798", + "sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a", + "sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b", + "sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa", + "sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f", + "sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192", + "sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020", + "sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7", + "sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1", + "sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386", + "sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90", + "sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f", + "sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe", + "sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596", + "sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f", + "sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387", + "sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16", + "sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e", + "sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b", + "sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6", + "sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1", + "sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de", + "sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0", + "sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3", + "sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468", + "sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e", + "sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd", + "sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324", + "sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c", + "sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535", + "sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55", + "sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6", + "sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07" + ], + "markers": "python_version >= '3.8'", + "version": "==0.9.2" + }, + "send2trash": { + "hashes": [ + "sha256:a384719d99c07ce1eefd6905d2decb6f8b7ed054025bb0e618919f945de4f679", + "sha256:c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.8.2" + }, + "setuptools": { + "hashes": [ + "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f", + "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235" + ], + "markers": "python_version >= '3.7'", + "version": "==68.0.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "sniffio": { + "hashes": [ + "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101", + "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384" + ], + "markers": "python_version >= '3.7'", + "version": "==1.3.0" + }, + "soupsieve": { + "hashes": [ + "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8", + "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea" + ], + "markers": "python_version >= '3.7'", + "version": "==2.4.1" + }, + "stack-data": { + "hashes": [ + "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815", + "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8" + ], + "version": "==0.6.2" + }, + "sumy": { + "hashes": [ + "sha256:1c52dcfda3072d87c7ae85a100c53a93f5b1f758466a1a1369f86aff1bb0129d", + "sha256:e74323ef95f42be8c76464a758a003597729b60cceb918f4806fdadad3eeb1a8" + ], + "index": "pypi", + "version": "==0.11.0" + }, + "terminado": { + "hashes": [ + "sha256:6ccbbcd3a4f8a25a5ec04991f39a0b8db52dfcd487ea0e578d977e6752380333", + "sha256:8650d44334eba354dd591129ca3124a6ba42c3d5b70df5051b6921d506fdaeae" + ], + "markers": "python_version >= '3.7'", + "version": "==0.17.1" + }, + "texsoup": { + "hashes": [ + "sha256:3f6b2ad0abe3688a6656f544c1ba04d0eb25f423f8c377b7369f9ce061ddb70b" + ], + "index": "pypi", + "version": "==0.3.1" + }, + "tinycss2": { + "hashes": [ + "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847", + "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627" + ], + "markers": "python_version >= '3.7'", + "version": "==1.2.1" + }, + "tornado": { + "hashes": [ + "sha256:05615096845cf50a895026f749195bf0b10b8909f9be672f50b0fe69cba368e4", + "sha256:0c325e66c8123c606eea33084976c832aa4e766b7dff8aedd7587ea44a604cdf", + "sha256:29e71c847a35f6e10ca3b5c2990a52ce38b233019d8e858b755ea6ce4dcdd19d", + "sha256:4b927c4f19b71e627b13f3db2324e4ae660527143f9e1f2e2fb404f3a187e2ba", + "sha256:5b17b1cf5f8354efa3d37c6e28fdfd9c1c1e5122f2cb56dac121ac61baa47cbe", + "sha256:6a0848f1aea0d196a7c4f6772197cbe2abc4266f836b0aac76947872cd29b411", + "sha256:7efcbcc30b7c654eb6a8c9c9da787a851c18f8ccd4a5a3a95b05c7accfa068d2", + "sha256:834ae7540ad3a83199a8da8f9f2d383e3c3d5130a328889e4cc991acc81e87a0", + "sha256:b46a6ab20f5c7c1cb949c72c1994a4585d2eaa0be4853f50a03b5031e964fc7c", + "sha256:c2de14066c4a38b4ecbbcd55c5cc4b5340eb04f1c5e81da7451ef555859c833f", + "sha256:c367ab6c0393d71171123ca5515c61ff62fe09024fa6bf299cd1339dc9456829" + ], + "index": "pypi", + "version": "==6.3.2" + }, + "tqdm": { + "hashes": [ + "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5", + "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671" + ], + "markers": "python_version >= '3.7'", + "version": "==4.65.0" + }, + "traitlets": { + "hashes": [ + "sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8", + "sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9" + ], + "markers": "python_version >= '3.7'", + "version": "==5.9.0" + }, + "typing-extensions": { + "hashes": [ + "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36", + "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2" + ], + "markers": "python_version < '3.10'", + "version": "==4.7.1" + }, + "uri-template": { + "hashes": [ + "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", + "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363" + ], + "version": "==1.3.0" + }, + "urllib3": { + "hashes": [ + "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1", + "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825" + ], + "markers": "python_version >= '3.7'", + "version": "==2.0.3" + }, + "wcwidth": { + "hashes": [ + "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e", + "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0" + ], + "version": "==0.2.6" + }, + "webcolors": { + "hashes": [ + "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf", + "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a" + ], + "version": "==1.13" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" + ], + "version": "==0.5.1" + }, + "websocket-client": { + "hashes": [ + "sha256:c951af98631d24f8df89ab1019fc365f2227c0892f12fd150e935607c79dd0dd", + "sha256:f1f9f2ad5291f0225a49efad77abf9e700b6fef553900623060dad6e26503b9d" + ], + "markers": "python_version >= '3.7'", + "version": "==1.6.1" + }, + "widgetsnbextension": { + "hashes": [ + "sha256:2e37f0ce9da11651056280c7efe96f2db052fe8fc269508e3724f5cbd6c93018", + "sha256:9ec291ba87c2dfad42c3d5b6f68713fa18be1acd7476569516b2431682315c17" + ], + "markers": "python_version >= '3.7'", + "version": "==4.0.8" + }, + "wordcloud": { + "hashes": [ + "sha256:001a0b4483fe4ec26302b306c1590a4c44a99483c2da8232012ac62177296594", + "sha256:14f7d34c25ddad412fac32760bd5d6d1565a98821f6dd021cf6617203b0db5ae", + "sha256:15da7c4ff531b19527fb605da11e747d418a4d81d78503c34fb11babf3196b7a", + "sha256:16ed864495573094e5b64f424d66d9030a638569182ad7c5b2c8e11ab78a2541", + "sha256:19c444200056b3d75b5d84a6cc018d6491da1841462546663ea3a88300db03f1", + "sha256:1dc69a57a349272119ae633b8d6bcc9cde600aeb4342261e12ce169badcd28ca", + "sha256:2a90f512c1c3c2a483d9d12b06a80124cecf813ec7a49b328dce6181c5440f2d", + "sha256:31c09d77a01b3d5638f2e0e043cfcb0d90f1c8b4d12864132e1d421dc525467f", + "sha256:334318eb345eafc3494d81fbbe11823fc945833e6a77cf05c7a6a1b88c1e1db0", + "sha256:3639eeb7c8b09f71376c6369277fb78d2dd8c96648034c3c25ee0f34f3e9249c", + "sha256:3b50378e7cb7b9a1990ff3a10dfcad968185a1fbfd99de68c436245bbd5cd669", + "sha256:3c39bd66f172f56257f09cec8fe246cd11ef36e9e16eeabe88933788d983c6a1", + "sha256:3d4da63b8f315caf3f715b23ab0a05d43139b9395e5e78b7e12b7ed2701d3a8e", + "sha256:3e3f01635def27b971f178b8bc3438f3be09d91f72ab3b51b90a1ae16e4028d8", + "sha256:43a71a15ac8f721f425d1030633f26a8037ddb767fe9bb45647fe5ed94b92eda", + "sha256:4580f1cbf42b3a0565b140d580d6e249230373b8fa31e4491620af1caec45e92", + "sha256:47f329426a0952a4509d4d0c8b84867f8d11e65cb81ee852ebcfad588598cda8", + "sha256:523db887e47e840eb5c2e60428243bb1d7439fdc60f89626b17bafa1be64459c", + "sha256:52acd837fdd26239352f77be1491148b36e77f3c31ce7a9fe232664bfadd1a2c", + "sha256:55224971bd7c3ba2a1038dd5aefa0559b3a320bf6f0b864c0469db5dfa7d587b", + "sha256:55f6416f9958042fe92d751962a3dfd83e583828504d9f6e8f886e034b3354d0", + "sha256:5b6573eaab49a3682822ea7208077ed5b81210daa3ddb41a9d4879f9803d7b6b", + "sha256:61b292af5d88e719a641bb832280b81902df24a39936e6cf87ae0b6ea7910262", + "sha256:66bd735eb869a769806154067da01ecaeb4ce165d3c523c306e8ea7d376a1706", + "sha256:7344df98ea8556a4f8e12924cf0b2e2d7055b1565440fd0c2a453c2b7e1e240b", + "sha256:7b0a7e43b961ea7be13d7d7397fd131f8e795e1b36a23fdcab914a14d7c50def", + "sha256:90174d2154d554e186e4db14121315bb0e2cb4b0c88d0ca0f8f99831f672cfea", + "sha256:948a947960ce688088e7617c9f82c26a0992c1e4e28a4de1f9a0afa736102556", + "sha256:9595200d2e30ba161f585dfc5bf568010e76adc7c7bbc5d7149f0bf3b96996aa", + "sha256:a17055e10baee8e5f19d2b72c474d59dfb45660f66b92d3468fef44f0cc67b37", + "sha256:a3e6c77da50d1f5263281c72db8c2cf5893b2dd624ce684910b7830eb7069163", + "sha256:aa0ddb25cde58232131072870f139d6c737d74d7a3b6a80fcb9721f3b9b2e7bb", + "sha256:b4e4dcd8c1c2483c2c45082d1e9cd600924d84b52154324cce5579a3dac33c46", + "sha256:b8fc88ce6bd9edb514473f10ea4fb14ef78fbd5266b56a614939c5a8a0256283", + "sha256:bc2974162313e3702cfd314401c943bb94add4ae64a4d7d4ecdf93863133b5e1", + "sha256:be045984d2cdb4f181c7aff24001a97ade10d04b1098ac5c859748e2802263f4", + "sha256:c162814bc0ca2f1436e553ef8c451009c689f5a3f04be8acb5f1df7389b2dbc2", + "sha256:c1fa72f4f94d7236eb6a1a86cfcfa6df292411047320c8deb173cac379a87c2a", + "sha256:c70fd9ff86a4370d0ba9aede977440635a859b3c6a86693e178f2ecb4369e153", + "sha256:c887681e9353e559f25421bfd3b358990ae80ed77c42f28eed810ab180047578", + "sha256:ccd027f089df42d9d99f0a2d227823f1248d49826b82dc942e6066a16b825d99", + "sha256:cf81862e9ff7c7abca1fb883ee60d3274b1ce1b30f99cd07cc29c5f5d95cbab8", + "sha256:d2a966bdebdb4eab57ce4ce9a31e96b8772c0e5c46f7e334cb2e8afa59297d8a", + "sha256:d512c9867a43cbbfa51661ea2d7e3e84c4309ef29ee1be3e10b64f9d3353bd70", + "sha256:d76e1939ca45907dcdf8b17fd64d5a392534f42a90b6194e806f08b65ed73948", + "sha256:dd6d3f253f163ce21f6efc2cc675caf16ce474977de925b0adcdae9b97fe8659", + "sha256:e6376f09543416d03844313d7e6e39eb0a42547e07001ac50be93fbd4c6c4431", + "sha256:f6377f570838661ade045793e100f506a4e1f92ddac23455470a03617e30d2a8" + ], + "index": "pypi", + "version": "==1.8.2.2" + }, + "zipp": { + "hashes": [ + "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0", + "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147" + ], + "markers": "python_version >= '3.8'", + "version": "==3.16.2" + } + }, + "develop": {} +} diff --git a/docs/public/Resume_ClintPlummer_ENMR-2020.docx b/v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR-2020.docx similarity index 100% rename from docs/public/Resume_ClintPlummer_ENMR-2020.docx rename to v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR-2020.docx diff --git a/docs/public/Resume_ClintPlummer_ENMR.aux b/v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.aux similarity index 100% rename from docs/public/Resume_ClintPlummer_ENMR.aux rename to v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.aux diff --git a/docs/public/Resume_ClintPlummer_ENMR.ipynb b/v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.ipynb similarity index 100% rename from docs/public/Resume_ClintPlummer_ENMR.ipynb rename to v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.ipynb diff --git a/v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.log b/v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.log new file mode 100644 index 0000000..f42e26e --- /dev/null +++ b/v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.log @@ -0,0 +1,1028 @@ +This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.4.22) 28 SEP 2023 13:55 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**Resume_ClintPlummer_ENMR.tex +(./Resume_ClintPlummer_ENMR.tex +LaTeX2e <2021-11-15> patch level 1 +L3 programming layer <2022-02-24> (./developercv.cls +Document Class: developercv 2019/01/28 Developer CV class v1.0 +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/extsizes/extarticle.cls +Document Class: extarticle 1996/10/08 v1.0 Non Standard LaTeX document class +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/extsizes/size9.clo +File: size9.clo 1999/11/11 v1.4a NON-Standard LaTeX file (size option) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/base/exscale.sty +Package: exscale 2018/09/24 v2.1i Standard LaTeX package exscale +LaTeX Font Info: Redeclaring symbol font `largesymbols' on input line 57. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' +(Font) OMX/cmex/m/n --> OMX/cmex/m/n on input line 57. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) OMX/cmex/m/n --> OMX/cmex/m/n on input line 57. +\big@size=\dimen138 +) +\c@part=\count185 +\c@section=\count186 +\c@subsection=\count187 +\c@subsubsection=\count188 +\c@paragraph=\count189 +\c@subparagraph=\count190 +\c@figure=\count191 +\c@table=\count192 +\abovecaptionskip=\skip47 +\belowcaptionskip=\skip48 +\bibindent=\dimen139 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2022-02-21 v7.00n Hypertext links for LaTeX + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2022/02/03 v1.0f TeX engine tests +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO +) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks16 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys. +sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) +) (/usr/local/texlive/2022basic/texmf-dist/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2020-10-07 v3.14 Key value format for package options (HO) +) +\@linkdim=\dimen140 +\Hy@linkcounter=\count193 +\Hy@pagecounter=\count194 + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2022-02-21 v7.00n Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/etexcmds/etexcmds.sty +Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) +) +\Hy@SavedSpaceFactor=\count195 + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/hyperref/puenc.def +File: puenc.def 2022-02-21 v7.00n Hyperref: PDF Unicode definition (HO) +Now handling font encoding PU ... +... no UTF-8 mapping file for font encoding PU +) +Package hyperref Info: Hyper figures OFF on input line 4137. +Package hyperref Info: Link nesting OFF on input line 4142. +Package hyperref Info: Hyper index ON on input line 4145. +Package hyperref Info: Plain pages OFF on input line 4152. +Package hyperref Info: Backreferencing OFF on input line 4157. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4390. +\c@Hy@tempcnt=\count196 + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip16 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 4749. +\XeTeXLinkMargin=\dimen141 + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO +) +)) +\Fld@menulength=\count197 +\Field@Width=\dimen142 +\Fld@charsize=\dimen143 +Package hyperref Info: Hyper figures OFF on input line 6027. +Package hyperref Info: Link nesting OFF on input line 6032. +Package hyperref Info: Hyper index ON on input line 6035. +Package hyperref Info: backreferencing OFF on input line 6042. +Package hyperref Info: Link coloring OFF on input line 6047. +Package hyperref Info: Link coloring with OCG OFF on input line 6052. +Package hyperref Info: PDF/A mode OFF on input line 6057. +LaTeX Info: Redefining \ref on input line 6097. +LaTeX Info: Redefining \pageref on input line 6101. + (/usr/local/texlive/2022basic/texmf-dist/tex/latex/base/atbegshi-ltx.sty +Package: atbegshi-ltx 2021/01/10 v1.0c Emulation of the original atbegshi +package with kernel methods +) +\Hy@abspage=\count198 +\c@Item=\count199 +\c@Hfootnote=\count266 +) +Package hyperref Info: Driver (autodetected): hpdftex. + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2022-02-21 v7.00n Hyperref driver for pdfTeX + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/base/atveryend-ltx.sty +Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atveryend pac +kage +with kernel methods +) +\Fld@listcount=\count267 +\c@bookmark@seq@number=\count268 + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/rerunfilecheck/rerunfilechec +k.sty +Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/uniquecounter/uniquecounte +r.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +86. +) +\Hy@SectionHShift=\skip49 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/moresize/moresize.sty +Package: moresize 1999/07/26 v1.9 (more font sizes) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. +) +\Gm@cnth=\count269 +\Gm@cntv=\count270 +\c@Gm@tempcnt=\count271 +\Gm@bindingoffset=\dimen144 +\Gm@wd@mp=\dimen145 +\Gm@odd@mp=\dimen146 +\Gm@even@mp=\dimen147 +\Gm@layoutwidth=\dimen148 +\Gm@layoutheight=\dimen149 +\Gm@layouthoffset=\dimen150 +\Gm@layoutvoffset=\dimen151 +\Gm@dimlist=\toks17 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2021/02/14 v1.3d Input encoding file +\inpenc@prehook=\toks18 +\inpenc@posthook=\toks19 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2021/04/29 v2.0v Standard LaTeX package +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/raleway/raleway.sty +Package: raleway 2016/12/03 v1.4 Matt McInerney’s Raleway family + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/iftex/ifxetex.sty +Package: ifxetex 2019/10/25 v0.7 ifxetex legacy package. Use iftex instead. +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/iftex/ifluatex.sty +Package: ifluatex 2019/10/25 v1.5 ifluatex legacy package. Use iftex instead. +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2020/11/20 v2.8 package option processing (HA) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks20 +\XKV@tempa@toks=\toks21 +) +\XKV@depth=\count272 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2021/04/29 v2.0v Standard LaTeX package + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/ly1/ly1enc.def +File: ly1enc.def 2009/07/22 v0.7 TeX 'n ANSI encoding (DPC/KB) +Now handling font encoding LY1 ... +... processing UTF-8 mapping file for font encoding LY1 + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/base/ly1enc.dfu +File: ly1enc.dfu 2021/06/21 v1.2n UTF-8 support + defining Unicode char U+00A0 (decimal 160) + defining Unicode char U+00A1 (decimal 161) + defining Unicode char U+00A2 (decimal 162) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00A4 (decimal 164) + defining Unicode char U+00A5 (decimal 165) + defining Unicode char U+00A6 (decimal 166) + defining Unicode char U+00A7 (decimal 167) + defining Unicode char U+00AA (decimal 170) + defining Unicode char U+00AB (decimal 171) + defining Unicode char U+00AD (decimal 173) + defining Unicode char U+00AE (decimal 174) + defining Unicode char U+00B0 (decimal 176) + defining Unicode char U+00B5 (decimal 181) + defining Unicode char U+00B6 (decimal 182) + defining Unicode char U+00B7 (decimal 183) + defining Unicode char U+00BA (decimal 186) + defining Unicode char U+00BB (decimal 187) + defining Unicode char U+00BC (decimal 188) + defining Unicode char U+00BD (decimal 189) + defining Unicode char U+00BE (decimal 190) + defining Unicode char U+00BF (decimal 191) + defining Unicode char U+00C0 (decimal 192) + defining Unicode char U+00C1 (decimal 193) + defining Unicode char U+00C2 (decimal 194) + defining Unicode char U+00C3 (decimal 195) + defining Unicode char U+00C4 (decimal 196) + defining Unicode char U+00C5 (decimal 197) + defining Unicode char U+00C6 (decimal 198) + defining Unicode char U+00C7 (decimal 199) + defining Unicode char U+00C8 (decimal 200) + defining Unicode char U+00C9 (decimal 201) + defining Unicode char U+00CA (decimal 202) + defining Unicode char U+00CB (decimal 203) + defining Unicode char U+00CC (decimal 204) + defining Unicode char U+00CD (decimal 205) + defining Unicode char U+00CE (decimal 206) + defining Unicode char U+00CF (decimal 207) + defining Unicode char U+00D0 (decimal 208) + defining Unicode char U+00D1 (decimal 209) + defining Unicode char U+00D2 (decimal 210) + defining Unicode char U+00D3 (decimal 211) + defining Unicode char U+00D4 (decimal 212) + defining Unicode char U+00D5 (decimal 213) + defining Unicode char U+00D6 (decimal 214) + defining Unicode char U+00D8 (decimal 216) + defining Unicode char U+00D9 (decimal 217) + defining Unicode char U+00DA (decimal 218) + defining Unicode char U+00DB (decimal 219) + defining Unicode char U+00DC (decimal 220) + defining Unicode char U+00DD (decimal 221) + defining Unicode char U+00DE (decimal 222) + defining Unicode char U+00DF (decimal 223) + defining Unicode char U+00E0 (decimal 224) + defining Unicode char U+00E1 (decimal 225) + defining Unicode char U+00E2 (decimal 226) + defining Unicode char U+00E3 (decimal 227) + defining Unicode char U+00E4 (decimal 228) + defining Unicode char U+00E5 (decimal 229) + defining Unicode char U+00E6 (decimal 230) + defining Unicode char U+00E7 (decimal 231) + defining Unicode char U+00E8 (decimal 232) + defining Unicode char U+00E9 (decimal 233) + defining Unicode char U+00EA (decimal 234) + defining Unicode char U+00EB (decimal 235) + defining Unicode char U+00EC (decimal 236) + defining Unicode char U+00ED (decimal 237) + defining Unicode char U+00EE (decimal 238) + defining Unicode char U+00EF (decimal 239) + defining Unicode char U+00F0 (decimal 240) + defining Unicode char U+00F1 (decimal 241) + defining Unicode char U+00F2 (decimal 242) + defining Unicode char U+00F3 (decimal 243) + defining Unicode char U+00F4 (decimal 244) + defining Unicode char U+00F5 (decimal 245) + defining Unicode char U+00F6 (decimal 246) + defining Unicode char U+00F8 (decimal 248) + defining Unicode char U+00F9 (decimal 249) + defining Unicode char U+00FA (decimal 250) + defining Unicode char U+00FB (decimal 251) + defining Unicode char U+00FC (decimal 252) + defining Unicode char U+00FD (decimal 253) + defining Unicode char U+00FE (decimal 254) + defining Unicode char U+00FF (decimal 255) + defining Unicode char U+0131 (decimal 305) + defining Unicode char U+0141 (decimal 321) + defining Unicode char U+0142 (decimal 322) + defining Unicode char U+0152 (decimal 338) + defining Unicode char U+0153 (decimal 339) + defining Unicode char U+0160 (decimal 352) + defining Unicode char U+0161 (decimal 353) + defining Unicode char U+0174 (decimal 372) + defining Unicode char U+0175 (decimal 373) + defining Unicode char U+0176 (decimal 374) + defining Unicode char U+0177 (decimal 375) + defining Unicode char U+0178 (decimal 376) + defining Unicode char U+017D (decimal 381) + defining Unicode char U+017E (decimal 382) + defining Unicode char U+0192 (decimal 402) + defining Unicode char U+0218 (decimal 536) + defining Unicode char U+0219 (decimal 537) + defining Unicode char U+021A (decimal 538) + defining Unicode char U+021B (decimal 539) + defining Unicode char U+0237 (decimal 567) + defining Unicode char U+02C6 (decimal 710) + defining Unicode char U+02DC (decimal 732) + defining Unicode char U+2013 (decimal 8211) + defining Unicode char U+2014 (decimal 8212) + defining Unicode char U+201C (decimal 8220) + defining Unicode char U+201D (decimal 8221) + defining Unicode char U+2020 (decimal 8224) + defining Unicode char U+2021 (decimal 8225) + defining Unicode char U+2022 (decimal 8226) + defining Unicode char U+2026 (decimal 8230) + defining Unicode char U+2030 (decimal 8240) + defining Unicode char U+2039 (decimal 8249) + defining Unicode char U+203A (decimal 8250) + defining Unicode char U+2122 (decimal 8482) + defining Unicode char U+FB00 (decimal 64256) + defining Unicode char U+FB01 (decimal 64257) + defining Unicode char U+FB02 (decimal 64258) + defining Unicode char U+FB03 (decimal 64259) + defining Unicode char U+FB04 (decimal 64260) + defining Unicode char U+FB05 (decimal 64261) + defining Unicode char U+FB06 (decimal 64262) +)))) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/fontawesome/fontawesome.sty +Package: fontawesome 2016/05/15 v4.6.3.1 font awesome icons + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/fontawesome/fontawesomesymbo +ls-generic.tex) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/fontawesome/fontawesomesymbo +ls-pdftex.tex)) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/utilities/pgfutil-comm +on.tex +\pgfutil@everybye=\toks22 +\pgfutil@tempdima=\dimen152 +\pgfutil@tempdimb=\dimen153 + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/utilities/pgfutil-comm +on-lists.tex)) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/utilities/pgfutil-late +x.def +\pgfutil@abb=\box50 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code. +tex (/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/pgf.revision.tex) +Package: pgfrcs 2021/05/15 v3.1.9a (3.1.9a) +)) +Package: pgf 2021/05/15 v3.1.9a (3.1.9a) + (/usr/local/texlive/2022basic/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2021/03/04 v1.4d Standard LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2021/08/11 v1.11 sin cos tan (DPC) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 107. + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen154 +\Gin@req@width=\dimen155 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.cod +e.tex +Package: pgfsys 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code +.tex +\pgfkeys@pathtoks=\toks23 +\pgfkeys@temptoks=\toks24 + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/utilities/pgfkeysfilte +red.code.tex +\pgfkeys@tmptoks=\toks25 +)) +\pgf@x=\dimen156 +\pgf@y=\dimen157 +\pgf@xa=\dimen158 +\pgf@ya=\dimen159 +\pgf@xb=\dimen160 +\pgf@yb=\dimen161 +\pgf@xc=\dimen162 +\pgf@yc=\dimen163 +\pgf@xd=\dimen164 +\pgf@yd=\dimen165 +\w@pgf@writea=\write3 +\r@pgf@reada=\read2 +\c@pgf@counta=\count273 +\c@pgf@countb=\count274 +\c@pgf@countc=\count275 +\c@pgf@countd=\count276 +\t@pgf@toka=\toks26 +\t@pgf@tokb=\toks27 +\t@pgf@tokc=\toks28 +\pgf@sys@id@count=\count277 + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2021/05/15 v3.1.9a (3.1.9a) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdf +tex.def +File: pgfsys-pdftex.def 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-com +mon-pdf.def +File: pgfsys-common-pdf.def 2021/05/15 v3.1.9a (3.1.9a) +))) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoft +path.code.tex +File: pgfsyssoftpath.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfsyssoftpath@smallbuffer@items=\count278 +\pgfsyssoftpath@bigbuffer@items=\count279 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprot +ocol.code.tex +File: pgfsysprotocol.code.tex 2021/05/15 v3.1.9a (3.1.9a) +)) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2021/10/31 v2.13 LaTeX color extensions (UK) + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 227. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1352. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1356. +Package xcolor Info: Model `RGB' extended on input line 1368. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1370. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1371. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1372. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1373. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1374. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1375. +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.cod +e.tex +Package: pgfcore 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code. +tex +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathutil.code. +tex) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathparser.cod +e.tex +\pgfmath@dimen=\dimen166 +\pgfmath@count=\count280 +\pgfmath@box=\box51 +\pgfmath@toks=\toks29 +\pgfmath@stack@operand=\toks30 +\pgfmath@stack@operation=\toks31 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathfunctions. +code.tex +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathfunctions. +basic.code.tex) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathfunctions. +trigonometric.code.tex) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathfunctions. +random.code.tex) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathfunctions. +comparison.code.tex) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathfunctions. +base.code.tex) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathfunctions. +round.code.tex) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathfunctions. +misc.code.tex) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathfunctions. +integerarithmetics.code.tex))) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code +.tex +\c@pgfmathroundto@lastzeros=\count281 +)) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoin +ts.code.tex +File: pgfcorepoints.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@picminx=\dimen167 +\pgf@picmaxx=\dimen168 +\pgf@picminy=\dimen169 +\pgf@picmaxy=\dimen170 +\pgf@pathminx=\dimen171 +\pgf@pathmaxx=\dimen172 +\pgf@pathminy=\dimen173 +\pgf@pathmaxy=\dimen174 +\pgf@xx=\dimen175 +\pgf@xy=\dimen176 +\pgf@yx=\dimen177 +\pgf@yy=\dimen178 +\pgf@zx=\dimen179 +\pgf@zy=\dimen180 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepath +construct.code.tex +File: pgfcorepathconstruct.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@path@lastx=\dimen181 +\pgf@path@lasty=\dimen182 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepath +usage.code.tex +File: pgfcorepathusage.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@shorten@end@additional=\dimen183 +\pgf@shorten@start@additional=\dimen184 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescop +es.code.tex +File: pgfcorescopes.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfpic=\box52 +\pgf@hbox=\box53 +\pgf@layerbox@main=\box54 +\pgf@picture@serial@count=\count282 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregrap +hicstate.code.tex +File: pgfcoregraphicstate.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgflinewidth=\dimen185 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretran +sformations.code.tex +File: pgfcoretransformations.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@pt@x=\dimen186 +\pgf@pt@y=\dimen187 +\pgf@pt@temp=\dimen188 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequic +k.code.tex +File: pgfcorequick.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobje +cts.code.tex +File: pgfcoreobjects.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepath +processing.code.tex +File: pgfcorepathprocessing.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearro +ws.code.tex +File: pgfcorearrows.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfarrowsep=\dimen189 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshad +e.code.tex +File: pgfcoreshade.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@max=\dimen190 +\pgf@sys@shading@range@num=\count283 +\pgf@shadingcount=\count284 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimag +e.code.tex +File: pgfcoreimage.code.tex 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexte +rnal.code.tex +File: pgfcoreexternal.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfexternal@startupbox=\box55 +)) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelaye +rs.code.tex +File: pgfcorelayers.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretran +sparency.code.tex +File: pgfcoretransparency.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatt +erns.code.tex +File: pgfcorepatterns.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf. +code.tex +File: pgfcorerdf.code.tex 2021/05/15 v3.1.9a (3.1.9a) +))) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/modules/pgfmoduleshape +s.code.tex +File: pgfmoduleshapes.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfnodeparttextbox=\box56 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot. +code.tex +File: pgfmoduleplot.code.tex 2021/05/15 v3.1.9a (3.1.9a) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-ve +rsion-0-65.sty +Package: pgfcomp-version-0-65 2021/05/15 v3.1.9a (3.1.9a) +\pgf@nodesepstart=\dimen191 +\pgf@nodesepend=\dimen192 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-ve +rsion-1-18.sty +Package: pgfcomp-version-1-18 2021/05/15 v3.1.9a (3.1.9a) +)) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code +.tex)) (/usr/local/texlive/2022basic/texmf-dist/tex/latex/pgf/math/pgfmath.sty +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/utilities/pgffor.code. +tex +Package: pgffor 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) +\pgffor@iter=\dimen193 +\pgffor@skip=\dimen194 +\pgffor@stack=\toks32 +\pgffor@toks=\toks33 +)) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tik +z.code.tex +Package: tikz 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/libraries/pgflibrarypl +othandlers.code.tex +File: pgflibraryplothandlers.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@plot@mark@count=\count285 +\pgfplotmarksize=\dimen195 +) +\tikz@lastx=\dimen196 +\tikz@lasty=\dimen197 +\tikz@lastxsaved=\dimen198 +\tikz@lastysaved=\dimen199 +\tikz@lastmovetox=\dimen256 +\tikz@lastmovetoy=\dimen257 +\tikzleveldistance=\dimen258 +\tikzsiblingdistance=\dimen259 +\tikz@figbox=\box57 +\tikz@figbox@bg=\box58 +\tikz@tempbox=\box59 +\tikz@tempbox@bg=\box60 +\tikztreelevel=\count286 +\tikznumberofchildren=\count287 +\tikznumberofcurrentchild=\count288 +\tikz@fig@count=\count289 + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/modules/pgfmodulematri +x.code.tex +File: pgfmodulematrix.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfmatrixcurrentrow=\count290 +\pgfmatrixcurrentcolumn=\count291 +\pgf@matrix@numberofcolumns=\count292 +) +\tikz@expandcount=\count293 + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/lib +raries/tikzlibrarytopaths.code.tex +File: tikzlibrarytopaths.code.tex 2021/05/15 v3.1.9a (3.1.9a) +))) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/lib +raries/tikzlibraryshapes.code.tex +File: tikzlibraryshapes.code.tex 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/lib +raries/tikzlibraryshapes.geometric.code.tex +File: tikzlibraryshapes.geometric.code.tex 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/libraries/shapes/pgfli +braryshapes.geometric.code.tex +File: pgflibraryshapes.geometric.code.tex 2021/05/15 v3.1.9a (3.1.9a) +)) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/lib +raries/tikzlibraryshapes.misc.code.tex +File: tikzlibraryshapes.misc.code.tex 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/libraries/shapes/pgfli +braryshapes.misc.code.tex +File: pgflibraryshapes.misc.code.tex 2021/05/15 v3.1.9a (3.1.9a) +)) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/lib +raries/tikzlibraryshapes.symbols.code.tex +File: tikzlibraryshapes.symbols.code.tex 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/libraries/shapes/pgfli +braryshapes.symbols.code.tex +File: pgflibraryshapes.symbols.code.tex 2021/05/15 v3.1.9a (3.1.9a) +)) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/lib +raries/tikzlibraryshapes.arrows.code.tex +File: tikzlibraryshapes.arrows.code.tex 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/libraries/shapes/pgfli +braryshapes.arrows.code.tex +File: pgflibraryshapes.arrows.code.tex 2021/05/15 v3.1.9a (3.1.9a) +)) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/lib +raries/tikzlibraryshapes.callouts.code.tex +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/libraries/shapes/pgfli +braryshapes.callouts.code.tex)) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/lib +raries/tikzlibraryshapes.multipart.code.tex +File: tikzlibraryshapes.multipart.code.tex 2021/05/15 v3.1.9a (3.1.9a) + +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/libraries/shapes/pgfli +braryshapes.multipart.code.tex +File: pgflibraryshapes.multipart.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgfnodepartlowerbox=\box61 +\pgfnodeparttwobox=\box62 +\pgfnodepartthreebox=\box63 +\pgfnodepartfourbox=\box64 +\pgfnodeparttwentybox=\box65 +\pgfnodepartnineteenbox=\box66 +\pgfnodeparteighteenbox=\box67 +\pgfnodepartseventeenbox=\box68 +\pgfnodepartsixteenbox=\box69 +\pgfnodepartfifteenbox=\box70 +\pgfnodepartfourteenbox=\box71 +\pgfnodepartthirteenbox=\box72 +\pgfnodeparttwelvebox=\box73 +\pgfnodepartelevenbox=\box74 +\pgfnodeparttenbox=\box75 +\pgfnodepartninebox=\box76 +\pgfnodeparteightbox=\box77 +\pgfnodepartsevenbox=\box78 +\pgfnodepartsixbox=\box79 +\pgfnodepartfivebox=\box80 +))) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/lib +raries/tikzlibrarybackgrounds.code.tex +File: tikzlibrarybackgrounds.code.tex 2021/05/15 v3.1.9a (3.1.9a) +\pgf@layerbox@background=\box81 +\pgf@layerboxsaved@background=\box82 +) +\c@barcount=\count294 +\c@a=\count295 +\c@b=\count296 +\c@c=\count297 + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/tools/longtable.sty +Package: longtable 2021-09-01 v4.17 Multi-page Table package (DPC) +\LTleft=\skip50 +\LTright=\skip51 +\LTpre=\skip52 +\LTpost=\skip53 +\LTchunksize=\count298 +\LTcapwidth=\dimen260 +\LT@head=\box83 +\LT@firsthead=\box84 +\LT@foot=\box85 +\LT@lastfoot=\box86 +\LT@gbox=\box87 +\LT@cols=\count299 +\LT@rows=\count300 +\c@LT@tables=\count301 +\c@LT@chunks=\count302 +\LT@p@ftn=\toks34 +)) +LaTeX Font Info: Trying to load font information for T1+Raleway-TLF on input + line 27. + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/raleway/T1Raleway-TLF.fd +File: T1Raleway-TLF.fd 2014/07/28 (autoinst) Font definitions for T1/Raleway-TL +F. +) +LaTeX Font Info: Font shape `T1/Raleway-TLF/m/n' will be +(Font) scaled to size 9.0pt on input line 27. + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/l3backend/l3backend-pdftex.d +ef +File: l3backend-pdftex.def 2022-02-07 L3 backend support: PDF output (pdfTeX) +\l__color_backend_stack_int=\count303 +\l__pdf_internal_box=\box88 +) (./Resume_ClintPlummer_ENMR.aux) +\openout1 = `Resume_ClintPlummer_ENMR.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 27. +LaTeX Font Info: ... okay on input line 27. +LaTeX Font Info: Checking defaults for LY1/ptm/m/n on input line 27. +LaTeX Font Info: Trying to load font information for LY1+ptm on input line 2 +7. + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/ly1/ly1ptm.fd +File: ly1ptm.fd 2001/02/01 font definitions for LY1/ptm using Berry names. +) +LaTeX Font Info: ... okay on input line 27. +Package hyperref Info: Link coloring OFF on input line 27. + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2021-04-02 v2.47 Cross-referencing by name of section + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) +) +(/usr/local/texlive/2022basic/texmf-dist/tex/generic/gettitlestring/gettitlestr +ing.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) +) +\c@section@level=\count304 +) +LaTeX Info: Redefining \ref on input line 27. +LaTeX Info: Redefining \pageref on input line 27. +LaTeX Info: Redefining \nameref on input line 27. + (./Resume_ClintPlummer_ENMR.out) (./Resume_ClintPlummer_ENMR.out) +\@outlinefile=\write4 +\openout4 = `Resume_ClintPlummer_ENMR.out'. + + +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: a4paper +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: +* h-part:(L,W,R)=(56.9055pt, 483.69687pt, 56.9055pt) +* v-part:(T,H,B)=(49.79231pt, 745.46222pt, 49.79231pt) +* \paperwidth=597.50787pt +* \paperheight=845.04684pt +* \textwidth=483.69687pt +* \textheight=745.46222pt +* \oddsidemargin=-15.36449pt +* \evensidemargin=-15.36449pt +* \topmargin=-58.0436pt +* \headheight=21.33955pt +* \headsep=14.22636pt +* \topskip=9.0pt +* \footskip=28.45274pt +* \marginparwidth=74.0pt +* \marginparsep=10.0pt +* \columnsep=10.0pt +* \skip\footins=8.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +(/usr/local/texlive/2022basic/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count305 +\scratchdimen=\dimen261 +\scratchbox=\box89 +\nofMPsegments=\count306 +\nofMParguments=\count307 +\everyMPshowfont=\toks35 +\MPscratchCnt=\count308 +\MPscratchDim=\dimen262 +\MPnumerator=\count309 +\makeMPintoPDFobject=\count310 +\everyMPtoPDFconversion=\toks36 +) +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.s +ty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +LaTeX Font Info: Font shape `T1/Raleway-TLF/m/n' will be +(Font) scaled to size 29.86pt on input line 38. +LaTeX Font Info: Font shape `T1/Raleway-TLF/b/n' will be +(Font) scaled to size 29.86pt on input line 38. +LaTeX Font Info: Font shape `T1/Raleway-TLF/m/n' will be +(Font) scaled to size 14.4pt on input line 44. +LaTeX Font Info: Font shape `T1/Raleway-TLF/m/n' will be +(Font) scaled to size 10.0pt on input line 51. +LaTeX Font Info: Trying to load font information for U+fontawesometwo on inp +ut line 51. + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/fontawesome/ufontawesometwo. +fd +File: ufontawesometwo.fd 2016/05/22 Font definitions for U/fontawesometwo. +) +LaTeX Font Info: External font `cmex7' loaded for size +(Font) <6> on input line 51. +LaTeX Font Info: External font `cmex7' loaded for size +(Font) <5> on input line 51. +LaTeX Font Info: Trying to load font information for U+fontawesomeone on inp +ut line 53. + +(/usr/local/texlive/2022basic/texmf-dist/tex/latex/fontawesome/ufontawesomeone. +fd +File: ufontawesomeone.fd 2016/05/22 Font definitions for U/fontawesomeone. +) +Underfull \hbox (badness 10000) in paragraph at lines 51--54 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 60--63 + + [] + + +Overfull \hbox (3.05258pt too wide) in paragraph at lines 33--64 +[][] [] [] + [] + +LaTeX Font Info: Font shape `T1/Raleway-TLF/b/n' will be +(Font) scaled to size 9.0pt on input line 70. + +Underfull \hbox (badness 10000) in paragraph at lines 70--71 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 91--92 +[][] + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 91--92 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 103--104 + + [] + +LaTeX Font Info: Font shape `T1/Raleway-TLF/m/n' will be +(Font) scaled to size 7.0pt on input line 111. +LaTeX Font Info: Font shape `T1/Raleway-TLF/b/n' will be +(Font) scaled to size 7.0pt on input line 111. +[1 + +{/usr/local/texlive/2022basic/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] +[2] +Underfull \hbox (badness 10000) in paragraph at lines 198--199 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 205--205 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 210--210 + + [] + +[3] (./Resume_ClintPlummer_ENMR.aux) +Package rerunfilecheck Info: File `Resume_ClintPlummer_ENMR.out' has not change +d. +(rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0. + ) +Here is how much of TeX's memory you used: + 23774 strings out of 479719 + 467093 string characters out of 5880574 + 764989 words of memory out of 5000000 + 41357 multiletter control sequences out of 15000+600000 + 581003 words of font info for 53 fonts, out of 8000000 for 9000 + 319 hyphenation exceptions out of 8191 + 115i,8n,118p,442b,704s stack positions out of 10000i,1000n,20000p,200000b,200000s +{/usr/local/texlive/2022basic/texmf-dist/fonts/enc/dvips/fontawesome/fontawes +omeone.enc}{/usr/local/texlive/2022basic/texmf-dist/fonts/enc/dvips/fontawesome +/fontawesometwo.enc}{/usr/local/texlive/2022basic/texmf-dist/fonts/enc/dvips/ra +leway/a_bzmckq.enc} +Output written on Resume_ClintPlummer_ENMR.pdf (3 pages, 71175 bytes). +PDF statistics: + 50 PDF objects out of 1000 (max. 8388607) + 37 compressed objects within 1 object stream + 6 named destinations out of 1000 (max. 500000) + 13 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/docs/public/Resume_ClintPlummer_ENMR.out b/v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.out similarity index 100% rename from docs/public/Resume_ClintPlummer_ENMR.out rename to v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.out diff --git a/docs/public/Resume_ClintPlummer_ENMR.pdf b/v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.pdf similarity index 100% rename from docs/public/Resume_ClintPlummer_ENMR.pdf rename to v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.pdf diff --git a/docs/public/Resume_ClintPlummer_ENMR.tex b/v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.tex similarity index 100% rename from docs/public/Resume_ClintPlummer_ENMR.tex rename to v1/docs/.vitepress/dist/Resume_ClintPlummer_ENMR.tex diff --git a/docs/public/android-chrome-192x192.png b/v1/docs/.vitepress/dist/android-chrome-192x192.png similarity index 100% rename from docs/public/android-chrome-192x192.png rename to v1/docs/.vitepress/dist/android-chrome-192x192.png diff --git a/docs/public/android-chrome-512x512.png b/v1/docs/.vitepress/dist/android-chrome-512x512.png similarity index 100% rename from docs/public/android-chrome-512x512.png rename to v1/docs/.vitepress/dist/android-chrome-512x512.png diff --git a/docs/public/apple-touch-icon.png b/v1/docs/.vitepress/dist/apple-touch-icon.png similarity index 100% rename from docs/public/apple-touch-icon.png rename to v1/docs/.vitepress/dist/apple-touch-icon.png diff --git a/docs/.vitepress/theme/images/404.svg b/v1/docs/.vitepress/dist/assets/404.954b719c.svg similarity index 100% rename from docs/.vitepress/theme/images/404.svg rename to v1/docs/.vitepress/dist/assets/404.954b719c.svg diff --git a/docs/.vitepress/theme/003/ansi.png b/v1/docs/.vitepress/dist/assets/ansi.3f9697fe.png similarity index 100% rename from docs/.vitepress/theme/003/ansi.png rename to v1/docs/.vitepress/dist/assets/ansi.3f9697fe.png diff --git a/docs/.vitepress/theme/001/ansi.png b/v1/docs/.vitepress/dist/assets/ansi.4130c1e4.png similarity index 100% rename from docs/.vitepress/theme/001/ansi.png rename to v1/docs/.vitepress/dist/assets/ansi.4130c1e4.png diff --git a/docs/.vitepress/theme/002/ansi.png b/v1/docs/.vitepress/dist/assets/ansi.9aa23866.png similarity index 100% rename from docs/.vitepress/theme/002/ansi.png rename to v1/docs/.vitepress/dist/assets/ansi.9aa23866.png diff --git a/v1/docs/.vitepress/dist/assets/app.80ce16a9.js b/v1/docs/.vitepress/dist/assets/app.80ce16a9.js new file mode 100644 index 0000000..ff9602f --- /dev/null +++ b/v1/docs/.vitepress/dist/assets/app.80ce16a9.js @@ -0,0 +1 @@ +import{_,o as i,c,b as n,u as p,r as f,d as u,e as w,F as g,f as b,i as d,g as x,R as v,h as y,j as C,C as T,k as A,s as $,l as k,m as P,p as R,n as F,q as L,t as E,w as N,v as j,x as D,y as I,z as O}from"./chunks/framework.6e09c04a.js";const S="/assets/404.954b719c.svg",V="/assets/github-logo.201474ca.svg",B={props:["repo"],mounted(){this.repoUrl=new URL(this.repo,"https://www.github.com/")},data(){return{repoUrl:""}}},G=["href"],U=n("img",{alt:"github",src:V,class:"z-10 absolute top-2 right-3 w-5 md:w-8 hover:animate-spin"},null,-1),z=[U];function q(e,t,s,o,l,a){return i(),c("a",{href:l.repoUrl},z,8,G)}const h=_(B,[["render",q]]),H={class:"font-extrabold text-white my-2 md:my-1 ms-4 md:text-lg"},M={class:"max-w-2xl mx-auto"},Q={class:"bg-theme rounded-t-md p-3 mt-2 hidden md:block"},J={class:"flex gap-1.5"},K=n("div",{class:"w-2.5 h-2.5 bg-red-400 rounded-full"},null,-1),W=[K],X=n("div",{class:"w-2.5 h-2.5 bg-yellow-400 rounded-full"},null,-1),Y=[X],Z=n("div",{class:"w-2.5 h-2.5 bg-green-400 rounded-full"},null,-1),ee=[Z],te={class:"bg-theme terminal text-white rounded-b-md px-3 pb-4 font-mono md:max-w-2xl mb-4 h-[80vh]"},se={class:"md:overflow-y-scroll markdown pb-4 h-full pe-1"},ne={key:0},oe=n("h2",{class:"text-xl mb-4"},"404 - Page Not Found",-1),ae=n("p",{class:"mb-4"},[b(" But fear not, we've dispatched our squad of pixelated Ghostbusters to hunt it down, who you gonna call? 🕹️👻 "),n("a",{href:"https://www.youtube.com/watch?v=Fe93CLbHjxQ"},[n("img",{src:S,class:"mx-auto mt-8 w-1/2 animate-pulse hover:animate-spin",alt:"Ghostbusters Logo"})])],-1),re=[oe,ae],ie={key:1,class:"pb-4 md:pb-0"},ce=n("img",{alt:"ANSI Art Graphics",class:"w-full mb-4 ansi-art"},null,-1),le={components:{GithubCorner:h},methods:{swapTheme(e,t){t.preventDefault(),document.querySelector("body").dataset.theme=e,this.currentTheme=e},nextTheme(e){const s=(this.themes.indexOf(this.currentTheme)+1)%this.themes.length,o=this.themes[s];this.swapTheme(o,e)}},data(){return{currentTheme:"001",themes:["001","002","003"]}}},de=Object.assign(le,{__name:"Layout",setup(e){const{page:t}=p();return(s,o)=>{const l=f("Content");return i(),c(g,null,[u(h,{repo:"yuhonas/clintp.xyz"}),n("main",null,[n("h1",H,[n("a",{href:"",onClick:o[0]||(o[0]=(...a)=>s.nextTheme&&s.nextTheme(...a))},"$ ./clintp.xyz")]),n("div",M,[n("nav",Q,[n("div",J,[n("a",{href:"",onClick:o[1]||(o[1]=a=>s.swapTheme("001",a))},W),n("a",{href:"",onClick:o[2]||(o[2]=a=>s.swapTheme("002",a))},Y),n("a",{href:"",onClick:o[3]||(o[3]=a=>s.swapTheme("003",a))},ee)])]),n("section",te,[n("article",se,[w(t).isNotFound?(i(),c("div",ne,re)):(i(),c("div",ie,[ce,u(l)]))])])])])],64)}}});const ue={Layout:de};function m(e){if(e.extends){const t=m(e.extends);return{...t,...e,async enhanceApp(s){t.enhanceApp&&await t.enhanceApp(s),e.enhanceApp&&await e.enhanceApp(s)}}}return e}const r=m(ue),pe=L({name:"VitePressApp",setup(){const{site:e}=p();return E(()=>{N(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),j(),D(),I(),r.setup&&r.setup(),()=>O(r.Layout)}});async function he(){const e=_e(),t=me();t.provide(v,e);const s=y(e.route);return t.provide(C,s),t.component("Content",T),t.component("ClientOnly",A),Object.defineProperties(t.config.globalProperties,{$frontmatter:{get(){return s.frontmatter.value}},$params:{get(){return s.page.value.params}}}),r.enhanceApp&&await r.enhanceApp({app:t,router:e,siteData:$}),{app:t,router:e,data:s}}function me(){return k(pe)}function _e(){let e=d,t;return P(s=>{let o=R(s);return o?(e&&(t=o),(e||t===o)&&(o=o.replace(/\.js$/,".lean.js")),d&&(e=!1),F(()=>import(o),[])):null},r.NotFound)}d&&he().then(({app:e,router:t,data:s})=>{t.go().then(()=>{x(t.route,s.site),e.mount("#app")})});export{he as createApp}; diff --git a/docs/.vitepress/theme/002/background-2000w.avif b/v1/docs/.vitepress/dist/assets/background-2000w.31190235.avif old mode 100755 new mode 100644 similarity index 100% rename from docs/.vitepress/theme/002/background-2000w.avif rename to v1/docs/.vitepress/dist/assets/background-2000w.31190235.avif diff --git a/docs/.vitepress/theme/003/background-2000w.avif b/v1/docs/.vitepress/dist/assets/background-2000w.94c257dc.avif old mode 100755 new mode 100644 similarity index 100% rename from docs/.vitepress/theme/003/background-2000w.avif rename to v1/docs/.vitepress/dist/assets/background-2000w.94c257dc.avif diff --git a/docs/.vitepress/theme/001/background-2000w.avif b/v1/docs/.vitepress/dist/assets/background-2000w.ca696eea.avif old mode 100755 new mode 100644 similarity index 100% rename from docs/.vitepress/theme/001/background-2000w.avif rename to v1/docs/.vitepress/dist/assets/background-2000w.ca696eea.avif diff --git a/docs/.vitepress/theme/001/background-4000w.avif b/v1/docs/.vitepress/dist/assets/background-4000w.0b7ed554.avif similarity index 100% rename from docs/.vitepress/theme/001/background-4000w.avif rename to v1/docs/.vitepress/dist/assets/background-4000w.0b7ed554.avif diff --git a/docs/.vitepress/theme/002/background-4000w.avif b/v1/docs/.vitepress/dist/assets/background-4000w.6682d85d.avif similarity index 100% rename from docs/.vitepress/theme/002/background-4000w.avif rename to v1/docs/.vitepress/dist/assets/background-4000w.6682d85d.avif diff --git a/docs/.vitepress/theme/003/background-4000w.avif b/v1/docs/.vitepress/dist/assets/background-4000w.a6d43bd4.avif similarity index 100% rename from docs/.vitepress/theme/003/background-4000w.avif rename to v1/docs/.vitepress/dist/assets/background-4000w.a6d43bd4.avif diff --git a/v1/docs/.vitepress/dist/assets/chunks/framework.6e09c04a.js b/v1/docs/.vitepress/dist/assets/chunks/framework.6e09c04a.js new file mode 100644 index 0000000..0f40106 --- /dev/null +++ b/v1/docs/.vitepress/dist/assets/chunks/framework.6e09c04a.js @@ -0,0 +1,2 @@ +function An(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}const X={},et=[],ve=()=>{},Kr=()=>!1,Dr=/^on[^a-z]/,Ot=e=>Dr.test(e),On=e=>e.startsWith("onUpdate:"),se=Object.assign,In=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Wr=Object.prototype.hasOwnProperty,j=(e,t)=>Wr.call(e,t),M=Array.isArray,mt=e=>Jt(e)==="[object Map]",qr=e=>Jt(e)==="[object Set]",N=e=>typeof e=="function",ie=e=>typeof e=="string",Fn=e=>typeof e=="symbol",G=e=>e!==null&&typeof e=="object",Ds=e=>G(e)&&N(e.then)&&N(e.catch),kr=Object.prototype.toString,Jt=e=>kr.call(e),Vr=e=>Jt(e).slice(8,-1),zr=e=>Jt(e)==="[object Object]",Mn=e=>ie(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=An(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zt=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Yr=/-(\w)/g,Fe=Zt(e=>e.replace(Yr,(t,n)=>n?n.toUpperCase():"")),Xr=/\B([A-Z])/g,ft=Zt(e=>e.replace(Xr,"-$1").toLowerCase()),Qt=Zt(e=>e.charAt(0).toUpperCase()+e.slice(1)),cn=Zt(e=>e?`on${Qt(e)}`:""),vt=(e,t)=>!Object.is(e,t),fn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Jr=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let ss;const mn=()=>ss||(ss=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Hn(e){if(M(e)){const t={};for(let n=0;n{if(n){const s=n.split(Qr);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Sn(e){let t="";if(ie(e))t=e;else if(M(e))for(let n=0;n{const t=new Set(e);return t.w=0,t.n=0,t},qs=e=>(e.w&Ke)>0,ks=e=>(e.n&Ke)>0,li=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(h==="length"||h>=f)&&o.push(a)})}else switch(n!==void 0&&o.push(l.get(n)),t){case"add":M(e)?Mn(n)&&o.push(l.get("length")):(o.push(l.get(Ye)),mt(e)&&o.push(l.get(xn)));break;case"delete":M(e)||(o.push(l.get(Ye)),mt(e)&&o.push(l.get(xn)));break;case"set":mt(e)&&o.push(l.get(Ye));break}if(o.length===1)o[0]&&yn(o[0]);else{const f=[];for(const a of o)a&&f.push(...a);yn(Ln(f))}}function yn(e,t){const n=M(e)?e:[...e];for(const s of n)s.computed&&is(s);for(const s of n)s.computed||is(s)}function is(e,t){(e!==ye||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const ci=An("__proto__,__v_isRef,__isVue"),Ys=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Fn)),fi=$n(),ui=$n(!1,!0),ai=$n(!0),ls=di();function di(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=K(this);for(let i=0,l=this.length;i{e[t]=function(...n){ut();const s=K(this)[t].apply(this,n);return at(),s}}),e}function hi(e){const t=K(this);return ae(t,"has",e),t.hasOwnProperty(e)}function $n(e=!1,t=!1){return function(s,r,i){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&i===(e?t?Oi:Gs:t?Qs:Zs).get(s))return s;const l=M(s);if(!e){if(l&&j(ls,r))return Reflect.get(ls,r,i);if(r==="hasOwnProperty")return hi}const o=Reflect.get(s,r,i);return(Fn(r)?Ys.has(r):ci(r))||(e||ae(s,"get",r),t)?o:oe(o)?l&&Mn(r)?o:o.value:G(o)?e?er(o):en(o):o}}const pi=Xs(),gi=Xs(!0);function Xs(e=!1){return function(n,s,r,i){let l=n[s];if(rt(l)&&oe(l)&&!oe(r))return!1;if(!e&&(!qt(r)&&!rt(r)&&(l=K(l),r=K(r)),!M(n)&&oe(l)&&!oe(r)))return l.value=r,!0;const o=M(n)&&Mn(s)?Number(s)e,Gt=e=>Reflect.getPrototypeOf(e);function Mt(e,t,n=!1,s=!1){e=e.__v_raw;const r=K(e),i=K(t);n||(t!==i&&ae(r,"get",t),ae(r,"get",i));const{has:l}=Gt(r),o=s?Un:n?Kn:Ct;if(l.call(r,t))return o(e.get(t));if(l.call(r,i))return o(e.get(i));e!==r&&e.get(t)}function Ht(e,t=!1){const n=this.__v_raw,s=K(n),r=K(e);return t||(e!==r&&ae(s,"has",e),ae(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function St(e,t=!1){return e=e.__v_raw,!t&&ae(K(e),"iterate",Ye),Reflect.get(e,"size",e)}function os(e){e=K(e);const t=K(this);return Gt(t).has.call(t,e)||(t.add(e),Se(t,"add",e,e)),this}function cs(e,t){t=K(t);const n=K(this),{has:s,get:r}=Gt(n);let i=s.call(n,e);i||(e=K(e),i=s.call(n,e));const l=r.call(n,e);return n.set(e,t),i?vt(t,l)&&Se(n,"set",e,t):Se(n,"add",e,t),this}function fs(e){const t=K(this),{has:n,get:s}=Gt(t);let r=n.call(t,e);r||(e=K(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&Se(t,"delete",e,void 0),i}function us(){const e=K(this),t=e.size!==0,n=e.clear();return t&&Se(e,"clear",void 0,void 0),n}function Lt(e,t){return function(s,r){const i=this,l=i.__v_raw,o=K(l),f=t?Un:e?Kn:Ct;return!e&&ae(o,"iterate",Ye),l.forEach((a,h)=>s.call(r,f(a),f(h),i))}}function Nt(e,t,n){return function(...s){const r=this.__v_raw,i=K(r),l=mt(i),o=e==="entries"||e===Symbol.iterator&&l,f=e==="keys"&&l,a=r[e](...s),h=n?Un:t?Kn:Ct;return!t&&ae(i,"iterate",f?xn:Ye),{next(){const{value:_,done:C}=a.next();return C?{value:_,done:C}:{value:o?[h(_[0]),h(_[1])]:h(_),done:C}},[Symbol.iterator](){return this}}}}function Ne(e){return function(...t){return e==="delete"?!1:this}}function wi(){const e={get(i){return Mt(this,i)},get size(){return St(this)},has:Ht,add:os,set:cs,delete:fs,clear:us,forEach:Lt(!1,!1)},t={get(i){return Mt(this,i,!1,!0)},get size(){return St(this)},has:Ht,add:os,set:cs,delete:fs,clear:us,forEach:Lt(!1,!0)},n={get(i){return Mt(this,i,!0)},get size(){return St(this,!0)},has(i){return Ht.call(this,i,!0)},add:Ne("add"),set:Ne("set"),delete:Ne("delete"),clear:Ne("clear"),forEach:Lt(!0,!1)},s={get(i){return Mt(this,i,!0,!0)},get size(){return St(this,!0)},has(i){return Ht.call(this,i,!0)},add:Ne("add"),set:Ne("set"),delete:Ne("delete"),clear:Ne("clear"),forEach:Lt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Nt(i,!1,!1),n[i]=Nt(i,!0,!1),t[i]=Nt(i,!1,!0),s[i]=Nt(i,!0,!0)}),[e,n,t,s]}const[Ei,vi,Ci,Ti]=wi();function jn(e,t){const n=t?e?Ti:Ci:e?vi:Ei;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(j(n,r)&&r in s?n:s,r,i)}const Pi={get:jn(!1,!1)},Ri={get:jn(!1,!0)},Ai={get:jn(!0,!1)},Zs=new WeakMap,Qs=new WeakMap,Gs=new WeakMap,Oi=new WeakMap;function Ii(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Fi(e){return e.__v_skip||!Object.isExtensible(e)?0:Ii(Vr(e))}function en(e){return rt(e)?e:Bn(e,!1,Js,Pi,Zs)}function Mi(e){return Bn(e,!1,yi,Ri,Qs)}function er(e){return Bn(e,!0,xi,Ai,Gs)}function Bn(e,t,n,s,r){if(!G(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const l=Fi(e);if(l===0)return e;const o=new Proxy(e,l===2?s:n);return r.set(e,o),o}function tt(e){return rt(e)?tt(e.__v_raw):!!(e&&e.__v_isReactive)}function rt(e){return!!(e&&e.__v_isReadonly)}function qt(e){return!!(e&&e.__v_isShallow)}function tr(e){return tt(e)||rt(e)}function K(e){const t=e&&e.__v_raw;return t?K(t):e}function bt(e){return Wt(e,"__v_skip",!0),e}const Ct=e=>G(e)?en(e):e,Kn=e=>G(e)?er(e):e;function nr(e){je&&ye&&(e=K(e),zs(e.dep||(e.dep=Ln())))}function sr(e,t){e=K(e);const n=e.dep;n&&yn(n)}function oe(e){return!!(e&&e.__v_isRef===!0)}function rr(e){return ir(e,!1)}function Hi(e){return ir(e,!0)}function ir(e,t){return oe(e)?e:new Si(e,t)}class Si{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:K(t),this._value=n?t:Ct(t)}get value(){return nr(this),this._value}set value(t){const n=this.__v_isShallow||qt(t)||rt(t);t=n?t:K(t),vt(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Ct(t),sr(this))}}function Li(e){return oe(e)?e.value:e}const Ni={get:(e,t,n)=>Li(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return oe(r)&&!oe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function lr(e){return tt(e)?e:new Proxy(e,Ni)}class $i{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new Nn(t,()=>{this._dirty||(this._dirty=!0,sr(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=K(this);return nr(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function Ui(e,t,n=!1){let s,r;const i=N(e);return i?(s=e,r=ve):(s=e.get,r=e.set),new $i(s,r,i||!r,n)}function Be(e,t,n,s){let r;try{r=s?e(...s):e()}catch(i){tn(i,t,n)}return r}function Ce(e,t,n,s){if(N(e)){const i=Be(e,t,n,s);return i&&Ds(i)&&i.catch(l=>{tn(l,t,n)}),i}const r=[];for(let i=0;i>>1;Pt(le[s])Ie&&le.splice(t,1)}function Di(e){M(e)?nt.push(...e):(!He||!He.includes(e,e.allowRecurse?ke+1:ke))&&nt.push(e),fr()}function as(e,t=Tt?Ie+1:0){for(;tPt(n)-Pt(s)),ke=0;kee.id==null?1/0:e.id,Wi=(e,t)=>{const n=Pt(e)-Pt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function ur(e){wn=!1,Tt=!0,le.sort(Wi);const t=ve;try{for(Ie=0;Ieie(O)?O.trim():O)),_&&(r=n.map(Jr))}let o,f=s[o=cn(t)]||s[o=cn(Fe(t))];!f&&i&&(f=s[o=cn(ft(t))]),f&&Ce(f,e,6,r);const a=s[o+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[o])return;e.emitted[o]=!0,Ce(a,e,6,r)}}function ar(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let l={},o=!1;if(!N(e)){const f=a=>{const h=ar(a,t,!0);h&&(o=!0,se(l,h))};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!i&&!o?(G(e)&&s.set(e,null),null):(M(i)?i.forEach(f=>l[f]=null):se(l,i),G(e)&&s.set(e,l),l)}function nn(e,t){return!e||!Ot(t)?!1:(t=t.slice(2).replace(/Once$/,""),j(e,t[0].toLowerCase()+t.slice(1))||j(e,ft(t))||j(e,t))}let we=null,dr=null;function Vt(e){const t=we;return we=e,dr=e&&e.type.__scopeId||null,t}function ki(e,t=we,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Es(-1);const i=Vt(t);let l;try{l=e(...r)}finally{Vt(i),s._d&&Es(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function un(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[l],slots:o,attrs:f,emit:a,render:h,renderCache:_,data:C,setupState:O,ctx:U,inheritAttrs:H}=e;let B,b;const E=Vt(e);try{if(n.shapeFlag&4){const P=r||s;B=xe(h.call(P,P,_,i,O,C,U)),b=f}else{const P=t;B=xe(P.length>1?P(i,{attrs:f,slots:o,emit:a}):P(i,null)),b=t.props?f:Vi(f)}}catch(P){Et.length=0,tn(P,e,1),B=ue(lt)}let S=B;if(b&&H!==!1){const P=Object.keys(b),{shapeFlag:W}=S;P.length&&W&7&&(l&&P.some(On)&&(b=zi(b,l)),S=ot(S,b))}return n.dirs&&(S=ot(S),S.dirs=S.dirs?S.dirs.concat(n.dirs):n.dirs),n.transition&&(S.transition=n.transition),B=S,Vt(E),B}const Vi=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ot(n))&&((t||(t={}))[n]=e[n]);return t},zi=(e,t)=>{const n={};for(const s in e)(!On(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Yi(e,t,n){const{props:s,children:r,component:i}=e,{props:l,children:o,patchFlag:f}=t,a=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&f>=0){if(f&1024)return!0;if(f&16)return s?ds(s,l,a):!!l;if(f&8){const h=t.dynamicProps;for(let _=0;_e.__isSuspense;function hr(e,t){t&&t.pendingBranch?M(e)?t.effects.push(...e):t.effects.push(e):Di(e)}function Zi(e,t){return qn(e,null,t)}const $t={};function Kt(e,t,n){return qn(e,t,n)}function qn(e,t,{immediate:n,deep:s,flush:r,onTrack:i,onTrigger:l}=X){var o;const f=ii()===((o=re)==null?void 0:o.scope)?re:null;let a,h=!1,_=!1;if(oe(e)?(a=()=>e.value,h=qt(e)):tt(e)?(a=()=>e,s=!0):M(e)?(_=!0,h=e.some(P=>tt(P)||qt(P)),a=()=>e.map(P=>{if(oe(P))return P.value;if(tt(P))return Ge(P);if(N(P))return Be(P,f,2)})):N(e)?t?a=()=>Be(e,f,2):a=()=>{if(!(f&&f.isUnmounted))return C&&C(),Ce(e,f,3,[O])}:a=ve,t&&s){const P=a;a=()=>Ge(P())}let C,O=P=>{C=E.onStop=()=>{Be(P,f,4)}},U;if(At)if(O=ve,t?n&&Ce(t,f,3,[a(),_?[]:void 0,O]):a(),r==="sync"){const P=Vl();U=P.__watcherHandles||(P.__watcherHandles=[])}else return ve;let H=_?new Array(e.length).fill($t):$t;const B=()=>{if(E.active)if(t){const P=E.run();(s||h||(_?P.some((W,Y)=>vt(W,H[Y])):vt(P,H)))&&(C&&C(),Ce(t,f,3,[P,H===$t?void 0:_&&H[0]===$t?[]:H,O]),H=P)}else E.run()};B.allowRecurse=!!t;let b;r==="sync"?b=B:r==="post"?b=()=>fe(B,f&&f.suspense):(B.pre=!0,f&&(B.id=f.uid),b=()=>Wn(B));const E=new Nn(a,b);t?n?B():H=E.run():r==="post"?fe(E.run.bind(E),f&&f.suspense):E.run();const S=()=>{E.stop(),f&&f.scope&&In(f.scope.effects,E)};return U&&U.push(S),S}function Qi(e,t,n){const s=this.proxy,r=ie(e)?e.includes(".")?pr(s,e):()=>s[e]:e.bind(s,s);let i;N(t)?i=t:(i=t.handler,n=t);const l=re;ct(this);const o=qn(r,i.bind(s),n);return l?ct(l):Xe(),o}function pr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{Ge(n,t)});else if(zr(e))for(const n in e)Ge(e[n],t);return e}function Oe(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let l=0;lse({name:e.name},t,{setup:e}))():e}const xt=e=>!!e.type.__asyncLoader,mr=e=>e.type.__isKeepAlive;function Gi(e,t){_r(e,"a",t)}function el(e,t){_r(e,"da",t)}function _r(e,t,n=re){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(sn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)mr(r.parent.vnode)&&tl(s,t,n,r),r=r.parent}}function tl(e,t,n,s){const r=sn(t,e,s,!0);Vn(()=>{In(s[t],r)},n)}function sn(e,t,n=re,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...l)=>{if(n.isUnmounted)return;ut(),ct(n);const o=Ce(t,n,e,l);return Xe(),at(),o});return s?r.unshift(i):r.push(i),i}}const Le=e=>(t,n=re)=>(!At||e==="sp")&&sn(e,(...s)=>t(...s),n),nl=Le("bm"),kn=Le("m"),sl=Le("bu"),rl=Le("u"),il=Le("bum"),Vn=Le("um"),ll=Le("sp"),ol=Le("rtg"),cl=Le("rtc");function fl(e,t=re){sn("ec",e,t)}const br="components";function Bo(e,t){return al(br,e,!0,t)||e}const ul=Symbol.for("v-ndc");function al(e,t,n=!0,s=!1){const r=we||re;if(r){const i=r.type;if(e===br){const o=Wl(i,!1);if(o&&(o===t||o===Fe(t)||o===Qt(Fe(t))))return i}const l=hs(r[e]||i[e],t)||hs(r.appContext[e],t);return!l&&s?i:l}}function hs(e,t){return e&&(e[t]||e[Fe(t)]||e[Qt(Fe(t))])}const En=e=>e?Ir(e)?Zn(e)||e.proxy:En(e.parent):null,yt=se(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>En(e.parent),$root:e=>En(e.root),$emit:e=>e.emit,$options:e=>zn(e),$forceUpdate:e=>e.f||(e.f=()=>Wn(e.update)),$nextTick:e=>e.n||(e.n=cr.bind(e.proxy)),$watch:e=>Qi.bind(e)}),an=(e,t)=>e!==X&&!e.__isScriptSetup&&j(e,t),dl={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:l,type:o,appContext:f}=e;let a;if(t[0]!=="$"){const O=l[t];if(O!==void 0)switch(O){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(an(s,t))return l[t]=1,s[t];if(r!==X&&j(r,t))return l[t]=2,r[t];if((a=e.propsOptions[0])&&j(a,t))return l[t]=3,i[t];if(n!==X&&j(n,t))return l[t]=4,n[t];vn&&(l[t]=0)}}const h=yt[t];let _,C;if(h)return t==="$attrs"&&ae(e,"get",t),h(e);if((_=o.__cssModules)&&(_=_[t]))return _;if(n!==X&&j(n,t))return l[t]=4,n[t];if(C=f.config.globalProperties,j(C,t))return C[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return an(r,t)?(r[t]=n,!0):s!==X&&j(s,t)?(s[t]=n,!0):j(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},l){let o;return!!n[l]||e!==X&&j(e,l)||an(t,l)||(o=i[0])&&j(o,l)||j(s,l)||j(yt,l)||j(r.config.globalProperties,l)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:j(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ps(e){return M(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let vn=!0;function hl(e){const t=zn(e),n=e.proxy,s=e.ctx;vn=!1,t.beforeCreate&&gs(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:l,watch:o,provide:f,inject:a,created:h,beforeMount:_,mounted:C,beforeUpdate:O,updated:U,activated:H,deactivated:B,beforeDestroy:b,beforeUnmount:E,destroyed:S,unmounted:P,render:W,renderTracked:Y,renderTriggered:q,errorCaptured:L,serverPrefetch:te,expose:J,inheritAttrs:Q,components:Te,directives:ne,filters:I}=t;if(a&&pl(a,s,null),l)for(const Z in l){const k=l[Z];N(k)&&(s[Z]=k.bind(n))}if(r){const Z=r.call(n,n);G(Z)&&(e.data=en(Z))}if(vn=!0,i)for(const Z in i){const k=i[Z],De=N(k)?k.bind(n,n):N(k.get)?k.get.bind(n,n):ve,It=!N(k)&&N(k.set)?k.set.bind(n):ve,We=me({get:De,set:It});Object.defineProperty(s,Z,{enumerable:!0,configurable:!0,get:()=>We.value,set:Re=>We.value=Re})}if(o)for(const Z in o)xr(o[Z],s,n,Z);if(f){const Z=N(f)?f.call(n):f;Reflect.ownKeys(Z).forEach(k=>{yl(k,Z[k])})}h&&gs(h,e,"c");function z(Z,k){M(k)?k.forEach(De=>Z(De.bind(n))):k&&Z(k.bind(n))}if(z(nl,_),z(kn,C),z(sl,O),z(rl,U),z(Gi,H),z(el,B),z(fl,L),z(cl,Y),z(ol,q),z(il,E),z(Vn,P),z(ll,te),M(J))if(J.length){const Z=e.exposed||(e.exposed={});J.forEach(k=>{Object.defineProperty(Z,k,{get:()=>n[k],set:De=>n[k]=De})})}else e.exposed||(e.exposed={});W&&e.render===ve&&(e.render=W),Q!=null&&(e.inheritAttrs=Q),Te&&(e.components=Te),ne&&(e.directives=ne)}function pl(e,t,n=ve){M(e)&&(e=Cn(e));for(const s in e){const r=e[s];let i;G(r)?"default"in r?i=st(r.from||s,r.default,!0):i=st(r.from||s):i=st(r),oe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[s]=i}}function gs(e,t,n){Ce(M(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function xr(e,t,n,s){const r=s.includes(".")?pr(n,s):()=>n[s];if(ie(e)){const i=t[e];N(i)&&Kt(r,i)}else if(N(e))Kt(r,e.bind(n));else if(G(e))if(M(e))e.forEach(i=>xr(i,t,n,s));else{const i=N(e.handler)?e.handler.bind(n):t[e.handler];N(i)&&Kt(r,i,e)}}function zn(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:l}}=e.appContext,o=i.get(t);let f;return o?f=o:!r.length&&!n&&!s?f=t:(f={},r.length&&r.forEach(a=>zt(f,a,l,!0)),zt(f,t,l)),G(t)&&i.set(t,f),f}function zt(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&zt(e,i,n,!0),r&&r.forEach(l=>zt(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const o=gl[l]||n&&n[l];e[l]=o?o(e[l],t[l]):t[l]}return e}const gl={data:ms,props:_s,emits:_s,methods:gt,computed:gt,beforeCreate:ce,created:ce,beforeMount:ce,mounted:ce,beforeUpdate:ce,updated:ce,beforeDestroy:ce,beforeUnmount:ce,destroyed:ce,unmounted:ce,activated:ce,deactivated:ce,errorCaptured:ce,serverPrefetch:ce,components:gt,directives:gt,watch:_l,provide:ms,inject:ml};function ms(e,t){return t?e?function(){return se(N(e)?e.call(this,this):e,N(t)?t.call(this,this):t)}:t:e}function ml(e,t){return gt(Cn(e),Cn(t))}function Cn(e){if(M(e)){const t={};for(let n=0;n1)return n&&N(t)?t.call(s&&s.proxy):t}}function wl(e,t,n,s=!1){const r={},i={};Wt(i,rn,1),e.propsDefaults=Object.create(null),wr(e,t,r,i);for(const l in e.propsOptions[0])l in r||(r[l]=void 0);n?e.props=s?r:Mi(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function El(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:l}}=e,o=K(r),[f]=e.propsOptions;let a=!1;if((s||l>0)&&!(l&16)){if(l&8){const h=e.vnode.dynamicProps;for(let _=0;_{f=!0;const[C,O]=Er(_,t,!0);se(l,C),O&&o.push(...O)};!n&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!i&&!f)return G(e)&&s.set(e,et),et;if(M(i))for(let h=0;h-1,O[1]=H<0||U-1||j(O,"default"))&&o.push(_)}}}const a=[l,o];return G(e)&&s.set(e,a),a}function bs(e){return e[0]!=="$"}function xs(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function ys(e,t){return xs(e)===xs(t)}function ws(e,t){return M(t)?t.findIndex(n=>ys(n,e)):N(t)&&ys(t,e)?0:-1}const vr=e=>e[0]==="_"||e==="$stable",Yn=e=>M(e)?e.map(xe):[xe(e)],vl=(e,t,n)=>{if(t._n)return t;const s=ki((...r)=>Yn(t(...r)),n);return s._c=!1,s},Cr=(e,t,n)=>{const s=e._ctx;for(const r in e){if(vr(r))continue;const i=e[r];if(N(i))t[r]=vl(r,i,s);else if(i!=null){const l=Yn(i);t[r]=()=>l}}},Tr=(e,t)=>{const n=Yn(t);e.slots.default=()=>n},Cl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=K(t),Wt(t,"_",n)):Cr(t,e.slots={})}else e.slots={},t&&Tr(e,t);Wt(e.slots,rn,1)},Tl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,l=X;if(s.shapeFlag&32){const o=t._;o?n&&o===1?i=!1:(se(r,t),!n&&o===1&&delete r._):(i=!t.$stable,Cr(t,r)),l=t}else t&&(Tr(e,t),l={default:1});if(i)for(const o in r)!vr(o)&&!(o in l)&&delete r[o]};function Xt(e,t,n,s,r=!1){if(M(e)){e.forEach((C,O)=>Xt(C,t&&(M(t)?t[O]:t),n,s,r));return}if(xt(s)&&!r)return;const i=s.shapeFlag&4?Zn(s.component)||s.component.proxy:s.el,l=r?null:i,{i:o,r:f}=e,a=t&&t.r,h=o.refs===X?o.refs={}:o.refs,_=o.setupState;if(a!=null&&a!==f&&(ie(a)?(h[a]=null,j(_,a)&&(_[a]=null)):oe(a)&&(a.value=null)),N(f))Be(f,o,12,[l,h]);else{const C=ie(f),O=oe(f);if(C||O){const U=()=>{if(e.f){const H=C?j(_,f)?_[f]:h[f]:f.value;r?M(H)&&In(H,i):M(H)?H.includes(i)||H.push(i):C?(h[f]=[i],j(_,f)&&(_[f]=h[f])):(f.value=[i],e.k&&(h[e.k]=f.value))}else C?(h[f]=l,j(_,f)&&(_[f]=l)):O&&(f.value=l,e.k&&(h[e.k]=l))};l?(U.id=-1,fe(U,n)):U()}}}let $e=!1;const Ut=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",jt=e=>e.nodeType===8;function Pl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:l,remove:o,insert:f,createComment:a}}=e,h=(b,E)=>{if(!E.hasChildNodes()){n(null,b,E),kt(),E._vnode=b;return}$e=!1,_(E.firstChild,b,null,null,null),kt(),E._vnode=b,$e&&console.error("Hydration completed but contains mismatches.")},_=(b,E,S,P,W,Y=!1)=>{const q=jt(b)&&b.data==="[",L=()=>H(b,E,S,P,W,q),{type:te,ref:J,shapeFlag:Q,patchFlag:Te}=E;let ne=b.nodeType;E.el=b,Te===-2&&(Y=!1,E.dynamicChildren=null);let I=null;switch(te){case it:ne!==3?E.children===""?(f(E.el=r(""),l(b),b),I=b):I=L():(b.data!==E.children&&($e=!0,b.data=E.children),I=i(b));break;case lt:ne!==8||q?I=L():I=i(b);break;case wt:if(q&&(b=i(b),ne=b.nodeType),ne===1||ne===3){I=b;const Pe=!E.children.length;for(let z=0;z{Y=Y||!!E.dynamicChildren;const{type:q,props:L,patchFlag:te,shapeFlag:J,dirs:Q}=E,Te=q==="input"&&Q||q==="option";if(Te||te!==-1){if(Q&&Oe(E,null,S,"created"),L)if(Te||!Y||te&48)for(const I in L)(Te&&I.endsWith("value")||Ot(I)&&!_t(I))&&s(b,I,null,L[I],!1,void 0,S);else L.onClick&&s(b,"onClick",null,L.onClick,!1,void 0,S);let ne;if((ne=L&&L.onVnodeBeforeMount)&&he(ne,S,E),Q&&Oe(E,null,S,"beforeMount"),((ne=L&&L.onVnodeMounted)||Q)&&hr(()=>{ne&&he(ne,S,E),Q&&Oe(E,null,S,"mounted")},P),J&16&&!(L&&(L.innerHTML||L.textContent))){let I=O(b.firstChild,E,b,S,P,W,Y);for(;I;){$e=!0;const Pe=I;I=I.nextSibling,o(Pe)}}else J&8&&b.textContent!==E.children&&($e=!0,b.textContent=E.children)}return b.nextSibling},O=(b,E,S,P,W,Y,q)=>{q=q||!!E.dynamicChildren;const L=E.children,te=L.length;for(let J=0;J{const{slotScopeIds:q}=E;q&&(W=W?W.concat(q):q);const L=l(b),te=O(i(b),E,L,S,P,W,Y);return te&&jt(te)&&te.data==="]"?i(E.anchor=te):($e=!0,f(E.anchor=a("]"),L,te),te)},H=(b,E,S,P,W,Y)=>{if($e=!0,E.el=null,Y){const te=B(b);for(;;){const J=i(b);if(J&&J!==te)o(J);else break}}const q=i(b),L=l(b);return o(b),n(null,E,L,q,S,P,Ut(L),W),q},B=b=>{let E=0;for(;b;)if(b=i(b),b&&jt(b)&&(b.data==="["&&E++,b.data==="]")){if(E===0)return i(b);E--}return b};return[h,_]}const fe=hr;function Rl(e){return Al(e,Pl)}function Al(e,t){const n=mn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:l,createText:o,createComment:f,setText:a,setElementText:h,parentNode:_,nextSibling:C,setScopeId:O=ve,insertStaticContent:U}=e,H=(c,u,d,g=null,p=null,y=null,v=!1,x=null,w=!!u.dynamicChildren)=>{if(c===u)return;c&&!ht(c,u)&&(g=Ft(c),Re(c,p,y,!0),c=null),u.patchFlag===-2&&(w=!1,u.dynamicChildren=null);const{type:m,ref:R,shapeFlag:T}=u;switch(m){case it:B(c,u,d,g);break;case lt:b(c,u,d,g);break;case wt:c==null&&E(u,d,g,v);break;case be:Te(c,u,d,g,p,y,v,x,w);break;default:T&1?W(c,u,d,g,p,y,v,x,w):T&6?ne(c,u,d,g,p,y,v,x,w):(T&64||T&128)&&m.process(c,u,d,g,p,y,v,x,w,Je)}R!=null&&p&&Xt(R,c&&c.ref,y,u||c,!u)},B=(c,u,d,g)=>{if(c==null)s(u.el=o(u.children),d,g);else{const p=u.el=c.el;u.children!==c.children&&a(p,u.children)}},b=(c,u,d,g)=>{c==null?s(u.el=f(u.children||""),d,g):u.el=c.el},E=(c,u,d,g)=>{[c.el,c.anchor]=U(c.children,u,d,g,c.el,c.anchor)},S=({el:c,anchor:u},d,g)=>{let p;for(;c&&c!==u;)p=C(c),s(c,d,g),c=p;s(u,d,g)},P=({el:c,anchor:u})=>{let d;for(;c&&c!==u;)d=C(c),r(c),c=d;r(u)},W=(c,u,d,g,p,y,v,x,w)=>{v=v||u.type==="svg",c==null?Y(u,d,g,p,y,v,x,w):te(c,u,p,y,v,x,w)},Y=(c,u,d,g,p,y,v,x)=>{let w,m;const{type:R,props:T,shapeFlag:A,transition:F,dirs:$}=c;if(w=c.el=l(c.type,y,T&&T.is,T),A&8?h(w,c.children):A&16&&L(c.children,w,null,g,p,y&&R!=="foreignObject",v,x),$&&Oe(c,null,g,"created"),q(w,c,c.scopeId,v,g),T){for(const D in T)D!=="value"&&!_t(D)&&i(w,D,null,T[D],y,c.children,g,p,Me);"value"in T&&i(w,"value",null,T.value),(m=T.onVnodeBeforeMount)&&he(m,g,c)}$&&Oe(c,null,g,"beforeMount");const V=(!p||p&&!p.pendingBranch)&&F&&!F.persisted;V&&F.beforeEnter(w),s(w,u,d),((m=T&&T.onVnodeMounted)||V||$)&&fe(()=>{m&&he(m,g,c),V&&F.enter(w),$&&Oe(c,null,g,"mounted")},p)},q=(c,u,d,g,p)=>{if(d&&O(c,d),g)for(let y=0;y{for(let m=w;m{const x=u.el=c.el;let{patchFlag:w,dynamicChildren:m,dirs:R}=u;w|=c.patchFlag&16;const T=c.props||X,A=u.props||X;let F;d&&qe(d,!1),(F=A.onVnodeBeforeUpdate)&&he(F,d,u,c),R&&Oe(u,c,d,"beforeUpdate"),d&&qe(d,!0);const $=p&&u.type!=="foreignObject";if(m?J(c.dynamicChildren,m,x,d,g,$,y):v||k(c,u,x,null,d,g,$,y,!1),w>0){if(w&16)Q(x,u,T,A,d,g,p);else if(w&2&&T.class!==A.class&&i(x,"class",null,A.class,p),w&4&&i(x,"style",T.style,A.style,p),w&8){const V=u.dynamicProps;for(let D=0;D{F&&he(F,d,u,c),R&&Oe(u,c,d,"updated")},g)},J=(c,u,d,g,p,y,v)=>{for(let x=0;x{if(d!==g){if(d!==X)for(const x in d)!_t(x)&&!(x in g)&&i(c,x,d[x],null,v,u.children,p,y,Me);for(const x in g){if(_t(x))continue;const w=g[x],m=d[x];w!==m&&x!=="value"&&i(c,x,m,w,v,u.children,p,y,Me)}"value"in g&&i(c,"value",d.value,g.value)}},Te=(c,u,d,g,p,y,v,x,w)=>{const m=u.el=c?c.el:o(""),R=u.anchor=c?c.anchor:o("");let{patchFlag:T,dynamicChildren:A,slotScopeIds:F}=u;F&&(x=x?x.concat(F):F),c==null?(s(m,d,g),s(R,d,g),L(u.children,d,R,p,y,v,x,w)):T>0&&T&64&&A&&c.dynamicChildren?(J(c.dynamicChildren,A,d,p,y,v,x),(u.key!=null||p&&u===p.subTree)&&Pr(c,u,!0)):k(c,u,d,R,p,y,v,x,w)},ne=(c,u,d,g,p,y,v,x,w)=>{u.slotScopeIds=x,c==null?u.shapeFlag&512?p.ctx.activate(u,d,g,v,w):I(u,d,g,p,y,v,w):Pe(c,u,w)},I=(c,u,d,g,p,y,v)=>{const x=c.component=Ul(c,g,p);if(mr(c)&&(x.ctx.renderer=Je),jl(x),x.asyncDep){if(p&&p.registerDep(x,z),!c.el){const w=x.subTree=ue(lt);b(null,w,u,d)}return}z(x,c,u,d,p,y,v)},Pe=(c,u,d)=>{const g=u.component=c.component;if(Yi(c,u,d))if(g.asyncDep&&!g.asyncResolved){Z(g,u,d);return}else g.next=u,Ki(g.update),g.update();else u.el=c.el,g.vnode=u},z=(c,u,d,g,p,y,v)=>{const x=()=>{if(c.isMounted){let{next:R,bu:T,u:A,parent:F,vnode:$}=c,V=R,D;qe(c,!1),R?(R.el=$.el,Z(c,R,v)):R=$,T&&fn(T),(D=R.props&&R.props.onVnodeBeforeUpdate)&&he(D,F,R,$),qe(c,!0);const ee=un(c),ge=c.subTree;c.subTree=ee,H(ge,ee,_(ge.el),Ft(ge),c,p,y),R.el=ee.el,V===null&&Xi(c,ee.el),A&&fe(A,p),(D=R.props&&R.props.onVnodeUpdated)&&fe(()=>he(D,F,R,$),p)}else{let R;const{el:T,props:A}=u,{bm:F,m:$,parent:V}=c,D=xt(u);if(qe(c,!1),F&&fn(F),!D&&(R=A&&A.onVnodeBeforeMount)&&he(R,V,u),qe(c,!0),T&&on){const ee=()=>{c.subTree=un(c),on(T,c.subTree,c,p,null)};D?u.type.__asyncLoader().then(()=>!c.isUnmounted&&ee()):ee()}else{const ee=c.subTree=un(c);H(null,ee,d,g,c,p,y),u.el=ee.el}if($&&fe($,p),!D&&(R=A&&A.onVnodeMounted)){const ee=u;fe(()=>he(R,V,ee),p)}(u.shapeFlag&256||V&&xt(V.vnode)&&V.vnode.shapeFlag&256)&&c.a&&fe(c.a,p),c.isMounted=!0,u=d=g=null}},w=c.effect=new Nn(x,()=>Wn(m),c.scope),m=c.update=()=>w.run();m.id=c.uid,qe(c,!0),m()},Z=(c,u,d)=>{u.component=c;const g=c.vnode.props;c.vnode=u,c.next=null,El(c,u.props,g,d),Tl(c,u.children,d),ut(),as(),at()},k=(c,u,d,g,p,y,v,x,w=!1)=>{const m=c&&c.children,R=c?c.shapeFlag:0,T=u.children,{patchFlag:A,shapeFlag:F}=u;if(A>0){if(A&128){It(m,T,d,g,p,y,v,x,w);return}else if(A&256){De(m,T,d,g,p,y,v,x,w);return}}F&8?(R&16&&Me(m,p,y),T!==m&&h(d,T)):R&16?F&16?It(m,T,d,g,p,y,v,x,w):Me(m,p,y,!0):(R&8&&h(d,""),F&16&&L(T,d,g,p,y,v,x,w))},De=(c,u,d,g,p,y,v,x,w)=>{c=c||et,u=u||et;const m=c.length,R=u.length,T=Math.min(m,R);let A;for(A=0;AR?Me(c,p,y,!0,!1,T):L(u,d,g,p,y,v,x,w,T)},It=(c,u,d,g,p,y,v,x,w)=>{let m=0;const R=u.length;let T=c.length-1,A=R-1;for(;m<=T&&m<=A;){const F=c[m],$=u[m]=w?Ue(u[m]):xe(u[m]);if(ht(F,$))H(F,$,d,null,p,y,v,x,w);else break;m++}for(;m<=T&&m<=A;){const F=c[T],$=u[A]=w?Ue(u[A]):xe(u[A]);if(ht(F,$))H(F,$,d,null,p,y,v,x,w);else break;T--,A--}if(m>T){if(m<=A){const F=A+1,$=FA)for(;m<=T;)Re(c[m],p,y,!0),m++;else{const F=m,$=m,V=new Map;for(m=$;m<=A;m++){const de=u[m]=w?Ue(u[m]):xe(u[m]);de.key!=null&&V.set(de.key,m)}let D,ee=0;const ge=A-$+1;let Ze=!1,es=0;const dt=new Array(ge);for(m=0;m=ge){Re(de,p,y,!0);continue}let Ae;if(de.key!=null)Ae=V.get(de.key);else for(D=$;D<=A;D++)if(dt[D-$]===0&&ht(de,u[D])){Ae=D;break}Ae===void 0?Re(de,p,y,!0):(dt[Ae-$]=m+1,Ae>=es?es=Ae:Ze=!0,H(de,u[Ae],d,null,p,y,v,x,w),ee++)}const ts=Ze?Ol(dt):et;for(D=ts.length-1,m=ge-1;m>=0;m--){const de=$+m,Ae=u[de],ns=de+1{const{el:y,type:v,transition:x,children:w,shapeFlag:m}=c;if(m&6){We(c.component.subTree,u,d,g);return}if(m&128){c.suspense.move(u,d,g);return}if(m&64){v.move(c,u,d,Je);return}if(v===be){s(y,u,d);for(let T=0;Tx.enter(y),p);else{const{leave:T,delayLeave:A,afterLeave:F}=x,$=()=>s(y,u,d),V=()=>{T(y,()=>{$(),F&&F()})};A?A(y,$,V):V()}else s(y,u,d)},Re=(c,u,d,g=!1,p=!1)=>{const{type:y,props:v,ref:x,children:w,dynamicChildren:m,shapeFlag:R,patchFlag:T,dirs:A}=c;if(x!=null&&Xt(x,null,d,c,!0),R&256){u.ctx.deactivate(c);return}const F=R&1&&A,$=!xt(c);let V;if($&&(V=v&&v.onVnodeBeforeUnmount)&&he(V,u,c),R&6)Br(c.component,d,g);else{if(R&128){c.suspense.unmount(d,g);return}F&&Oe(c,null,u,"beforeUnmount"),R&64?c.type.remove(c,u,d,p,Je,g):m&&(y!==be||T>0&&T&64)?Me(m,u,d,!1,!0):(y===be&&T&384||!p&&R&16)&&Me(w,u,d),g&&Qn(c)}($&&(V=v&&v.onVnodeUnmounted)||F)&&fe(()=>{V&&he(V,u,c),F&&Oe(c,null,u,"unmounted")},d)},Qn=c=>{const{type:u,el:d,anchor:g,transition:p}=c;if(u===be){jr(d,g);return}if(u===wt){P(c);return}const y=()=>{r(d),p&&!p.persisted&&p.afterLeave&&p.afterLeave()};if(c.shapeFlag&1&&p&&!p.persisted){const{leave:v,delayLeave:x}=p,w=()=>v(d,y);x?x(c.el,y,w):w()}else y()},jr=(c,u)=>{let d;for(;c!==u;)d=C(c),r(c),c=d;r(u)},Br=(c,u,d)=>{const{bum:g,scope:p,update:y,subTree:v,um:x}=c;g&&fn(g),p.stop(),y&&(y.active=!1,Re(v,c,u,d)),x&&fe(x,u),fe(()=>{c.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&c.asyncDep&&!c.asyncResolved&&c.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},Me=(c,u,d,g=!1,p=!1,y=0)=>{for(let v=y;vc.shapeFlag&6?Ft(c.component.subTree):c.shapeFlag&128?c.suspense.next():C(c.anchor||c.el),Gn=(c,u,d)=>{c==null?u._vnode&&Re(u._vnode,null,null,!0):H(u._vnode||null,c,u,null,null,null,d),as(),kt(),u._vnode=c},Je={p:H,um:Re,m:We,r:Qn,mt:I,mc:L,pc:k,pbc:J,n:Ft,o:e};let ln,on;return t&&([ln,on]=t(Je)),{render:Gn,hydrate:ln,createApp:xl(Gn,ln)}}function qe({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Pr(e,t,n=!1){const s=e.children,r=t.children;if(M(s)&&M(r))for(let i=0;i>1,e[n[o]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,l=n[i-1];i-- >0;)n[i]=l,l=t[l];return n}const Il=e=>e.__isTeleport,be=Symbol.for("v-fgt"),it=Symbol.for("v-txt"),lt=Symbol.for("v-cmt"),wt=Symbol.for("v-stc"),Et=[];let Ee=null;function Ko(e=!1){Et.push(Ee=e?null:[])}function Fl(){Et.pop(),Ee=Et[Et.length-1]||null}let Rt=1;function Es(e){Rt+=e}function Ml(e){return e.dynamicChildren=Rt>0?Ee||et:null,Fl(),Rt>0&&Ee&&Ee.push(e),e}function Do(e,t,n,s,r,i){return Ml(Ar(e,t,n,s,r,i,!0))}function Pn(e){return e?e.__v_isVNode===!0:!1}function ht(e,t){return e.type===t.type&&e.key===t.key}const rn="__vInternal",Rr=({key:e})=>e??null,Dt=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ie(e)||oe(e)||N(e)?{i:we,r:e,k:t,f:!!n}:e:null);function Ar(e,t=null,n=null,s=0,r=null,i=e===be?0:1,l=!1,o=!1){const f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Rr(t),ref:t&&Dt(t),scopeId:dr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:we};return o?(Xn(f,n),i&128&&e.normalize(f)):n&&(f.shapeFlag|=ie(n)?8:16),Rt>0&&!l&&Ee&&(f.patchFlag>0||i&6)&&f.patchFlag!==32&&Ee.push(f),f}const ue=Hl;function Hl(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===ul)&&(e=lt),Pn(e)){const o=ot(e,t,!0);return n&&Xn(o,n),Rt>0&&!i&&Ee&&(o.shapeFlag&6?Ee[Ee.indexOf(e)]=o:Ee.push(o)),o.patchFlag|=-2,o}if(ql(e)&&(e=e.__vccOpts),t){t=Sl(t);let{class:o,style:f}=t;o&&!ie(o)&&(t.class=Sn(o)),G(f)&&(tr(f)&&!M(f)&&(f=se({},f)),t.style=Hn(f))}const l=ie(e)?1:Ji(e)?128:Il(e)?64:G(e)?4:N(e)?2:0;return Ar(e,t,n,s,r,l,i,!0)}function Sl(e){return e?tr(e)||rn in e?se({},e):e:null}function ot(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:l}=e,o=t?Ll(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:o,key:o&&Rr(o),ref:t&&t.ref?n&&r?M(r)?r.concat(Dt(t)):[r,Dt(t)]:Dt(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==be?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ot(e.ssContent),ssFallback:e.ssFallback&&ot(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Or(e=" ",t=0){return ue(it,null,e,t)}function Wo(e,t){const n=ue(wt,null,e);return n.staticCount=t,n}function xe(e){return e==null||typeof e=="boolean"?ue(lt):M(e)?ue(be,null,e.slice()):typeof e=="object"?Ue(e):ue(it,null,String(e))}function Ue(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ot(e)}function Xn(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(M(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Xn(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(rn in t)?t._ctx=we:r===3&&we&&(we.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else N(t)?(t={default:t,_ctx:we},n=32):(t=String(t),s&64?(n=16,t=[Or(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ll(...e){const t={};for(let n=0;nre=e),Jn=e=>{Qe.length>1?Qe.forEach(t=>t(e)):Qe[0](e)};const ct=e=>{Jn(e),e.scope.on()},Xe=()=>{re&&re.scope.off(),Jn(null)};function Ir(e){return e.vnode.shapeFlag&4}let At=!1;function jl(e,t=!1){At=t;const{props:n,children:s}=e.vnode,r=Ir(e);wl(e,n,r,t),Cl(e,s);const i=r?Bl(e,t):void 0;return At=!1,i}function Bl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=bt(new Proxy(e.ctx,dl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Dl(e):null;ct(e),ut();const i=Be(s,e,0,[e.props,r]);if(at(),Xe(),Ds(i)){if(i.then(Xe,Xe),t)return i.then(l=>{Cs(e,l,t)}).catch(l=>{tn(l,e,0)});e.asyncDep=i}else Cs(e,i,t)}else Fr(e,t)}function Cs(e,t,n){N(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:G(t)&&(e.setupState=lr(t)),Fr(e,n)}let Ts;function Fr(e,t,n){const s=e.type;if(!e.render){if(!t&&Ts&&!s.render){const r=s.template||zn(e).template;if(r){const{isCustomElement:i,compilerOptions:l}=e.appContext.config,{delimiters:o,compilerOptions:f}=s,a=se(se({isCustomElement:i,delimiters:o},l),f);s.render=Ts(r,a)}}e.render=s.render||ve}ct(e),ut(),hl(e),at(),Xe()}function Kl(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return ae(e,"get","$attrs"),t[n]}}))}function Dl(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Kl(e)},slots:e.slots,emit:e.emit,expose:t}}function Zn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(lr(bt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in yt)return yt[n](e)},has(t,n){return n in t||n in yt}}))}function Wl(e,t=!0){return N(e)?e.displayName||e.name:e.name||t&&e.__name}function ql(e){return N(e)&&"__vccOpts"in e}const me=(e,t)=>Ui(e,t,At);function Ps(e,t,n){const s=arguments.length;return s===2?G(t)&&!M(t)?Pn(t)?ue(e,null,[t]):ue(e,t):ue(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Pn(n)&&(n=[n]),ue(e,t,n))}const kl=Symbol.for("v-scx"),Vl=()=>st(kl),zl="3.3.4",Yl="http://www.w3.org/2000/svg",Ve=typeof document<"u"?document:null,Rs=Ve&&Ve.createElement("template"),Xl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?Ve.createElementNS(Yl,e):Ve.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ve.createTextNode(e),createComment:e=>Ve.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ve.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const l=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Rs.innerHTML=s?`${e}`:e;const o=Rs.content;if(s){const f=o.firstChild;for(;f.firstChild;)o.appendChild(f.firstChild);o.removeChild(f)}t.insertBefore(o,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Jl(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Zl(e,t,n){const s=e.style,r=ie(n);if(n&&!r){if(t&&!ie(t))for(const i in t)n[i]==null&&Rn(s,i,"");for(const i in n)Rn(s,i,n[i])}else{const i=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=i)}}const As=/\s*!important$/;function Rn(e,t,n){if(M(n))n.forEach(s=>Rn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ql(e,t);As.test(n)?e.setProperty(ft(s),n.replace(As,""),"important"):e[s]=n}}const Os=["Webkit","Moz","ms"],dn={};function Ql(e,t){const n=dn[t];if(n)return n;let s=Fe(t);if(s!=="filter"&&s in e)return dn[t]=s;s=Qt(s);for(let r=0;rhn||(io.then(()=>hn=0),hn=Date.now());function oo(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ce(co(s,n.value),t,5,[s])};return n.value=e,n.attached=lo(),n}function co(e,t){if(M(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Ms=/^on[a-z]/,fo=(e,t,n,s,r=!1,i,l,o,f)=>{t==="class"?Jl(e,s,r):t==="style"?Zl(e,n,s):Ot(t)?On(t)||so(e,t,n,s,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):uo(e,t,s,r))?eo(e,t,s,i,l,o,f):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Gl(e,t,s,r))};function uo(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&Ms.test(t)&&N(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Ms.test(t)&&ie(n)?!1:t in e}const ao=se({patchProp:fo},Xl);let pn,Hs=!1;function ho(){return pn=Hs?pn:Rl(ao),Hs=!0,pn}const qo=(...e)=>{const t=ho().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=po(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function po(e){return ie(e)?document.querySelector(e):e}const ko=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},go="modulepreload",mo=function(e){return"/"+e},Ss={},Vo=function(t,n,s){if(!n||n.length===0)return t();const r=document.getElementsByTagName("link");return Promise.all(n.map(i=>{if(i=mo(i),i in Ss)return;Ss[i]=!0;const l=i.endsWith(".css"),o=l?'[rel="stylesheet"]':"";if(!!s)for(let h=r.length-1;h>=0;h--){const _=r[h];if(_.href===i&&(!l||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${o}`))return;const a=document.createElement("link");if(a.rel=l?"stylesheet":go,l||(a.as="script",a.crossOrigin=""),a.href=i,document.head.appendChild(a),l)return new Promise((h,_)=>{a.addEventListener("load",h),a.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${i}`)))})})).then(()=>t()).catch(i=>{const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i})},_o=window.__VP_SITE_DATA__,Mr=/^[a-z]+:/i,Hr=/#.*$/,bo=/(index)?\.(md|html)$/,pe=typeof document<"u",Sr={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function xo(e,t,n=!1){if(t===void 0)return!1;if(e=Ls(`/${e}`),n)return new RegExp(t).test(e);if(Ls(t)!==e)return!1;const s=t.match(Hr);return s?(pe?location.hash:"")===s[0]:!0}function Ls(e){return decodeURI(e).replace(Hr,"").replace(bo,"")}function yo(e){return Mr.test(e)}function wo(e,t){var s,r,i,l,o,f,a;const n=Object.keys(e.locales).find(h=>h!=="root"&&!yo(h)&&xo(t,`/${h}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((l=e.locales[n])==null?void 0:l.titleTemplate)??e.titleTemplate,description:((o=e.locales[n])==null?void 0:o.description)??e.description,head:Nr(e.head,((f=e.locales[n])==null?void 0:f.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function Lr(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Eo(e.title,s);return`${n}${r}`}function Eo(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function vo(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,l])=>i===n&&l[r[0]]===r[1])}function Nr(e,t){return[...e.filter(n=>!vo(t,n)),...t]}const Co=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,To=/^[a-z]:/i;function Ns(e){const t=To.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Co,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const Po=Symbol(),ze=Hi(_o);function zo(e){const t=me(()=>wo(ze.value,e.data.relativePath));return{site:t,theme:me(()=>t.value.themeConfig),page:me(()=>e.data),frontmatter:me(()=>e.data.frontmatter),params:me(()=>e.data.params),lang:me(()=>t.value.lang),dir:me(()=>t.value.dir),localeIndex:me(()=>t.value.localeIndex||"root"),title:me(()=>Lr(t.value,e.data)),description:me(()=>e.data.description||t.value.description),isDark:rr(!1)}}function Yo(){const e=st(Po);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ro(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function $s(e){return Mr.test(e)||e.startsWith(".")?e:Ro(ze.value.base,e)}function Ao(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),pe){const n="/";t=Ns(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Ns(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Oo=[];const Io=Symbol(),Us="http://a.com",Fo=()=>({path:"/",component:null,data:Sr});function Xo(e,t){const n=en(Fo()),s={route:n,go:r};async function r(o=pe?location.href:"/"){var a,h;if(await((a=s.onBeforeRouteChange)==null?void 0:a.call(s,o))===!1)return;const f=new URL(o,Us);ze.value.cleanUrls||!f.pathname.endsWith("/")&&!f.pathname.endsWith(".html")&&(f.pathname+=".html",o=f.pathname+f.search+f.hash),pe&&o!==location.href&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",o)),await l(o),await((h=s.onAfterRouteChanged)==null?void 0:h.call(s,o))}let i=null;async function l(o,f=0,a=!1){var C;if(await((C=s.onBeforePageLoad)==null?void 0:C.call(s,o))===!1)return;const h=new URL(o,Us),_=i=h.pathname;try{let O=await e(_);if(!O)throw new Error(`Page not found: ${_}`);if(i===_){i=null;const{default:U,__pageData:H}=O;if(!U)throw new Error(`Invalid route component: ${U}`);n.path=pe?_:$s(_),n.component=bt(U),n.data=bt(H),pe&&cr(()=>{let B=ze.value.base+H.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ze.value.cleanUrls&&!B.endsWith("/")&&(B+=".html"),B!==h.pathname&&(h.pathname=B,o=B+h.search+h.hash,history.replaceState(null,"",o)),h.hash&&!f){let b=null;try{b=document.getElementById(decodeURIComponent(h.hash).slice(1))}catch(E){console.warn(E)}if(b){js(b,h.hash);return}}window.scrollTo(0,f)})}}catch(O){if(!/fetch|Page not found/.test(O.message)&&!/^\/404(\.html|\/)?$/.test(o)&&console.error(O),!a)try{const U=await fetch(ze.value.base+"hashmap.json");window.__VP_HASH_MAP__=await U.json(),await l(o,f,!0);return}catch{}i===_&&(i=null,n.path=pe?_:$s(_),n.component=t?bt(t):null,n.data=Sr)}}return pe&&(window.addEventListener("click",o=>{if(o.target.closest("button"))return;const a=o.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:h}=a,{href:_,origin:C,pathname:O,hash:U,search:H}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),B=window.location,b=O.match(/\.\w+$/);!o.ctrlKey&&!o.shiftKey&&!o.altKey&&!o.metaKey&&!h&&C===B.origin&&!(b&&b[0]!==".html")&&(o.preventDefault(),O===B.pathname&&H===B.search?U&&(U!==B.hash&&(history.pushState(null,"",U),window.dispatchEvent(new Event("hashchange"))),js(a,U,a.classList.contains("header-anchor"))):r(_))}},{capture:!0}),window.addEventListener("popstate",o=>{l(location.href,o.state&&o.state.scrollPosition||0)}),window.addEventListener("hashchange",o=>{o.preventDefault()})),s}function Mo(){const e=st(Io);if(!e)throw new Error("useRouter() is called without provider.");return e}function $r(){return Mo().route}function js(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let f=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const r=ze.value.scrollOffset;let i=0;if(typeof r=="number")i=r;else if(typeof r=="string")i=Bs(r);else if(Array.isArray(r))for(const a of r){const h=Bs(a);if(h){i=h;break}}const l=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-i+l;requestAnimationFrame(f)}}function Bs(e){const t=document.querySelector(e);if(!t)return 0;const n=t.getBoundingClientRect().bottom;return n<0?0:n+24}const Ks=()=>Oo.forEach(e=>e()),Jo=gr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=$r();return()=>Ps(e.as,{style:{position:"relative"}},[t.component?Ps(t.component,{onVnodeMounted:Ks,onVnodeUpdated:Ks}):"404 Page Not Found"])}}),Zo=gr({setup(e,{slots:t}){const n=rr(!1);return kn(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Qo(){pe&&window.addEventListener("click",e=>{var n,s;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement,i=Array.from((r==null?void 0:r.querySelectorAll("input"))||[]).indexOf(t),l=r==null?void 0:r.querySelector('div[class*="language-"].active'),o=(s=r==null?void 0:r.querySelectorAll('div[class*="language-"]:not(.language-id)'))==null?void 0:s[i];l&&o&&l!==o&&(l.classList.remove("active"),o.classList.add("active"))}})}function Go(){if(pe){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const l=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className);let o="";i.querySelectorAll("span.line:not(.diff.remove)").forEach(f=>o+=(f.textContent||"")+` +`),o=o.slice(0,-1),l&&(o=o.replace(/^ *(\$|>) /gm,"").trim()),Ho(o).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function Ho(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function ec(e,t){let n=[],s=!0;const r=i=>{if(s){s=!1;return}n.forEach(l=>document.head.removeChild(l)),n=[],i.forEach(l=>{const o=So(l);document.head.appendChild(o),n.push(o)})};Zi(()=>{const i=e.data,l=t.value,o=i&&i.description,f=i&&i.frontmatter.head||[];document.title=Lr(l,i),document.querySelector("meta[name=description]").setAttribute("content",o||l.description),r(Nr(l.head,No(f)))})}function So([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),s}function Lo(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function No(e){return e.filter(t=>!Lo(t))}const gn=new Set,Ur=()=>document.createElement("link"),$o=e=>{const t=Ur();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Uo=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let Bt;const jo=pe&&(Bt=Ur())&&Bt.relList&&Bt.relList.supports&&Bt.relList.supports("prefetch")?$o:Uo;function tc(){if(!pe||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(l=>{if(l.isIntersecting){const o=l.target;n.unobserve(o);const{pathname:f}=o;if(!gn.has(f)){gn.add(f);const a=Ao(f);a&&jo(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:l,pathname:o}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),f=o.match(/\.\w+$/);f&&f[0]!==".html"||i.target!=="_blank"&&l===location.hostname&&(o!==location.pathname?n.observe(i):gn.add(o))})})};kn(s);const r=$r();Kt(()=>r.path,s),Vn(()=>{n&&n.disconnect()})}export{Jo as C,be as F,Io as R,ko as _,Wo as a,Ar as b,Do as c,ue as d,Li as e,Or as f,ec as g,zo as h,pe as i,Po as j,Zo as k,qo as l,Xo as m,Vo as n,Ko as o,Ao as p,gr as q,Bo as r,ze as s,kn as t,Yo as u,tc as v,Zi as w,Go as x,Qo as y,Ps as z}; diff --git a/docs/.vitepress/theme/images/github-logo.svg b/v1/docs/.vitepress/dist/assets/github-logo.201474ca.svg similarity index 100% rename from docs/.vitepress/theme/images/github-logo.svg rename to v1/docs/.vitepress/dist/assets/github-logo.201474ca.svg diff --git a/v1/docs/.vitepress/dist/assets/index.md.a4f8bed6.js b/v1/docs/.vitepress/dist/assets/index.md.a4f8bed6.js new file mode 100644 index 0000000..844923c --- /dev/null +++ b/v1/docs/.vitepress/dist/assets/index.md.a4f8bed6.js @@ -0,0 +1,5 @@ +import{_ as Pe,o as xe,c as Ce,a as Ne}from"./chunks/framework.6e09c04a.js";var Le=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ze(p){return p&&p.__esModule&&Object.prototype.hasOwnProperty.call(p,"default")?p.default:p}var de={exports:{}};/*! + * vue-scrollto v2.20.0 + * (c) 2019 Randjelovic Igor + * @license MIT + */(function(p,j){(function(g,v){p.exports=v()})(Le,function(){function g(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?g=function(e){return typeof e}:g=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(t)}function v(){return v=Object.assign||function(t){for(var e=1;e0?n=a:e=a;while(Math.abs(l)>pe&&++S=U?he(y,w,e,r):E===0?w:me(y,d,d+x,e,r)}return function(d){return d===0?0:d===1?1:C(S(d),n,i)}},Q={ease:[.25,.1,.25,1],linear:[0,0,1,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]},G=!1;try{var we=Object.defineProperty({},"passive",{get:function(){G=!0}});window.addEventListener("test",null,we)}catch{}var m={$:function(e){return typeof e!="string"?e:document.querySelector(e)},on:function(e,n,r){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{passive:!1};n instanceof Array||(n=[n]);for(var l=0;l2&&arguments[2]!==void 0?arguments[2]:{};if(g(f)==="object"?o=f:typeof f=="number"&&(o.duration=f),e=m.$(u),!e)return console.warn("[vue-scrollto warn]: Trying to scroll to an element that is not on the page: "+u);if(n=m.$(o.container||c.container),r=o.hasOwnProperty("duration")?o.duration:c.duration,l=o.hasOwnProperty("lazy")?o.lazy:c.lazy,i=o.easing||c.easing,a=o.hasOwnProperty("offset")?o.offset:c.offset,S=o.hasOwnProperty("force")?o.force!==!1:c.force,y=o.hasOwnProperty("cancelable")?o.cancelable!==!1:c.cancelable,d=o.onStart||c.onStart,s=o.onDone||c.onDone,I=o.onCancel||c.onCancel,k=o.x===void 0?c.x:o.x,w=o.y===void 0?c.y:o.y,typeof a=="function"&&(a=a(e,n)),E=ke(n),N=Se(n),ie(),b=!1,!S){var Oe=n.tagName.toLowerCase()==="body"?document.documentElement.clientHeight||window.innerHeight:n.offsetHeight,se=N,Te=se+Oe,ce=L-a,Ie=ce+e.offsetHeight;if(ce>=se&&Ie<=Te){s&&s(e);return}}if(d&&d(e),!A&&!V){s&&s(e);return}return typeof i=="string"&&(i=Q[i]||Q.ease),ae=K.apply(K,i),m.on(n,X,oe,{passive:!0}),window.requestAnimationFrame(le),function(){$=null,b=!0}}return Ee},M=ne(),h=[];function be(t){for(var e=0;ewho?

I grew up in Melbourne, Australia in the 80's, an unwilling combatant in the console wars, my passion for computing started with typing lengthy programs from Commodore 64 magazines only to see many uneventfully or eventfully (depending on how you look at it) fail

I went on to study Computer Science at Swinburne University and am also deeply intrigued by the Social Sciences, particularly Psychology, Sociology and Economics. In my professional life I have been a business owner, engineer, senior engineer, delivery lead, engineering manager, product owner, solutions architect and involved in a startup from seed to exit.

My most recent position was as an Engineering Manager at GOAT in Los Angeles, All in all I enjoy leading teams and organizations on rewarding journeys.

Outside of work I love traveling with ~31 countries so far, open sourcing, hiking, studying spanish, reading, coffee (trying to perfect my latte art) and alcohol (not in any kind of Rick & Morty high functioning alcoholic type love but more of a gentle fascination with its production and how it could be perceived as a distillation of a culture)

looking for a resume?

Resume_ClintPlummer_ENMR.pdf or ipynb

would like to get in contact?

I can be reached at hello@clintp.xyz or my Linked-In

',9),Ae=[Ve];function qe(p,j,g,v,H,U){return xe(),Ce("div",null,Ae)}const Be=Pe(Re,[["render",qe]]);export{$e as __pageData,Be as default}; diff --git a/v1/docs/.vitepress/dist/assets/index.md.a4f8bed6.lean.js b/v1/docs/.vitepress/dist/assets/index.md.a4f8bed6.lean.js new file mode 100644 index 0000000..6811a65 --- /dev/null +++ b/v1/docs/.vitepress/dist/assets/index.md.a4f8bed6.lean.js @@ -0,0 +1,5 @@ +import{_ as Pe,o as xe,c as Ce,a as Ne}from"./chunks/framework.6e09c04a.js";var Le=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ze(p){return p&&p.__esModule&&Object.prototype.hasOwnProperty.call(p,"default")?p.default:p}var de={exports:{}};/*! + * vue-scrollto v2.20.0 + * (c) 2019 Randjelovic Igor + * @license MIT + */(function(p,j){(function(g,v){p.exports=v()})(Le,function(){function g(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?g=function(e){return typeof e}:g=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(t)}function v(){return v=Object.assign||function(t){for(var e=1;e0?n=a:e=a;while(Math.abs(l)>pe&&++S=U?he(y,w,e,r):E===0?w:me(y,d,d+x,e,r)}return function(d){return d===0?0:d===1?1:C(S(d),n,i)}},Q={ease:[.25,.1,.25,1],linear:[0,0,1,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]},G=!1;try{var we=Object.defineProperty({},"passive",{get:function(){G=!0}});window.addEventListener("test",null,we)}catch{}var m={$:function(e){return typeof e!="string"?e:document.querySelector(e)},on:function(e,n,r){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{passive:!1};n instanceof Array||(n=[n]);for(var l=0;l2&&arguments[2]!==void 0?arguments[2]:{};if(g(f)==="object"?o=f:typeof f=="number"&&(o.duration=f),e=m.$(u),!e)return console.warn("[vue-scrollto warn]: Trying to scroll to an element that is not on the page: "+u);if(n=m.$(o.container||c.container),r=o.hasOwnProperty("duration")?o.duration:c.duration,l=o.hasOwnProperty("lazy")?o.lazy:c.lazy,i=o.easing||c.easing,a=o.hasOwnProperty("offset")?o.offset:c.offset,S=o.hasOwnProperty("force")?o.force!==!1:c.force,y=o.hasOwnProperty("cancelable")?o.cancelable!==!1:c.cancelable,d=o.onStart||c.onStart,s=o.onDone||c.onDone,I=o.onCancel||c.onCancel,k=o.x===void 0?c.x:o.x,w=o.y===void 0?c.y:o.y,typeof a=="function"&&(a=a(e,n)),E=ke(n),N=Se(n),ie(),b=!1,!S){var Oe=n.tagName.toLowerCase()==="body"?document.documentElement.clientHeight||window.innerHeight:n.offsetHeight,se=N,Te=se+Oe,ce=L-a,Ie=ce+e.offsetHeight;if(ce>=se&&Ie<=Te){s&&s(e);return}}if(d&&d(e),!A&&!V){s&&s(e);return}return typeof i=="string"&&(i=Q[i]||Q.ease),ae=K.apply(K,i),m.on(n,X,oe,{passive:!0}),window.requestAnimationFrame(le),function(){$=null,b=!0}}return Ee},M=ne(),h=[];function be(t){for(var e=0;e + + + + + clintp.xyz | my bio in two mouse clicks or less + + + + + + + + + + + + + + + +
github

$ ./clintp.xyz

ANSI Art Graphics

who?

I grew up in Melbourne, Australia in the 80's, an unwilling combatant in the console wars, my passion for computing started with typing lengthy programs from Commodore 64 magazines only to see many uneventfully or eventfully (depending on how you look at it) fail

I went on to study Computer Science at Swinburne University and am also deeply intrigued by the Social Sciences, particularly Psychology, Sociology and Economics. In my professional life I have been a business owner, engineer, senior engineer, delivery lead, engineering manager, product owner, solutions architect and involved in a startup from seed to exit.

My most recent position was as an Engineering Manager at GOAT in Los Angeles, All in all I enjoy leading teams and organizations on rewarding journeys.

Outside of work I love traveling with ~31 countries so far, open sourcing, hiking, studying spanish, reading, coffee (trying to perfect my latte art) and alcohol (not in any kind of Rick & Morty high functioning alcoholic type love but more of a gentle fascination with its production and how it could be perceived as a distillation of a culture)

looking for a resume?

Resume_ClintPlummer_ENMR.pdf or ipynb

would like to get in contact?

I can be reached at hello@clintp.xyz or my Linked-In

+ + + + \ No newline at end of file diff --git a/docs/public/latexenvy-300.png b/v1/docs/.vitepress/dist/latexenvy-300.png similarity index 100% rename from docs/public/latexenvy-300.png rename to v1/docs/.vitepress/dist/latexenvy-300.png diff --git a/docs/public/mstile-150x150.png b/v1/docs/.vitepress/dist/mstile-150x150.png similarity index 100% rename from docs/public/mstile-150x150.png rename to v1/docs/.vitepress/dist/mstile-150x150.png diff --git a/docs/public/resume_utils.py b/v1/docs/.vitepress/dist/resume_utils.py similarity index 100% rename from docs/public/resume_utils.py rename to v1/docs/.vitepress/dist/resume_utils.py diff --git a/docs/public/safari-pinned-tab.svg b/v1/docs/.vitepress/dist/safari-pinned-tab.svg similarity index 100% rename from docs/public/safari-pinned-tab.svg rename to v1/docs/.vitepress/dist/safari-pinned-tab.svg diff --git a/docs/public/site.webmanifest b/v1/docs/.vitepress/dist/site.webmanifest similarity index 100% rename from docs/public/site.webmanifest rename to v1/docs/.vitepress/dist/site.webmanifest diff --git a/docs/.vitepress/theme/001.css b/v1/docs/.vitepress/theme/001.css similarity index 100% rename from docs/.vitepress/theme/001.css rename to v1/docs/.vitepress/theme/001.css diff --git a/v1/docs/.vitepress/theme/001/ansi.png b/v1/docs/.vitepress/theme/001/ansi.png new file mode 100644 index 0000000..def50b9 Binary files /dev/null and b/v1/docs/.vitepress/theme/001/ansi.png differ diff --git a/v1/docs/.vitepress/theme/001/background-2000w.avif b/v1/docs/.vitepress/theme/001/background-2000w.avif new file mode 100755 index 0000000..4ef4d2b Binary files /dev/null and b/v1/docs/.vitepress/theme/001/background-2000w.avif differ diff --git a/v1/docs/.vitepress/theme/001/background-4000w.avif b/v1/docs/.vitepress/theme/001/background-4000w.avif new file mode 100644 index 0000000..fcb6242 Binary files /dev/null and b/v1/docs/.vitepress/theme/001/background-4000w.avif differ diff --git a/docs/.vitepress/theme/001/background.jpg b/v1/docs/.vitepress/theme/001/background.jpg similarity index 100% rename from docs/.vitepress/theme/001/background.jpg rename to v1/docs/.vitepress/theme/001/background.jpg diff --git a/docs/.vitepress/theme/002.css b/v1/docs/.vitepress/theme/002.css similarity index 100% rename from docs/.vitepress/theme/002.css rename to v1/docs/.vitepress/theme/002.css diff --git a/v1/docs/.vitepress/theme/002/ansi.png b/v1/docs/.vitepress/theme/002/ansi.png new file mode 100644 index 0000000..d45026c Binary files /dev/null and b/v1/docs/.vitepress/theme/002/ansi.png differ diff --git a/v1/docs/.vitepress/theme/002/background-2000w.avif b/v1/docs/.vitepress/theme/002/background-2000w.avif new file mode 100755 index 0000000..e0becb5 Binary files /dev/null and b/v1/docs/.vitepress/theme/002/background-2000w.avif differ diff --git a/v1/docs/.vitepress/theme/002/background-4000w.avif b/v1/docs/.vitepress/theme/002/background-4000w.avif new file mode 100644 index 0000000..2ce8c81 Binary files /dev/null and b/v1/docs/.vitepress/theme/002/background-4000w.avif differ diff --git a/docs/.vitepress/theme/002/pbq31kssox9b1.jpg b/v1/docs/.vitepress/theme/002/pbq31kssox9b1.jpg similarity index 100% rename from docs/.vitepress/theme/002/pbq31kssox9b1.jpg rename to v1/docs/.vitepress/theme/002/pbq31kssox9b1.jpg diff --git a/docs/.vitepress/theme/003.css b/v1/docs/.vitepress/theme/003.css similarity index 100% rename from docs/.vitepress/theme/003.css rename to v1/docs/.vitepress/theme/003.css diff --git a/v1/docs/.vitepress/theme/003/ansi.png b/v1/docs/.vitepress/theme/003/ansi.png new file mode 100644 index 0000000..407d9d1 Binary files /dev/null and b/v1/docs/.vitepress/theme/003/ansi.png differ diff --git a/docs/.vitepress/theme/003/backgound.jpg b/v1/docs/.vitepress/theme/003/backgound.jpg similarity index 100% rename from docs/.vitepress/theme/003/backgound.jpg rename to v1/docs/.vitepress/theme/003/backgound.jpg diff --git a/v1/docs/.vitepress/theme/003/background-2000w.avif b/v1/docs/.vitepress/theme/003/background-2000w.avif new file mode 100755 index 0000000..dbeedba Binary files /dev/null and b/v1/docs/.vitepress/theme/003/background-2000w.avif differ diff --git a/v1/docs/.vitepress/theme/003/background-4000w.avif b/v1/docs/.vitepress/theme/003/background-4000w.avif new file mode 100644 index 0000000..e85e2d2 Binary files /dev/null and b/v1/docs/.vitepress/theme/003/background-4000w.avif differ diff --git a/docs/.vitepress/theme/GithubCorner.vue b/v1/docs/.vitepress/theme/GithubCorner.vue similarity index 100% rename from docs/.vitepress/theme/GithubCorner.vue rename to v1/docs/.vitepress/theme/GithubCorner.vue diff --git a/docs/.vitepress/theme/Layout.vue b/v1/docs/.vitepress/theme/Layout.vue similarity index 100% rename from docs/.vitepress/theme/Layout.vue rename to v1/docs/.vitepress/theme/Layout.vue diff --git a/v1/docs/.vitepress/theme/images/404.svg b/v1/docs/.vitepress/theme/images/404.svg new file mode 100644 index 0000000..ac16e73 --- /dev/null +++ b/v1/docs/.vitepress/theme/images/404.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/.vitepress/theme/images/github-corner.svg b/v1/docs/.vitepress/theme/images/github-corner.svg similarity index 100% rename from docs/.vitepress/theme/images/github-corner.svg rename to v1/docs/.vitepress/theme/images/github-corner.svg diff --git a/v1/docs/.vitepress/theme/images/github-logo.svg b/v1/docs/.vitepress/theme/images/github-logo.svg new file mode 100644 index 0000000..012d0f3 --- /dev/null +++ b/v1/docs/.vitepress/theme/images/github-logo.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/docs/.vitepress/theme/index.js b/v1/docs/.vitepress/theme/index.js similarity index 100% rename from docs/.vitepress/theme/index.js rename to v1/docs/.vitepress/theme/index.js diff --git a/docs/.vitepress/theme/theme.css b/v1/docs/.vitepress/theme/theme.css similarity index 100% rename from docs/.vitepress/theme/theme.css rename to v1/docs/.vitepress/theme/theme.css diff --git a/docs/index.md b/v1/docs/index.md similarity index 100% rename from docs/index.md rename to v1/docs/index.md diff --git a/v1/docs/public/Pipfile b/v1/docs/public/Pipfile new file mode 100644 index 0000000..cee9283 --- /dev/null +++ b/v1/docs/public/Pipfile @@ -0,0 +1,17 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] + +[packages] +jupyter = "*" +wordcloud = "*" +pillow = "*" +texsoup = "*" +sumy = "*" +py-readability-metrics = "*" + +[requires] +python_version = "3.9" diff --git a/docs/public/Pipfile.lock b/v1/docs/public/Pipfile.lock similarity index 100% rename from docs/public/Pipfile.lock rename to v1/docs/public/Pipfile.lock diff --git a/v1/docs/public/Resume_ClintPlummer_ENMR-2020.docx b/v1/docs/public/Resume_ClintPlummer_ENMR-2020.docx new file mode 100644 index 0000000..432b3df Binary files /dev/null and b/v1/docs/public/Resume_ClintPlummer_ENMR-2020.docx differ diff --git a/v1/docs/public/Resume_ClintPlummer_ENMR.aux b/v1/docs/public/Resume_ClintPlummer_ENMR.aux new file mode 100644 index 0000000..1261280 --- /dev/null +++ b/v1/docs/public/Resume_ClintPlummer_ENMR.aux @@ -0,0 +1,25 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\gdef \LT@i {\LT@entry + {1}{84.64844pt}\LT@entry + {1}{399.04845pt}} +\gdef \LT@ii {\LT@entry + {1}{84.64844pt}\LT@entry + {1}{399.04845pt}} +\gdef \@abspage@last{3} diff --git a/v1/docs/public/Resume_ClintPlummer_ENMR.ipynb b/v1/docs/public/Resume_ClintPlummer_ENMR.ipynb new file mode 100644 index 0000000..6b7f828 --- /dev/null +++ b/v1/docs/public/Resume_ClintPlummer_ENMR.ipynb @@ -0,0 +1,224 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Resumes & The Job Application Process\n", + "\n", + "An increasing number of companies these days are using [Applicant Tracking Systems](https://en.wikipedia.org/wiki/Applicant_tracking_system) some popular examples (at the time of writing) being [lever](https://www.lever.co/) & [greenhouse](https://grow.greenhouse.io)\n", + "\n", + "Many of these provide aggegrate summary views of candidates and job description fit based on keyword analysis and other techniques to aid in pre-screening, in a classic cat & mouse game there are now services where candidates can optimize their resumes against a job description specifically to game these systems such as [skillsyncer](https://skillsyncer.com/)\n", + "\n", + "This jupyter notebook is a light hearted analysis of my resume, there are an exhaustive number of services that can do this far more thoroughly if you want to get serious about it\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Word Cloud\n", + "\n", + "Simple word cloud based on the content of my resume" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import resume_utils\n", + "from wordcloud import WordCloud\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def combine_entry(e): return f'{e.date_location} {e.title} {e.company} {e.achievements}'\n", + "\n", + "all_entries = map(combine_entry, resume_utils.parser('./Resume_ClintPlummer_ENMR.tex'))\n", + "\n", + "word_cloud = WordCloud().generate(\" \".join(all_entries))\n", + "\n", + "plt.imshow(word_cloud, interpolation='bilinear')\n", + "plt.axis('off')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Achievement Summary\n", + "\n", + "My top three achievements ranked using [Latent_semantic_analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Lead, recruited & managed a team of 15 comprising of iOS (Swift) / Android (Kotlin) / Backend Engineers (Ruby/Golang Microservices) both co-located and remote, building a brand new yet unreleased app for GOAT\n", + "\n", + "Worked with PM’s and key stakeholders to execute & deliver utilizing a combination of agile methodologies on an entirely new app & brand for GOAT Pragmatically defined & owned the product technology roadmap and set strategic direction to teams through deep collaboration with product owners, engineers, QA & other stakeholders, roadmap artifact were created in the form of user stories & through visual language eg.\n", + "\n", + "Facilitated growth of the company from 5 - 50 employee’s through formulation & articulation of the vision and goals to scrum teams via story mapping sessions, five whys, kick off's, pair programming & mentoring & improvements to documentation & processes\n", + "\n" + ] + } + ], + "source": [ + "import resume_utils\n", + "from sumy.parsers.plaintext import PlaintextParser\n", + "from sumy.nlp.tokenizers import Tokenizer\n", + "from sumy.summarizers.lsa import LsaSummarizer as Summarizer\n", + "from sumy.nlp.stemmers import Stemmer\n", + "from sumy.utils import get_stop_words\n", + "\n", + "SUMY_LANGUAGE = 'english'\n", + "SUMY_SENTENCES_COUNT = 3\n", + "\n", + "stemmer = Stemmer(SUMY_LANGUAGE)\n", + "\n", + "summarizer = Summarizer(stemmer)\n", + "summarizer.stop_words = get_stop_words(SUMY_LANGUAGE)\n", + "\n", + "achievements = [e.achievements for e in resume_utils.parser('./Resume_ClintPlummer_ENMR.tex')]\n", + "\n", + "parser = PlaintextParser.from_string(\"\\n\".join(achievements), Tokenizer(SUMY_LANGUAGE))\n", + "\n", + "for sentence in summarizer(parser.document, SUMY_SENTENCES_COUNT):\n", + " print(f\"{sentence}\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Title Frequency Distribution" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import resume_utils\n", + "import nltk\n", + "\n", + "def split_title(title): return [t.strip() for t in title.split('/')]\n", + " \n", + "titles = [split_title(e.title) for e in resume_utils.parser('./Resume_ClintPlummer_ENMR.tex')]\n", + "\n", + "flatten_titles = [j for sub in titles for j in sub] # flatten the array, I miss ruby's Array\\#flatten\n", + "\n", + "freq = nltk.FreqDist(flatten_titles)\n", + "freq.plot(20, cumulative=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Readability Index\n", + "\n", + "The [Gunning fog index](https://en.wikipedia.org/wiki/Gunning_fog_index) is a readability test for English writing. The index estimates the years of formal education a person needs to understand the text on the first reading" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "college_graduate\n" + ] + } + ], + "source": [ + "import resume_utils\n", + "from readability import Readability\n", + "\n", + "\n", + "achievements = [e.achievements for e in resume_utils.parser('./Resume_ClintPlummer_ENMR.tex')]\n", + "\n", + "r = Readability(\"\\n\".join(achievements))\n", + "\n", + "gf = r.gunning_fog()\n", + "\n", + "print(gf.grade_level)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/v1/docs/public/Resume_ClintPlummer_ENMR.out b/v1/docs/public/Resume_ClintPlummer_ENMR.out new file mode 100644 index 0000000..e69de29 diff --git a/v1/docs/public/Resume_ClintPlummer_ENMR.pdf b/v1/docs/public/Resume_ClintPlummer_ENMR.pdf new file mode 100644 index 0000000..53419a3 Binary files /dev/null and b/v1/docs/public/Resume_ClintPlummer_ENMR.pdf differ diff --git a/v1/docs/public/Resume_ClintPlummer_ENMR.tex b/v1/docs/public/Resume_ClintPlummer_ENMR.tex new file mode 100755 index 0000000..a51f757 --- /dev/null +++ b/v1/docs/public/Resume_ClintPlummer_ENMR.tex @@ -0,0 +1,245 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Developer CV +% LaTeX Template +% Version 1.0 (28/1/19) +% +% This template originates from: +% http://www.LaTeXTemplates.com +% +% Authors: +% Jan Vorisek (jan@vorisek.me) +% Based on a template by Jan Küster (info@jankuester.com) +% Modified for LaTeX Templates by Vel (vel@LaTeXTemplates.com) +% +% License: +% The MIT License (see included LICENSE file) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%---------------------------------------------------------------------------------------- +% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS +%---------------------------------------------------------------------------------------- + +\documentclass[9pt]{developercv} % Default font size, values from 8-12pt are recommended + +%---------------------------------------------------------------------------------------- + +\begin{document} + +%---------------------------------------------------------------------------------------- +% TITLE AND CONTACT INFORMATION +%---------------------------------------------------------------------------------------- + +\begin{minipage}[t]{0.45\textwidth} % 45% of the page width for name + \vspace{-\baselineskip} % Required for vertically aligning minipages + + % If your name is very short, use just one of the lines below + % If your name is very long, reduce the font size or make the minipage wider and reduce the others proportionately + \colorbox{black}{{\HUGE\textcolor{white}{\textbf{\MakeUppercase{Clint}}}}} % First name + + \colorbox{black}{{\HUGE\textcolor{white}{\textbf{\MakeUppercase{Plummer}}}}} % Last name + + \vspace{6pt} + + {\huge Engineering Manager} % Career or current job title +\end{minipage} +\begin{minipage}[t]{0.275\textwidth} % 27.5% of the page width for the first row of icons + \vspace{-\baselineskip} % Required for vertically aligning minipages + + % The first parameter is the FontAwesome icon name, the second is the box size and the third is the text + % Other icons can be found by referring to fontawesome.pdf (supplied with the template) and using the word after \fa in the command for the icon you want + \icon{MapMarker}{12}{Melbourne}\\ + % \icon{Phone}{12}{+1 000-000-0000}\\ + \icon{At}{12}{\href{mailto:hello@clintp.xyz}{hello@clintp.xyz}}\\ +\end{minipage} +\begin{minipage}[t]{0.275\textwidth} % 27.5% of the page width for the second row of icons + \vspace{-\baselineskip} % Required for vertically aligning minipages + + % The first parameter is the FontAwesome icon name, the second is the box size and the third is the text + % Other icons can be found by referring to fontawesome.pdf (supplied with the template) and using the word after \fa in the command for the icon you want + \icon{Globe}{12}{Australian}\\ + \icon{Github}{12}{\href{https://github.com/yuhonas}{github.com/yuhonas}}\\ + % \icon{Twitter}{12}{\href{https://twitter.com/@alyxvance}{@alyxvance}}\\ +\end{minipage} + +\vspace{0.5cm} + +%---------------------------------------------------------------------------------------- +% INTRODUCTION, SKILLS AND TECHNOLOGIES +%---------------------------------------------------------------------------------------- +\begin{cvsect}{Who Am I?} + + \begin{minipage}[t]{0.5\textwidth} % 40% of the page width for the introduction text + \vspace{-\baselineskip} % Required for vertically aligning minipages + Software engineering manager with over 10 years experience developing for the web in a multitude of languages, highly collaborative with an excellent understanding of development best practices throughout the entire SDLC + + Experience owning \& crafting product / technical road maps collaborating with both clients and technical stakeholders to many successful deliveries. + + Enjoys working closely with HR \& Recruiting to hire and build high performing agile teams of 6-12 people + % \lorem \lorem \lorem \lorem \lorem\\ % Dummy text + \end{minipage} + \hfill % Whitespace between + \begin{minipage}[t]{0.4\textwidth} % 50% of the page for the skills bar chart + \vspace{-\baselineskip} % Required for vertically aligning minipages + \begin{barchart}{5.5} + \baritem{Leadership, team building \& management}{0} + \baritem{Full Stack Developer}{0} + \baritem{Devops}{0} + \baritem{Agile Methodologies}{0} + \baritem{Product Management}{0} + \baritem{Product Strategy}{0} + \end{barchart} + \end{minipage} +\end{cvsect} + +% \begin{center} +% \bubbles{5/Eclipse, 6/git, 4/Office, 3/Inkscape, 3/Blender} +% \end{center} + +%---------------------------------------------------------------------------------------- +% EXPERIENCE +%---------------------------------------------------------------------------------------- + +\begin{cvsect}{Experience} + + \begin{entrylist} + \entry + {4/2023 -- Present\\\footnotesize{Melbourne, Australia}} + {Startup Advisor \& Lead Engineer} + {Freelance} + {Startup Advisor and Lead Engineer, specializing in 0-day startups. I provide strategic guidance, lead MVP development, and offer general \& technical management expertise to help startups succeed from day one. + } + \entry + {5/2022 -- 04/2023\\\footnotesize{Melbourne, Australia}} + {Entrepreneur in Residence} + {Antler} + {Antler is a VC fund and accelerator program that invests at the pre-seed stage, nurturing businesses and startups through to series C. + \par\medskip Joined the program to explore starting my own startup, learnt many valuable skills along the way from ideation, + taking concepts to market (0 to 1), market validation, business models, product/market fit to capital raising/pitching + } + \entry + {1/2021 -- 12/2021\\\footnotesize{Melbourne, Australia}} + {Career Break} + {} + {Took a career break post COVID to pursue a personal goal of travelling around Australia over a year with the only thing planned to stay in each capital city for around 2-3 months. Completed an entire lap of the country travelling around 30,000KM in total over 12 months, An amazingly rewarding experience} + \entry + {4/2019 -- 4/2020\\\footnotesize{Los Angeles, USA}} + {Engineering Manager} + {GOAT} + {Lead, recruited \& managed a team of 15 comprising of iOS (Swift) / Android + (Kotlin) / Backend Engineers (Ruby/Golang Micro-services) both co-located + and remote, building and successfully delivering on \href{https://apps.apple.com/us/app/id1467090341}{alias} a brand new app \& brand for GOAT + \par\medskip Worked with PM’s and key stakeholders to execute \& deliver utilizing a + combination of agile methodologies on an entirely new app \& brand} + \entry + {6/2017 -- 7/2018\\\footnotesize{Melbourne, Australia}} + {Solutions Architect} + {Travelport Locomote} + { + Pragmatically defined \& owned the product technology roadmap and set + strategic direction to teams through deep collaboration with product owners, + engineers, QA \& other stakeholders, roadmap artifact were created in the form of user stories \& through visual language eg. UML + \par\medskip Worked with HR and Recruiting to recruit staff \& improve the hiring process / pipeline + \par\medskip Championed key initiatives to increase release predictability \& reliability, reducing cycle time, reducing escaped defects through + collaboration with multiple facets of the business such as management, support, sales \& engineering + \par\medskip Selected and evangelized design patterns \& processes to help scale + the architecture \& organization with contribution to the organization's wiki, + lightning talks \& mentoring resulting in improvements to the organizations engineering conceptual integrity \& reduced cycle time for user stories + \par\medskip Orchestrated a zero downtime organization wide migration to Heroku (PaaS) from Ansible/Chef managed infrastructure, this resulted in a reduced operational overhead on the engineering team \& direct cost savings through a reduction in hosting costs. + \par\medskip Developed technical tools to aid in story visibility through the + development pipeline \& defect tracking/resolution  + \par\medskip Maintained a suite of apps hosting in AWS using Config Management + (Ansible/Chef) \& PaaS such as Elastic Beanstalk, Heroku and + containerization using Docker + \par\medskip Provided direction/planning to engineering teams and collaborated with third party vendors in order to meet PCI / GDPR compliance + } + \entry + {6/2014 -- 7/2017\\\footnotesize{Melbourne, Australia}} + {Engineering Manager / Technical Product Owner} + {Travelport Locomote} + {Built, hired, mentored \& lead scrum teams of 6-8 composing of (Engineers, + QA’s and BA’s) both domestically and remotely, worked closely with HR \& + Recruiting both locally \& abroad nurturing a much lauded company culture + that emphasized ownership and collective impact + \par\medskip Fostered continuous improvement and provided continuous feedback to employee’s with one on one’s and frequent engagement + \par\medskip Facilitated growth of the company from 5 - 50 employee’s through formulation \& articulation of the vision and goals to scrum teams via story mapping sessions, five whys, kick off's, pair programming \& mentoring \& improvements to documentation \& processes + \par\medskip Orchestrated plans, prioritized resources and set the strategy for on-boarding some of Australia’s largest Banks \& Universities + \par\medskip Forged and build relationships outside engineering in marketing and support to ensure alignment + \par\medskip Crafted, evangelized and delivered on both the product strategy \& the technical roadmap utilizing a stack of Rails/node.js/Heroku/AWS + \par\medskip Identified key differentiators \& opportunities through user \& sales feedback, backlog and competitor analysis within the market and crafted user stories to guide \& fortify the companies USP + \par\medskip Guided product decisions through empiricism primarily through the build, measure lean feedback loop + \par\medskip Supported and collaborated with third parties through acquisition due diligence resulting in a successful buy out} + \entry + {7/2012 -- 6/2014\\\footnotesize{Melbourne, Australia}} + {Lead Backend Engineer / Engineering Manager} + {Travelport Locomote} + {Built, lead, supported \& mentored scrum teams of 6-8 as a servant leader both domestically and remotely to many successful deliveries utilizing a stack of Rails/node.js/Heroku/AWS + \par\medskip On-boarded \& Supported some of Australia's leading banks and universities, leading to increased revenue/improved market perception + \par\medskip Collaborated and improved hiring, policies and processes for an organization undergoing tremendous growth + \par\medskip Implemented/maintained best practice Continuous + Integration/Continuous Delivery/Test Automation \& Deployment pipelines} + \entry + {3/2006 -- 5/2012\\\footnotesize{Melbourne, Australia}} + {Senior Engineer / Lead Backend Engineer} + {Alliance Software} + {Delivered E2E \& supported over 20 projects with Rails/Zend Framework + \par\medskip Worked with recruiting for hiring and later to lead and mentor junior software engineers + \par\medskip Fostered a spirit of continuous improvement within engineering + \par\medskip Helped build relationships with clients to ensure quality outcomes \& manage expectations + \par\medskip Built, managed and supported a custom CMS based on Zend + Framework architecture} + \end{entrylist} +\end{cvsect} + +%---------------------------------------------------------------------------------------- +% EDUCATION +%---------------------------------------------------------------------------------------- + +\begin{cvsect}{Education} + + \begin{entrylist} + \entry + {2001 -- 2004\\\footnotesize{Melbourne, Australia}} + {Bachelor of Applied Science (Computing)} + {Swinburne University} + {} + \entry + {1998\\\footnotesize{Melbourne, Australia}} + {Bachelor's Degree} + {Pembroke College} + {} + \end{entrylist} +\end{cvsect} +%---------------------------------------------------------------------------------------- +% ADDITIONAL INFORMATION +%---------------------------------------------------------------------------------------- + +%\begin{minipage}[t]{0.3\textwidth} +% \vspace{-\baselineskip} % Required for vertically aligning minipages + +% \cvsect{Languages} + +% \textbf{English} - native\\ +% \textbf{German} - proficient\\ +% \textbf{Polish} - rudimentary +%\end{minipage} +%\hfill +%\begin{minipage}[t]{0.3\textwidth} +% \vspace{-\baselineskip} % Required for vertically aligning minipages + +% \cvsect{Hobbies} + +% I love... \lorem +%\end{minipage} +%\hfill +%\begin{minipage}[t]{0.3\textwidth} +% \vspace{-\baselineskip} % Required for vertically aligning minipages + +% \cvsect{Non profit} + +% I help... \lorem +%\end{minipage} + +%%---------------------------------------------------------------------------------------- + +\end{document} diff --git a/v1/docs/public/android-chrome-192x192.png b/v1/docs/public/android-chrome-192x192.png new file mode 100644 index 0000000..1fccf2b Binary files /dev/null and b/v1/docs/public/android-chrome-192x192.png differ diff --git a/v1/docs/public/android-chrome-512x512.png b/v1/docs/public/android-chrome-512x512.png new file mode 100644 index 0000000..0fe0695 Binary files /dev/null and b/v1/docs/public/android-chrome-512x512.png differ diff --git a/v1/docs/public/apple-touch-icon.png b/v1/docs/public/apple-touch-icon.png new file mode 100644 index 0000000..5a7a41a Binary files /dev/null and b/v1/docs/public/apple-touch-icon.png differ diff --git a/v1/docs/public/browserconfig.xml b/v1/docs/public/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/v1/docs/public/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/v1/docs/public/developercv.cls b/v1/docs/public/developercv.cls new file mode 100644 index 0000000..08fe9a0 --- /dev/null +++ b/v1/docs/public/developercv.cls @@ -0,0 +1,206 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Developer CV +% LaTeX Class +% Version 1.0 (28/1/19) +% +% This class originates from: +% http://www.LaTeXTemplates.com +% +% Authors: +% Jan Vorisek (jan@vorisek.me) +% Based on a template by Jan Küster (info@jankuester.com) +% Modified for LaTeX Templates by Vel (vel@LaTeXTemplates.com) +% +% License: +% The MIT License (see included LICENSE file) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%---------------------------------------------------------------------------------------- +% CLASS CONFIGURATION +%---------------------------------------------------------------------------------------- + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{developercv}[2019/01/28 Developer CV class v1.0] + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{extarticle}} % Pass through any options to the base class +\ProcessOptions\relax % Process given options + +\LoadClass{extarticle} % Load the base class + +%---------------------------------------------------------------------------------------- +% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS +%---------------------------------------------------------------------------------------- + +\setlength{\parindent}{0mm} % Suppress paragraph indentation + +\usepackage[hidelinks]{hyperref} % Required for links but hide the default boxes around links + +\newcommand{\lorem}{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.} % Dummy text + +\pagestyle{empty} % No headers or footers + +\usepackage{moresize} % Provides more font size commands (\HUGE and \ssmall) + +%---------------------------------------------------------------------------------------- +% PAGE LAYOUT +%---------------------------------------------------------------------------------------- + +\usepackage{geometry} % Required for adjusting page dimensions and margins + +\geometry{ + paper=a4paper, % Paper size, change to letterpaper for US letter size + top=1.75cm, % Top margin + bottom=1.75cm, % Bottom margin + left=2cm, % Left margin + right=2cm, % Right margin + headheight=0.75cm, % Header height + footskip=1cm, % Space from the bottom margin to the baseline of the footer + headsep=0.5cm, % Space from the top margin to the baseline of the header + %showframe, % Uncomment to show how the type block is set on the page +} + +%---------------------------------------------------------------------------------------- +% FONTS +%---------------------------------------------------------------------------------------- + +\usepackage[utf8]{inputenc} % Required for inputting international characters +\usepackage[T1]{fontenc} % Output font encoding for international characters + +\usepackage[default]{raleway} +%\usepackage[defaultsans]{droidsans} +%\usepackage{cmbright} +%\usepackage{fetamont} +%\usepackage[default]{gillius} +%\usepackage{roboto} + +\renewcommand*\familydefault{\sfdefault} % Force the sans-serif version of any font used + +%------------------------------------------------ + +\usepackage{fontawesome} % Required for FontAwesome icons + +% Command to output an icon in a black square box with text to the right +\newcommand{\icon}[3]{% The first parameter is the FontAwesome icon name, the second is the box size and the third is the text + \vcenteredhbox{\colorbox{black}{\makebox(#2, #2){\textcolor{white}{\large\csname fa#1\endcsname}}}}% Icon and box + \hspace{0.2cm}% Whitespace + \vcenteredhbox{\textcolor{black}{#3}}% Text +} + +%---------------------------------------------------------------------------------------- +% GRAPHICS DEFINITIONS +%---------------------------------------------------------------------------------------- + +\usepackage{tikz} % Required for creating the plots +\usetikzlibrary{shapes, backgrounds} +\tikzset{x=1cm, y=1cm} % Default tikz units + +% Command to vertically centre adjacent content +\newcommand{\vcenteredhbox}[1]{% The only parameter is for the content to centre + \begingroup% + \setbox0=\hbox{#1}\parbox{\wd0}{\box0}% + \endgroup% +} + +%---------------------------------------------------------------------------------------- +% CHARTS +%---------------------------------------------------------------------------------------- + +\newcounter{barcount} + +% Environment to hold a new bar chart +\newenvironment{barchart}[1]{ % The only parameter is the maximum bar width, in cm + \newcommand{\barwidth}{0.35} + \newcommand{\barsep}{0.2} + + % Command to add a bar to the bar chart + \newcommand{\baritem}[2]{ % The first argument is the bar label and the second is the percentage the current bar should take up of the total width + \pgfmathparse{##2} + \let\perc\pgfmathresult + + \pgfmathparse{#1} + \let\barsize\pgfmathresult + + \pgfmathparse{\barsize*##2/100} + \let\barone\pgfmathresult + + \pgfmathparse{(\barwidth*\thebarcount)+(\barsep*\thebarcount)} + \let\barx\pgfmathresult + + \filldraw[fill=black, draw=none] (0,-\barx) rectangle (\barone,-\barx-\barwidth); + + \node [label=180:\colorbox{black}{\textcolor{white}{##1}}] at (0,-\barx-0.175) {}; + \addtocounter{barcount}{1} + } + \begin{tikzpicture} + \setcounter{barcount}{0} +}{ + \end{tikzpicture} +} + +%------------------------------------------------ + +\newcounter{a} +\newcounter{b} +\newcounter{c} + +% Command to output a number of automatically-sized bubbles from a string in the format of '/