@epic-web/workshop-app 6.64.0 → 6.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/assets/{_exerciseNumber-CcPKmB4n.js → _exerciseNumber-D3f2-zl6.js} +2 -2
- package/build/client/assets/{_exerciseNumber-CcPKmB4n.js.map → _exerciseNumber-D3f2-zl6.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_.finished-knzx8riV.js → _exerciseNumber_.finished-DBaOwcf2.js} +2 -2
- package/build/client/assets/{_exerciseNumber_.finished-knzx8riV.js.map → _exerciseNumber_.finished-DBaOwcf2.js.map} +1 -1
- package/build/client/assets/{_extra-DB6-IJuV.js → _extra-B4vZXPjV.js} +2 -2
- package/build/client/assets/{_extra-DB6-IJuV.js.map → _extra-B4vZXPjV.js.map} +1 -1
- package/build/client/assets/{_layout-Be0gsSoP.js → _layout-C6NSVF79.js} +2 -2
- package/build/client/assets/{_layout-Be0gsSoP.js.map → _layout-C6NSVF79.js.map} +1 -1
- package/build/client/assets/{_layout-D05w5xUz.js → _layout-oPmquiOE.js} +2 -2
- package/build/client/assets/{_layout-D05w5xUz.js.map → _layout-oPmquiOE.js.map} +1 -1
- package/build/client/assets/app-BcJkSksP.js +2 -0
- package/build/client/assets/{app-rrQthl25.js.map → app-BcJkSksP.js.map} +1 -1
- package/build/client/assets/{diff-De24Mp-s.js → diff-Ba99U4EI.js} +2 -2
- package/build/client/assets/{diff-De24Mp-s.js.map → diff-Ba99U4EI.js.map} +1 -1
- package/build/client/assets/{diff-Bd9VlQ-I.js → diff-DmmI9IU6.js} +2 -2
- package/build/client/assets/{diff-Bd9VlQ-I.js.map → diff-DmmI9IU6.js.map} +1 -1
- package/build/client/assets/{epic-video-DdpYdAlg.js → epic-video-5HutgMR0.js} +2 -2
- package/build/client/assets/{epic-video-DdpYdAlg.js.map → epic-video-5HutgMR0.js.map} +1 -1
- package/build/client/assets/{epic-video-Bndfj6GR.js → epic-video-BX2A437e.js} +2 -2
- package/build/client/assets/{epic-video-Bndfj6GR.js.map → epic-video-BX2A437e.js.map} +1 -1
- package/build/client/assets/{finished-HnwwiFtu.js → finished-BLRyuOTb.js} +2 -2
- package/build/client/assets/{finished-HnwwiFtu.js.map → finished-BLRyuOTb.js.map} +1 -1
- package/build/client/assets/index-DVd41HZN.js +68 -0
- package/build/client/assets/index-DVd41HZN.js.map +1 -0
- package/build/client/assets/{index-CvFJy3s8.js → index-Dt_ngnka.js} +2 -2
- package/build/client/assets/{index-CvFJy3s8.js.map → index-Dt_ngnka.js.map} +1 -1
- package/build/client/assets/{index-BL399UJV.js → index-InnNe6aG.js} +2 -2
- package/build/client/assets/{index-BL399UJV.js.map → index-InnNe6aG.js.map} +1 -1
- package/build/client/assets/{index-B1TztMYA.js → index-T3LlCTSm.js} +2 -2
- package/build/client/assets/{index-B1TztMYA.js.map → index-T3LlCTSm.js.map} +1 -1
- package/build/client/assets/{loading-IJRzD1mm.js → loading-BiVU3Oa8.js} +2 -2
- package/build/client/assets/{loading-IJRzD1mm.js.map → loading-BiVU3Oa8.js.map} +1 -1
- package/build/client/assets/{login-VlyrGJvd.js → login-Ej63Q5LC.js} +2 -2
- package/build/client/assets/{login-VlyrGJvd.js.map → login-Ej63Q5LC.js.map} +1 -1
- package/build/client/assets/manifest-0c2a1e68.js +1 -0
- package/build/client/assets/{mdx-CbaVHkqG.js → mdx-BlaeOyqK.js} +2 -2
- package/build/client/assets/{mdx-CbaVHkqG.js.map → mdx-BlaeOyqK.js.map} +1 -1
- package/build/client/assets/{playground-xNPUi1cK.js → playground-DIm_r4fy.js} +2 -2
- package/build/client/assets/{playground-xNPUi1cK.js.map → playground-DIm_r4fy.js.map} +1 -1
- package/build/client/assets/{preview-DUByetdK.js → preview-D11Pscbe.js} +2 -2
- package/build/client/assets/{preview-DUByetdK.js.map → preview-D11Pscbe.js.map} +1 -1
- package/build/client/assets/{product-DlgtjMXY.js → product-CNG57fZy.js} +2 -2
- package/build/client/assets/{product-DlgtjMXY.js.map → product-CNG57fZy.js.map} +1 -1
- package/build/client/assets/root-4ETVlwNv.js +3 -0
- package/build/client/assets/root-4ETVlwNv.js.map +1 -0
- package/build/client/assets/{test-wFDk9A6D.js → test-CpoHBC_8.js} +2 -2
- package/build/client/assets/{test-wFDk9A6D.js.map → test-CpoHBC_8.js.map} +1 -1
- package/build/client/assets/{tests-BldZ_klJ.js → tests-CITG_DX3.js} +2 -2
- package/build/client/assets/{tests-BldZ_klJ.js.map → tests-CITG_DX3.js.map} +1 -1
- package/build/server/index.js +67 -26
- package/build/server/index.js.map +1 -1
- package/package.json +3 -3
- package/build/client/assets/app-rrQthl25.js +0 -2
- package/build/client/assets/index-Cg-9mI3Y.js +0 -68
- package/build/client/assets/index-Cg-9mI3Y.js.map +0 -1
- package/build/client/assets/manifest-3610e2d1.js +0 -1
- package/build/client/assets/root-B-fnUAyN.js +0 -2
- package/build/client/assets/root-B-fnUAyN.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"mappings":"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","names":["tweenFunctions","t","b","_c","d","c","a","p","s","v","tweenFunctions_1","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","_extends","source","key","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","degreesToRads","degrees","randomRange","min","max","randomInt","ParticleShape","RotationDirection","Particle","context","getOptions","x","y","_this$getOptions","colors","initialVelocityX","initialVelocityY","_proto","_this$getOptions2","gravity","wind","friction","opacity","drawShape","rotateDelta","ParticleGeneratorClass","canvas","_this","newParticleX","newParticleY","particlesGenerated","lastNumberOfPieces","run","recycle","numberOfPieces","debug","tweenFunction","tweenDuration","nP","activeCount","now","tweenInitTime","progressTime","tweenedVal","numToAdd","ctx","confettiDefaults","tweens","Confetti","opts","computedConfettiDefaults","_this$options","onConfettiComplete","lastRunState","lastRecycleState","ref","React","extractCanvasProps","confettiOptions","refs","rest","confettiOptionKeys","refProps","prop","val","ConfettiReactInternal","_Component","_extractCanvasProps","passedProps","canvasStyles","Component","Index","_ref","id","jsx","ClientOnly","ConfettiShower","ExerciseWarningBanner","jsxs","Link","Icon","shortcutCategories","KeyboardShortcutsDialog","open","onOpenChange","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","category","shortcut","index","keyIndex","React.Fragment","EpicToaster","toast","Fragment","Toaster","ShowToast","type","title","description","useEffect","showToast","UpdateToast","repoUpdates","updatesAvailable","diffLink","remoteCommit","fetcher","useFetcher","fetcherRef","useRef","inProgressToastId","updateNotificationId","updateInProgress","EPICSHOP_PARENT_PORT","EPICSHOP_PARENT_TOKEN","res","data","parsed","z.object","z.enum","z.string","status","message","reloaded","err","Notifications","unmutedNotifications","toastedIds","Set","notification","current","has","add","info","children","link","href","className","duration","Infinity","action","label","onClick","submit","intent","method","appStylesheetUrl","tailwindStylesheetUrl","UNKNOWN_EMAIL","getSentryUser","user","userId","email","sentryUser","links","rel","sizes","meta","loaderData","getSeoMetaTags","instructor","workshopTitle","workshopSubtitle","requestInfo","Document","env","style","lang","ClientHintCheck","Meta","charSet","name","content","Links","dangerouslySetInnerHTML","__html","JSON","stringify","ScrollRestoration","Scripts","App","useLoaderData","navigation","useNavigation","showSpinner","useSpinDelay","state","delay","minDuration","altDown","useAltDown","showKeyboardShortcuts","setShowKeyboardShortcuts","handleToggle","prev","window","addEventListener","removeEventListener","ENV","EPICSHOP_IS_PUBLISHED","then","Sentry","setUser","catch","theme","useTheme","preferences","fontSize","cn","exerciseChanges","exerciseWarning","dismissed","Outlet","confettiId","EpicProgress","root","_UNSAFE_withComponentProps","Presence","TooltipProvider","ErrorBoundary","_UNSAFE_withErrorBoundaryProps","GeneralErrorBoundary"],"ignoreList":[0,1],"sources":["../../../../../node_modules/tween-functions/index.js","../../../../../node_modules/confetti-react/dist/confetti-react.esm.js","../../../app/components/confetti.tsx","../../../app/components/exercise-warning-banner.tsx","../../../app/components/keyboard-shortcuts-dialog.tsx","../../../app/components/toaster.tsx","../../../app/components/update-repo.tsx","../../../app/routes/admin+/notifications.tsx","../../../app/styles/app.css?url","../../../app/styles/tailwind.css?url","../../../app/utils/sentry-user.ts","../../../app/root.tsx"],"sourcesContent":["'use strict';\n\n// t: current time, b: beginning value, _c: final value, d: total duration\nvar tweenFunctions = {\n linear: function(t, b, _c, d) {\n var c = _c - b;\n return c * t / d + b;\n },\n easeInQuad: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t + b;\n },\n easeOutQuad: function(t, b, _c, d) {\n var c = _c - b;\n return -c * (t /= d) * (t - 2) + b;\n },\n easeInOutQuad: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t + b;\n } else {\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\n }\n },\n easeInCubic: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t + b;\n },\n easeOutCubic: function(t, b, _c, d) {\n var c = _c - b;\n return c * ((t = t / d - 1) * t * t + 1) + b;\n },\n easeInOutCubic: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t + b;\n } else {\n return c / 2 * ((t -= 2) * t * t + 2) + b;\n }\n },\n easeInQuart: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t * t + b;\n },\n easeOutQuart: function(t, b, _c, d) {\n var c = _c - b;\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n },\n easeInOutQuart: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t * t + b;\n } else {\n return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n }\n },\n easeInQuint: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t * t * t + b;\n },\n easeOutQuint: function(t, b, _c, d) {\n var c = _c - b;\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n easeInOutQuint: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t * t * t + b;\n } else {\n return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n }\n },\n easeInSine: function(t, b, _c, d) {\n var c = _c - b;\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n },\n easeOutSine: function(t, b, _c, d) {\n var c = _c - b;\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n },\n easeInOutSine: function(t, b, _c, d) {\n var c = _c - b;\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n },\n easeInExpo: function(t, b, _c, d) {\n var c = _c - b;\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n },\n easeOutExpo: function(t, b, _c, d) {\n var c = _c - b;\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n },\n easeInOutExpo: function(t, b, _c, d) {\n var c = _c - b;\n if (t === 0) {\n return b;\n }\n if (t === d) {\n return b + c;\n }\n if ((t /= d / 2) < 1) {\n return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n } else {\n return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n }\n },\n easeInCirc: function(t, b, _c, d) {\n var c = _c - b;\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n },\n easeOutCirc: function(t, b, _c, d) {\n var c = _c - b;\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n },\n easeInOutCirc: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n } else {\n return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n }\n },\n easeInElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;\n },\n easeOutElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;\n },\n easeInOutElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n if (t < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;\n } else {\n return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + c + b;\n }\n },\n easeInBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n easeOutBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n easeInOutBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n if ((t /= d / 2) < 1) {\n return c / 2 * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n } else {\n return c / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n }\n },\n easeInBounce: function(t, b, _c, d) {\n var c = _c - b;\n var v;\n v = tweenFunctions.easeOutBounce(d - t, 0, c, d);\n return c - v + b;\n },\n easeOutBounce: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n } else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n } else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n } else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n easeInOutBounce: function(t, b, _c, d) {\n var c = _c - b;\n var v;\n if (t < d / 2) {\n v = tweenFunctions.easeInBounce(t * 2, 0, c, d);\n return v * 0.5 + b;\n } else {\n v = tweenFunctions.easeOutBounce(t * 2 - d, 0, c, d);\n return v * 0.5 + c * 0.5 + b;\n }\n }\n};\n\nmodule.exports = tweenFunctions;\n","import React, { Component } from 'react';\nimport tweens from 'tween-functions';\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _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\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction degreesToRads(degrees) {\n return degrees * Math.PI / 180;\n}\nfunction randomRange(min, max) {\n return min + Math.random() * (max - min);\n}\nfunction randomInt(min, max) {\n return Math.floor(min + Math.random() * (max - min + 1));\n}\n\nvar ParticleShape;\n\n(function (ParticleShape) {\n ParticleShape[ParticleShape[\"Circle\"] = 0] = \"Circle\";\n ParticleShape[ParticleShape[\"Square\"] = 1] = \"Square\";\n ParticleShape[ParticleShape[\"Strip\"] = 2] = \"Strip\";\n})(ParticleShape || (ParticleShape = {}));\n\nvar RotationDirection;\n\n(function (RotationDirection) {\n RotationDirection[RotationDirection[\"Positive\"] = 1] = \"Positive\";\n RotationDirection[RotationDirection[\"Negative\"] = -1] = \"Negative\";\n})(RotationDirection || (RotationDirection = {}));\n\nvar Particle = /*#__PURE__*/function () {\n function Particle(context, getOptions, x, y) {\n this.getOptions = getOptions;\n\n var _this$getOptions = this.getOptions(),\n colors = _this$getOptions.colors,\n initialVelocityX = _this$getOptions.initialVelocityX,\n initialVelocityY = _this$getOptions.initialVelocityY;\n\n this.context = context;\n this.x = x;\n this.y = y;\n this.w = randomRange(5, 20);\n this.h = randomRange(5, 20);\n this.radius = randomRange(5, 10);\n this.vx = randomRange(-initialVelocityX, initialVelocityX);\n this.vy = randomRange(-initialVelocityY, 0);\n this.shape = randomInt(0, 2);\n this.angle = degreesToRads(randomRange(0, 360));\n this.angularSpin = randomRange(-0.2, 0.2);\n this.color = colors[Math.floor(Math.random() * colors.length)];\n this.rotateY = randomRange(0, 1);\n this.rotationDirection = randomRange(0, 1) ? RotationDirection.Positive : RotationDirection.Negative;\n }\n\n var _proto = Particle.prototype;\n\n _proto.update = function update() {\n var _this$getOptions2 = this.getOptions(),\n gravity = _this$getOptions2.gravity,\n wind = _this$getOptions2.wind,\n friction = _this$getOptions2.friction,\n opacity = _this$getOptions2.opacity,\n drawShape = _this$getOptions2.drawShape;\n\n this.x += this.vx;\n this.y += this.vy;\n this.vy += gravity;\n this.vx += wind;\n this.vx *= friction;\n this.vy *= friction;\n\n if (this.rotateY >= 1 && this.rotationDirection === RotationDirection.Positive) {\n this.rotationDirection = RotationDirection.Negative;\n } else if (this.rotateY <= -1 && this.rotationDirection === RotationDirection.Negative) {\n this.rotationDirection = RotationDirection.Positive;\n }\n\n var rotateDelta = 0.1 * this.rotationDirection;\n this.rotateY += rotateDelta;\n this.angle += this.angularSpin;\n this.context.save();\n this.context.translate(this.x, this.y);\n this.context.rotate(this.angle);\n this.context.scale(1, this.rotateY);\n this.context.rotate(this.angle);\n this.context.beginPath();\n this.context.fillStyle = this.color;\n this.context.strokeStyle = this.color;\n this.context.globalAlpha = opacity;\n this.context.lineCap = 'round';\n this.context.lineWidth = 2;\n\n if (drawShape && typeof drawShape === 'function') {\n drawShape.call(this, this.context);\n } else {\n switch (this.shape) {\n case ParticleShape.Circle:\n {\n this.context.beginPath();\n this.context.arc(0, 0, this.radius, 0, 2 * Math.PI);\n this.context.fill();\n break;\n }\n\n case ParticleShape.Square:\n {\n this.context.fillRect(-this.w / 2, -this.h / 2, this.w, this.h);\n break;\n }\n\n case ParticleShape.Strip:\n {\n this.context.fillRect(-this.w / 6, -this.h / 2, this.w / 3, this.h);\n break;\n }\n\n default:\n {\n throw new Error('Unknown type in Particle.ts');\n }\n }\n }\n\n this.context.closePath();\n this.context.restore();\n };\n\n return Particle;\n}();\n\nvar ParticleGeneratorClass = function ParticleGeneratorClass(canvas, getOptions) {\n var _this = this;\n\n this.x = 0;\n this.y = 0;\n this.w = 0;\n this.h = 0;\n this.lastNumberOfPieces = 0;\n this.tweenInitTime = Date.now();\n this.particles = [];\n this.particlesGenerated = 0;\n\n this.removeParticleAt = function (i) {\n _this.particles.splice(i, 1);\n };\n\n this.getParticle = function () {\n var newParticleX = randomRange(_this.x, _this.w + _this.x);\n var newParticleY = randomRange(_this.y, _this.h + _this.y);\n return new Particle(_this.context, _this.getOptions, newParticleX, newParticleY);\n };\n\n this.animate = function () {\n var canvas = _this.canvas,\n context = _this.context,\n particlesGenerated = _this.particlesGenerated,\n lastNumberOfPieces = _this.lastNumberOfPieces;\n\n var _this$getOptions = _this.getOptions(),\n run = _this$getOptions.run,\n recycle = _this$getOptions.recycle,\n numberOfPieces = _this$getOptions.numberOfPieces,\n debug = _this$getOptions.debug,\n tweenFunction = _this$getOptions.tweenFunction,\n tweenDuration = _this$getOptions.tweenDuration;\n\n if (!run) {\n return false;\n }\n\n var nP = _this.particles.length;\n var activeCount = recycle ? nP : particlesGenerated;\n var now = Date.now(); // Initial population\n\n if (activeCount < numberOfPieces) {\n // Use the numberOfPieces prop as a key to reset the easing timing\n if (lastNumberOfPieces !== numberOfPieces) {\n _this.tweenInitTime = now;\n _this.lastNumberOfPieces = numberOfPieces;\n }\n\n var tweenInitTime = _this.tweenInitTime; // Add more than one piece per loop, otherwise the number of pieces would\n // be limitted by the RAF framerate\n\n var progressTime = now - tweenInitTime > tweenDuration ? tweenDuration : Math.max(0, now - tweenInitTime);\n var tweenedVal = tweenFunction(progressTime, activeCount, numberOfPieces, tweenDuration);\n var numToAdd = Math.round(tweenedVal - activeCount);\n\n for (var i = 0; i < numToAdd; i += 1) {\n _this.particles.push(_this.getParticle());\n }\n\n _this.particlesGenerated += numToAdd;\n }\n\n if (debug) {\n // Draw debug text\n context.font = '12px sans-serif';\n context.fillStyle = '#333';\n context.textAlign = 'right';\n context.fillText(\"Particles: \" + nP, canvas.width - 10, canvas.height - 20);\n } // Maintain the population\n\n\n _this.particles.forEach(function (p, i) {\n // Update each particle's position\n p.update(); // Prune the off-canvas particles\n\n if (p.y > canvas.height || p.y < -100 || p.x > canvas.width + 100 || p.x < -100) {\n if (recycle && activeCount <= numberOfPieces) {\n // Replace the particle with a brand new one\n _this.particles[i] = _this.getParticle();\n } else {\n _this.removeParticleAt(i);\n }\n }\n });\n\n return nP > 0 || activeCount < numberOfPieces;\n };\n\n this.canvas = canvas;\n var ctx = this.canvas.getContext('2d');\n\n if (!ctx) {\n throw new Error('Could not get canvas context');\n }\n\n this.context = ctx;\n this.getOptions = getOptions;\n};\n\nvar confettiDefaults = {\n width: typeof window !== 'undefined' ? window.innerWidth : 300,\n height: typeof window !== 'undefined' ? window.innerHeight : 200,\n numberOfPieces: 200,\n friction: 0.99,\n wind: 0,\n gravity: 0.1,\n initialVelocityX: 4,\n initialVelocityY: 10,\n colors: ['#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#4CAF50', '#8BC34A', '#CDDC39', '#FFEB3B', '#FFC107', '#FF9800', '#FF5722', '#795548'],\n opacity: 1.0,\n debug: false,\n tweenFunction: tweens.easeInOutQuad,\n tweenDuration: 5000,\n recycle: true,\n run: true\n};\nvar Confetti = /*#__PURE__*/function () {\n function Confetti(canvas, opts) {\n var _this = this;\n\n this.setOptionsWithDefaults = function (opts) {\n var computedConfettiDefaults = {\n confettiSource: {\n x: 0,\n y: 0,\n w: _this.canvas.width,\n h: 0\n }\n };\n _this._options = _extends({}, computedConfettiDefaults, confettiDefaults, opts);\n Object.assign(_this, opts.confettiSource);\n };\n\n this.update = function () {\n var _this$options = _this.options,\n run = _this$options.run,\n onConfettiComplete = _this$options.onConfettiComplete,\n canvas = _this.canvas,\n context = _this.context;\n\n if (run) {\n context.fillStyle = 'white';\n context.clearRect(0, 0, canvas.width, canvas.height);\n }\n\n if (_this.generator.animate()) {\n _this.rafId = requestAnimationFrame(_this.update);\n } else {\n if (onConfettiComplete && typeof onConfettiComplete === 'function' && _this.generator.particlesGenerated > 0) {\n onConfettiComplete.call(_this, _this);\n }\n\n _this._options.run = false;\n }\n };\n\n this.reset = function () {\n if (_this.generator && _this.generator.particlesGenerated > 0) {\n _this.generator.particlesGenerated = 0;\n _this.generator.particles = [];\n _this.generator.lastNumberOfPieces = 0;\n }\n };\n\n this.stop = function () {\n _this.options = {\n run: false\n };\n\n if (_this.rafId) {\n cancelAnimationFrame(_this.rafId);\n _this.rafId = undefined;\n }\n };\n\n this.canvas = canvas;\n var ctx = this.canvas.getContext('2d');\n\n if (!ctx) {\n throw new Error('Could not get canvas context');\n }\n\n this.context = ctx;\n this.generator = new ParticleGeneratorClass(this.canvas, function () {\n return _this.options;\n });\n this.options = opts;\n this.update();\n }\n\n _createClass(Confetti, [{\n key: \"options\",\n get: function get() {\n return this._options;\n },\n set: function set(opts) {\n var lastRunState = this._options && this._options.run;\n var lastRecycleState = this._options && this._options.recycle;\n this.setOptionsWithDefaults(opts);\n\n if (this.generator) {\n Object.assign(this.generator, this.options.confettiSource);\n\n if (typeof opts.recycle === 'boolean' && opts.recycle && lastRecycleState === false) {\n this.generator.lastNumberOfPieces = this.generator.particles.length;\n }\n }\n\n if (typeof opts.run === 'boolean' && opts.run && lastRunState === false) {\n this.update();\n }\n }\n }]);\n\n return Confetti;\n}();\n\nvar ref = /*#__PURE__*/React.createRef();\n\nfunction extractCanvasProps(props) {\n var confettiOptions = {};\n var refs = {};\n var rest = {};\n var confettiOptionKeys = [].concat(Object.keys(confettiDefaults), ['confettiSource', 'drawShape', 'onConfettiComplete']);\n var refProps = ['canvasRef'];\n Object.keys(props).forEach(function (prop) {\n var val = props[prop];\n\n if (confettiOptionKeys.includes(prop)) {\n confettiOptions[prop] = val;\n } else if (refProps.includes(prop)) {\n refProps[prop] = val;\n } else {\n rest[prop] = val;\n }\n });\n return [confettiOptions, rest, refs];\n}\n\nvar ConfettiReactInternal = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ConfettiReactInternal, _Component);\n\n function ConfettiReactInternal(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n _this.canvas = React.createRef();\n _this.canvas = props.canvasRef || ref;\n return _this;\n }\n\n var _proto = ConfettiReactInternal.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.canvas.current) {\n var opts = extractCanvasProps(this.props)[0];\n this.confetti = new Confetti(this.canvas.current, opts);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n var confettiOptions = extractCanvasProps(this.props)[0];\n\n if (this.confetti) {\n this.confetti.options = confettiOptions;\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.confetti) {\n this.confetti.stop();\n }\n\n this.confetti = undefined;\n };\n\n _proto.render = function render() {\n var _extractCanvasProps = extractCanvasProps(this.props),\n confettiOptions = _extractCanvasProps[0],\n passedProps = _extractCanvasProps[1];\n\n var canvasStyles = _extends({\n zIndex: 2,\n position: 'absolute',\n pointerEvents: 'none',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n }, passedProps.style);\n\n return React.createElement(\"canvas\", Object.assign({\n width: confettiOptions.width,\n height: confettiOptions.height,\n ref: this.canvas\n }, passedProps, {\n style: canvasStyles\n }));\n };\n\n return ConfettiReactInternal;\n}(Component);\n\nConfettiReactInternal.defaultProps = /*#__PURE__*/_extends({}, confettiDefaults);\nConfettiReactInternal.displayName = 'ConfettiReact'; // eslint-disable-next-line react/display-name\n\nvar Index = /*#__PURE__*/React.forwardRef(function (props, _ref) {\n return React.createElement(ConfettiReactInternal, Object.assign({\n canvasRef: ref\n }, props));\n});\n\nexport default Index;\nexport { Index };\n//# sourceMappingURL=confetti-react.esm.js.map\n","import { Index as ConfettiShower } from 'confetti-react'\nimport { ClientOnly } from 'remix-utils/client-only'\n\nexport function Confetti({ id }: { id?: string | null }) {\n\tif (!id) return null\n\n\treturn (\n\t\t<ClientOnly>\n\t\t\t{() => (\n\t\t\t\t<ConfettiShower\n\t\t\t\t\tkey={id}\n\t\t\t\t\trun={Boolean(id)}\n\t\t\t\t\trecycle={false}\n\t\t\t\t\tnumberOfPieces={800}\n\t\t\t\t\twidth={window.innerWidth}\n\t\t\t\t\theight={window.innerHeight}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</ClientOnly>\n\t)\n}\n","import { Link } from 'react-router'\nimport { Icon } from './icons.tsx'\n\nexport function ExerciseWarningBanner() {\n\treturn (\n\t\t<div className=\"border-destructive bg-destructive fixed top-0 right-0 left-0 z-50 border-b\">\n\t\t\t<div className=\"relative w-full p-4\">\n\t\t\t\t{/* Full-banner clickable link, visually hidden but covers the banner */}\n\t\t\t\t<Link\n\t\t\t\t\tto=\"/workspace-structure\"\n\t\t\t\t\tclassName=\"absolute inset-0 z-10 block h-full w-full\"\n\t\t\t\t\taria-label=\"Learn more about workspace structure\"\n\t\t\t\t/>\n\t\t\t\t<div className=\"relative z-0 container flex items-center justify-between\">\n\t\t\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname=\"Error\"\n\t\t\t\t\t\t\tclassName=\"text-destructive-foreground h-5 w-5\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<h3 className=\"text-destructive-foreground text-sm font-semibold\">\n\t\t\t\t\t\t\t\tWarning: Changes detected in exercises directory\n\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t<p className=\"text-destructive-foreground/80 text-xs\">\n\t\t\t\t\t\t\t\tYou should typically work in the playground directory, not the\n\t\t\t\t\t\t\t\texercises directory.\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"text-destructive-foreground flex items-center gap-2 text-xs\">\n\t\t\t\t\t\t<span>Learn more</span>\n\t\t\t\t\t\t<Icon name=\"ArrowRight\" className=\"h-3 w-3\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import * as React from 'react'\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogDescription,\n\tDialogHeader,\n\tDialogTitle,\n} from './ui/dialog'\n\ninterface KeyboardShortcut {\n\tkeys: string[]\n\tdescription: string\n}\n\ninterface ShortcutCategory {\n\ttitle: string\n\tshortcuts: KeyboardShortcut[]\n}\n\nconst shortcutCategories: ShortcutCategory[] = [\n\t{\n\t\ttitle: 'Navigation',\n\t\tshortcuts: [\n\t\t\t{ keys: ['g', 'h'], description: 'Go to home' },\n\t\t\t{\n\t\t\t\tkeys: ['g', '1-9'],\n\t\t\t\tdescription: 'Go to exercise (e.g., g+1 → /exercise/01)',\n\t\t\t},\n\t\t\t{\n\t\t\t\tkeys: ['g', '1-9', '.', '1-9'],\n\t\t\t\tdescription:\n\t\t\t\t\t'Go to exercise step (e.g., g+1+.+2 → /exercise/01/02/problem)',\n\t\t\t},\n\t\t\t{\n\t\t\t\tkeys: ['g', '1-9', '.', 'f'],\n\t\t\t\tdescription:\n\t\t\t\t\t'Go to exercise finished page (e.g., g+1+.+f → /exercise/01/finished)',\n\t\t\t},\n\t\t\t{ keys: ['g', 'p'], description: 'Go to previous step/page' },\n\t\t\t{ keys: ['g', 'n'], description: 'Go to next step/page' },\n\t\t\t{ keys: ['g', 'a'], description: 'Go to account page' },\n\t\t\t{ keys: ['g', 'd'], description: 'Go to admin page' },\n\t\t\t{ keys: ['g', 'l'], description: 'Go to last exercise solution' },\n\t\t\t{ keys: ['Escape'], description: 'Close sidebar navigation (when open)' },\n\t\t],\n\t},\n\t{\n\t\ttitle: 'Playback Controls',\n\t\tshortcuts: [\n\t\t\t{ keys: ['Space', 'k'], description: 'Play/pause video' },\n\t\t\t{ keys: ['j'], description: 'Seek backward 10 seconds' },\n\t\t\t{ keys: ['l'], description: 'Seek forward 10 seconds' },\n\t\t\t{ keys: ['←'], description: 'Seek backward 10 seconds' },\n\t\t\t{ keys: ['→'], description: 'Seek forward 10 seconds' },\n\t\t],\n\t},\n\t{\n\t\ttitle: 'Frame-by-Frame Navigation',\n\t\tshortcuts: [\n\t\t\t{ keys: [','], description: 'Go to previous frame (when paused)' },\n\t\t\t{ keys: ['.'], description: 'Go to next frame (when paused)' },\n\t\t],\n\t},\n\t{\n\t\ttitle: 'Volume Control',\n\t\tshortcuts: [\n\t\t\t{ keys: ['↑'], description: 'Increase volume by 10%' },\n\t\t\t{ keys: ['↓'], description: 'Decrease volume by 10%' },\n\t\t],\n\t},\n\t{\n\t\ttitle: 'Playback Speed',\n\t\tshortcuts: [\n\t\t\t{ keys: ['Shift', '>'], description: 'Increase playback speed' },\n\t\t\t{ keys: ['Shift', '<'], description: 'Decrease playback speed' },\n\t\t],\n\t},\n\t{\n\t\ttitle: 'Fullscreen and Picture-in-Picture',\n\t\tshortcuts: [\n\t\t\t{ keys: ['f'], description: 'Toggle fullscreen mode' },\n\t\t\t{ keys: ['i'], description: 'Toggle picture-in-picture mode' },\n\t\t],\n\t},\n\t{\n\t\ttitle: 'Captions',\n\t\tshortcuts: [{ keys: ['c'], description: 'Toggle captions/subtitles' }],\n\t},\n\t{\n\t\ttitle: 'Quick Seek',\n\t\tshortcuts: [\n\t\t\t{\n\t\t\t\tkeys: ['0-9'],\n\t\t\t\tdescription:\n\t\t\t\t\t'Seek to percentage of video (0 = 0%, 1 = 10%, ..., 9 = 90%)',\n\t\t\t},\n\t\t],\n\t},\n]\n\nfunction KeyboardShortcutsDialog({\n\topen,\n\tonOpenChange,\n}: {\n\topen: boolean\n\tonOpenChange: (open: boolean) => void\n}) {\n\treturn (\n\t\t<Dialog open={open} onOpenChange={onOpenChange}>\n\t\t\t<DialogContent className=\"max-h-[80vh] max-w-2xl overflow-y-auto\">\n\t\t\t\t<DialogHeader>\n\t\t\t\t\t<DialogTitle>Keyboard Shortcuts</DialogTitle>\n\t\t\t\t\t<DialogDescription>\n\t\t\t\t\t\tUse these keyboard shortcuts to navigate and control the video\n\t\t\t\t\t\tplayer. Press{' '}\n\t\t\t\t\t\t<kbd className=\"border-border bg-muted rounded border px-1.5 py-0.5 font-mono text-xs\">\n\t\t\t\t\t\t\t?\n\t\t\t\t\t\t</kbd>{' '}\n\t\t\t\t\t\tor select the question mark icon in the navigation to open this\n\t\t\t\t\t\tlist.\n\t\t\t\t\t</DialogDescription>\n\t\t\t\t</DialogHeader>\n\t\t\t\t<div className=\"space-y-6\">\n\t\t\t\t\t{shortcutCategories.map((category) => (\n\t\t\t\t\t\t<div key={category.title}>\n\t\t\t\t\t\t\t<h3 className=\"text-foreground mb-3 text-sm font-semibold\">\n\t\t\t\t\t\t\t\t{category.title}\n\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t\t{category.shortcuts.map((shortcut, index) => (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center justify-between gap-4\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground flex-1 text-sm\">\n\t\t\t\t\t\t\t\t\t\t\t{shortcut.description}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex shrink-0 items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t{shortcut.keys.map((key, keyIndex) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<React.Fragment key={keyIndex}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<kbd className=\"border-border bg-muted rounded border px-2 py-1 font-mono text-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{key}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</kbd>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{keyIndex < shortcut.keys.length - 1 && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">+</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</React.Fragment>\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"border-border mt-4 border-t pt-4\">\n\t\t\t\t\t<p className=\"text-muted-foreground text-xs\">\n\t\t\t\t\t\t<strong>Note:</strong> Shortcuts are ignored when focus is on\n\t\t\t\t\t\tinteractive elements (inputs, buttons, etc.). Press{' '}\n\t\t\t\t\t\t<kbd className=\"border-border bg-muted rounded border px-1.5 py-0.5 font-mono text-xs\">\n\t\t\t\t\t\t\t?\n\t\t\t\t\t\t</kbd>{' '}\n\t\t\t\t\t\tto toggle this dialog.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t)\n}\n\nexport { KeyboardShortcutsDialog }\n","import { useEffect } from 'react'\nimport { Toaster, toast as showToast } from 'sonner'\nimport { type Toast } from '#app/utils/toast.server.ts'\n\nexport function EpicToaster({ toast }: { toast?: Toast | null }) {\n\treturn (\n\t\t<>\n\t\t\t<Toaster closeButton position=\"top-center\" />\n\t\t\t{toast ? <ShowToast toast={toast} /> : null}\n\t\t</>\n\t)\n}\n\nfunction ShowToast({ toast }: { toast: Toast }) {\n\tconst { id, type, title, description } = toast\n\tuseEffect(() => {\n\t\tsetTimeout(() => {\n\t\t\tshowToast[type](title, { id, description })\n\t\t}, 0)\n\t}, [description, id, title, type])\n\treturn null\n}\n","import { type checkForUpdatesCached } from '@epic-web/workshop-utils/git.server'\nimport { useEffect, useRef } from 'react'\nimport { useFetcher } from 'react-router'\nimport { toast } from 'sonner'\nimport { z } from 'zod'\n\nexport function UpdateToast({\n\trepoUpdates,\n}: {\n\trepoUpdates: Awaited<ReturnType<typeof checkForUpdatesCached>>\n}) {\n\tconst { updatesAvailable } = repoUpdates\n\tconst diffLink = 'diffLink' in repoUpdates ? repoUpdates.diffLink : null\n\tconst remoteCommit =\n\t\t'remoteCommit' in repoUpdates ? repoUpdates.remoteCommit : undefined\n\tconst fetcher = useFetcher()\n\tconst fetcherRef = useRef(fetcher)\n\tuseEffect(() => {\n\t\tfetcherRef.current = fetcher\n\t}, [fetcher])\n\n\t// Track the in-progress toast id and update notification id\n\tconst inProgressToastId = useRef<ReturnType<typeof toast.loading> | null>(\n\t\tnull,\n\t)\n\tconst updateNotificationId = useRef<ReturnType<typeof toast.info> | null>(\n\t\tnull,\n\t)\n\tconst updateInProgress = useRef(false)\n\n\tuseEffect(() => {\n\t\tif (updatesAvailable && remoteCommit) {\n\t\t\tconst id = toast.info('New workshop updates available', {\n\t\t\t\tduration: Infinity,\n\t\t\t\tdescription: (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{`Get the latest updates by clicking the update button. `}\n\t\t\t\t\t\t{diffLink ? (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref={diffLink}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t\t\tclassName=\"text-xs underline\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tView changes\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</div>\n\t\t\t\t),\n\t\t\t\tonDismiss: () => {\n\t\t\t\t\t// No-op for now, could call a dismiss endpoint if needed\n\t\t\t\t},\n\t\t\t\taction: {\n\t\t\t\t\tlabel: 'Update',\n\t\t\t\t\tonClick: async () => {\n\t\t\t\t\t\t// Dismiss the update notification immediately\n\t\t\t\t\t\tif (updateNotificationId.current) {\n\t\t\t\t\t\t\ttoast.dismiss(updateNotificationId.current)\n\t\t\t\t\t\t\tupdateNotificationId.current = null\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Show in-progress toast\n\t\t\t\t\t\tif (!inProgressToastId.current) {\n\t\t\t\t\t\t\tinProgressToastId.current = toast.loading('Update in progress...')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (updateInProgress.current) return\n\t\t\t\t\t\tupdateInProgress.current = true\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst { EPICSHOP_PARENT_PORT, EPICSHOP_PARENT_TOKEN } =\n\t\t\t\t\t\t\t\twindow.ENV || {}\n\t\t\t\t\t\t\tif (!EPICSHOP_PARENT_PORT || !EPICSHOP_PARENT_TOKEN) {\n\t\t\t\t\t\t\t\tthrow new Error('Update API not available')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst res = await fetch(\n\t\t\t\t\t\t\t\t`http://localhost:${EPICSHOP_PARENT_PORT}/__epicshop-restart`,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t\t'x-epicshop-token': EPICSHOP_PARENT_TOKEN,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\tif (!res.ok) {\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t`Request to update workshop failed: ${res.statusText}`,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst data = await res.json().catch(() => ({}))\n\t\t\t\t\t\t\tconst schema = z.object({\n\t\t\t\t\t\t\t\tstatus: z.enum(['ok', 'error']),\n\t\t\t\t\t\t\t\tmessage: z.string().optional(),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tconst parsed = schema.safeParse(data)\n\t\t\t\t\t\t\tif (!parsed.success) {\n\t\t\t\t\t\t\t\tconsole.error('Invalid response from update API', data)\n\t\t\t\t\t\t\t\tthrow new Error('Invalid response from update API')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst { status, message } = parsed.data\n\t\t\t\t\t\t\tif (status === 'ok') {\n\t\t\t\t\t\t\t\tlet reloaded = false\n\t\t\t\t\t\t\t\ttoast.success('Workshop updated', {\n\t\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\t'Reloading in 2 seconds... You can reload now if you prefer.',\n\t\t\t\t\t\t\t\t\tduration: 2000,\n\t\t\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\t\t\tlabel: 'Reload now',\n\t\t\t\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t\t\t\treloaded = true\n\t\t\t\t\t\t\t\t\t\t\twindow.location.reload()\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonAutoClose: () => {\n\t\t\t\t\t\t\t\t\t\tif (!reloaded) {\n\t\t\t\t\t\t\t\t\t\t\twindow.location.reload()\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttoast.error('Failed to update workshop', {\n\t\t\t\t\t\t\t\t\tdescription: message || 'Unknown error',\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\ttoast.error('Failed to update workshop', {\n\t\t\t\t\t\t\t\tdescription: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tupdateInProgress.current = false\n\t\t\t\t\t\t\tif (inProgressToastId.current) {\n\t\t\t\t\t\t\t\ttoast.dismiss(inProgressToastId.current)\n\t\t\t\t\t\t\t\tinProgressToastId.current = null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcancel: {\n\t\t\t\t\tlabel: 'Dismiss',\n\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t// Dismiss the notification toast\n\t\t\t\t\t\tif (updateNotificationId.current) {\n\t\t\t\t\t\t\ttoast.dismiss(updateNotificationId.current)\n\t\t\t\t\t\t\tupdateNotificationId.current = null\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Mute the notification persistently\n\t\t\t\t\t\tvoid fetcherRef.current.submit(\n\t\t\t\t\t\t\t{ intent: 'mute', id: `update-repo-${remoteCommit}` },\n\t\t\t\t\t\t\t{ method: 'post', action: '/admin/notifications' },\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t\tupdateNotificationId.current = id\n\t\t}\n\t}, [updatesAvailable, diffLink, remoteCommit])\n\n\treturn null\n}\n","import { muteNotification } from '@epic-web/workshop-utils/db.server'\nimport { type getUnmutedNotifications } from '@epic-web/workshop-utils/notifications.server'\nimport { useEffect, useRef } from 'react'\nimport { data, type ActionFunctionArgs, useFetcher } from 'react-router'\nimport { toast } from 'sonner'\n\nexport async function action({ request }: ActionFunctionArgs) {\n\tconst formData = await request.formData()\n\tconst intent = formData.get('intent')\n\tconst id = formData.get('id')\n\tif (typeof id !== 'string') {\n\t\treturn data({ error: 'Invalid notification id' }, { status: 400 })\n\t}\n\tif (intent === 'mute') {\n\t\tawait muteNotification(id)\n\t\treturn data({ success: true })\n\t}\n\treturn data({ error: 'Invalid intent' }, { status: 400 })\n}\n\nexport function Notifications({\n\tunmutedNotifications,\n}: {\n\tunmutedNotifications: Awaited<ReturnType<typeof getUnmutedNotifications>>\n}) {\n\tconst fetcher = useFetcher<typeof action>()\n\tconst fetcherRef = useRef(fetcher)\n\tconst toastedIds = useRef<Set<string>>(new Set())\n\n\tuseEffect(() => {\n\t\tfor (const notification of unmutedNotifications) {\n\t\t\tif (toastedIds.current.has(notification.id)) continue\n\t\t\ttoastedIds.current.add(notification.id)\n\n\t\t\ttoast.info(notification.title, {\n\t\t\t\tid: notification.id,\n\t\t\t\tdescription: (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p>{notification.message}</p>\n\t\t\t\t\t\t{notification.link && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref={notification.link}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tclassName=\"text-xs underline\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tLearn more\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t),\n\t\t\t\tduration: Infinity,\n\t\t\t\taction: {\n\t\t\t\t\tlabel: 'Dismiss',\n\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\tvoid fetcherRef.current.submit(\n\t\t\t\t\t\t\t{ intent: 'mute', id: notification.id },\n\t\t\t\t\t\t\t{ method: 'post', action: '/admin/notifications' },\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}, [unmutedNotifications])\n\n\treturn null\n}\n","import \"/home/runner/work/epicshop/epicshop/packages/workshop-app/app/styles/app.css?transform-only\";export default \"__VITE_CSS_URL__2f686f6d652f72756e6e65722f776f726b2f6570696373686f702f6570696373686f702f7061636b616765732f776f726b73686f702d6170702f6170702f7374796c65732f6170702e6373733f7472616e73666f726d2d6f6e6c79__\"","import \"/home/runner/work/epicshop/epicshop/packages/workshop-app/app/styles/tailwind.css?transform-only\";export default \"__VITE_CSS_URL__2f686f6d652f72756e6e65722f776f726b2f6570696373686f702f6570696373686f702f7061636b616765732f776f726b73686f702d6170702f6170702f7374796c65732f7461696c77696e642e6373733f7472616e73666f726d2d6f6e6c79__\"","type SentryUser = {\n\tid?: string\n\temail?: string\n}\n\ntype SentryUserSource = {\n\tuser?: { id?: string | null; email?: string | null } | null\n\tuserId?: { id?: string | null } | null\n}\n\nconst UNKNOWN_EMAIL = 'unknown@example.com'\n\nexport function getSentryUser({\n\tuser,\n\tuserId,\n}: SentryUserSource): SentryUser | null {\n\tconst id = user?.id ?? userId?.id ?? undefined\n\tconst email =\n\t\tuser?.email && user.email !== UNKNOWN_EMAIL ? user.email : undefined\n\n\tif (!id && !email) return null\n\n\tconst sentryUser: SentryUser = {}\n\tif (id) sentryUser.id = id\n\tif (email) sentryUser.email = email\n\treturn sentryUser\n}\n","import path from 'node:path'\nimport { getPresentUsers } from '@epic-web/workshop-presence/presence.server'\nimport { getApps } from '@epic-web/workshop-utils/apps.server'\nimport { getWorkshopConfig } from '@epic-web/workshop-utils/config.server'\nimport {\n\tgetLoggedInProductHosts,\n\tgetPreferences,\n\tgetMutedNotifications,\n} from '@epic-web/workshop-utils/db.server'\nimport { getEnv } from '@epic-web/workshop-utils/env.server'\nimport {\n\tgetProgress,\n\tgetUserInfo,\n\tuserHasAccessToWorkshop,\n} from '@epic-web/workshop-utils/epic-api.server'\nimport {\n\tcheckForUpdatesCached,\n\tcheckForExerciseChanges,\n} from '@epic-web/workshop-utils/git.server'\nimport { getUnmutedNotifications } from '@epic-web/workshop-utils/notifications.server'\nimport { makeTimings } from '@epic-web/workshop-utils/timing.server'\nimport {\n\tgetSetClientIdCookieHeader,\n\tgetUserId,\n} from '@epic-web/workshop-utils/user.server'\nimport { checkConnection } from '@epic-web/workshop-utils/utils.server'\n\nimport * as React from 'react'\nimport {\n\tdata,\n\ttype LinksFunction,\n\tLinks,\n\tMeta,\n\tOutlet,\n\tScripts,\n\tScrollRestoration,\n\tuseLoaderData,\n\tuseNavigation,\n} from 'react-router'\nimport { promiseHash } from 'remix-utils/promise'\nimport { useSpinDelay } from 'spin-delay'\nimport { type Route } from './+types/root.tsx'\nimport { Confetti } from './components/confetti'\nimport { GeneralErrorBoundary } from './components/error-boundary'\nimport { ExerciseWarningBanner } from './components/exercise-warning-banner'\nimport { KeyboardShortcutsDialog } from './components/keyboard-shortcuts-dialog'\nimport { EpicProgress } from './components/progress-bar'\nimport { EpicToaster } from './components/toaster'\nimport { TooltipProvider } from './components/ui/tooltip'\nimport { UpdateToast } from './components/update-repo'\nimport { Notifications } from './routes/admin+/notifications'\nimport { useTheme } from './routes/theme/index'\nimport { getTheme } from './routes/theme/theme-session.server'\nimport appStylesheetUrl from './styles/app.css?url'\nimport tailwindStylesheetUrl from './styles/tailwind.css?url'\nimport { ClientHintCheck, getHints } from './utils/client-hints'\nimport { getConfetti } from './utils/confetti.server'\nimport { cn, combineHeaders, getDomainUrl, useAltDown } from './utils/misc'\nimport { Presence } from './utils/presence'\nimport { getSentryUser } from './utils/sentry-user'\nimport { getSeoMetaTags } from './utils/seo'\nimport { getToast } from './utils/toast.server'\n\nexport const links: LinksFunction = () => {\n\treturn [\n\t\t{ rel: 'stylesheet', href: '/neogrotesk-font.css' },\n\t\t{\n\t\t\trel: 'stylesheet',\n\t\t\thref: 'https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,200;0,300;0,400;0,500;0,600;1,700&display=swap',\n\t\t},\n\t\t{ rel: 'stylesheet', href: tailwindStylesheetUrl },\n\t\t{ rel: 'stylesheet', href: appStylesheetUrl },\n\t\t{\n\t\t\trel: 'icon',\n\t\t\thref: '/favicon.ico',\n\t\t\tsizes: '48x48',\n\t\t},\n\t\t{ rel: 'icon', type: 'image/svg+xml', href: '/favicon.svg' },\n\t]\n}\n\nexport const meta: Route.MetaFunction = ({ loaderData }) => {\n\tif (!loaderData) return []\n\n\treturn getSeoMetaTags({\n\t\tinstructor: loaderData.instructor,\n\t\ttitle: loaderData.workshopTitle,\n\t\tdescription: loaderData.workshopSubtitle,\n\t\trequestInfo: loaderData.requestInfo,\n\t})\n}\n\nexport async function loader({ request }: Route.LoaderArgs) {\n\tconst timings = makeTimings('rootLoader')\n\tconst workshopConfig = getWorkshopConfig()\n\tconst {\n\t\ttitle: workshopTitle,\n\t\tsubtitle: workshopSubtitle,\n\t\tinstructor,\n\t} = workshopConfig\n\n\tconst theme = getTheme(request)\n\tconst { confettiId, headers: confettiHeaders } = getConfetti(request)\n\tconst { toast, headers: toastHeaders } = await getToast(request)\n\tconst isOnlinePromise = checkConnection({ request, timings })\n\n\tconst asyncStuff = await promiseHash({\n\t\tuserId: getUserId({ request }),\n\t\tpreferences: getPreferences(),\n\t\tprogress: getProgress({ timings }).catch((e) => {\n\t\t\tconsole.error('Failed to get progress', e)\n\t\t\tconst emptyProgress: Awaited<ReturnType<typeof getProgress>> = []\n\t\t\treturn emptyProgress\n\t\t}),\n\t\tuser: getUserInfo(),\n\t\tuserHasAccess: userHasAccessToWorkshop({ request, timings }),\n\t\tapps: getApps({ request, timings }),\n\t\trepoUpdates: checkForUpdatesCached(),\n\t\tunmutedNotifications: getUnmutedNotifications(),\n\t\texerciseChanges: checkForExerciseChanges(),\n\t\tloggedInProductHosts: getLoggedInProductHosts(),\n\t})\n\n\tconst presentUsers = await getPresentUsers({\n\t\trequest,\n\t\ttimings,\n\t})\n\n\t// Filter out repoUpdates if muted\n\tconst mutedNotifications = await getMutedNotifications()\n\tlet repoUpdates = asyncStuff.repoUpdates\n\tif (\n\t\trepoUpdates &&\n\t\t'remoteCommit' in repoUpdates &&\n\t\trepoUpdates.remoteCommit &&\n\t\tmutedNotifications.includes(`update-repo-${repoUpdates.remoteCommit}`)\n\t) {\n\t\trepoUpdates = { ...repoUpdates, updatesAvailable: false }\n\t}\n\n\treturn data(\n\t\t{\n\t\t\t...asyncStuff,\n\t\t\tworkshopConfig,\n\t\t\tworkshopTitle,\n\t\t\tworkshopSubtitle,\n\t\t\tinstructor,\n\t\t\tapps: asyncStuff.apps.map(({ name, fullPath, relativePath }) => ({\n\t\t\t\tname,\n\t\t\t\tfullPath,\n\t\t\t\trelativePath,\n\t\t\t})),\n\t\t\tENV: getEnv(),\n\t\t\trequestInfo: {\n\t\t\t\tprotocol: new URL(request.url).protocol,\n\t\t\t\thostname: new URL(request.url).hostname,\n\t\t\t\tport: new URL(request.url).port,\n\t\t\t\torigin: new URL(request.url).origin,\n\t\t\t\tdomain: getDomainUrl(request),\n\t\t\t\thints: getHints(request),\n\t\t\t\tpath: new URL(request.url).pathname,\n\t\t\t\tsession: { theme },\n\t\t\t\tseparator: path.sep,\n\t\t\t\tonline: await isOnlinePromise,\n\t\t\t},\n\t\t\ttoast,\n\t\t\tconfettiId,\n\t\t\tpresence: {\n\t\t\t\tusers: presentUsers,\n\t\t\t},\n\t\t\trepoUpdates,\n\t\t\texerciseChanges: asyncStuff.exerciseChanges,\n\t\t},\n\t\t{\n\t\t\theaders: combineHeaders(\n\t\t\t\ttoastHeaders,\n\t\t\t\tconfettiHeaders,\n\t\t\t\t{ 'Server-Timing': timings.toString() },\n\t\t\t\tasyncStuff.userId?.type === 'cookie.randomId'\n\t\t\t\t\t? { 'Set-Cookie': getSetClientIdCookieHeader(asyncStuff.userId.id) }\n\t\t\t\t\t: undefined,\n\t\t\t),\n\t\t},\n\t)\n}\n\nfunction Document({\n\tchildren,\n\tenv = {},\n\tclassName,\n\tstyle,\n}: {\n\tchildren: React.ReactNode\n\tenv?: Record<string, unknown>\n\tclassName: string\n\tstyle?: React.CSSProperties\n}) {\n\treturn (\n\t\t<html lang=\"en\" className={className} style={style}>\n\t\t\t<head>\n\t\t\t\t<ClientHintCheck />\n\t\t\t\t<Meta />\n\t\t\t\t<meta charSet=\"utf-8\" />\n\t\t\t\t<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n\t\t\t\t<Links />\n\t\t\t\t<script\n\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t__html: `window.ENV = ${JSON.stringify(env)}`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</head>\n\t\t\t<body className=\"bg-background text-foreground scrollbar-thin scrollbar-thumb-scrollbar h-screen-safe\">\n\t\t\t\t{children}\n\t\t\t\t<ScrollRestoration />\n\t\t\t\t<Scripts />\n\t\t\t</body>\n\t\t</html>\n\t)\n}\n\nfunction App() {\n\tconst data = useLoaderData<typeof loader>()\n\tconst navigation = useNavigation()\n\tconst showSpinner = useSpinDelay(navigation.state !== 'idle', {\n\t\tdelay: 400,\n\t\tminDuration: 200,\n\t})\n\tconst altDown = useAltDown()\n\tconst [showKeyboardShortcuts, setShowKeyboardShortcuts] =\n\t\tReact.useState(false)\n\n\tReact.useEffect(() => {\n\t\tconst handleToggle = () => {\n\t\t\tsetShowKeyboardShortcuts((prev) => !prev)\n\t\t}\n\t\twindow.addEventListener('toggle-keyboard-shortcuts', handleToggle)\n\t\treturn () => {\n\t\t\twindow.removeEventListener('toggle-keyboard-shortcuts', handleToggle)\n\t\t}\n\t}, [])\n\n\tReact.useEffect(() => {\n\t\tif (!ENV.EPICSHOP_IS_PUBLISHED) return\n\t\tconst sentryUser = getSentryUser({\n\t\t\tuser: data.user,\n\t\t\tuserId: data.userId,\n\t\t})\n\t\tvoid import('@sentry/react-router')\n\t\t\t.then((Sentry) => {\n\t\t\t\tif (sentryUser) {\n\t\t\t\t\tSentry.setUser(sentryUser)\n\t\t\t\t} else {\n\t\t\t\t\tSentry.setUser(null)\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {})\n\t}, [data.user, data.userId])\n\n\tconst theme = useTheme()\n\treturn (\n\t\t<Document\n\t\t\tstyle={\n\t\t\t\tdata.preferences?.fontSize\n\t\t\t\t\t? { fontSize: `${data.preferences?.fontSize}px` }\n\t\t\t\t\t: {}\n\t\t\t}\n\t\t\tclassName={cn(\n\t\t\t\t'h-screen-safe antialiased',\n\t\t\t\ttheme,\n\t\t\t\t{ 'cursor-progress': showSpinner },\n\t\t\t\taltDown ? 'alt-down' : null,\n\t\t\t)}\n\t\t\tenv={data.ENV}\n\t\t>\n\t\t\t{data.exerciseChanges &&\n\t\t\t\t!data.preferences?.exerciseWarning?.dismissed && (\n\t\t\t\t\t<ExerciseWarningBanner />\n\t\t\t\t)}\n\t\t\t<Outlet />\n\t\t\t<Confetti id={data.confettiId} />\n\t\t\t<EpicToaster toast={data.toast} />\n\t\t\t<UpdateToast repoUpdates={data.repoUpdates} />\n\t\t\t<EpicProgress />\n\t\t\t<Notifications unmutedNotifications={data.unmutedNotifications} />\n\t\t\t<KeyboardShortcutsDialog\n\t\t\t\topen={showKeyboardShortcuts}\n\t\t\t\tonOpenChange={setShowKeyboardShortcuts}\n\t\t\t/>\n\t\t</Document>\n\t)\n}\n\nexport default function AppWithProviders() {\n\tconst { user } = useLoaderData<typeof loader>()\n\treturn (\n\t\t<Presence user={user}>\n\t\t\t<TooltipProvider>\n\t\t\t\t<App />\n\t\t\t</TooltipProvider>\n\t\t</Presence>\n\t)\n}\n\nexport function ErrorBoundary() {\n\treturn (\n\t\t<Document className=\"h-screen-safe\">\n\t\t\t<GeneralErrorBoundary />\n\t\t</Document>\n\t)\n}\n"],"file":"root-4ETVlwNv.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{w as r,b as p}from"./chunk-EPOLDU6W-C4NOdiis.js";import{j as m}from"./jsx-runtime-C5WNSv3b.js";import{a as i}from"./tests-
|
|
2
|
-
//# sourceMappingURL=test-
|
|
1
|
+
import{w as r,b as p}from"./chunk-EPOLDU6W-C4NOdiis.js";import{j as m}from"./jsx-runtime-C5WNSv3b.js";import{a as i}from"./tests-CITG_DX3.js";import"./index-CqIc3cxq.js";import"./accordion-DGNDc7Bw.js";import"./tooltip-f3C9W-4C.js";import"./index-vDCSPjrM.js";import"./misc-CRhJChs6.js";import"./index-D9Wd20Hl.js";import"./index-C4pHU_n3.js";import"./epic-video-BX2A437e.js";import"./use-event-source-BuD4_2SF.js";import"./index-DzdDahau.js";import"./index-DVd41HZN.js";import"./root-loader-BObzljW3.js";import"./pe-UQCAhDPv.js";import"./schemas-Uj5SZtvt.js";import"./online-D6QnZT5V.js";import"./loading-BiVU3Oa8.js";import"./user-CFfhNfdz.js";import"./workshop-config-BP-vDuRo.js";import"./playground-window-BnU6LeUy.js";import"./set-playground-DaRl3X5k.js";import"./button-CVorsvM4.js";import"./onboarding-indicator-Bd1aYrgA.js";import"./progress-bar-Cxy0ZpqZ.js";import"./dialog-C_JrUgnb.js";const q=r(function(){const{appInfo:t,userHasAccess:o}=p();return m.jsx(i,{playgroundAppInfo:t,userHasAccess:o},t.name)});export{q as default};
|
|
2
|
+
//# sourceMappingURL=test-CpoHBC_8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-
|
|
1
|
+
{"version":3,"file":"test-CpoHBC_8.js","sources":["../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test.tsx"],"sourcesContent":["import { requireExerciseApp } from '@epic-web/workshop-utils/apps.server'\nimport { userHasAccessToExerciseStep } from '@epic-web/workshop-utils/epic-api.server'\nimport {\n\tcombineServerTimings,\n\tmakeTimings,\n} from '@epic-web/workshop-utils/timing.server'\nimport {\n\tdata,\n\ttype HeadersFunction,\n\ttype LoaderFunctionArgs,\n\tuseLoaderData,\n} from 'react-router'\nimport { TestUI } from './__shared/tests.tsx'\n\nexport async function loader({ request, params }: LoaderFunctionArgs) {\n\tconst timings = makeTimings('exercise-step-test')\n\tconst exerciseStepApp = await requireExerciseApp(params, { request, timings })\n\n\treturn data(\n\t\t{\n\t\t\tappInfo: {\n\t\t\t\tname: exerciseStepApp?.name,\n\t\t\t\ttest: exerciseStepApp?.test,\n\t\t\t},\n\t\t\tuserHasAccess: await userHasAccessToExerciseStep({\n\t\t\t\texerciseNumber: Number(params.exerciseNumber),\n\t\t\t\tstepNumber: Number(params.stepNumber),\n\t\t\t\trequest,\n\t\t\t\ttimings,\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\theaders: {\n\t\t\t\t'Server-Timing': timings.toString(),\n\t\t\t},\n\t\t},\n\t)\n}\n\nexport const headers: HeadersFunction = ({ loaderHeaders, parentHeaders }) => {\n\tconst headers = {\n\t\t'Cache-Control': loaderHeaders.get('Cache-Control') ?? '',\n\t\t'Server-Timing': combineServerTimings(loaderHeaders, parentHeaders),\n\t}\n\treturn headers\n}\n\nexport default function TestsList() {\n\tconst { appInfo, userHasAccess } = useLoaderData<typeof loader>()\n\n\treturn (\n\t\t<TestUI\n\t\t\tkey={appInfo.name}\n\t\t\tplaygroundAppInfo={appInfo}\n\t\t\tuserHasAccess={userHasAccess}\n\t\t/>\n\t)\n}\n"],"names":["test","_UNSAFE_withComponentProps","appInfo","userHasAccess","useLoaderData","jsx","TestUI","playgroundAppInfo","name"],"mappings":"i4BA+CA,MAAAA,EAAAC,EAAA,UAAoC,CACnC,KAAM,CAAEC,QAAAA,EAASC,cAAAA,GAAkBC,EAAA,EAEnC,OACCC,EAAAA,IAACC,EAAA,CAEAC,kBAAmBL,EACnBC,cAAAA,CAAA,EAFKD,EAAQM,IAGd,CAEF,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{j as s}from"./jsx-runtime-C5WNSv3b.js";import{g as Rt,r as L}from"./index-CqIc3cxq.js";import{R as kt,A as Ct,m as Mt}from"./accordion-DGNDc7Bw.js";import{l as Ht,f as nt,A as $t}from"./chunk-EPOLDU6W-C4NOdiis.js";import{D as Ot}from"./epic-video-
|
|
1
|
+
import{j as s}from"./jsx-runtime-C5WNSv3b.js";import{g as Rt,r as L}from"./index-CqIc3cxq.js";import{R as kt,A as Ct,m as Mt}from"./accordion-DGNDc7Bw.js";import{l as Ht,f as nt,A as $t}from"./chunk-EPOLDU6W-C4NOdiis.js";import{D as Ot}from"./epic-video-BX2A437e.js";import{I as N,p as st}from"./misc-CRhJChs6.js";import{u as gt}from"./index-DVd41HZN.js";import{u as z,o as I,k as _t,n as G,s as Q,l as k,i as ht,m as Ut}from"./schemas-Uj5SZtvt.js";import{S as K}from"./tooltip-f3C9W-4C.js";import{u as Ft}from"./use-event-source-BuD4_2SF.js";import{u as ot}from"./pe-UQCAhDPv.js";import{P as It}from"./playground-window-BnU6LeUy.js";var W={},U={};const Pt="Á",Bt="á",Vt="Ă",Gt="ă",Xt="∾",zt="∿",Yt="∾̳",Jt="Â",Qt="â",Kt="´",Zt="А",Wt="а",tn="Æ",nn="æ",sn="",on="𝔄",cn="𝔞",en="À",rn="à",an="ℵ",ln="ℵ",un="Α",dn="α",pn="Ā",fn="ā",mn="⨿",gn="&",hn="&",bn="⩕",vn="⩓",xn="∧",wn="⩜",yn="⩘",qn="⩚",Ln="∠",Tn="⦤",Sn="∠",En="⦨",jn="⦩",An="⦪",Dn="⦫",Nn="⦬",Rn="⦭",kn="⦮",Cn="⦯",Mn="∡",Hn="∟",$n="⊾",On="⦝",_n="∢",Un="Å",Fn="⍼",In="Ą",Pn="ą",Bn="𝔸",Vn="𝕒",Gn="⩯",Xn="≈",zn="⩰",Yn="≊",Jn="≋",Qn="'",Kn="",Zn="≈",Wn="≊",ts="Å",ns="å",ss="𝒜",os="𝒶",cs="≔",es="*",rs="≈",as="≍",is="Ã",ls="ã",us="Ä",ds="ä",ps="∳",fs="⨑",ms="≌",gs="϶",hs="‵",bs="∽",vs="⋍",xs="∖",ws="⫧",ys="⊽",qs="⌅",Ls="⌆",Ts="⌅",Ss="⎵",Es="⎶",js="≌",As="Б",Ds="б",Ns="„",Rs="∵",ks="∵",Cs="∵",Ms="⦰",Hs="϶",$s="ℬ",Os="ℬ",_s="Β",Us="β",Fs="ℶ",Is="≬",Ps="𝔅",Bs="𝔟",Vs="⋂",Gs="◯",Xs="⋃",zs="⨀",Ys="⨁",Js="⨂",Qs="⨆",Ks="★",Zs="▽",Ws="△",to="⨄",no="⋁",so="⋀",oo="⤍",co="⧫",eo="▪",ro="▴",ao="▾",io="◂",lo="▸",uo="␣",po="▒",fo="░",mo="▓",go="█",ho="=⃥",bo="≡⃥",vo="⫭",xo="⌐",wo="𝔹",yo="𝕓",qo="⊥",Lo="⊥",To="⋈",So="⧉",Eo="┐",jo="╕",Ao="╖",Do="╗",No="┌",Ro="╒",ko="╓",Co="╔",Mo="─",Ho="═",$o="┬",Oo="╤",_o="╥",Uo="╦",Fo="┴",Io="╧",Po="╨",Bo="╩",Vo="⊟",Go="⊞",Xo="⊠",zo="┘",Yo="╛",Jo="╜",Qo="╝",Ko="└",Zo="╘",Wo="╙",tc="╚",nc="│",sc="║",oc="┼",cc="╪",ec="╫",rc="╬",ac="┤",ic="╡",lc="╢",uc="╣",dc="├",pc="╞",fc="╟",mc="╠",gc="‵",hc="˘",bc="˘",vc="¦",xc="𝒷",wc="ℬ",yc="⁏",qc="∽",Lc="⋍",Tc="⧅",Sc="\\",Ec="⟈",jc="•",Ac="•",Dc="≎",Nc="⪮",Rc="≏",kc="≎",Cc="≏",Mc="Ć",Hc="ć",$c="⩄",Oc="⩉",_c="⩋",Uc="∩",Fc="⋒",Ic="⩇",Pc="⩀",Bc="ⅅ",Vc="∩︀",Gc="⁁",Xc="ˇ",zc="ℭ",Yc="⩍",Jc="Č",Qc="č",Kc="Ç",Zc="ç",Wc="Ĉ",te="ĉ",ne="∰",se="⩌",oe="⩐",ce="Ċ",ee="ċ",re="¸",ae="¸",ie="⦲",le="¢",ue="·",de="·",pe="𝔠",fe="ℭ",me="Ч",ge="ч",he="✓",be="✓",ve="Χ",xe="χ",we="ˆ",ye="≗",qe="↺",Le="↻",Te="⊛",Se="⊚",Ee="⊝",je="⊙",Ae="®",De="Ⓢ",Ne="⊖",Re="⊕",ke="⊗",Ce="○",Me="⧃",He="≗",$e="⨐",Oe="⫯",_e="⧂",Ue="∲",Fe="”",Ie="’",Pe="♣",Be="♣",Ve=":",Ge="∷",Xe="⩴",ze="≔",Ye="≔",Je=",",Qe="@",Ke="∁",Ze="∘",We="∁",tr="ℂ",nr="≅",sr="⩭",or="≡",cr="∮",er="∯",rr="∮",ar="𝕔",ir="ℂ",lr="∐",ur="∐",dr="©",pr="©",fr="℗",mr="∳",gr="↵",hr="✗",br="⨯",vr="𝒞",xr="𝒸",wr="⫏",yr="⫑",qr="⫐",Lr="⫒",Tr="⋯",Sr="⤸",Er="⤵",jr="⋞",Ar="⋟",Dr="↶",Nr="⤽",Rr="⩈",kr="⩆",Cr="≍",Mr="∪",Hr="⋓",$r="⩊",Or="⊍",_r="⩅",Ur="∪︀",Fr="↷",Ir="⤼",Pr="⋞",Br="⋟",Vr="⋎",Gr="⋏",Xr="¤",zr="↶",Yr="↷",Jr="⋎",Qr="⋏",Kr="∲",Zr="∱",Wr="⌭",ta="†",na="‡",sa="ℸ",oa="↓",ca="↡",ea="⇓",ra="‐",aa="⫤",ia="⊣",la="⤏",ua="˝",da="Ď",pa="ď",fa="Д",ma="д",ga="‡",ha="⇊",ba="ⅅ",va="ⅆ",xa="⤑",wa="⩷",ya="°",qa="∇",La="Δ",Ta="δ",Sa="⦱",Ea="⥿",ja="𝔇",Aa="𝔡",Da="⥥",Na="⇃",Ra="⇂",ka="´",Ca="˙",Ma="˝",Ha="`",$a="˜",Oa="⋄",_a="⋄",Ua="⋄",Fa="♦",Ia="♦",Pa="¨",Ba="ⅆ",Va="ϝ",Ga="⋲",Xa="÷",za="÷",Ya="⋇",Ja="⋇",Qa="Ђ",Ka="ђ",Za="⌞",Wa="⌍",ti="$",ni="𝔻",si="𝕕",oi="¨",ci="˙",ei="⃜",ri="≐",ai="≑",ii="≐",li="∸",ui="∔",di="⊡",pi="⌆",fi="∯",mi="¨",gi="⇓",hi="⇐",bi="⇔",vi="⫤",xi="⟸",wi="⟺",yi="⟹",qi="⇒",Li="⊨",Ti="⇑",Si="⇕",Ei="∥",ji="⤓",Ai="↓",Di="↓",Ni="⇓",Ri="⇵",ki="̑",Ci="⇊",Mi="⇃",Hi="⇂",$i="⥐",Oi="⥞",_i="⥖",Ui="↽",Fi="⥟",Ii="⥗",Pi="⇁",Bi="↧",Vi="⊤",Gi="⤐",Xi="⌟",zi="⌌",Yi="𝒟",Ji="𝒹",Qi="Ѕ",Ki="ѕ",Zi="⧶",Wi="Đ",tl="đ",nl="⋱",sl="▿",ol="▾",cl="⇵",el="⥯",rl="⦦",al="Џ",il="џ",ll="⟿",ul="É",dl="é",pl="⩮",fl="Ě",ml="ě",gl="Ê",hl="ê",bl="≖",vl="≕",xl="Э",wl="э",yl="⩷",ql="Ė",Ll="ė",Tl="≑",Sl="ⅇ",El="≒",jl="𝔈",Al="𝔢",Dl="⪚",Nl="È",Rl="è",kl="⪖",Cl="⪘",Ml="⪙",Hl="∈",$l="⏧",Ol="ℓ",_l="⪕",Ul="⪗",Fl="Ē",Il="ē",Pl="∅",Bl="∅",Vl="◻",Gl="∅",Xl="▫",zl=" ",Yl=" ",Jl=" ",Ql="Ŋ",Kl="ŋ",Zl=" ",Wl="Ę",tu="ę",nu="𝔼",su="𝕖",ou="⋕",cu="⧣",eu="⩱",ru="ε",au="Ε",iu="ε",lu="ϵ",uu="≖",du="≕",pu="≂",fu="⪖",mu="⪕",gu="⩵",hu="=",bu="≂",vu="≟",xu="⇌",wu="≡",yu="⩸",qu="⧥",Lu="⥱",Tu="≓",Su="ℯ",Eu="ℰ",ju="≐",Au="⩳",Du="≂",Nu="Η",Ru="η",ku="Ð",Cu="ð",Mu="Ë",Hu="ë",$u="€",Ou="!",_u="∃",Uu="∃",Fu="ℰ",Iu="ⅇ",Pu="ⅇ",Bu="≒",Vu="Ф",Gu="ф",Xu="♀",zu="ffi",Yu="ff",Ju="ffl",Qu="𝔉",Ku="𝔣",Zu="fi",Wu="◼",td="▪",nd="fj",sd="♭",od="fl",cd="▱",ed="ƒ",rd="𝔽",ad="𝕗",id="∀",ld="∀",ud="⋔",dd="⫙",pd="ℱ",fd="⨍",md="½",gd="⅓",hd="¼",bd="⅕",vd="⅙",xd="⅛",wd="⅔",yd="⅖",qd="¾",Ld="⅗",Td="⅜",Sd="⅘",Ed="⅚",jd="⅝",Ad="⅞",Dd="⁄",Nd="⌢",Rd="𝒻",kd="ℱ",Cd="ǵ",Md="Γ",Hd="γ",$d="Ϝ",Od="ϝ",_d="⪆",Ud="Ğ",Fd="ğ",Id="Ģ",Pd="Ĝ",Bd="ĝ",Vd="Г",Gd="г",Xd="Ġ",zd="ġ",Yd="≥",Jd="≧",Qd="⪌",Kd="⋛",Zd="≥",Wd="≧",tp="⩾",np="⪩",sp="⩾",op="⪀",cp="⪂",ep="⪄",rp="⋛︀",ap="⪔",ip="𝔊",lp="𝔤",up="≫",dp="⋙",pp="⋙",fp="ℷ",mp="Ѓ",gp="ѓ",hp="⪥",bp="≷",vp="⪒",xp="⪤",wp="⪊",yp="⪊",qp="⪈",Lp="≩",Tp="⪈",Sp="≩",Ep="⋧",jp="𝔾",Ap="𝕘",Dp="`",Np="≥",Rp="⋛",kp="≧",Cp="⪢",Mp="≷",Hp="⩾",$p="≳",Op="𝒢",_p="ℊ",Up="≳",Fp="⪎",Ip="⪐",Pp="⪧",Bp="⩺",Vp=">",Gp=">",Xp="≫",zp="⋗",Yp="⦕",Jp="⩼",Qp="⪆",Kp="⥸",Zp="⋗",Wp="⋛",tf="⪌",nf="≷",sf="≳",of="≩︀",cf="≩︀",ef="ˇ",rf=" ",af="½",lf="ℋ",uf="Ъ",df="ъ",pf="⥈",ff="↔",mf="⇔",gf="↭",hf="^",bf="ℏ",vf="Ĥ",xf="ĥ",wf="♥",yf="♥",qf="…",Lf="⊹",Tf="𝔥",Sf="ℌ",Ef="ℋ",jf="⤥",Af="⤦",Df="⇿",Nf="∻",Rf="↩",kf="↪",Cf="𝕙",Mf="ℍ",Hf="―",$f="─",Of="𝒽",_f="ℋ",Uf="ℏ",Ff="Ħ",If="ħ",Pf="≎",Bf="≏",Vf="⁃",Gf="‐",Xf="Í",zf="í",Yf="",Jf="Î",Qf="î",Kf="И",Zf="и",Wf="İ",tm="Е",nm="е",sm="¡",om="⇔",cm="𝔦",em="ℑ",rm="Ì",am="ì",im="ⅈ",lm="⨌",um="∭",dm="⧜",pm="℩",fm="IJ",mm="ij",gm="Ī",hm="ī",bm="ℑ",vm="ⅈ",xm="ℐ",wm="ℑ",ym="ı",qm="ℑ",Lm="⊷",Tm="Ƶ",Sm="⇒",Em="℅",jm="∞",Am="⧝",Dm="ı",Nm="⊺",Rm="∫",km="∬",Cm="ℤ",Mm="∫",Hm="⊺",$m="⋂",Om="⨗",_m="⨼",Um="",Fm="",Im="Ё",Pm="ё",Bm="Į",Vm="į",Gm="𝕀",Xm="𝕚",zm="Ι",Ym="ι",Jm="⨼",Qm="¿",Km="𝒾",Zm="ℐ",Wm="∈",tg="⋵",ng="⋹",sg="⋴",og="⋳",cg="∈",eg="",rg="Ĩ",ag="ĩ",ig="І",lg="і",ug="Ï",dg="ï",pg="Ĵ",fg="ĵ",mg="Й",gg="й",hg="𝔍",bg="𝔧",vg="ȷ",xg="𝕁",wg="𝕛",yg="𝒥",qg="𝒿",Lg="Ј",Tg="ј",Sg="Є",Eg="є",jg="Κ",Ag="κ",Dg="ϰ",Ng="Ķ",Rg="ķ",kg="К",Cg="к",Mg="𝔎",Hg="𝔨",$g="ĸ",Og="Х",_g="х",Ug="Ќ",Fg="ќ",Ig="𝕂",Pg="𝕜",Bg="𝒦",Vg="𝓀",Gg="⇚",Xg="Ĺ",zg="ĺ",Yg="⦴",Jg="ℒ",Qg="Λ",Kg="λ",Zg="⟨",Wg="⟪",th="⦑",nh="⟨",sh="⪅",oh="ℒ",ch="«",eh="⇤",rh="⤟",ah="←",ih="↞",lh="⇐",uh="⤝",dh="↩",ph="↫",fh="⤹",mh="⥳",gh="↢",hh="⤙",bh="⤛",vh="⪫",xh="⪭",wh="⪭︀",yh="⤌",qh="⤎",Lh="❲",Th="{",Sh="[",Eh="⦋",jh="⦏",Ah="⦍",Dh="Ľ",Nh="ľ",Rh="Ļ",kh="ļ",Ch="⌈",Mh="{",Hh="Л",$h="л",Oh="⤶",_h="“",Uh="„",Fh="⥧",Ih="⥋",Ph="↲",Bh="≤",Vh="≦",Gh="⟨",Xh="⇤",zh="←",Yh="←",Jh="⇐",Qh="⇆",Kh="↢",Zh="⌈",Wh="⟦",tb="⥡",nb="⥙",sb="⇃",ob="⌊",cb="↽",eb="↼",rb="⇇",ab="↔",ib="↔",lb="⇔",ub="⇆",db="⇋",pb="↭",fb="⥎",mb="↤",gb="⊣",hb="⥚",bb="⋋",vb="⧏",xb="⊲",wb="⊴",yb="⥑",qb="⥠",Lb="⥘",Tb="↿",Sb="⥒",Eb="↼",jb="⪋",Ab="⋚",Db="≤",Nb="≦",Rb="⩽",kb="⪨",Cb="⩽",Mb="⩿",Hb="⪁",$b="⪃",Ob="⋚︀",_b="⪓",Ub="⪅",Fb="⋖",Ib="⋚",Pb="⪋",Bb="⋚",Vb="≦",Gb="≶",Xb="≶",zb="⪡",Yb="≲",Jb="⩽",Qb="≲",Kb="⥼",Zb="⌊",Wb="𝔏",tv="𝔩",nv="≶",sv="⪑",ov="⥢",cv="↽",ev="↼",rv="⥪",av="▄",iv="Љ",lv="љ",uv="⇇",dv="≪",pv="⋘",fv="⌞",mv="⇚",gv="⥫",hv="◺",bv="Ŀ",vv="ŀ",xv="⎰",wv="⎰",yv="⪉",qv="⪉",Lv="⪇",Tv="≨",Sv="⪇",Ev="≨",jv="⋦",Av="⟬",Dv="⇽",Nv="⟦",Rv="⟵",kv="⟵",Cv="⟸",Mv="⟷",Hv="⟷",$v="⟺",Ov="⟼",_v="⟶",Uv="⟶",Fv="⟹",Iv="↫",Pv="↬",Bv="⦅",Vv="𝕃",Gv="𝕝",Xv="⨭",zv="⨴",Yv="∗",Jv="_",Qv="↙",Kv="↘",Zv="◊",Wv="◊",tx="⧫",nx="(",sx="⦓",ox="⇆",cx="⌟",ex="⇋",rx="⥭",ax="",ix="⊿",lx="‹",ux="𝓁",dx="ℒ",px="↰",fx="↰",mx="≲",gx="⪍",hx="⪏",bx="[",vx="‘",xx="‚",wx="Ł",yx="ł",qx="⪦",Lx="⩹",Tx="<",Sx="<",Ex="≪",jx="⋖",Ax="⋋",Dx="⋉",Nx="⥶",Rx="⩻",kx="◃",Cx="⊴",Mx="◂",Hx="⦖",$x="⥊",Ox="⥦",_x="≨︀",Ux="≨︀",Fx="¯",Ix="♂",Px="✠",Bx="✠",Vx="↦",Gx="↦",Xx="↧",zx="↤",Yx="↥",Jx="▮",Qx="⨩",Kx="М",Zx="м",Wx="—",tw="∺",nw="∡",sw=" ",ow="ℳ",cw="𝔐",ew="𝔪",rw="℧",aw="µ",iw="*",lw="⫰",uw="∣",dw="·",pw="⊟",fw="−",mw="∸",gw="⨪",hw="∓",bw="⫛",vw="…",xw="∓",ww="⊧",yw="𝕄",qw="𝕞",Lw="∓",Tw="𝓂",Sw="ℳ",Ew="∾",jw="Μ",Aw="μ",Dw="⊸",Nw="⊸",Rw="∇",kw="Ń",Cw="ń",Mw="∠⃒",Hw="≉",$w="⩰̸",Ow="≋̸",_w="ʼn",Uw="≉",Fw="♮",Iw="ℕ",Pw="♮",Bw=" ",Vw="≎̸",Gw="≏̸",Xw="⩃",zw="Ň",Yw="ň",Jw="Ņ",Qw="ņ",Kw="≇",Zw="⩭̸",Ww="⩂",ty="Н",ny="н",sy="–",oy="⤤",cy="↗",ey="⇗",ry="↗",ay="≠",iy="≐̸",ly="",uy="",dy="",py="",fy="≢",my="⤨",gy="≂̸",hy="≫",by="≪",vy=`
|
|
2
2
|
`,xy="∄",wy="∄",yy="𝔑",qy="𝔫",Ly="≧̸",Ty="≱",Sy="≱",Ey="≧̸",jy="⩾̸",Ay="⩾̸",Dy="⋙̸",Ny="≵",Ry="≫⃒",ky="≯",Cy="≯",My="≫̸",Hy="↮",$y="⇎",Oy="⫲",_y="∋",Uy="⋼",Fy="⋺",Iy="∋",Py="Њ",By="њ",Vy="↚",Gy="⇍",Xy="‥",zy="≦̸",Yy="≰",Jy="↚",Qy="⇍",Ky="↮",Zy="⇎",Wy="≰",tq="≦̸",nq="⩽̸",sq="⩽̸",oq="≮",cq="⋘̸",eq="≴",rq="≪⃒",aq="≮",iq="⋪",lq="⋬",uq="≪̸",dq="∤",pq="",fq=" ",mq="𝕟",gq="ℕ",hq="⫬",bq="¬",vq="≢",xq="≭",wq="∦",yq="∉",qq="≠",Lq="≂̸",Tq="∄",Sq="≯",Eq="≱",jq="≧̸",Aq="≫̸",Dq="≹",Nq="⩾̸",Rq="≵",kq="≎̸",Cq="≏̸",Mq="∉",Hq="⋵̸",$q="⋹̸",Oq="∉",_q="⋷",Uq="⋶",Fq="⧏̸",Iq="⋪",Pq="⋬",Bq="≮",Vq="≰",Gq="≸",Xq="≪̸",zq="⩽̸",Yq="≴",Jq="⪢̸",Qq="⪡̸",Kq="∌",Zq="∌",Wq="⋾",t1="⋽",n1="⊀",s1="⪯̸",o1="⋠",c1="∌",e1="⧐̸",r1="⋫",a1="⋭",i1="⊏̸",l1="⋢",u1="⊐̸",d1="⋣",p1="⊂⃒",f1="⊈",m1="⊁",g1="⪰̸",h1="⋡",b1="≿̸",v1="⊃⃒",x1="⊉",w1="≁",y1="≄",q1="≇",L1="≉",T1="∤",S1="∦",E1="∦",j1="⫽⃥",A1="∂̸",D1="⨔",N1="⊀",R1="⋠",k1="⊀",C1="⪯̸",M1="⪯̸",H1="⤳̸",$1="↛",O1="⇏",_1="↝̸",U1="↛",F1="⇏",I1="⋫",P1="⋭",B1="⊁",V1="⋡",G1="⪰̸",X1="𝒩",z1="𝓃",Y1="∤",J1="∦",Q1="≁",K1="≄",Z1="≄",W1="∤",tL="∦",nL="⋢",sL="⋣",oL="⊄",cL="⫅̸",eL="⊈",rL="⊂⃒",aL="⊈",iL="⫅̸",lL="⊁",uL="⪰̸",dL="⊅",pL="⫆̸",fL="⊉",mL="⊃⃒",gL="⊉",hL="⫆̸",bL="≹",vL="Ñ",xL="ñ",wL="≸",yL="⋪",qL="⋬",LL="⋫",TL="⋭",SL="Ν",EL="ν",jL="#",AL="№",DL=" ",NL="≍⃒",RL="⊬",kL="⊭",CL="⊮",ML="⊯",HL="≥⃒",$L=">⃒",OL="⤄",_L="⧞",UL="⤂",FL="≤⃒",IL="<⃒",PL="⊴⃒",BL="⤃",VL="⊵⃒",GL="∼⃒",XL="⤣",zL="↖",YL="⇖",JL="↖",QL="⤧",KL="Ó",ZL="ó",WL="⊛",tT="Ô",nT="ô",sT="⊚",oT="О",cT="о",eT="⊝",rT="Ő",aT="ő",iT="⨸",lT="⊙",uT="⦼",dT="Œ",pT="œ",fT="⦿",mT="𝔒",gT="𝔬",hT="˛",bT="Ò",vT="ò",xT="⧁",wT="⦵",yT="Ω",qT="∮",LT="↺",TT="⦾",ST="⦻",ET="‾",jT="⧀",AT="Ō",DT="ō",NT="Ω",RT="ω",kT="Ο",CT="ο",MT="⦶",HT="⊖",$T="𝕆",OT="𝕠",_T="⦷",UT="“",FT="‘",IT="⦹",PT="⊕",BT="↻",VT="⩔",GT="∨",XT="⩝",zT="ℴ",YT="ℴ",JT="ª",QT="º",KT="⊶",ZT="⩖",WT="⩗",tS="⩛",nS="Ⓢ",sS="𝒪",oS="ℴ",cS="Ø",eS="ø",rS="⊘",aS="Õ",iS="õ",lS="⨶",uS="⨷",dS="⊗",pS="Ö",fS="ö",mS="⌽",gS="‾",hS="⏞",bS="⎴",vS="⏜",xS="¶",wS="∥",yS="∥",qS="⫳",LS="⫽",TS="∂",SS="∂",ES="П",jS="п",AS="%",DS=".",NS="‰",RS="⊥",kS="‱",CS="𝔓",MS="𝔭",HS="Φ",$S="φ",OS="ϕ",_S="ℳ",US="☎",FS="Π",IS="π",PS="⋔",BS="ϖ",VS="ℏ",GS="ℎ",XS="ℏ",zS="⨣",YS="⊞",JS="⨢",QS="+",KS="∔",ZS="⨥",WS="⩲",t0="±",n0="±",s0="⨦",o0="⨧",c0="±",e0="ℌ",r0="⨕",a0="𝕡",i0="ℙ",l0="£",u0="⪷",d0="⪻",p0="≺",f0="≼",m0="⪷",g0="≺",h0="≼",b0="≺",v0="⪯",x0="≼",w0="≾",y0="⪯",q0="⪹",L0="⪵",T0="⋨",S0="⪯",E0="⪳",j0="≾",A0="′",D0="″",N0="ℙ",R0="⪹",k0="⪵",C0="⋨",M0="∏",H0="∏",$0="⌮",O0="⌒",_0="⌓",U0="∝",F0="∝",I0="∷",P0="∝",B0="≾",V0="⊰",G0="𝒫",X0="𝓅",z0="Ψ",Y0="ψ",J0=" ",Q0="𝔔",K0="𝔮",Z0="⨌",W0="𝕢",tE="ℚ",nE="⁗",sE="𝒬",oE="𝓆",cE="ℍ",eE="⨖",rE="?",aE="≟",iE='"',lE='"',uE="⇛",dE="∽̱",pE="Ŕ",fE="ŕ",mE="√",gE="⦳",hE="⟩",bE="⟫",vE="⦒",xE="⦥",wE="⟩",yE="»",qE="⥵",LE="⇥",TE="⤠",SE="⤳",EE="→",jE="↠",AE="⇒",DE="⤞",NE="↪",RE="↬",kE="⥅",CE="⥴",ME="⤖",HE="↣",$E="↝",OE="⤚",_E="⤜",UE="∶",FE="ℚ",IE="⤍",PE="⤏",BE="⤐",VE="❳",GE="}",XE="]",zE="⦌",YE="⦎",JE="⦐",QE="Ř",KE="ř",ZE="Ŗ",WE="ŗ",tj="⌉",nj="}",sj="Р",oj="р",cj="⤷",ej="⥩",rj="”",aj="”",ij="↳",lj="ℜ",uj="ℛ",dj="ℜ",pj="ℝ",fj="ℜ",mj="▭",gj="®",hj="®",bj="∋",vj="⇋",xj="⥯",wj="⥽",yj="⌋",qj="𝔯",Lj="ℜ",Tj="⥤",Sj="⇁",Ej="⇀",jj="⥬",Aj="Ρ",Dj="ρ",Nj="ϱ",Rj="⟩",kj="⇥",Cj="→",Mj="→",Hj="⇒",$j="⇄",Oj="↣",_j="⌉",Uj="⟧",Fj="⥝",Ij="⥕",Pj="⇂",Bj="⌋",Vj="⇁",Gj="⇀",Xj="⇄",zj="⇌",Yj="⇉",Jj="↝",Qj="↦",Kj="⊢",Zj="⥛",Wj="⋌",tA="⧐",nA="⊳",sA="⊵",oA="⥏",cA="⥜",eA="⥔",rA="↾",aA="⥓",iA="⇀",lA="˚",uA="≓",dA="⇄",pA="⇌",fA="",mA="⎱",gA="⎱",hA="⫮",bA="⟭",vA="⇾",xA="⟧",wA="⦆",yA="𝕣",qA="ℝ",LA="⨮",TA="⨵",SA="⥰",EA=")",jA="⦔",AA="⨒",DA="⇉",NA="⇛",RA="›",kA="𝓇",CA="ℛ",MA="↱",HA="↱",$A="]",OA="’",_A="’",UA="⋌",FA="⋊",IA="▹",PA="⊵",BA="▸",VA="⧎",GA="⧴",XA="⥨",zA="℞",YA="Ś",JA="ś",QA="‚",KA="⪸",ZA="Š",WA="š",tD="⪼",nD="≻",sD="≽",oD="⪰",cD="⪴",eD="Ş",rD="ş",aD="Ŝ",iD="ŝ",lD="⪺",uD="⪶",dD="⋩",pD="⨓",fD="≿",mD="С",gD="с",hD="⊡",bD="⋅",vD="⩦",xD="⤥",wD="↘",yD="⇘",qD="↘",LD="§",TD=";",SD="⤩",ED="∖",jD="∖",AD="✶",DD="𝔖",ND="𝔰",RD="⌢",kD="♯",CD="Щ",MD="щ",HD="Ш",$D="ш",OD="↓",_D="←",UD="∣",FD="∥",ID="→",PD="↑",BD="",VD="Σ",GD="σ",XD="ς",zD="ς",YD="∼",JD="⩪",QD="≃",KD="≃",ZD="⪞",WD="⪠",tN="⪝",nN="⪟",sN="≆",oN="⨤",cN="⥲",eN="←",rN="∘",aN="∖",iN="⨳",lN="⧤",uN="∣",dN="⌣",pN="⪪",fN="⪬",mN="⪬︀",gN="Ь",hN="ь",bN="⌿",vN="⧄",xN="/",wN="𝕊",yN="𝕤",qN="♠",LN="♠",TN="∥",SN="⊓",EN="⊓︀",jN="⊔",AN="⊔︀",DN="√",NN="⊏",RN="⊑",kN="⊏",CN="⊑",MN="⊐",HN="⊒",$N="⊐",ON="⊒",_N="□",UN="□",FN="⊓",IN="⊏",PN="⊑",BN="⊐",VN="⊒",GN="⊔",XN="▪",zN="□",YN="▪",JN="→",QN="𝒮",KN="𝓈",ZN="∖",WN="⌣",tR="⋆",nR="⋆",sR="☆",oR="★",cR="ϵ",eR="ϕ",rR="¯",aR="⊂",iR="⋐",lR="⪽",uR="⫅",dR="⊆",pR="⫃",fR="⫁",mR="⫋",gR="⊊",hR="⪿",bR="⥹",vR="⊂",xR="⋐",wR="⊆",yR="⫅",qR="⊆",LR="⊊",TR="⫋",SR="⫇",ER="⫕",jR="⫓",AR="⪸",DR="≻",NR="≽",RR="≻",kR="⪰",CR="≽",MR="≿",HR="⪰",$R="⪺",OR="⪶",_R="⋩",UR="≿",FR="∋",IR="∑",PR="∑",BR="♪",VR="¹",GR="²",XR="³",zR="⊃",YR="⋑",JR="⪾",QR="⫘",KR="⫆",ZR="⊇",WR="⫄",tk="⊃",nk="⊇",sk="⟉",ok="⫗",ck="⥻",ek="⫂",rk="⫌",ak="⊋",ik="⫀",lk="⊃",uk="⋑",dk="⊇",pk="⫆",fk="⊋",mk="⫌",gk="⫈",hk="⫔",bk="⫖",vk="⤦",xk="↙",wk="⇙",yk="↙",qk="⤪",Lk="ß",Tk=" ",Sk="⌖",Ek="Τ",jk="τ",Ak="⎴",Dk="Ť",Nk="ť",Rk="Ţ",kk="ţ",Ck="Т",Mk="т",Hk="⃛",$k="⌕",Ok="𝔗",_k="𝔱",Uk="∴",Fk="∴",Ik="∴",Pk="Θ",Bk="θ",Vk="ϑ",Gk="ϑ",Xk="≈",zk="∼",Yk=" ",Jk=" ",Qk=" ",Kk="≈",Zk="∼",Wk="Þ",tC="þ",nC="˜",sC="∼",oC="≃",cC="≅",eC="≈",rC="⨱",aC="⊠",iC="×",lC="⨰",uC="∭",dC="⤨",pC="⌶",fC="⫱",mC="⊤",gC="𝕋",hC="𝕥",bC="⫚",vC="⤩",xC="‴",wC="™",yC="™",qC="▵",LC="▿",TC="◃",SC="⊴",EC="≜",jC="▹",AC="⊵",DC="◬",NC="≜",RC="⨺",kC="⃛",CC="⨹",MC="⧍",HC="⨻",$C="⏢",OC="𝒯",_C="𝓉",UC="Ц",FC="ц",IC="Ћ",PC="ћ",BC="Ŧ",VC="ŧ",GC="≬",XC="↞",zC="↠",YC="Ú",JC="ú",QC="↑",KC="↟",ZC="⇑",WC="⥉",tM="Ў",nM="ў",sM="Ŭ",oM="ŭ",cM="Û",eM="û",rM="У",aM="у",iM="⇅",lM="Ű",uM="ű",dM="⥮",pM="⥾",fM="𝔘",mM="𝔲",gM="Ù",hM="ù",bM="⥣",vM="↿",xM="↾",wM="▀",yM="⌜",qM="⌜",LM="⌏",TM="◸",SM="Ū",EM="ū",jM="¨",AM="_",DM="⏟",NM="⎵",RM="⏝",kM="⋃",CM="⊎",MM="Ų",HM="ų",$M="𝕌",OM="𝕦",_M="⤒",UM="↑",FM="↑",IM="⇑",PM="⇅",BM="↕",VM="↕",GM="⇕",XM="⥮",zM="↿",YM="↾",JM="⊎",QM="↖",KM="↗",ZM="υ",WM="ϒ",tH="ϒ",nH="Υ",sH="υ",oH="↥",cH="⊥",eH="⇈",rH="⌝",aH="⌝",iH="⌎",lH="Ů",uH="ů",dH="◹",pH="𝒰",fH="𝓊",mH="⋰",gH="Ũ",hH="ũ",bH="▵",vH="▴",xH="⇈",wH="Ü",yH="ü",qH="⦧",LH="⦜",TH="ϵ",SH="ϰ",EH="∅",jH="ϕ",AH="ϖ",DH="∝",NH="↕",RH="⇕",kH="ϱ",CH="ς",MH="⊊︀",HH="⫋︀",$H="⊋︀",OH="⫌︀",_H="ϑ",UH="⊲",FH="⊳",IH="⫨",PH="⫫",BH="⫩",VH="В",GH="в",XH="⊢",zH="⊨",YH="⊩",JH="⊫",QH="⫦",KH="⊻",ZH="∨",WH="⋁",t2="≚",n2="⋮",s2="|",o2="‖",c2="|",e2="‖",r2="∣",a2="|",i2="❘",l2="≀",u2=" ",d2="𝔙",p2="𝔳",f2="⊲",m2="⊂⃒",g2="⊃⃒",h2="𝕍",b2="𝕧",v2="∝",x2="⊳",w2="𝒱",y2="𝓋",q2="⫋︀",L2="⊊︀",T2="⫌︀",S2="⊋︀",E2="⊪",j2="⦚",A2="Ŵ",D2="ŵ",N2="⩟",R2="∧",k2="⋀",C2="≙",M2="℘",H2="𝔚",$2="𝔴",O2="𝕎",_2="𝕨",U2="℘",F2="≀",I2="≀",P2="𝒲",B2="𝓌",V2="⋂",G2="◯",X2="⋃",z2="▽",Y2="𝔛",J2="𝔵",Q2="⟷",K2="⟺",Z2="Ξ",W2="ξ",t$="⟵",n$="⟸",s$="⟼",o$="⋻",c$="⨀",e$="𝕏",r$="𝕩",a$="⨁",i$="⨂",l$="⟶",u$="⟹",d$="𝒳",p$="𝓍",f$="⨆",m$="⨄",g$="△",h$="⋁",b$="⋀",v$="Ý",x$="ý",w$="Я",y$="я",q$="Ŷ",L$="ŷ",T$="Ы",S$="ы",E$="¥",j$="𝔜",A$="𝔶",D$="Ї",N$="ї",R$="𝕐",k$="𝕪",C$="𝒴",M$="𝓎",H$="Ю",$$="ю",O$="ÿ",_$="Ÿ",U$="Ź",F$="ź",I$="Ž",P$="ž",B$="З",V$="з",G$="Ż",X$="ż",z$="ℨ",Y$="",J$="Ζ",Q$="ζ",K$="𝔷",Z$="ℨ",W$="Ж",tO="ж",nO="⇝",sO="𝕫",oO="ℤ",cO="𝒵",eO="𝓏",rO="",aO="",bt={Aacute:Pt,aacute:Bt,Abreve:Vt,abreve:Gt,ac:Xt,acd:zt,acE:Yt,Acirc:Jt,acirc:Qt,acute:Kt,Acy:Zt,acy:Wt,AElig:tn,aelig:nn,af:sn,Afr:on,afr:cn,Agrave:en,agrave:rn,alefsym:an,aleph:ln,Alpha:un,alpha:dn,Amacr:pn,amacr:fn,amalg:mn,amp:gn,AMP:hn,andand:bn,And:vn,and:xn,andd:wn,andslope:yn,andv:qn,ang:Ln,ange:Tn,angle:Sn,angmsdaa:En,angmsdab:jn,angmsdac:An,angmsdad:Dn,angmsdae:Nn,angmsdaf:Rn,angmsdag:kn,angmsdah:Cn,angmsd:Mn,angrt:Hn,angrtvb:$n,angrtvbd:On,angsph:_n,angst:Un,angzarr:Fn,Aogon:In,aogon:Pn,Aopf:Bn,aopf:Vn,apacir:Gn,ap:Xn,apE:zn,ape:Yn,apid:Jn,apos:Qn,ApplyFunction:Kn,approx:Zn,approxeq:Wn,Aring:ts,aring:ns,Ascr:ss,ascr:os,Assign:cs,ast:es,asymp:rs,asympeq:as,Atilde:is,atilde:ls,Auml:us,auml:ds,awconint:ps,awint:fs,backcong:ms,backepsilon:gs,backprime:hs,backsim:bs,backsimeq:vs,Backslash:xs,Barv:ws,barvee:ys,barwed:qs,Barwed:Ls,barwedge:Ts,bbrk:Ss,bbrktbrk:Es,bcong:js,Bcy:As,bcy:Ds,bdquo:Ns,becaus:Rs,because:ks,Because:Cs,bemptyv:Ms,bepsi:Hs,bernou:$s,Bernoullis:Os,Beta:_s,beta:Us,beth:Fs,between:Is,Bfr:Ps,bfr:Bs,bigcap:Vs,bigcirc:Gs,bigcup:Xs,bigodot:zs,bigoplus:Ys,bigotimes:Js,bigsqcup:Qs,bigstar:Ks,bigtriangledown:Zs,bigtriangleup:Ws,biguplus:to,bigvee:no,bigwedge:so,bkarow:oo,blacklozenge:co,blacksquare:eo,blacktriangle:ro,blacktriangledown:ao,blacktriangleleft:io,blacktriangleright:lo,blank:uo,blk12:po,blk14:fo,blk34:mo,block:go,bne:ho,bnequiv:bo,bNot:vo,bnot:xo,Bopf:wo,bopf:yo,bot:qo,bottom:Lo,bowtie:To,boxbox:So,boxdl:Eo,boxdL:jo,boxDl:Ao,boxDL:Do,boxdr:No,boxdR:Ro,boxDr:ko,boxDR:Co,boxh:Mo,boxH:Ho,boxhd:$o,boxHd:Oo,boxhD:_o,boxHD:Uo,boxhu:Fo,boxHu:Io,boxhU:Po,boxHU:Bo,boxminus:Vo,boxplus:Go,boxtimes:Xo,boxul:zo,boxuL:Yo,boxUl:Jo,boxUL:Qo,boxur:Ko,boxuR:Zo,boxUr:Wo,boxUR:tc,boxv:nc,boxV:sc,boxvh:oc,boxvH:cc,boxVh:ec,boxVH:rc,boxvl:ac,boxvL:ic,boxVl:lc,boxVL:uc,boxvr:dc,boxvR:pc,boxVr:fc,boxVR:mc,bprime:gc,breve:hc,Breve:bc,brvbar:vc,bscr:xc,Bscr:wc,bsemi:yc,bsim:qc,bsime:Lc,bsolb:Tc,bsol:Sc,bsolhsub:Ec,bull:jc,bullet:Ac,bump:Dc,bumpE:Nc,bumpe:Rc,Bumpeq:kc,bumpeq:Cc,Cacute:Mc,cacute:Hc,capand:$c,capbrcup:Oc,capcap:_c,cap:Uc,Cap:Fc,capcup:Ic,capdot:Pc,CapitalDifferentialD:Bc,caps:Vc,caret:Gc,caron:Xc,Cayleys:zc,ccaps:Yc,Ccaron:Jc,ccaron:Qc,Ccedil:Kc,ccedil:Zc,Ccirc:Wc,ccirc:te,Cconint:ne,ccups:se,ccupssm:oe,Cdot:ce,cdot:ee,cedil:re,Cedilla:ae,cemptyv:ie,cent:le,centerdot:ue,CenterDot:de,cfr:pe,Cfr:fe,CHcy:me,chcy:ge,check:he,checkmark:be,Chi:ve,chi:xe,circ:we,circeq:ye,circlearrowleft:qe,circlearrowright:Le,circledast:Te,circledcirc:Se,circleddash:Ee,CircleDot:je,circledR:Ae,circledS:De,CircleMinus:Ne,CirclePlus:Re,CircleTimes:ke,cir:Ce,cirE:Me,cire:He,cirfnint:$e,cirmid:Oe,cirscir:_e,ClockwiseContourIntegral:Ue,CloseCurlyDoubleQuote:Fe,CloseCurlyQuote:Ie,clubs:Pe,clubsuit:Be,colon:Ve,Colon:Ge,Colone:Xe,colone:ze,coloneq:Ye,comma:Je,commat:Qe,comp:Ke,compfn:Ze,complement:We,complexes:tr,cong:nr,congdot:sr,Congruent:or,conint:cr,Conint:er,ContourIntegral:rr,copf:ar,Copf:ir,coprod:lr,Coproduct:ur,copy:dr,COPY:pr,copysr:fr,CounterClockwiseContourIntegral:mr,crarr:gr,cross:hr,Cross:br,Cscr:vr,cscr:xr,csub:wr,csube:yr,csup:qr,csupe:Lr,ctdot:Tr,cudarrl:Sr,cudarrr:Er,cuepr:jr,cuesc:Ar,cularr:Dr,cularrp:Nr,cupbrcap:Rr,cupcap:kr,CupCap:Cr,cup:Mr,Cup:Hr,cupcup:$r,cupdot:Or,cupor:_r,cups:Ur,curarr:Fr,curarrm:Ir,curlyeqprec:Pr,curlyeqsucc:Br,curlyvee:Vr,curlywedge:Gr,curren:Xr,curvearrowleft:zr,curvearrowright:Yr,cuvee:Jr,cuwed:Qr,cwconint:Kr,cwint:Zr,cylcty:Wr,dagger:ta,Dagger:na,daleth:sa,darr:oa,Darr:ca,dArr:ea,dash:ra,Dashv:aa,dashv:ia,dbkarow:la,dblac:ua,Dcaron:da,dcaron:pa,Dcy:fa,dcy:ma,ddagger:ga,ddarr:ha,DD:ba,dd:va,DDotrahd:xa,ddotseq:wa,deg:ya,Del:qa,Delta:La,delta:Ta,demptyv:Sa,dfisht:Ea,Dfr:ja,dfr:Aa,dHar:Da,dharl:Na,dharr:Ra,DiacriticalAcute:ka,DiacriticalDot:Ca,DiacriticalDoubleAcute:Ma,DiacriticalGrave:Ha,DiacriticalTilde:$a,diam:Oa,diamond:_a,Diamond:Ua,diamondsuit:Fa,diams:Ia,die:Pa,DifferentialD:Ba,digamma:Va,disin:Ga,div:Xa,divide:za,divideontimes:Ya,divonx:Ja,DJcy:Qa,djcy:Ka,dlcorn:Za,dlcrop:Wa,dollar:ti,Dopf:ni,dopf:si,Dot:oi,dot:ci,DotDot:ei,doteq:ri,doteqdot:ai,DotEqual:ii,dotminus:li,dotplus:ui,dotsquare:di,doublebarwedge:pi,DoubleContourIntegral:fi,DoubleDot:mi,DoubleDownArrow:gi,DoubleLeftArrow:hi,DoubleLeftRightArrow:bi,DoubleLeftTee:vi,DoubleLongLeftArrow:xi,DoubleLongLeftRightArrow:wi,DoubleLongRightArrow:yi,DoubleRightArrow:qi,DoubleRightTee:Li,DoubleUpArrow:Ti,DoubleUpDownArrow:Si,DoubleVerticalBar:Ei,DownArrowBar:ji,downarrow:Ai,DownArrow:Di,Downarrow:Ni,DownArrowUpArrow:Ri,DownBreve:ki,downdownarrows:Ci,downharpoonleft:Mi,downharpoonright:Hi,DownLeftRightVector:$i,DownLeftTeeVector:Oi,DownLeftVectorBar:_i,DownLeftVector:Ui,DownRightTeeVector:Fi,DownRightVectorBar:Ii,DownRightVector:Pi,DownTeeArrow:Bi,DownTee:Vi,drbkarow:Gi,drcorn:Xi,drcrop:zi,Dscr:Yi,dscr:Ji,DScy:Qi,dscy:Ki,dsol:Zi,Dstrok:Wi,dstrok:tl,dtdot:nl,dtri:sl,dtrif:ol,duarr:cl,duhar:el,dwangle:rl,DZcy:al,dzcy:il,dzigrarr:ll,Eacute:ul,eacute:dl,easter:pl,Ecaron:fl,ecaron:ml,Ecirc:gl,ecirc:hl,ecir:bl,ecolon:vl,Ecy:xl,ecy:wl,eDDot:yl,Edot:ql,edot:Ll,eDot:Tl,ee:Sl,efDot:El,Efr:jl,efr:Al,eg:Dl,Egrave:Nl,egrave:Rl,egs:kl,egsdot:Cl,el:Ml,Element:Hl,elinters:$l,ell:Ol,els:_l,elsdot:Ul,Emacr:Fl,emacr:Il,empty:Pl,emptyset:Bl,EmptySmallSquare:Vl,emptyv:Gl,EmptyVerySmallSquare:Xl,emsp13:zl,emsp14:Yl,emsp:Jl,ENG:Ql,eng:Kl,ensp:Zl,Eogon:Wl,eogon:tu,Eopf:nu,eopf:su,epar:ou,eparsl:cu,eplus:eu,epsi:ru,Epsilon:au,epsilon:iu,epsiv:lu,eqcirc:uu,eqcolon:du,eqsim:pu,eqslantgtr:fu,eqslantless:mu,Equal:gu,equals:hu,EqualTilde:bu,equest:vu,Equilibrium:xu,equiv:wu,equivDD:yu,eqvparsl:qu,erarr:Lu,erDot:Tu,escr:Su,Escr:Eu,esdot:ju,Esim:Au,esim:Du,Eta:Nu,eta:Ru,ETH:ku,eth:Cu,Euml:Mu,euml:Hu,euro:$u,excl:Ou,exist:_u,Exists:Uu,expectation:Fu,exponentiale:Iu,ExponentialE:Pu,fallingdotseq:Bu,Fcy:Vu,fcy:Gu,female:Xu,ffilig:zu,fflig:Yu,ffllig:Ju,Ffr:Qu,ffr:Ku,filig:Zu,FilledSmallSquare:Wu,FilledVerySmallSquare:td,fjlig:nd,flat:sd,fllig:od,fltns:cd,fnof:ed,Fopf:rd,fopf:ad,forall:id,ForAll:ld,fork:ud,forkv:dd,Fouriertrf:pd,fpartint:fd,frac12:md,frac13:gd,frac14:hd,frac15:bd,frac16:vd,frac18:xd,frac23:wd,frac25:yd,frac34:qd,frac35:Ld,frac38:Td,frac45:Sd,frac56:Ed,frac58:jd,frac78:Ad,frasl:Dd,frown:Nd,fscr:Rd,Fscr:kd,gacute:Cd,Gamma:Md,gamma:Hd,Gammad:$d,gammad:Od,gap:_d,Gbreve:Ud,gbreve:Fd,Gcedil:Id,Gcirc:Pd,gcirc:Bd,Gcy:Vd,gcy:Gd,Gdot:Xd,gdot:zd,ge:Yd,gE:Jd,gEl:Qd,gel:Kd,geq:Zd,geqq:Wd,geqslant:tp,gescc:np,ges:sp,gesdot:op,gesdoto:cp,gesdotol:ep,gesl:rp,gesles:ap,Gfr:ip,gfr:lp,gg:up,Gg:dp,ggg:pp,gimel:fp,GJcy:mp,gjcy:gp,gla:hp,gl:bp,glE:vp,glj:xp,gnap:wp,gnapprox:yp,gne:qp,gnE:Lp,gneq:Tp,gneqq:Sp,gnsim:Ep,Gopf:jp,gopf:Ap,grave:Dp,GreaterEqual:Np,GreaterEqualLess:Rp,GreaterFullEqual:kp,GreaterGreater:Cp,GreaterLess:Mp,GreaterSlantEqual:Hp,GreaterTilde:$p,Gscr:Op,gscr:_p,gsim:Up,gsime:Fp,gsiml:Ip,gtcc:Pp,gtcir:Bp,gt:Vp,GT:Gp,Gt:Xp,gtdot:zp,gtlPar:Yp,gtquest:Jp,gtrapprox:Qp,gtrarr:Kp,gtrdot:Zp,gtreqless:Wp,gtreqqless:tf,gtrless:nf,gtrsim:sf,gvertneqq:of,gvnE:cf,Hacek:ef,hairsp:rf,half:af,hamilt:lf,HARDcy:uf,hardcy:df,harrcir:pf,harr:ff,hArr:mf,harrw:gf,Hat:hf,hbar:bf,Hcirc:vf,hcirc:xf,hearts:wf,heartsuit:yf,hellip:qf,hercon:Lf,hfr:Tf,Hfr:Sf,HilbertSpace:Ef,hksearow:jf,hkswarow:Af,hoarr:Df,homtht:Nf,hookleftarrow:Rf,hookrightarrow:kf,hopf:Cf,Hopf:Mf,horbar:Hf,HorizontalLine:$f,hscr:Of,Hscr:_f,hslash:Uf,Hstrok:Ff,hstrok:If,HumpDownHump:Pf,HumpEqual:Bf,hybull:Vf,hyphen:Gf,Iacute:Xf,iacute:zf,ic:Yf,Icirc:Jf,icirc:Qf,Icy:Kf,icy:Zf,Idot:Wf,IEcy:tm,iecy:nm,iexcl:sm,iff:om,ifr:cm,Ifr:em,Igrave:rm,igrave:am,ii:im,iiiint:lm,iiint:um,iinfin:dm,iiota:pm,IJlig:fm,ijlig:mm,Imacr:gm,imacr:hm,image:bm,ImaginaryI:vm,imagline:xm,imagpart:wm,imath:ym,Im:qm,imof:Lm,imped:Tm,Implies:Sm,incare:Em,in:"∈",infin:jm,infintie:Am,inodot:Dm,intcal:Nm,int:Rm,Int:km,integers:Cm,Integral:Mm,intercal:Hm,Intersection:$m,intlarhk:Om,intprod:_m,InvisibleComma:Um,InvisibleTimes:Fm,IOcy:Im,iocy:Pm,Iogon:Bm,iogon:Vm,Iopf:Gm,iopf:Xm,Iota:zm,iota:Ym,iprod:Jm,iquest:Qm,iscr:Km,Iscr:Zm,isin:Wm,isindot:tg,isinE:ng,isins:sg,isinsv:og,isinv:cg,it:eg,Itilde:rg,itilde:ag,Iukcy:ig,iukcy:lg,Iuml:ug,iuml:dg,Jcirc:pg,jcirc:fg,Jcy:mg,jcy:gg,Jfr:hg,jfr:bg,jmath:vg,Jopf:xg,jopf:wg,Jscr:yg,jscr:qg,Jsercy:Lg,jsercy:Tg,Jukcy:Sg,jukcy:Eg,Kappa:jg,kappa:Ag,kappav:Dg,Kcedil:Ng,kcedil:Rg,Kcy:kg,kcy:Cg,Kfr:Mg,kfr:Hg,kgreen:$g,KHcy:Og,khcy:_g,KJcy:Ug,kjcy:Fg,Kopf:Ig,kopf:Pg,Kscr:Bg,kscr:Vg,lAarr:Gg,Lacute:Xg,lacute:zg,laemptyv:Yg,lagran:Jg,Lambda:Qg,lambda:Kg,lang:Zg,Lang:Wg,langd:th,langle:nh,lap:sh,Laplacetrf:oh,laquo:ch,larrb:eh,larrbfs:rh,larr:ah,Larr:ih,lArr:lh,larrfs:uh,larrhk:dh,larrlp:ph,larrpl:fh,larrsim:mh,larrtl:gh,latail:hh,lAtail:bh,lat:vh,late:xh,lates:wh,lbarr:yh,lBarr:qh,lbbrk:Lh,lbrace:Th,lbrack:Sh,lbrke:Eh,lbrksld:jh,lbrkslu:Ah,Lcaron:Dh,lcaron:Nh,Lcedil:Rh,lcedil:kh,lceil:Ch,lcub:Mh,Lcy:Hh,lcy:$h,ldca:Oh,ldquo:_h,ldquor:Uh,ldrdhar:Fh,ldrushar:Ih,ldsh:Ph,le:Bh,lE:Vh,LeftAngleBracket:Gh,LeftArrowBar:Xh,leftarrow:zh,LeftArrow:Yh,Leftarrow:Jh,LeftArrowRightArrow:Qh,leftarrowtail:Kh,LeftCeiling:Zh,LeftDoubleBracket:Wh,LeftDownTeeVector:tb,LeftDownVectorBar:nb,LeftDownVector:sb,LeftFloor:ob,leftharpoondown:cb,leftharpoonup:eb,leftleftarrows:rb,leftrightarrow:ab,LeftRightArrow:ib,Leftrightarrow:lb,leftrightarrows:ub,leftrightharpoons:db,leftrightsquigarrow:pb,LeftRightVector:fb,LeftTeeArrow:mb,LeftTee:gb,LeftTeeVector:hb,leftthreetimes:bb,LeftTriangleBar:vb,LeftTriangle:xb,LeftTriangleEqual:wb,LeftUpDownVector:yb,LeftUpTeeVector:qb,LeftUpVectorBar:Lb,LeftUpVector:Tb,LeftVectorBar:Sb,LeftVector:Eb,lEg:jb,leg:Ab,leq:Db,leqq:Nb,leqslant:Rb,lescc:kb,les:Cb,lesdot:Mb,lesdoto:Hb,lesdotor:$b,lesg:Ob,lesges:_b,lessapprox:Ub,lessdot:Fb,lesseqgtr:Ib,lesseqqgtr:Pb,LessEqualGreater:Bb,LessFullEqual:Vb,LessGreater:Gb,lessgtr:Xb,LessLess:zb,lesssim:Yb,LessSlantEqual:Jb,LessTilde:Qb,lfisht:Kb,lfloor:Zb,Lfr:Wb,lfr:tv,lg:nv,lgE:sv,lHar:ov,lhard:cv,lharu:ev,lharul:rv,lhblk:av,LJcy:iv,ljcy:lv,llarr:uv,ll:dv,Ll:pv,llcorner:fv,Lleftarrow:mv,llhard:gv,lltri:hv,Lmidot:bv,lmidot:vv,lmoustache:xv,lmoust:wv,lnap:yv,lnapprox:qv,lne:Lv,lnE:Tv,lneq:Sv,lneqq:Ev,lnsim:jv,loang:Av,loarr:Dv,lobrk:Nv,longleftarrow:Rv,LongLeftArrow:kv,Longleftarrow:Cv,longleftrightarrow:Mv,LongLeftRightArrow:Hv,Longleftrightarrow:$v,longmapsto:Ov,longrightarrow:_v,LongRightArrow:Uv,Longrightarrow:Fv,looparrowleft:Iv,looparrowright:Pv,lopar:Bv,Lopf:Vv,lopf:Gv,loplus:Xv,lotimes:zv,lowast:Yv,lowbar:Jv,LowerLeftArrow:Qv,LowerRightArrow:Kv,loz:Zv,lozenge:Wv,lozf:tx,lpar:nx,lparlt:sx,lrarr:ox,lrcorner:cx,lrhar:ex,lrhard:rx,lrm:ax,lrtri:ix,lsaquo:lx,lscr:ux,Lscr:dx,lsh:px,Lsh:fx,lsim:mx,lsime:gx,lsimg:hx,lsqb:bx,lsquo:vx,lsquor:xx,Lstrok:wx,lstrok:yx,ltcc:qx,ltcir:Lx,lt:Tx,LT:Sx,Lt:Ex,ltdot:jx,lthree:Ax,ltimes:Dx,ltlarr:Nx,ltquest:Rx,ltri:kx,ltrie:Cx,ltrif:Mx,ltrPar:Hx,lurdshar:$x,luruhar:Ox,lvertneqq:_x,lvnE:Ux,macr:Fx,male:Ix,malt:Px,maltese:Bx,Map:"⤅",map:Vx,mapsto:Gx,mapstodown:Xx,mapstoleft:zx,mapstoup:Yx,marker:Jx,mcomma:Qx,Mcy:Kx,mcy:Zx,mdash:Wx,mDDot:tw,measuredangle:nw,MediumSpace:sw,Mellintrf:ow,Mfr:cw,mfr:ew,mho:rw,micro:aw,midast:iw,midcir:lw,mid:uw,middot:dw,minusb:pw,minus:fw,minusd:mw,minusdu:gw,MinusPlus:hw,mlcp:bw,mldr:vw,mnplus:xw,models:ww,Mopf:yw,mopf:qw,mp:Lw,mscr:Tw,Mscr:Sw,mstpos:Ew,Mu:jw,mu:Aw,multimap:Dw,mumap:Nw,nabla:Rw,Nacute:kw,nacute:Cw,nang:Mw,nap:Hw,napE:$w,napid:Ow,napos:_w,napprox:Uw,natural:Fw,naturals:Iw,natur:Pw,nbsp:Bw,nbump:Vw,nbumpe:Gw,ncap:Xw,Ncaron:zw,ncaron:Yw,Ncedil:Jw,ncedil:Qw,ncong:Kw,ncongdot:Zw,ncup:Ww,Ncy:ty,ncy:ny,ndash:sy,nearhk:oy,nearr:cy,neArr:ey,nearrow:ry,ne:ay,nedot:iy,NegativeMediumSpace:ly,NegativeThickSpace:uy,NegativeThinSpace:dy,NegativeVeryThinSpace:py,nequiv:fy,nesear:my,nesim:gy,NestedGreaterGreater:hy,NestedLessLess:by,NewLine:vy,nexist:xy,nexists:wy,Nfr:yy,nfr:qy,ngE:Ly,nge:Ty,ngeq:Sy,ngeqq:Ey,ngeqslant:jy,nges:Ay,nGg:Dy,ngsim:Ny,nGt:Ry,ngt:ky,ngtr:Cy,nGtv:My,nharr:Hy,nhArr:$y,nhpar:Oy,ni:_y,nis:Uy,nisd:Fy,niv:Iy,NJcy:Py,njcy:By,nlarr:Vy,nlArr:Gy,nldr:Xy,nlE:zy,nle:Yy,nleftarrow:Jy,nLeftarrow:Qy,nleftrightarrow:Ky,nLeftrightarrow:Zy,nleq:Wy,nleqq:tq,nleqslant:nq,nles:sq,nless:oq,nLl:cq,nlsim:eq,nLt:rq,nlt:aq,nltri:iq,nltrie:lq,nLtv:uq,nmid:dq,NoBreak:pq,NonBreakingSpace:fq,nopf:mq,Nopf:gq,Not:hq,not:bq,NotCongruent:vq,NotCupCap:xq,NotDoubleVerticalBar:wq,NotElement:yq,NotEqual:qq,NotEqualTilde:Lq,NotExists:Tq,NotGreater:Sq,NotGreaterEqual:Eq,NotGreaterFullEqual:jq,NotGreaterGreater:Aq,NotGreaterLess:Dq,NotGreaterSlantEqual:Nq,NotGreaterTilde:Rq,NotHumpDownHump:kq,NotHumpEqual:Cq,notin:Mq,notindot:Hq,notinE:$q,notinva:Oq,notinvb:_q,notinvc:Uq,NotLeftTriangleBar:Fq,NotLeftTriangle:Iq,NotLeftTriangleEqual:Pq,NotLess:Bq,NotLessEqual:Vq,NotLessGreater:Gq,NotLessLess:Xq,NotLessSlantEqual:zq,NotLessTilde:Yq,NotNestedGreaterGreater:Jq,NotNestedLessLess:Qq,notni:Kq,notniva:Zq,notnivb:Wq,notnivc:t1,NotPrecedes:n1,NotPrecedesEqual:s1,NotPrecedesSlantEqual:o1,NotReverseElement:c1,NotRightTriangleBar:e1,NotRightTriangle:r1,NotRightTriangleEqual:a1,NotSquareSubset:i1,NotSquareSubsetEqual:l1,NotSquareSuperset:u1,NotSquareSupersetEqual:d1,NotSubset:p1,NotSubsetEqual:f1,NotSucceeds:m1,NotSucceedsEqual:g1,NotSucceedsSlantEqual:h1,NotSucceedsTilde:b1,NotSuperset:v1,NotSupersetEqual:x1,NotTilde:w1,NotTildeEqual:y1,NotTildeFullEqual:q1,NotTildeTilde:L1,NotVerticalBar:T1,nparallel:S1,npar:E1,nparsl:j1,npart:A1,npolint:D1,npr:N1,nprcue:R1,nprec:k1,npreceq:C1,npre:M1,nrarrc:H1,nrarr:$1,nrArr:O1,nrarrw:_1,nrightarrow:U1,nRightarrow:F1,nrtri:I1,nrtrie:P1,nsc:B1,nsccue:V1,nsce:G1,Nscr:X1,nscr:z1,nshortmid:Y1,nshortparallel:J1,nsim:Q1,nsime:K1,nsimeq:Z1,nsmid:W1,nspar:tL,nsqsube:nL,nsqsupe:sL,nsub:oL,nsubE:cL,nsube:eL,nsubset:rL,nsubseteq:aL,nsubseteqq:iL,nsucc:lL,nsucceq:uL,nsup:dL,nsupE:pL,nsupe:fL,nsupset:mL,nsupseteq:gL,nsupseteqq:hL,ntgl:bL,Ntilde:vL,ntilde:xL,ntlg:wL,ntriangleleft:yL,ntrianglelefteq:qL,ntriangleright:LL,ntrianglerighteq:TL,Nu:SL,nu:EL,num:jL,numero:AL,numsp:DL,nvap:NL,nvdash:RL,nvDash:kL,nVdash:CL,nVDash:ML,nvge:HL,nvgt:$L,nvHarr:OL,nvinfin:_L,nvlArr:UL,nvle:FL,nvlt:IL,nvltrie:PL,nvrArr:BL,nvrtrie:VL,nvsim:GL,nwarhk:XL,nwarr:zL,nwArr:YL,nwarrow:JL,nwnear:QL,Oacute:KL,oacute:ZL,oast:WL,Ocirc:tT,ocirc:nT,ocir:sT,Ocy:oT,ocy:cT,odash:eT,Odblac:rT,odblac:aT,odiv:iT,odot:lT,odsold:uT,OElig:dT,oelig:pT,ofcir:fT,Ofr:mT,ofr:gT,ogon:hT,Ograve:bT,ograve:vT,ogt:xT,ohbar:wT,ohm:yT,oint:qT,olarr:LT,olcir:TT,olcross:ST,oline:ET,olt:jT,Omacr:AT,omacr:DT,Omega:NT,omega:RT,Omicron:kT,omicron:CT,omid:MT,ominus:HT,Oopf:$T,oopf:OT,opar:_T,OpenCurlyDoubleQuote:UT,OpenCurlyQuote:FT,operp:IT,oplus:PT,orarr:BT,Or:VT,or:GT,ord:XT,order:zT,orderof:YT,ordf:JT,ordm:QT,origof:KT,oror:ZT,orslope:WT,orv:tS,oS:nS,Oscr:sS,oscr:oS,Oslash:cS,oslash:eS,osol:rS,Otilde:aS,otilde:iS,otimesas:lS,Otimes:uS,otimes:dS,Ouml:pS,ouml:fS,ovbar:mS,OverBar:gS,OverBrace:hS,OverBracket:bS,OverParenthesis:vS,para:xS,parallel:wS,par:yS,parsim:qS,parsl:LS,part:TS,PartialD:SS,Pcy:ES,pcy:jS,percnt:AS,period:DS,permil:NS,perp:RS,pertenk:kS,Pfr:CS,pfr:MS,Phi:HS,phi:$S,phiv:OS,phmmat:_S,phone:US,Pi:FS,pi:IS,pitchfork:PS,piv:BS,planck:VS,planckh:GS,plankv:XS,plusacir:zS,plusb:YS,pluscir:JS,plus:QS,plusdo:KS,plusdu:ZS,pluse:WS,PlusMinus:t0,plusmn:n0,plussim:s0,plustwo:o0,pm:c0,Poincareplane:e0,pointint:r0,popf:a0,Popf:i0,pound:l0,prap:u0,Pr:d0,pr:p0,prcue:f0,precapprox:m0,prec:g0,preccurlyeq:h0,Precedes:b0,PrecedesEqual:v0,PrecedesSlantEqual:x0,PrecedesTilde:w0,preceq:y0,precnapprox:q0,precneqq:L0,precnsim:T0,pre:S0,prE:E0,precsim:j0,prime:A0,Prime:D0,primes:N0,prnap:R0,prnE:k0,prnsim:C0,prod:M0,Product:H0,profalar:$0,profline:O0,profsurf:_0,prop:U0,Proportional:F0,Proportion:I0,propto:P0,prsim:B0,prurel:V0,Pscr:G0,pscr:X0,Psi:z0,psi:Y0,puncsp:J0,Qfr:Q0,qfr:K0,qint:Z0,qopf:W0,Qopf:tE,qprime:nE,Qscr:sE,qscr:oE,quaternions:cE,quatint:eE,quest:rE,questeq:aE,quot:iE,QUOT:lE,rAarr:uE,race:dE,Racute:pE,racute:fE,radic:mE,raemptyv:gE,rang:hE,Rang:bE,rangd:vE,range:xE,rangle:wE,raquo:yE,rarrap:qE,rarrb:LE,rarrbfs:TE,rarrc:SE,rarr:EE,Rarr:jE,rArr:AE,rarrfs:DE,rarrhk:NE,rarrlp:RE,rarrpl:kE,rarrsim:CE,Rarrtl:ME,rarrtl:HE,rarrw:$E,ratail:OE,rAtail:_E,ratio:UE,rationals:FE,rbarr:IE,rBarr:PE,RBarr:BE,rbbrk:VE,rbrace:GE,rbrack:XE,rbrke:zE,rbrksld:YE,rbrkslu:JE,Rcaron:QE,rcaron:KE,Rcedil:ZE,rcedil:WE,rceil:tj,rcub:nj,Rcy:sj,rcy:oj,rdca:cj,rdldhar:ej,rdquo:rj,rdquor:aj,rdsh:ij,real:lj,realine:uj,realpart:dj,reals:pj,Re:fj,rect:mj,reg:gj,REG:hj,ReverseElement:bj,ReverseEquilibrium:vj,ReverseUpEquilibrium:xj,rfisht:wj,rfloor:yj,rfr:qj,Rfr:Lj,rHar:Tj,rhard:Sj,rharu:Ej,rharul:jj,Rho:Aj,rho:Dj,rhov:Nj,RightAngleBracket:Rj,RightArrowBar:kj,rightarrow:Cj,RightArrow:Mj,Rightarrow:Hj,RightArrowLeftArrow:$j,rightarrowtail:Oj,RightCeiling:_j,RightDoubleBracket:Uj,RightDownTeeVector:Fj,RightDownVectorBar:Ij,RightDownVector:Pj,RightFloor:Bj,rightharpoondown:Vj,rightharpoonup:Gj,rightleftarrows:Xj,rightleftharpoons:zj,rightrightarrows:Yj,rightsquigarrow:Jj,RightTeeArrow:Qj,RightTee:Kj,RightTeeVector:Zj,rightthreetimes:Wj,RightTriangleBar:tA,RightTriangle:nA,RightTriangleEqual:sA,RightUpDownVector:oA,RightUpTeeVector:cA,RightUpVectorBar:eA,RightUpVector:rA,RightVectorBar:aA,RightVector:iA,ring:lA,risingdotseq:uA,rlarr:dA,rlhar:pA,rlm:fA,rmoustache:mA,rmoust:gA,rnmid:hA,roang:bA,roarr:vA,robrk:xA,ropar:wA,ropf:yA,Ropf:qA,roplus:LA,rotimes:TA,RoundImplies:SA,rpar:EA,rpargt:jA,rppolint:AA,rrarr:DA,Rrightarrow:NA,rsaquo:RA,rscr:kA,Rscr:CA,rsh:MA,Rsh:HA,rsqb:$A,rsquo:OA,rsquor:_A,rthree:UA,rtimes:FA,rtri:IA,rtrie:PA,rtrif:BA,rtriltri:VA,RuleDelayed:GA,ruluhar:XA,rx:zA,Sacute:YA,sacute:JA,sbquo:QA,scap:KA,Scaron:ZA,scaron:WA,Sc:tD,sc:nD,sccue:sD,sce:oD,scE:cD,Scedil:eD,scedil:rD,Scirc:aD,scirc:iD,scnap:lD,scnE:uD,scnsim:dD,scpolint:pD,scsim:fD,Scy:mD,scy:gD,sdotb:hD,sdot:bD,sdote:vD,searhk:xD,searr:wD,seArr:yD,searrow:qD,sect:LD,semi:TD,seswar:SD,setminus:ED,setmn:jD,sext:AD,Sfr:DD,sfr:ND,sfrown:RD,sharp:kD,SHCHcy:CD,shchcy:MD,SHcy:HD,shcy:$D,ShortDownArrow:OD,ShortLeftArrow:_D,shortmid:UD,shortparallel:FD,ShortRightArrow:ID,ShortUpArrow:PD,shy:BD,Sigma:VD,sigma:GD,sigmaf:XD,sigmav:zD,sim:YD,simdot:JD,sime:QD,simeq:KD,simg:ZD,simgE:WD,siml:tN,simlE:nN,simne:sN,simplus:oN,simrarr:cN,slarr:eN,SmallCircle:rN,smallsetminus:aN,smashp:iN,smeparsl:lN,smid:uN,smile:dN,smt:pN,smte:fN,smtes:mN,SOFTcy:gN,softcy:hN,solbar:bN,solb:vN,sol:xN,Sopf:wN,sopf:yN,spades:qN,spadesuit:LN,spar:TN,sqcap:SN,sqcaps:EN,sqcup:jN,sqcups:AN,Sqrt:DN,sqsub:NN,sqsube:RN,sqsubset:kN,sqsubseteq:CN,sqsup:MN,sqsupe:HN,sqsupset:$N,sqsupseteq:ON,square:_N,Square:UN,SquareIntersection:FN,SquareSubset:IN,SquareSubsetEqual:PN,SquareSuperset:BN,SquareSupersetEqual:VN,SquareUnion:GN,squarf:XN,squ:zN,squf:YN,srarr:JN,Sscr:QN,sscr:KN,ssetmn:ZN,ssmile:WN,sstarf:tR,Star:nR,star:sR,starf:oR,straightepsilon:cR,straightphi:eR,strns:rR,sub:aR,Sub:iR,subdot:lR,subE:uR,sube:dR,subedot:pR,submult:fR,subnE:mR,subne:gR,subplus:hR,subrarr:bR,subset:vR,Subset:xR,subseteq:wR,subseteqq:yR,SubsetEqual:qR,subsetneq:LR,subsetneqq:TR,subsim:SR,subsub:ER,subsup:jR,succapprox:AR,succ:DR,succcurlyeq:NR,Succeeds:RR,SucceedsEqual:kR,SucceedsSlantEqual:CR,SucceedsTilde:MR,succeq:HR,succnapprox:$R,succneqq:OR,succnsim:_R,succsim:UR,SuchThat:FR,sum:IR,Sum:PR,sung:BR,sup1:VR,sup2:GR,sup3:XR,sup:zR,Sup:YR,supdot:JR,supdsub:QR,supE:KR,supe:ZR,supedot:WR,Superset:tk,SupersetEqual:nk,suphsol:sk,suphsub:ok,suplarr:ck,supmult:ek,supnE:rk,supne:ak,supplus:ik,supset:lk,Supset:uk,supseteq:dk,supseteqq:pk,supsetneq:fk,supsetneqq:mk,supsim:gk,supsub:hk,supsup:bk,swarhk:vk,swarr:xk,swArr:wk,swarrow:yk,swnwar:qk,szlig:Lk,Tab:Tk,target:Sk,Tau:Ek,tau:jk,tbrk:Ak,Tcaron:Dk,tcaron:Nk,Tcedil:Rk,tcedil:kk,Tcy:Ck,tcy:Mk,tdot:Hk,telrec:$k,Tfr:Ok,tfr:_k,there4:Uk,therefore:Fk,Therefore:Ik,Theta:Pk,theta:Bk,thetasym:Vk,thetav:Gk,thickapprox:Xk,thicksim:zk,ThickSpace:Yk,ThinSpace:Jk,thinsp:Qk,thkap:Kk,thksim:Zk,THORN:Wk,thorn:tC,tilde:nC,Tilde:sC,TildeEqual:oC,TildeFullEqual:cC,TildeTilde:eC,timesbar:rC,timesb:aC,times:iC,timesd:lC,tint:uC,toea:dC,topbot:pC,topcir:fC,top:mC,Topf:gC,topf:hC,topfork:bC,tosa:vC,tprime:xC,trade:wC,TRADE:yC,triangle:qC,triangledown:LC,triangleleft:TC,trianglelefteq:SC,triangleq:EC,triangleright:jC,trianglerighteq:AC,tridot:DC,trie:NC,triminus:RC,TripleDot:kC,triplus:CC,trisb:MC,tritime:HC,trpezium:$C,Tscr:OC,tscr:_C,TScy:UC,tscy:FC,TSHcy:IC,tshcy:PC,Tstrok:BC,tstrok:VC,twixt:GC,twoheadleftarrow:XC,twoheadrightarrow:zC,Uacute:YC,uacute:JC,uarr:QC,Uarr:KC,uArr:ZC,Uarrocir:WC,Ubrcy:tM,ubrcy:nM,Ubreve:sM,ubreve:oM,Ucirc:cM,ucirc:eM,Ucy:rM,ucy:aM,udarr:iM,Udblac:lM,udblac:uM,udhar:dM,ufisht:pM,Ufr:fM,ufr:mM,Ugrave:gM,ugrave:hM,uHar:bM,uharl:vM,uharr:xM,uhblk:wM,ulcorn:yM,ulcorner:qM,ulcrop:LM,ultri:TM,Umacr:SM,umacr:EM,uml:jM,UnderBar:AM,UnderBrace:DM,UnderBracket:NM,UnderParenthesis:RM,Union:kM,UnionPlus:CM,Uogon:MM,uogon:HM,Uopf:$M,uopf:OM,UpArrowBar:_M,uparrow:UM,UpArrow:FM,Uparrow:IM,UpArrowDownArrow:PM,updownarrow:BM,UpDownArrow:VM,Updownarrow:GM,UpEquilibrium:XM,upharpoonleft:zM,upharpoonright:YM,uplus:JM,UpperLeftArrow:QM,UpperRightArrow:KM,upsi:ZM,Upsi:WM,upsih:tH,Upsilon:nH,upsilon:sH,UpTeeArrow:oH,UpTee:cH,upuparrows:eH,urcorn:rH,urcorner:aH,urcrop:iH,Uring:lH,uring:uH,urtri:dH,Uscr:pH,uscr:fH,utdot:mH,Utilde:gH,utilde:hH,utri:bH,utrif:vH,uuarr:xH,Uuml:wH,uuml:yH,uwangle:qH,vangrt:LH,varepsilon:TH,varkappa:SH,varnothing:EH,varphi:jH,varpi:AH,varpropto:DH,varr:NH,vArr:RH,varrho:kH,varsigma:CH,varsubsetneq:MH,varsubsetneqq:HH,varsupsetneq:$H,varsupsetneqq:OH,vartheta:_H,vartriangleleft:UH,vartriangleright:FH,vBar:IH,Vbar:PH,vBarv:BH,Vcy:VH,vcy:GH,vdash:XH,vDash:zH,Vdash:YH,VDash:JH,Vdashl:QH,veebar:KH,vee:ZH,Vee:WH,veeeq:t2,vellip:n2,verbar:s2,Verbar:o2,vert:c2,Vert:e2,VerticalBar:r2,VerticalLine:a2,VerticalSeparator:i2,VerticalTilde:l2,VeryThinSpace:u2,Vfr:d2,vfr:p2,vltri:f2,vnsub:m2,vnsup:g2,Vopf:h2,vopf:b2,vprop:v2,vrtri:x2,Vscr:w2,vscr:y2,vsubnE:q2,vsubne:L2,vsupnE:T2,vsupne:S2,Vvdash:E2,vzigzag:j2,Wcirc:A2,wcirc:D2,wedbar:N2,wedge:R2,Wedge:k2,wedgeq:C2,weierp:M2,Wfr:H2,wfr:$2,Wopf:O2,wopf:_2,wp:U2,wr:F2,wreath:I2,Wscr:P2,wscr:B2,xcap:V2,xcirc:G2,xcup:X2,xdtri:z2,Xfr:Y2,xfr:J2,xharr:Q2,xhArr:K2,Xi:Z2,xi:W2,xlarr:t$,xlArr:n$,xmap:s$,xnis:o$,xodot:c$,Xopf:e$,xopf:r$,xoplus:a$,xotime:i$,xrarr:l$,xrArr:u$,Xscr:d$,xscr:p$,xsqcup:f$,xuplus:m$,xutri:g$,xvee:h$,xwedge:b$,Yacute:v$,yacute:x$,YAcy:w$,yacy:y$,Ycirc:q$,ycirc:L$,Ycy:T$,ycy:S$,yen:E$,Yfr:j$,yfr:A$,YIcy:D$,yicy:N$,Yopf:R$,yopf:k$,Yscr:C$,yscr:M$,YUcy:H$,yucy:$$,yuml:O$,Yuml:_$,Zacute:U$,zacute:F$,Zcaron:I$,zcaron:P$,Zcy:B$,zcy:V$,Zdot:G$,zdot:X$,zeetrf:z$,ZeroWidthSpace:Y$,Zeta:J$,zeta:Q$,zfr:K$,Zfr:Z$,ZHcy:W$,zhcy:tO,zigrarr:nO,zopf:sO,Zopf:oO,Zscr:cO,zscr:eO,zwj:rO,zwnj:aO},iO="Á",lO="á",uO="Â",dO="â",pO="´",fO="Æ",mO="æ",gO="À",hO="à",bO="&",vO="&",xO="Å",wO="å",yO="Ã",qO="ã",LO="Ä",TO="ä",SO="¦",EO="Ç",jO="ç",AO="¸",DO="¢",NO="©",RO="©",kO="¤",CO="°",MO="÷",HO="É",$O="é",OO="Ê",_O="ê",UO="È",FO="è",IO="Ð",PO="ð",BO="Ë",VO="ë",GO="½",XO="¼",zO="¾",YO=">",JO=">",QO="Í",KO="í",ZO="Î",WO="î",t_="¡",n_="Ì",s_="ì",o_="¿",c_="Ï",e_="ï",r_="«",a_="<",i_="<",l_="¯",u_="µ",d_="·",p_=" ",f_="¬",m_="Ñ",g_="ñ",h_="Ó",b_="ó",v_="Ô",x_="ô",w_="Ò",y_="ò",q_="ª",L_="º",T_="Ø",S_="ø",E_="Õ",j_="õ",A_="Ö",D_="ö",N_="¶",R_="±",k_="£",C_='"',M_='"',H_="»",$_="®",O_="®",__="§",U_="",F_="¹",I_="²",P_="³",B_="ß",V_="Þ",G_="þ",X_="×",z_="Ú",Y_="ú",J_="Û",Q_="û",K_="Ù",Z_="ù",W_="¨",tU="Ü",nU="ü",sU="Ý",oU="ý",cU="¥",eU="ÿ",rU={Aacute:iO,aacute:lO,Acirc:uO,acirc:dO,acute:pO,AElig:fO,aelig:mO,Agrave:gO,agrave:hO,amp:bO,AMP:vO,Aring:xO,aring:wO,Atilde:yO,atilde:qO,Auml:LO,auml:TO,brvbar:SO,Ccedil:EO,ccedil:jO,cedil:AO,cent:DO,copy:NO,COPY:RO,curren:kO,deg:CO,divide:MO,Eacute:HO,eacute:$O,Ecirc:OO,ecirc:_O,Egrave:UO,egrave:FO,ETH:IO,eth:PO,Euml:BO,euml:VO,frac12:GO,frac14:XO,frac34:zO,gt:YO,GT:JO,Iacute:QO,iacute:KO,Icirc:ZO,icirc:WO,iexcl:t_,Igrave:n_,igrave:s_,iquest:o_,Iuml:c_,iuml:e_,laquo:r_,lt:a_,LT:i_,macr:l_,micro:u_,middot:d_,nbsp:p_,not:f_,Ntilde:m_,ntilde:g_,Oacute:h_,oacute:b_,Ocirc:v_,ocirc:x_,Ograve:w_,ograve:y_,ordf:q_,ordm:L_,Oslash:T_,oslash:S_,Otilde:E_,otilde:j_,Ouml:A_,ouml:D_,para:N_,plusmn:R_,pound:k_,quot:C_,QUOT:M_,raquo:H_,reg:$_,REG:O_,sect:__,shy:U_,sup1:F_,sup2:I_,sup3:P_,szlig:B_,THORN:V_,thorn:G_,times:X_,Uacute:z_,uacute:Y_,Ucirc:J_,ucirc:Q_,Ugrave:K_,ugrave:Z_,uml:W_,Uuml:tU,uuml:nU,Yacute:sU,yacute:oU,yen:cU,yuml:eU},aU="&",iU="'",lU=">",uU="<",dU='"',vt={amp:aU,apos:iU,gt:lU,lt:uU,quot:dU};var V={};const pU={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};var it;function fU(){if(it)return V;it=1;var c=V&&V.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(V,"__esModule",{value:!0});var r=c(pU),i=String.fromCodePoint||function(e){var g="";return e>65535&&(e-=65536,g+=String.fromCharCode(e>>>10&1023|55296),e=56320|e&1023),g+=String.fromCharCode(e),g};function m(e){return e>=55296&&e<=57343||e>1114111?"�":(e in r.default&&(e=r.default[e]),i(e))}return V.default=m,V}var lt;function ut(){if(lt)return U;lt=1;var c=U&&U.__importDefault||function(p){return p&&p.__esModule?p:{default:p}};Object.defineProperty(U,"__esModule",{value:!0}),U.decodeHTML=U.decodeHTMLStrict=U.decodeXML=void 0;var r=c(bt),i=c(rU),m=c(vt),e=c(fU()),g=/&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;U.decodeXML=T(m.default),U.decodeHTMLStrict=T(r.default);function T(p){var v=w(p);return function(l){return String(l).replace(g,v)}}var h=function(p,v){return p<v?1:-1};U.decodeHTML=(function(){for(var p=Object.keys(i.default).sort(h),v=Object.keys(r.default).sort(h),l=0,b=0;l<v.length;l++)p[b]===v[l]?(v[l]+=";?",b++):v[l]+=";";var q=new RegExp("&(?:"+v.join("|")+"|#[xX][\\da-fA-F]+;?|#\\d+;?)","g"),j=w(r.default);function S(y){return y.substr(-1)!==";"&&(y+=";"),j(y)}return function(y){return String(y).replace(q,S)}})();function w(p){return function(l){if(l.charAt(1)==="#"){var b=l.charAt(2);return b==="X"||b==="x"?e.default(parseInt(l.substr(3),16)):e.default(parseInt(l.substr(2),10))}return p[l.slice(1,-1)]||l}}return U}var D={},dt;function pt(){if(dt)return D;dt=1;var c=D&&D.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(D,"__esModule",{value:!0}),D.escapeUTF8=D.escape=D.encodeNonAsciiHTML=D.encodeHTML=D.encodeXML=void 0;var r=c(vt),i=h(r.default),m=w(i);D.encodeXML=y(i);var e=c(bt),g=h(e.default),T=w(g);D.encodeHTML=b(g,T),D.encodeNonAsciiHTML=y(g);function h(u){return Object.keys(u).sort().reduce(function(x,A){return x[u[A]]="&"+A+";",x},{})}function w(u){for(var x=[],A=[],R=0,B=Object.keys(u);R<B.length;R++){var P=B[R];P.length===1?x.push("\\"+P):A.push(P)}x.sort();for(var M=0;M<x.length-1;M++){for(var F=M;F<x.length-1&&x[F].charCodeAt(1)+1===x[F+1].charCodeAt(1);)F+=1;var Y=1+F-M;Y<3||x.splice(M,Y,x[M]+"-"+x[F])}return A.unshift("["+x.join("")+"]"),new RegExp(A.join("|"),"g")}var p=/(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,v=String.prototype.codePointAt!=null?function(u){return u.codePointAt(0)}:function(u){return(u.charCodeAt(0)-55296)*1024+u.charCodeAt(1)-56320+65536};function l(u){return"&#x"+(u.length>1?v(u):u.charCodeAt(0)).toString(16).toUpperCase()+";"}function b(u,x){return function(A){return A.replace(x,function(R){return u[R]}).replace(p,l)}}var q=new RegExp(m.source+"|"+p.source,"g");function j(u){return u.replace(q,l)}D.escape=j;function S(u){return u.replace(m,l)}D.escapeUTF8=S;function y(u){return function(x){return x.replace(q,function(A){return u[A]||l(A)})}}return D}var ft;function mU(){return ft||(ft=1,(function(c){Object.defineProperty(c,"__esModule",{value:!0}),c.decodeXMLStrict=c.decodeHTML5Strict=c.decodeHTML4Strict=c.decodeHTML5=c.decodeHTML4=c.decodeHTMLStrict=c.decodeHTML=c.decodeXML=c.encodeHTML5=c.encodeHTML4=c.escapeUTF8=c.escape=c.encodeNonAsciiHTML=c.encodeHTML=c.encodeXML=c.encode=c.decodeStrict=c.decode=void 0;var r=ut(),i=pt();function m(w,p){return(!p||p<=0?r.decodeXML:r.decodeHTML)(w)}c.decode=m;function e(w,p){return(!p||p<=0?r.decodeXML:r.decodeHTMLStrict)(w)}c.decodeStrict=e;function g(w,p){return(!p||p<=0?i.encodeXML:i.encodeHTML)(w)}c.encode=g;var T=pt();Object.defineProperty(c,"encodeXML",{enumerable:!0,get:function(){return T.encodeXML}}),Object.defineProperty(c,"encodeHTML",{enumerable:!0,get:function(){return T.encodeHTML}}),Object.defineProperty(c,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return T.encodeNonAsciiHTML}}),Object.defineProperty(c,"escape",{enumerable:!0,get:function(){return T.escape}}),Object.defineProperty(c,"escapeUTF8",{enumerable:!0,get:function(){return T.escapeUTF8}}),Object.defineProperty(c,"encodeHTML4",{enumerable:!0,get:function(){return T.encodeHTML}}),Object.defineProperty(c,"encodeHTML5",{enumerable:!0,get:function(){return T.encodeHTML}});var h=ut();Object.defineProperty(c,"decodeXML",{enumerable:!0,get:function(){return h.decodeXML}}),Object.defineProperty(c,"decodeHTML",{enumerable:!0,get:function(){return h.decodeHTML}}),Object.defineProperty(c,"decodeHTMLStrict",{enumerable:!0,get:function(){return h.decodeHTMLStrict}}),Object.defineProperty(c,"decodeHTML4",{enumerable:!0,get:function(){return h.decodeHTML}}),Object.defineProperty(c,"decodeHTML5",{enumerable:!0,get:function(){return h.decodeHTML}}),Object.defineProperty(c,"decodeHTML4Strict",{enumerable:!0,get:function(){return h.decodeHTMLStrict}}),Object.defineProperty(c,"decodeHTML5Strict",{enumerable:!0,get:function(){return h.decodeHTMLStrict}}),Object.defineProperty(c,"decodeXMLStrict",{enumerable:!0,get:function(){return h.decodeXML}})})(W)),W}var tt,mt;function gU(){if(mt)return tt;mt=1;function c(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function r(t,n){for(var o=0;o<n.length;o++){var a=n[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}function i(t,n,o){return n&&r(t.prototype,n),t}function m(t,n){var o=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!o){if(Array.isArray(t)||(o=e(t))||n){o&&(t=o);var a=0,f=function(){};return{s:f,n:function(){return a>=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function($){throw $},f}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
3
3
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var d=!0,H=!1,C;return{s:function(){o=o.call(t)},n:function(){var $=o.next();return d=$.done,$},e:function($){H=!0,C=$},f:function(){try{!d&&o.return!=null&&o.return()}finally{if(H)throw C}}}}function e(t,n){if(t){if(typeof t=="string")return g(t,n);var o=Object.prototype.toString.call(t).slice(8,-1);if(o==="Object"&&t.constructor&&(o=t.constructor.name),o==="Map"||o==="Set")return Array.from(t);if(o==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return g(t,n)}}function g(t,n){(n==null||n>t.length)&&(n=t.length);for(var o=0,a=new Array(n);o<n;o++)a[o]=t[o];return a}var T=mU(),h={fg:"#FFF",bg:"#000",newline:!1,escapeXML:!1,stream:!1,colors:w()};function w(){var t={0:"#000",1:"#A00",2:"#0A0",3:"#A50",4:"#00A",5:"#A0A",6:"#0AA",7:"#AAA",8:"#555",9:"#F55",10:"#5F5",11:"#FF5",12:"#55F",13:"#F5F",14:"#5FF",15:"#FFF"};return y(0,5).forEach(function(n){y(0,5).forEach(function(o){y(0,5).forEach(function(a){return p(n,o,a,t)})})}),y(0,23).forEach(function(n){var o=n+232,a=v(n*10+8);t[o]="#"+a+a+a}),t}function p(t,n,o,a){var f=16+t*36+n*6+o,d=t>0?t*40+55:0,H=n>0?n*40+55:0,C=o>0?o*40+55:0;a[f]=l([d,H,C])}function v(t){for(var n=t.toString(16);n.length<2;)n="0"+n;return n}function l(t){var n=[],o=m(t),a;try{for(o.s();!(a=o.n()).done;){var f=a.value;n.push(v(f))}}catch(d){o.e(d)}finally{o.f()}return"#"+n.join("")}function b(t,n,o,a){var f;return n==="text"?f=A(o,a):n==="display"?f=j(t,o,a):n==="xterm256Foreground"?f=P(t,a.colors[o]):n==="xterm256Background"?f=M(t,a.colors[o]):n==="rgb"&&(f=q(t,o)),f}function q(t,n){n=n.substring(2).slice(0,-1);var o=+n.substr(0,2),a=n.substring(5).split(";"),f=a.map(function(d){return("0"+Number(d).toString(16)).substr(-2)}).join("");return B(t,(o===38?"color:#":"background-color:#")+f)}function j(t,n,o){n=parseInt(n,10);var a={"-1":function(){return"<br/>"},0:function(){return t.length&&S(t)},1:function(){return R(t,"b")},3:function(){return R(t,"i")},4:function(){return R(t,"u")},8:function(){return B(t,"display:none")},9:function(){return R(t,"strike")},22:function(){return B(t,"font-weight:normal;text-decoration:none;font-style:normal")},23:function(){return F(t,"i")},24:function(){return F(t,"u")},39:function(){return P(t,o.fg)},49:function(){return M(t,o.bg)},53:function(){return B(t,"text-decoration:overline")}},f;return a[n]?f=a[n]():4<n&&n<7?f=R(t,"blink"):29<n&&n<38?f=P(t,o.colors[n-30]):39<n&&n<48?f=M(t,o.colors[n-40]):89<n&&n<98?f=P(t,o.colors[8+(n-90)]):99<n&&n<108&&(f=M(t,o.colors[8+(n-100)])),f}function S(t){var n=t.slice(0);return t.length=0,n.reverse().map(function(o){return"</"+o+">"}).join("")}function y(t,n){for(var o=[],a=t;a<=n;a++)o.push(a);return o}function u(t){return function(n){return(t===null||n.category!==t)&&t!=="all"}}function x(t){t=parseInt(t,10);var n=null;return t===0?n="all":t===1?n="bold":2<t&&t<5?n="underline":4<t&&t<7?n="blink":t===8?n="hide":t===9?n="strike":29<t&&t<38||t===39||89<t&&t<98?n="foreground-color":(39<t&&t<48||t===49||99<t&&t<108)&&(n="background-color"),n}function A(t,n){return n.escapeXML?T.encodeXML(t):t}function R(t,n,o){return o||(o=""),t.push(n),"<".concat(n).concat(o?' style="'.concat(o,'"'):"",">")}function B(t,n){return R(t,"span",n)}function P(t,n){return R(t,"span","color:"+n)}function M(t,n){return R(t,"span","background-color:"+n)}function F(t,n){var o;if(t.slice(-1)[0]===n&&(o=t.pop()),o)return"</"+n+">"}function Y(t,n,o){var a=!1,f=3;function d(){return""}function H(O,_){return o("xterm256Foreground",_),""}function C(O,_){return o("xterm256Background",_),""}function E(O){return n.newline?o("display",-1):o("text",O),""}function $(O,_){a=!0,_.trim().length===0&&(_="0"),_=_.trimRight(";").split(";");var J=m(_),at;try{for(J.s();!(at=J.n()).done;){var Dt=at.value;o("display",Dt)}}catch(Nt){J.e(Nt)}finally{J.f()}return""}function Lt(O){return o("text",O),""}function Tt(O){return o("rgb",O),""}var ct=[{pattern:/^\x08+/,sub:d},{pattern:/^\x1b\[[012]?K/,sub:d},{pattern:/^\x1b\[\(B/,sub:d},{pattern:/^\x1b\[[34]8;2;\d+;\d+;\d+m/,sub:Tt},{pattern:/^\x1b\[38;5;(\d+)m/,sub:H},{pattern:/^\x1b\[48;5;(\d+)m/,sub:C},{pattern:/^\n/,sub:E},{pattern:/^\r+\n/,sub:E},{pattern:/^\r/,sub:E},{pattern:/^\x1b\[((?:\d{1,3};?)+|)m/,sub:$},{pattern:/^\x1b\[\d?J/,sub:d},{pattern:/^\x1b\[\d{0,3};\d{0,3}f/,sub:d},{pattern:/^\x1b\[?[\d;]{0,3}/,sub:d},{pattern:/^(([^\x1b\x08\r\n])+)/,sub:Lt}];function St(O,_){_>f&&a||(a=!1,t=t.replace(O.pattern,O.sub))}var et=[],Et=t,X=Et.length;t:for(;X>0;){for(var Z=0,rt=0,jt=ct.length;rt<jt;Z=++rt){var At=ct[Z];if(St(At,Z),t.length!==X){X=t.length;continue t}}if(t.length===X)break;et.push(0),X=t.length}return et}function yt(t,n,o){return n!=="text"&&(t=t.filter(u(x(o))),t.push({token:n,data:o,category:x(o)})),t}var qt=(function(){function t(n){c(this,t),n=n||{},n.colors&&(n.colors=Object.assign({},h.colors,n.colors)),this.options=Object.assign({},h,n),this.stack=[],this.stickyStack=[]}return i(t,[{key:"toHtml",value:function(o){var a=this;o=typeof o=="string"?[o]:o;var f=this.stack,d=this.options,H=[];return this.stickyStack.forEach(function(C){var E=b(f,C.token,C.data,d);E&&H.push(E)}),Y(o.join(""),d,function(C,E){var $=b(f,C,E,d);$&&H.push($),d.stream&&(a.stickyStack=yt(a.stickyStack,C,E))}),f.length&&H.push(S(f)),H.join("")}}]),t})();return tt=qt,tt}var hU=gU();const bU=Rt(hU);function xt(){const c=gt();return L.useMemo(()=>new bU(c==="dark"?{fg:"#d6deeb",bg:"#121318",escapeXML:!0}:{fg:"#000000",bg:"#f3f3f3",escapeXML:!0}),[c])}function wt(c){return c.replace(/\u001b\[\d+A/g,"").replace(/\u001b\[\d+K/g,"")}const vU=_t(I({type:k("epicshop:test-status-update"),timestamp:G()}),z([I({status:k("pending")}),I({status:k("pass")}),I({status:k("fail"),error:Q()})])),xU=I({type:k("epicshop:test-step-update"),status:k("pass"),title:Q(),timestamp:G()}),wU=z([xU,vU]);function yU({pathname:c,testFile:r}){const i=gt(),m=xt(),e=L.useRef(null),[g,T]=L.useState(null),[h,w]=L.useState([]);L.useEffect(()=>{function b(q){if(q.source!==e.current?.contentWindow||"request"in q.data)return;const j=wU.safeParse(q.data);if(!j.success){console.error("Invalid message from test iframe",q.data,j.error);return}const{data:S}=j;S.type==="epicshop:test-status-update"&&(S.status==="pending"&&w([]),T(S)),S.type==="epicshop:test-step-update"&&w(y=>[...y,S])}return window.addEventListener("message",b),()=>{window.removeEventListener("message",b)}},[]);const p={pending:s.jsx(st,{size:14,"aria-label":"Pending"}),pass:s.jsx(N,{name:"CheckSmall","aria-label":"Passed",className:"text-success"}),fail:s.jsx(N,{name:"Remove","aria-label":"Failed",className:"text-foreground-destructive"}),unknown:s.jsx(N,{name:"Question","aria-label":"Unknown",className:"animate-pulse"})}[g?.status??"unknown"],v=h.sort((b,q)=>b.timestamp-q.timestamp),l={pass:s.jsx(N,{name:"CheckSmall","aria-label":"Passed"}),fail:s.jsx(N,{name:"Remove","aria-label":"Failed"}),unknown:s.jsx(N,{name:"Question","aria-label":"Unknown",className:"animate-pulse"})};return s.jsx(s.Fragment,{children:s.jsx(kt,{className:"w-full",type:"multiple",children:s.jsx(Ct,{icon:p,title:r,forceMount:!0,children:s.jsxs("div",{className:"not-prose",children:[s.jsxs("div",{className:"flex flex-col gap-2 p-5 pt-3",children:[s.jsx("ul",{className:"flex flex-col gap-2",children:v.map((b,q)=>s.jsx("li",{children:s.jsxs("div",{className:"text-success flex items-baseline gap-2",children:[s.jsxs("span",{children:[q+1,"."]}),s.jsx("span",{children:l[b.status]}),s.jsx("pre",{className:"scrollbar-thin scrollbar-thumb-scrollbar max-h-48 overflow-y-auto p-4",children:b.title})]})},b.timestamp+b.title))}),g?.status==="fail"?s.jsxs("div",{className:"text-foreground-destructive flex items-baseline gap-2",children:[s.jsxs("span",{children:[v.length+1,"."]}),s.jsx("span",{children:l.fail}),s.jsx("pre",{className:"scrollbar-thin scrollbar-thumb-scrollbar max-h-48 overflow-y-auto p-4",dangerouslySetInnerHTML:{__html:m.toHtml(wt(g.error))}})]}):null,s.jsx("iframe",{ref:e,title:r,src:c+r,className:"bg-background mt-5 min-h-[420px] w-full border",style:{colorScheme:i},allow:"clipboard-write"})]}),s.jsxs("div",{className:"flex border-y",children:[s.jsx("button",{onClick:()=>e.current?.contentWindow?.location.reload(),className:"border-r p-3",children:s.jsx(N,{name:"Refresh","aria-label":"Rerun Tests"})}),s.jsx("a",{href:c+r,target:"_blank",rel:"noreferrer",className:"border-r p-3",children:s.jsx(N,{name:"ExternalLink","aria-label":"Open in New Window"})})]})]})})})})}const qU=z([I({type:k("init"),exitCode:G().nullable().optional(),isRunning:Ut(),output:ht(I({type:z([k("stdout"),k("stderr")]),content:Q(),timestamp:G()}))}),I({type:z([k("stdout"),k("stderr")]),data:Q(),timestamp:G()}),I({type:k("exit"),isRunning:k(!1),code:G().nullable()})]),LU=ht(qU);function TU(c,r){return r(c)}function SU({name:c}){const[r,i]=L.useReducer(TU,{version:0,isRunning:!1,exitCode:void 0,lines:[]}),m=Ht(),e=L.useRef(m);L.useEffect(()=>{e.current=m},[m]);const g=xt(),{version:T,isRunning:h,exitCode:w,lines:p}=r,v=Ft(`/test?${new URLSearchParams({name:c})}&v=${T}`);return L.useEffect(()=>{if(!v)return;const l=JSON.parse(v),b=LU.safeParse(l);if(!b.success){console.error(b.error.flatten());return}for(const q of b.data)switch(q.type){case"exit":{const{isRunning:j,code:S}=q;i(y=>({...y,isRunning:j,exitCode:S})),e.current.revalidate();break}case"init":{const{output:j,exitCode:S,isRunning:y}=q;i(u=>({...u,lines:j,exitCode:S,isRunning:y}));break}case"stderr":case"stdout":{const{type:j,data:S,timestamp:y}=q;i(u=>({...u,lines:[...u.lines,{type:j,content:S,timestamp:y}].sort((x,A)=>x.timestamp-A.timestamp),isRunning:!0}));break}}},[v]),s.jsxs("div",{className:"relative flex h-full w-full flex-col overflow-hidden",children:[s.jsxs("div",{className:"flex h-12 w-full shrink-0 items-center justify-between border-b",children:[s.jsxs("div",{className:"flex h-full items-center",children:[!h&&s.jsx(EU,{name:c,onRun:()=>{i(l=>({...l,exitCode:void 0,lines:[],version:l.version+1}))}}),h?s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"flex h-full grow items-center justify-center border-r px-3.5",children:s.jsx(st,{role:"status","aria-label":"Running Tests"})}),s.jsx(AU,{name:c})]}):null]}),!h&&w!==void 0&&s.jsx("p",{className:"pr-3.5 leading-none",children:w===0?"Tests passed":`Test failed (exit code ${String(w)})`}),!h&&w!==void 0&&s.jsx(jU,{name:c,onClear:()=>{i(l=>({...l,exitCode:void 0,lines:[]}))}})]}),s.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-5 p-5",children:[s.jsx("p",{className:"font-mono text-sm font-medium uppercase",children:"Test Output"}),s.jsx("pre",{className:"shadow-on-scrollbox scrollbar-thin scrollbar-thumb-scrollbar min-h-0 flex-1 overflow-y-auto",children:p.map(l=>s.jsx("code",{"data-type":l.type,dangerouslySetInnerHTML:{__html:g.toHtml(wt(l.content))}},l.timestamp))})]})]})}function EU({name:c,onRun:r}){const i=nt(),m=ot(),e=L.useRef(r);return L.useEffect(()=>{e.current=r},[r]),L.useEffect(()=>{i.data?.success&&e.current?.()},[i.data]),s.jsxs(i.Form,{method:"POST",action:"/test",className:"h-full",children:[m,s.jsx("input",{type:"hidden",name:"name",value:c}),s.jsx(K,{content:i.state==="idle"?"Run Tests":"Running Tests...",children:s.jsx("button",{type:"submit",name:"intent",value:"run",className:"flex h-full grow items-center justify-center border-r px-3.5",children:i.state==="idle"?s.jsx(N,{name:"TriangleSmall"}):s.jsx(st,{role:"status"})})})]})}function jU({name:c,onClear:r}){const i=nt(),m=ot(),e=L.useRef(r);return L.useEffect(()=>{e.current=r},[r]),L.useEffect(()=>{i.data?.success&&e.current?.()},[i.data]),s.jsxs(i.Form,{method:"POST",action:"/test",className:"h-full",children:[m,s.jsx("input",{type:"hidden",name:"name",value:c}),s.jsx(K,{content:i.state==="idle"?"Clear Tests":"Clearing Tests...",children:s.jsx("button",{type:"submit",name:"intent",value:"clear",className:"flex h-full grow items-center justify-center border-l px-3.5",children:i.state==="idle"?s.jsx(N,{name:"Clear"}):s.jsx(N,{name:"Clear",className:"animate-pulse",role:"status"})})})]})}function AU({name:c,onStop:r}){const i=nt(),m=ot(),e=L.useRef(r);return L.useEffect(()=>{e.current=r},[r]),L.useEffect(()=>{i.data?.success&&e.current?.()},[i.data]),s.jsxs(i.Form,{method:"POST",action:"/test",className:"h-full",children:[m,s.jsx("input",{type:"hidden",name:"name",value:c}),s.jsx(K,{content:i.state==="idle"?"Stop Tests":"Stopping Tests...",children:s.jsx("button",{type:"submit",name:"intent",value:"stop",className:"flex h-full grow items-center justify-center border-r px-3.5",children:i.state==="idle"?s.jsx(N,{name:"Stop"}):s.jsx(N,{name:"Stop",className:"animate-pulse",role:"status"})})})]})}function PU({appInfo:c,problemAppName:r,allApps:i,isUpToDate:m,userHasAccessPromise:e}){return s.jsx(It,{playgroundAppName:c?.appName,problemAppName:r,allApps:i,isUpToDate:m,children:s.jsx(Mt,{fallbackRender:()=>s.jsx("div",{className:"w-full p-12",children:s.jsxs("div",{className:"flex w-full flex-col gap-4 text-center",children:[s.jsx("p",{className:"text-2xl font-bold",children:"Error"}),s.jsx("p",{className:"text-lg",children:"There was an error loading the user access."})]})}),children:s.jsx(L.Suspense,{fallback:s.jsx("div",{className:"flex items-center justify-center p-8",children:s.jsx(K,{content:"Loading user access",children:s.jsx(N,{name:"Refresh",className:"animate-spin"})})}),children:s.jsx($t,{resolve:e,children:g=>s.jsx(DU,{playgroundAppInfo:c,userHasAccess:g})})})})})}function DU({userHasAccess:c,playgroundAppInfo:r}){const[i,m]=L.useState(0);if(!c)return s.jsxs("div",{className:"w-full p-12",children:[s.jsxs("div",{className:"flex w-full flex-col gap-4 text-center",children:[s.jsx("p",{className:"text-2xl font-bold",children:"Access Denied"}),s.jsx("p",{className:"text-lg",children:"You must login or register for the workshop to view and run the tests."})]}),s.jsx("div",{className:"h-16"}),s.jsx("p",{className:"pb-4",children:"Check out this video to see how the test tab works."}),s.jsx(Ot,{url:"https://www.epicweb.dev/tips/epic-workshop-test-tab-demo"})]});if(!r)return s.jsx("div",{className:"flex h-full items-center justify-center text-lg",children:s.jsx("p",{children:"No tests here 😢 Sorry."})});if(r.test.type==="script")return s.jsx(SU,{name:r.name});if(r.test.type==="browser"){const{pathname:e}=r.test;return s.jsxs("div",{className:"flex h-full min-h-0 w-full grow flex-col overflow-y-auto",children:[r.test.testFiles.map(g=>s.jsx("div",{children:s.jsx(yU,{pathname:e,testFile:g})},g)),s.jsx("div",{className:"px-3 py-[21px]",children:s.jsxs("button",{onClick:()=>m(g=>g+1),className:"flex items-center gap-2 font-mono text-sm leading-none uppercase",children:[s.jsx(N,{name:"Refresh","aria-hidden":!0})," Rerun All Tests"]})})]},i)}return s.jsx("div",{className:"flex h-full items-center justify-center text-lg",children:s.jsx("p",{children:"No tests here 😢 Sorry."})})}export{PU as T,DU as a};
|
|
4
|
-
//# sourceMappingURL=tests-
|
|
4
|
+
//# sourceMappingURL=tests-CITG_DX3.js.map
|